{"id":"2a7fe94d-948f-429c-b5fd-101b5929ce69","shortId":"SW4yAj","kind":"skill","title":"javascript-typescript-typescript-scaffold","tagline":"You are a TypeScript project architecture expert specializing in scaffolding production-ready Node.js and frontend applications. Generate complete project structures with modern tooling (pnpm, Vite, N","description":"# TypeScript Project Scaffolding\n\nYou are a TypeScript project architecture expert specializing in scaffolding production-ready Node.js and frontend applications. Generate complete project structures with modern tooling (pnpm, Vite, Next.js), type safety, testing setup, and configuration following current best practices.\n\n## Use this skill when\n\n- Working on typescript project scaffolding tasks or workflows\n- Needing guidance, best practices, or checklists for typescript project scaffolding\n\n## Do not use this skill when\n\n- The task is unrelated to typescript project scaffolding\n- You need a different domain or tool outside this scope\n\n## Context\n\nThe user needs automated TypeScript project scaffolding that creates consistent, type-safe applications with proper structure, dependency management, testing, and build tooling. Focus on modern TypeScript patterns and scalable architecture.\n\n## Requirements\n\n$ARGUMENTS\n\n## Instructions\n\n### 1. Analyze Project Type\n\nDetermine the project type from user requirements:\n- **Next.js**: Full-stack React applications, SSR/SSG, API routes\n- **React + Vite**: SPA applications, component libraries\n- **Node.js API**: Express/Fastify backends, microservices\n- **Library**: Reusable packages, utilities, tools\n- **CLI**: Command-line tools, automation scripts\n\n### 2. Initialize Project with pnpm\n\n```bash\n# Install pnpm if needed\nnpm install -g pnpm\n\n# Initialize project\nmkdir project-name && cd project-name\npnpm init\n\n# Initialize git\ngit init\necho \"node_modules/\" >> .gitignore\necho \"dist/\" >> .gitignore\necho \".env\" >> .gitignore\n```\n\n### 3. Generate Next.js Project Structure\n\n```bash\n# Create Next.js project with TypeScript\npnpm create next-app@latest . --typescript --tailwind --app --src-dir --import-alias \"@/*\"\n```\n\n```\nnextjs-project/\n├── package.json\n├── tsconfig.json\n├── next.config.js\n├── .env.example\n├── src/\n│   ├── app/\n│   │   ├── layout.tsx\n│   │   ├── page.tsx\n│   │   ├── api/\n│   │   │   └── health/\n│   │   │       └── route.ts\n│   │   └── (routes)/\n│   │       └── dashboard/\n│   │           └── page.tsx\n│   ├── components/\n│   │   ├── ui/\n│   │   │   ├── Button.tsx\n│   │   │   └── Card.tsx\n│   │   └── layout/\n│   │       ├── Header.tsx\n│   │       └── Footer.tsx\n│   ├── lib/\n│   │   ├── api.ts\n│   │   ├── utils.ts\n│   │   └── types.ts\n│   └── hooks/\n│       ├── useAuth.ts\n│       └── useFetch.ts\n└── tests/\n    ├── setup.ts\n    └── components/\n        └── Button.test.tsx\n```\n\n**package.json**:\n```json\n{\n  \"name\": \"nextjs-project\",\n  \"version\": \"0.1.0\",\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\",\n    \"test\": \"vitest\",\n    \"type-check\": \"tsc --noEmit\"\n  },\n  \"dependencies\": {\n    \"next\": \"^14.1.0\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20.11.0\",\n    \"@types/react\": \"^18.2.0\",\n    \"typescript\": \"^5.3.0\",\n    \"vitest\": \"^1.2.0\",\n    \"@vitejs/plugin-react\": \"^4.2.0\",\n    \"eslint\": \"^8.56.0\",\n    \"eslint-config-next\": \"^14.1.0\"\n  }\n}\n```\n\n**tsconfig.json**:\n```json\n{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\",\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"],\n    \"jsx\": \"preserve\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"allowJs\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"incremental\": true,\n    \"paths\": {\n      \"@/*\": [\"./src/*\"]\n    },\n    \"plugins\": [{\"name\": \"next\"}]\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\"],\n  \"exclude\": [\"node_modules\"]\n}\n```\n\n### 4. Generate React + Vite Project Structure\n\n```bash\n# Create Vite project\npnpm create vite . --template react-ts\n```\n\n**vite.config.ts**:\n```typescript\nimport { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\nimport path from 'path'\n\nexport default defineConfig({\n  plugins: [react()],\n  resolve: {\n    alias: {\n      '@': path.resolve(__dirname, './src'),\n    },\n  },\n  server: {\n    port: 3000,\n  },\n  test: {\n    globals: true,\n    environment: 'jsdom',\n    setupFiles: './tests/setup.ts',\n  },\n})\n```\n\n### 5. Generate Node.js API Project Structure\n\n```\nnodejs-api/\n├── package.json\n├── tsconfig.json\n├── src/\n│   ├── index.ts\n│   ├── app.ts\n│   ├── config/\n│   │   ├── database.ts\n│   │   └── env.ts\n│   ├── routes/\n│   │   ├── index.ts\n│   │   ├── users.ts\n│   │   └── health.ts\n│   ├── controllers/\n│   │   └── userController.ts\n│   ├── services/\n│   │   └── userService.ts\n│   ├── models/\n│   │   └── User.ts\n│   ├── middleware/\n│   │   ├── auth.ts\n│   │   └── errorHandler.ts\n│   └── types/\n│       └── express.d.ts\n└── tests/\n    └── routes/\n        └── users.test.ts\n```\n\n**package.json for Node.js API**:\n```json\n{\n  \"name\": \"nodejs-api\",\n  \"version\": \"0.1.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"tsx watch src/index.ts\",\n    \"build\": \"tsc\",\n    \"start\": \"node dist/index.js\",\n    \"test\": \"vitest\",\n    \"lint\": \"eslint src --ext .ts\"\n  },\n  \"dependencies\": {\n    \"express\": \"^4.18.2\",\n    \"dotenv\": \"^16.4.0\",\n    \"zod\": \"^3.22.0\"\n  },\n  \"devDependencies\": {\n    \"@types/express\": \"^4.17.21\",\n    \"@types/node\": \"^20.11.0\",\n    \"typescript\": \"^5.3.0\",\n    \"tsx\": \"^4.7.0\",\n    \"vitest\": \"^1.2.0\",\n    \"eslint\": \"^8.56.0\",\n    \"@typescript-eslint/parser\": \"^6.19.0\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.19.0\"\n  }\n}\n```\n\n**src/app.ts**:\n```typescript\nimport express, { Express } from 'express'\nimport { healthRouter } from './routes/health.js'\nimport { userRouter } from './routes/users.js'\nimport { errorHandler } from './middleware/errorHandler.js'\n\nexport function createApp(): Express {\n  const app = express()\n\n  app.use(express.json())\n  app.use('/health', healthRouter)\n  app.use('/api/users', userRouter)\n  app.use(errorHandler)\n\n  return app\n}\n```\n\n### 6. Generate TypeScript Library Structure\n\n```\nlibrary-name/\n├── package.json\n├── tsconfig.json\n├── tsconfig.build.json\n├── src/\n│   ├── index.ts\n│   └── core.ts\n├── tests/\n│   └── core.test.ts\n└── dist/\n```\n\n**package.json for Library**:\n```json\n{\n  \"name\": \"@scope/library-name\",\n  \"version\": \"0.1.0\",\n  \"type\": \"module\",\n  \"main\": \"./dist/index.js\",\n  \"types\": \"./dist/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./dist/index.js\",\n      \"types\": \"./dist/index.d.ts\"\n    }\n  },\n  \"files\": [\"dist\"],\n  \"scripts\": {\n    \"build\": \"tsc -p tsconfig.build.json\",\n    \"test\": \"vitest\",\n    \"prepublishOnly\": \"pnpm build\"\n  },\n  \"devDependencies\": {\n    \"typescript\": \"^5.3.0\",\n    \"vitest\": \"^1.2.0\"\n  }\n}\n```\n\n### 7. Configure Development Tools\n\n**.env.example**:\n```env\nNODE_ENV=development\nPORT=3000\nDATABASE_URL=postgresql://user:pass@localhost:5432/db\nJWT_SECRET=your-secret-key\n```\n\n**vitest.config.ts**:\n```typescript\nimport { defineConfig } from 'vitest/config'\n\nexport default defineConfig({\n  test: {\n    globals: true,\n    environment: 'node',\n    coverage: {\n      provider: 'v8',\n      reporter: ['text', 'json', 'html'],\n    },\n  },\n})\n```\n\n**.eslintrc.json**:\n```json\n{\n  \"parser\": \"@typescript-eslint/parser\",\n  \"extends\": [\n    \"eslint:recommended\",\n    \"plugin:@typescript-eslint/recommended\"\n  ],\n  \"rules\": {\n    \"@typescript-eslint/no-explicit-any\": \"warn\",\n    \"@typescript-eslint/no-unused-vars\": \"error\"\n  }\n}\n```\n\n## Output Format\n\n1. **Project Structure**: Complete directory tree with all necessary files\n2. **Configuration**: package.json, tsconfig.json, build tooling\n3. **Entry Point**: Main application file with type-safe setup\n4. **Tests**: Test structure with Vitest configuration\n5. **Documentation**: README with setup and usage instructions\n6. **Development Tools**: .env.example, .gitignore, linting config\n\nFocus on creating production-ready TypeScript projects with modern tooling, strict type safety, and comprehensive testing setup.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["javascript","typescript","scaffold","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-javascript-typescript-typescript-scaffold","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/javascript-typescript-typescript-scaffold","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34768 github stars · SKILL.md body (8,175 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-23T18:51:34.684Z","embedding":null,"createdAt":"2026-04-18T21:39:24.342Z","updatedAt":"2026-04-23T18:51:34.684Z","lastSeenAt":"2026-04-23T18:51:34.684Z","tsv":"'/api/users':574 '/dist/index.d.ts':610,615 '/dist/index.js':608,613 '/eslint-plugin':540 '/health':571 '/middleware/errorhandler.js':560 '/no-explicit-any':696 '/no-unused-vars':701 '/parser':535,683 '/recommended':691 '/routes/health.js':552 '/routes/users.js':556 '/src':385,436 '/tests/setup.ts':446 '0.1.0':305,492,604 '1':154,705 '1.2.0':343,529,632 '14.1.0':328,352 '16.4.0':516 '18.2.0':330,334,339 '2':197,715 '20.11.0':337,523 '3':237,721 '3.22.0':518 '3000':439,643 '4':396,732 '4.17.21':521 '4.18.2':514 '4.2.0':345 '4.7.0':527 '5':447,739 '5.3.0':341,525,630 '5432/db':649 '6':580,747 '6.19.0':536,541 '7':633 '8.56.0':347,531 'alia':262,433 'allowj':370 'analyz':155 'api':172,181,274,450,455,485,490 'api.ts':288 'app':252,256,271,566,579 'app.ts':460 'app.use':568,570,573,576 'applic':22,52,133,170,177,725 'architectur':11,41,150 'argument':152 'ask':805 'auth.ts':475 'autom':123,195 'backend':183 'bash':202,242,402 'best':71,87 'boundari':813 'build':141,310,312,500,619,627,719 'bundler':367 'button.test.tsx':297 'button.tsx':282 'card.tsx':283 'cd':217 'check':323 'checklist':90 'clarif':807 'clear':780 'cli':190 'command':192 'command-lin':191 'compileropt':355 'complet':24,54,708 'compon':178,280,296 'comprehens':769 'config':350,461,753 'configur':68,634,716,738 'consist':129 'const':565 'context':119 'control':468 'core.test.ts':595 'core.ts':593 'coverag':670 'creat':128,243,249,403,407,756 'createapp':563 'criteria':816 'current':70 'dashboard':278 'databas':644 'database.ts':462 'default':428,663 'defineconfig':416,429,659,664 'depend':137,326,512 'describ':784 'determin':158 'dev':307,309,496 'devdepend':335,519,628 'develop':635,641,748 'differ':112 'dir':259 'directori':709 'dirnam':435 'dist':232,596,617 'dist/index.js':504 'document':740 'dom':333,360 'dom.iterable':361 'domain':113 'dotenv':515 'echo':227,231,234 'entri':722 'env':235,638,640 'env.example':269,637,750 'env.ts':463 'environ':443,668,796 'environment-specif':795 'error':702 'errorhandl':558,577 'errorhandler.ts':476 'es2022':357,359 'eslint':346,349,508,530,534,539,682,685,690,695,700 'eslint-config-next':348 'eslintrc.json':677 'esmoduleinterop':376 'esnext':365 'exclud':393 'expert':12,42,801 'export':427,561,611,662 'express':513,545,546,548,564,567 'express.d.ts':478 'express.json':569 'express/fastify':182 'ext':510 'extend':684 'file':616,714,726 'focus':143,754 'follow':69 'footer.tsx':286 'forceconsistentcasinginfilenam':380 'format':704 'frontend':21,51 'full':167 'full-stack':166 'function':562 'g':209 'generat':23,53,238,397,448,581 'git':224,225 'gitignor':230,233,236,751 'global':441,666 'guidanc':86 'header.tsx':285 'health':275 'health.ts':467 'healthrout':550,572 'hook':291 'html':676 'import':261,415,419,423,544,549,553,557,612,658 'import-alia':260 'includ':389 'increment':382 'index.ts':459,465,592 'init':222,226 'initi':198,211,223 'input':810 'instal':203,208 'instruct':153,746 'javascript':2 'javascript-typescript-typescript-scaffold':1 'jsdom':444 'json':299,354,486,600,675,678 'jsx':362 'jwt':650 'key':655 'latest':253 'layout':284 'layout.tsx':272 'lib':287,358 'librari':179,185,583,586,599 'library-nam':585 'limit':772 'line':193 'lint':316,318,507,752 'localhost':648 'main':607,724 'manag':138 'match':781 'microservic':184 'middlewar':474 'miss':818 'mkdir':213 'model':472 'modern':28,58,145,763 'modul':229,364,395,494,606 'moduleresolut':366 'n':32 'name':216,220,300,387,487,587,601 'necessari':713 'need':85,110,122,206 'next':251,308,311,314,317,327,351,388 'next-app':250 'next-env.d.ts':390 'next.config.js':268 'next.js':62,165,239,244 'nextj':264,302 'nextjs-project':263,301 'node':228,394,503,639,669 'node.js':19,49,180,449,484 'nodej':454,489 'nodejs-api':453,488 'noemit':325,374 'npm':207 'output':703,790 'outsid':116 'p':621 'packag':187 'package.json':266,298,456,482,588,597,717 'page.tsx':273,279 'parser':679 'pass':647 'path':384,424,426 'path.resolve':434 'pattern':147 'permiss':811 'plugin':386,430,687 'pnpm':30,60,201,204,210,221,248,406,626 'point':723 'port':438,642 'practic':72,88 'prepublishon':625 'preserv':363 'product':17,47,758 'production-readi':16,46,757 'project':10,25,34,40,55,80,93,107,125,156,160,199,212,215,219,240,245,265,303,400,405,451,706,761 'project-nam':214,218 'proper':135 'provid':671 'react':169,174,329,332,398,411,420,431 'react-dom':331 'react-t':410 'readi':18,48,759 'readm':741 'recommend':686 'report':673 'requir':151,164,809 'resolv':432 'resolvejsonmodul':368 'return':578 'reusabl':186 'review':802 'rout':173,277,464,480 'route.ts':276 'rule':692 'safe':132,730 'safeti':64,767,812 'scaffold':5,15,35,45,81,94,108,126 'scalabl':149 'scope':118,783 'scope/library-name':602 'script':196,306,495,618 'secret':651,654 'server':437 'servic':470 'setup':66,731,743,771 'setup.ts':295 'setupfil':445 'skill':75,99,775 'skill-javascript-typescript-typescript-scaffold' 'skiplibcheck':378 'source-sickn33' 'spa':176 'special':13,43 'specif':797 'src':258,270,458,509,591 'src-dir':257 'src/app.ts':542 'src/index.ts':499 'ssr/ssg':171 'stack':168 'start':313,315,502 'stop':803 'strict':372,765 'structur':26,56,136,241,401,452,584,707,735 'substitut':793 'success':815 'tailwind':255 'target':356 'task':82,102,779 'templat':409 'test':65,139,294,319,440,479,505,594,623,665,733,734,770,799 'text':674 'tool':29,59,115,142,189,194,636,720,749,764 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'treat':788 'tree':710 'true':369,371,373,375,377,379,381,383,442,667 'ts':391,412,511 'tsc':324,501,620 'tsconfig.build.json':590,622 'tsconfig.json':267,353,457,589,718 'tsx':392,497,526 'type':63,131,157,161,322,477,493,605,609,614,729,766 'type-check':321 'type-saf':130,728 'types.ts':290 'types/express':520 'types/node':336,522 'types/react':338 'typescript':3,4,9,33,39,79,92,106,124,146,247,254,340,414,524,533,538,543,582,629,657,681,689,694,699,760 'typescript-eslint':532,537,680,688,693,698 'ui':281 'unrel':104 'url':645 'usag':745 'use':73,97,773 'useauth.ts':292 'usefetch.ts':293 'user':121,163,646 'user.ts':473 'usercontroller.ts':469 'userrout':554,575 'users.test.ts':481 'users.ts':466 'userservice.ts':471 'util':188 'utils.ts':289 'v8':672 'valid':798 'version':304,491,603 'vite':31,61,175,399,404,408,418 'vite.config.ts':413 'vitejs/plugin-react':344,422 'vitest':320,342,506,528,624,631,737 'vitest.config.ts':656 'vitest/config':661 'warn':697 'watch':498 'work':77 'workflow':84 'your-secret-key':652 'zod':517","prices":[{"id":"213ac7cf-0945-42f2-95ab-738280d1e24c","listingId":"2a7fe94d-948f-429c-b5fd-101b5929ce69","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:39:24.342Z"}],"sources":[{"listingId":"2a7fe94d-948f-429c-b5fd-101b5929ce69","source":"github","sourceId":"sickn33/antigravity-awesome-skills/javascript-typescript-typescript-scaffold","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/javascript-typescript-typescript-scaffold","isPrimary":false,"firstSeenAt":"2026-04-18T21:39:24.342Z","lastSeenAt":"2026-04-23T18:51:34.684Z"}],"details":{"listingId":"2a7fe94d-948f-429c-b5fd-101b5929ce69","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"javascript-typescript-typescript-scaffold","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34768,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-23T06:41:03Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"d46bfcda92858e481c7ea05da7bef3cd451d11a9","skill_md_path":"skills/javascript-typescript-typescript-scaffold/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/javascript-typescript-typescript-scaffold"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"javascript-typescript-typescript-scaffold","description":"You are a TypeScript project architecture expert specializing in scaffolding production-ready Node.js and frontend applications. Generate complete project structures with modern tooling (pnpm, Vite, N"},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/javascript-typescript-typescript-scaffold"},"updatedAt":"2026-04-23T18:51:34.684Z"}}