[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FFB5SZCD45C2R0Q0FPYM87":3,"skill-same:01M6FFB5SZCD45C2R0Q0FPYM87":50},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":23,"linkOnly":24,"markdownContent":25,"markdownBody":25,"frontMatter":26,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":30,"repositoryHtmlUrl":31,"repositoryHomepageUrl":32,"ownerHtmlUrl":33,"ownerBlogUrl":6,"ownerDescription":34,"updatedAt":35,"install":36,"resources":49},"01M6FFB5SZCD45C2R0Q0FPYM87","javascript-typescript-typescript-scaffold",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Frmyndharis\u002Fantigravity-skills\u002Fjavascript-typescript-typescript-scaffold\u002FSKILL.md",[],[18,19,20,21,22],"typescript","javascript","scaffold","javascript typescript","javascript typescript typescript scaffold","2026-11-10 10:12:30",false,"# 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\u002FSSG, API routes\n- **React + Vite**: SPA applications, component libraries\n- **Node.js API**: Express\u002FFastify 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\u002F\" >> .gitignore\necho \"dist\u002F\" >> .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 \"@\u002F*\"\n```\n\n```\nnextjs-project\u002F\n├── package.json\n├── tsconfig.json\n├── next.config.js\n├── .env.example\n├── src\u002F\n│   ├── app\u002F\n│   │   ├── layout.tsx\n│   │   ├── page.tsx\n│   │   ├── api\u002F\n│   │   │   └── health\u002F\n│   │   │       └── route.ts\n│   │   └── (routes)\u002F\n│   │       └── dashboard\u002F\n│   │           └── page.tsx\n│   ├── components\u002F\n│   │   ├── ui\u002F\n│   │   │   ├── Button.tsx\n│   │   │   └── Card.tsx\n│   │   └── layout\u002F\n│   │       ├── Header.tsx\n│   │       └── Footer.tsx\n│   ├── lib\u002F\n│   │   ├── api.ts\n│   │   ├── utils.ts\n│   │   └── types.ts\n│   └── hooks\u002F\n│       ├── useAuth.ts\n│       └── useFetch.ts\n└── tests\u002F\n    ├── setup.ts\n    └── components\u002F\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\u002Fnode\": \"^20.11.0\",\n    \"@types\u002Freact\": \"^18.2.0\",\n    \"typescript\": \"^5.3.0\",\n    \"vitest\": \"^1.2.0\",\n    \"@vitejs\u002Fplugin-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      \"@\u002F*\": [\".\u002Fsrc\u002F*\"]\n    },\n    \"plugins\": [{\"name\": \"next\"}]\n  },\n  \"include\": [\"next-env.d.ts\", \"**\u002F*.ts\", \"**\u002F*.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\u002Fplugin-react'\nimport path from 'path'\n\nexport default defineConfig({\n  plugins: [react()],\n  resolve: {\n    alias: {\n      '@': path.resolve(__dirname, '.\u002Fsrc'),\n    },\n  },\n  server: {\n    port: 3000,\n  },\n  test: {\n    globals: true,\n    environment: 'jsdom',\n    setupFiles: '.\u002Ftests\u002Fsetup.ts',\n  },\n})\n```\n\n### 5. Generate Node.js API Project Structure\n\n```\nnodejs-api\u002F\n├── package.json\n├── tsconfig.json\n├── src\u002F\n│   ├── index.ts\n│   ├── app.ts\n│   ├── config\u002F\n│   │   ├── database.ts\n│   │   └── env.ts\n│   ├── routes\u002F\n│   │   ├── index.ts\n│   │   ├── users.ts\n│   │   └── health.ts\n│   ├── controllers\u002F\n│   │   └── userController.ts\n│   ├── services\u002F\n│   │   └── userService.ts\n│   ├── models\u002F\n│   │   └── User.ts\n│   ├── middleware\u002F\n│   │   ├── auth.ts\n│   │   └── errorHandler.ts\n│   └── types\u002F\n│       └── express.d.ts\n└── tests\u002F\n    └── routes\u002F\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\u002Findex.ts\",\n    \"build\": \"tsc\",\n    \"start\": \"node dist\u002Findex.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\u002Fexpress\": \"^4.17.21\",\n    \"@types\u002Fnode\": \"^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\u002Fparser\": \"^6.19.0\",\n    \"@typescript-eslint\u002Feslint-plugin\": \"^6.19.0\"\n  }\n}\n```\n\n**src\u002Fapp.ts**:\n```typescript\nimport express, { Express } from 'express'\nimport { healthRouter } from '.\u002Froutes\u002Fhealth.js'\nimport { userRouter } from '.\u002Froutes\u002Fusers.js'\nimport { errorHandler } from '.\u002Fmiddleware\u002FerrorHandler.js'\n\nexport function createApp(): Express {\n  const app = express()\n\n  app.use(express.json())\n  app.use('\u002Fhealth', healthRouter)\n  app.use('\u002Fapi\u002Fusers', userRouter)\n  app.use(errorHandler)\n\n  return app\n}\n```\n\n### 6. Generate TypeScript Library Structure\n\n```\nlibrary-name\u002F\n├── package.json\n├── tsconfig.json\n├── tsconfig.build.json\n├── src\u002F\n│   ├── index.ts\n│   └── core.ts\n├── tests\u002F\n│   └── core.test.ts\n└── dist\u002F\n```\n\n**package.json for Library**:\n```json\n{\n  \"name\": \"@scope\u002Flibrary-name\",\n  \"version\": \"0.1.0\",\n  \"type\": \"module\",\n  \"main\": \".\u002Fdist\u002Findex.js\",\n  \"types\": \".\u002Fdist\u002Findex.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \".\u002Fdist\u002Findex.js\",\n      \"types\": \".\u002Fdist\u002Findex.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:\u002F\u002Fuser:pass@localhost:5432\u002Fdb\nJWT_SECRET=your-secret-key\n```\n\n**vitest.config.ts**:\n```typescript\nimport { defineConfig } from 'vitest\u002Fconfig'\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\u002Fparser\",\n  \"extends\": [\n    \"eslint:recommended\",\n    \"plugin:@typescript-eslint\u002Frecommended\"\n  ],\n  \"rules\": {\n    \"@typescript-eslint\u002Fno-explicit-any\": \"warn\",\n    \"@typescript-eslint\u002Fno-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",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Frmyndharis\u002Fantigravity-skills\u002Fjavascript-typescript-typescript-scaffold",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":37,"prompt":47,"zipAvailable":48},[38,41,44],{"tool":39,"command":40},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill javascript-typescript-typescript-scaffold",{"tool":42,"command":43},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill javascript-typescript-typescript-scaffold",{"tool":45,"command":46},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill javascript-typescript-typescript-scaffold","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Frmyndharis\u002Fantigravity-skills\u002Fjavascript-typescript-typescript-scaffold\u002FSKILL.md",true,[],[51,65,75,84,90,97],{"skillNo":52,"name":53,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":54,"categories":55,"keywords":61,"publishedAt":23},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[56],{"categoryNo":57,"categoryName":58,"taxonomyType":59,"taxonomyTypeDesc":60},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[62,63,64],"model","model hierarchy","model hierarchy skill",{"skillNo":66,"name":67,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":71,"publishedAt":23},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[70],{"categoryNo":57,"categoryName":58,"taxonomyType":59,"taxonomyTypeDesc":60},[72,73,74],"MCP","zoom","zoom mcp",{"skillNo":76,"name":77,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":23},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[81,82,83,73],"sdk","zoom apps sdk","apps",{"skillNo":85,"name":86,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":23},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[86],{"skillNo":91,"name":92,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":96,"publishedAt":23},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[95],{"categoryNo":57,"categoryName":58,"taxonomyType":59,"taxonomyTypeDesc":60},[92],{"skillNo":98,"name":99,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":23},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[99]]