Refactor high-complexity React components in Dify frontend. Use when `pnpm analyze-component...
npx skills add sickn33/antigravity-awesome-skills --skill "javascript-typescript-typescript-scaffold"
Install specific skill from multi-skill repository
# 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
# SKILL.md
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"
TypeScript Project Scaffolding
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, Next.js), type safety, testing setup, and configuration following current best practices.
Use this skill when
- Working on typescript project scaffolding tasks or workflows
- Needing guidance, best practices, or checklists for typescript project scaffolding
Do not use this skill when
- The task is unrelated to typescript project scaffolding
- You need a different domain or tool outside this scope
Context
The 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.
Requirements
$ARGUMENTS
Instructions
1. Analyze Project Type
Determine the project type from user requirements:
- Next.js: Full-stack React applications, SSR/SSG, API routes
- React + Vite: SPA applications, component libraries
- Node.js API: Express/Fastify backends, microservices
- Library: Reusable packages, utilities, tools
- CLI: Command-line tools, automation scripts
2. Initialize Project with pnpm
# Install pnpm if needed
npm install -g pnpm
# Initialize project
mkdir project-name && cd project-name
pnpm init
# Initialize git
git init
echo "node_modules/" >> .gitignore
echo "dist/" >> .gitignore
echo ".env" >> .gitignore
3. Generate Next.js Project Structure
# Create Next.js project with TypeScript
pnpm create next-app@latest . --typescript --tailwind --app --src-dir --import-alias "@/*"
nextjs-project/
βββ package.json
βββ tsconfig.json
βββ next.config.js
βββ .env.example
βββ src/
β βββ app/
β β βββ layout.tsx
β β βββ page.tsx
β β βββ api/
β β β βββ health/
β β β βββ route.ts
β β βββ (routes)/
β β βββ dashboard/
β β βββ page.tsx
β βββ components/
β β βββ ui/
β β β βββ Button.tsx
β β β βββ Card.tsx
β β βββ layout/
β β βββ Header.tsx
β β βββ Footer.tsx
β βββ lib/
β β βββ api.ts
β β βββ utils.ts
β β βββ types.ts
β βββ hooks/
β βββ useAuth.ts
β βββ useFetch.ts
βββ tests/
βββ setup.ts
βββ components/
βββ Button.test.tsx
package.json:
{
"name": "nextjs-project",
"version": "0.1.0",
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint",
"test": "vitest",
"type-check": "tsc --noEmit"
},
"dependencies": {
"next": "^14.1.0",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
"devDependencies": {
"@types/node": "^20.11.0",
"@types/react": "^18.2.0",
"typescript": "^5.3.0",
"vitest": "^1.2.0",
"@vitejs/plugin-react": "^4.2.0",
"eslint": "^8.56.0",
"eslint-config-next": "^14.1.0"
}
}
tsconfig.json:
{
"compilerOptions": {
"target": "ES2022",
"lib": ["ES2022", "DOM", "DOM.Iterable"],
"jsx": "preserve",
"module": "ESNext",
"moduleResolution": "bundler",
"resolveJsonModule": true,
"allowJs": true,
"strict": true,
"noEmit": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"incremental": true,
"paths": {
"@/*": ["./src/*"]
},
"plugins": [{"name": "next"}]
},
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
"exclude": ["node_modules"]
}
4. Generate React + Vite Project Structure
# Create Vite project
pnpm create vite . --template react-ts
vite.config.ts:
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import path from 'path'
export default defineConfig({
plugins: [react()],
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),
},
},
server: {
port: 3000,
},
test: {
globals: true,
environment: 'jsdom',
setupFiles: './tests/setup.ts',
},
})
5. Generate Node.js API Project Structure
nodejs-api/
βββ package.json
βββ tsconfig.json
βββ src/
β βββ index.ts
β βββ app.ts
β βββ config/
β β βββ database.ts
β β βββ env.ts
β βββ routes/
β β βββ index.ts
β β βββ users.ts
β β βββ health.ts
β βββ controllers/
β β βββ userController.ts
β βββ services/
β β βββ userService.ts
β βββ models/
β β βββ User.ts
β βββ middleware/
β β βββ auth.ts
β β βββ errorHandler.ts
β βββ types/
β βββ express.d.ts
βββ tests/
βββ routes/
βββ users.test.ts
package.json for Node.js API:
{
"name": "nodejs-api",
"version": "0.1.0",
"type": "module",
"scripts": {
"dev": "tsx watch src/index.ts",
"build": "tsc",
"start": "node dist/index.js",
"test": "vitest",
"lint": "eslint src --ext .ts"
},
"dependencies": {
"express": "^4.18.2",
"dotenv": "^16.4.0",
"zod": "^3.22.0"
},
"devDependencies": {
"@types/express": "^4.17.21",
"@types/node": "^20.11.0",
"typescript": "^5.3.0",
"tsx": "^4.7.0",
"vitest": "^1.2.0",
"eslint": "^8.56.0",
"@typescript-eslint/parser": "^6.19.0",
"@typescript-eslint/eslint-plugin": "^6.19.0"
}
}
src/app.ts:
import express, { Express } from 'express'
import { healthRouter } from './routes/health.js'
import { userRouter } from './routes/users.js'
import { errorHandler } from './middleware/errorHandler.js'
export function createApp(): Express {
const app = express()
app.use(express.json())
app.use('/health', healthRouter)
app.use('/api/users', userRouter)
app.use(errorHandler)
return app
}
6. Generate TypeScript Library Structure
library-name/
βββ package.json
βββ tsconfig.json
βββ tsconfig.build.json
βββ src/
β βββ index.ts
β βββ core.ts
βββ tests/
β βββ core.test.ts
βββ dist/
package.json for Library:
{
"name": "@scope/library-name",
"version": "0.1.0",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"import": "./dist/index.js",
"types": "./dist/index.d.ts"
}
},
"files": ["dist"],
"scripts": {
"build": "tsc -p tsconfig.build.json",
"test": "vitest",
"prepublishOnly": "pnpm build"
},
"devDependencies": {
"typescript": "^5.3.0",
"vitest": "^1.2.0"
}
}
7. Configure Development Tools
.env.example:
NODE_ENV=development
PORT=3000
DATABASE_URL=postgresql://user:pass@localhost:5432/db
JWT_SECRET=your-secret-key
vitest.config.ts:
import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
globals: true,
environment: 'node',
coverage: {
provider: 'v8',
reporter: ['text', 'json', 'html'],
},
},
})
.eslintrc.json:
{
"parser": "@typescript-eslint/parser",
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"rules": {
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/no-unused-vars": "error"
}
}
Output Format
- Project Structure: Complete directory tree with all necessary files
- Configuration: package.json, tsconfig.json, build tooling
- Entry Point: Main application file with type-safe setup
- Tests: Test structure with Vitest configuration
- Documentation: README with setup and usage instructions
- Development Tools: .env.example, .gitignore, linting config
Focus on creating production-ready TypeScript projects with modern tooling, strict type safety, and comprehensive testing setup.
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.