Implement GitOps workflows with ArgoCD and Flux for automated, declarative Kubernetes...
npx skills add rmyndharis/antigravity-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.