setup
Setup — Auto-Install Compatible Skills
Scan the current project, detect its tech stack, and install the matching codekit skills automatically.
Workflow
- Detect — Scan project files to identify technologies, language, and project type
- Match — Map detected technologies to codekit skills
- Confirm — Show the user what will be installed
- Install — Run
codekit skills add <name>for each match - Update — Run
codekit learn --all -yto regenerate platform rules with installed skills
Step 1: Detect Project Tech Stack
Scan the project root for these signals. Check them in order — stop early when the language ecosystem is clear.
JavaScript / TypeScript Ecosystem
| Signal | What it tells you |
|---|---|
| package.json | Read dependencies, devDependencies, scripts, bin, main, exports |
| tsconfig.json | TypeScript project |
| bun.lockb / bunfig.toml | Bun runtime |
| next.config.* | Next.js fullstack |
| nuxt.config.* | Nuxt fullstack |
| svelte.config.* | SvelteKit fullstack |
| vite.config.* | Vite frontend |
| app.json / app.config.js with expo | Expo mobile |
| Podfile / ios/ | iOS native |
| android/ | Android native |
Python Ecosystem
| Signal | What it tells you |
|---|---|
uv.lock / pyproject.toml with [tool.uv] |
Python + uv package manager |
| pyproject.toml | Python project (check [project.dependencies] or [tool.poetry.dependencies]) |
| requirements.txt | Python project (read for package names) |
| Pipfile | Python + pipenv |
| setup.py / setup.cfg | Python package |
Other Languages
| Signal | What it tells you |
|---|---|
| Cargo.toml | Rust project |
| go.mod | Go project |
| *Gemfile / .gemspec | Ruby project |
| composer.json | PHP project |
| **.csproj / .sln | .NET / C# project |
| pom.xml / build.gradle | Java / Kotlin project |
| Package.swift | Swift project |
| mix.exs | Elixir project |
| Makefile + .c/.cpp/*.h | C/C++ project |
Cross-Language Signals
| Signal | What it tells you |
|---|---|
| .github/workflows/ | GitHub Actions CI/CD |
| .git/ | Git repository |
| docker-compose.yml / Dockerfile | Containerized project |
| prisma/schema.prisma | Prisma ORM (PostgreSQL/MySQL/MongoDB) |
| drizzle.config.* | Drizzle ORM |
| mongod.conf / .mongodb | MongoDB |
Step 2: Detect Project Type
Determine the project type — this decides the Cook workflow phases:
| Signal | Project Type | Base Template | Phases |
|---|---|---|---|
| API routes, controllers, ORM, no UI — NestJS, ElysiaJS, FastAPI, Express, Hono | Backend | cook-backend |
Plan → Code → Review → Test |
| React/Vue/Svelte SPA, CSS, components, no API routes | Frontend | cook-frontend |
Plan → Design → Code → Review → Test |
| React Native, Expo, iOS/Android | Mobile | cook-mobile |
Plan → Design → Code → Review → Test |
| Next.js, Nuxt, SvelteKit (API + UI in one project) | Fullstack | cook-fullstack |
Plan → Design → Code API → Code UI → Review → Test |
bin field, commander/yargs/meow/oclif, CLI entry |
CLI | cook-cli |
Plan → Code → Review → Test |
main/exports in package.json, no app; or Python package with setup.py/pyproject.toml |
Library | cook-library |
Plan → Design → Code → Review → Test |
If mixed or unclear, use Fullstack.
Step 3: Match Technologies to Skills
Use these lookup tables. Install a skill when any of its triggers match.
Always Install
These skills benefit every project regardless of language:
| Skill | Reason |
|---|---|
memory-bank |
Persistent context across sessions |
git-expert |
Every project uses git |
agents |
Universal AI agent configuration (agents.md standard) |
Python Detection
| Trigger | Skills to Install |
|---|---|
fastapi in Python deps (requirements.txt, pyproject.toml, Pipfile) |
fastapi, python-fastapi |
sqlalchemy, alembic in Python deps |
database-expert |
pymongo, motor, mongoengine in Python deps |
database-expert |
psycopg2, asyncpg in Python deps |
database-expert |
pgvector in Python deps |
pgvector, database-expert |
pytest, unittest in Python deps |
testing-expert |
ruff, flake8, pylint, black in Python deps |
linting-expert |
Note: Python with uv uses pyproject.toml ([project.dependencies]) or uv.lock. Read these files to detect packages.
TypeScript / JavaScript Detection
| Trigger | Skills to Install |
|---|---|
typescript in devDeps OR tsconfig.json exists |
typescript-expert |
react in deps (without react-native) |
react |
next in deps |
nextjs |
react OR next in deps |
uiux-design-expert, web-design-guidelines, vercel-react-best-practices, vercel-composition-patterns, chrome-devtools |
@nestjs/core in deps |
typescript-expert, database-expert, testing-expert |
elysia in deps AND bun runtime |
elysiajs-ddd |
elysia + mongoose in deps |
elysiajs-ddd-mongoose (instead of elysiajs-ddd) |
elysia + (prisma OR drizzle OR pg) in deps |
elysiajs-ddd |
react-native in deps (without expo) |
react-native, react-native-best-practices, vercel-react-native-skills, mobile-app-distribution |
expo in deps OR app.json with expo config |
react-native-expo, react-native-best-practices, vercel-react-native-skills, mobile-app-distribution |
React Recommended Stack
When react or next is detected, also check for these recommended frontend libraries. If they are not present in deps, suggest them as the recommended stack:
| Library | Purpose | Package Name |
|---|---|---|
| TanStack Query | Server state & data fetching | @tanstack/react-query |
| TanStack Table | Headless table/datagrid | @tanstack/react-table |
| Zod | Schema validation | zod |
| Zustand | Client state management | zustand |
| Axios | HTTP client | axios |
| React Hook Form | Form handling | react-hook-form |
| Recharts | Charts & data visualization | recharts |
Behavior:
- If the project already uses these libraries, no action needed — they're part of the stack.
- If the project is new or missing these, mention them as the recommended React stack when confirming with the user.
rechartsis optional — only recommend if the project has chart/dashboard features or the user asks for charts.
Database Detection
| Trigger | Skills to Install |
|---|---|
pg, postgres, @neondatabase/serverless, knex, prisma, drizzle, sequelize, typeorm in JS/TS deps |
database-expert |
mongoose, mongodb, @typegoose/typegoose in JS/TS deps |
database-expert |
mysql2 in JS/TS deps |
database-expert |
pgvector in deps OR SQL files with vector type |
pgvector, database-expert |
prisma/schema.prisma exists |
database-expert |
Architecture Detection
| Trigger | Skills to Install |
|---|---|
@nestjs/core OR elysia in deps with DDD-style folder structure (domain/, application/, infrastructure/) |
clean-architecture-ddd, domain-driven-hexagon |
@nestjs/cqrs in deps |
domain-driven-hexagon |
FastAPI with layered structure (domain/, services/, repositories/) |
clean-architecture-ddd |
Tooling Detection
| Trigger | Skills to Install |
|---|---|
jest, vitest, mocha, or @testing-library/* in JS/TS deps |
testing-expert |
eslint or prettier in deps/devDeps |
linting-expert |
.github/ directory exists |
github, github-actions |
commander, yargs, meow, or oclif in deps |
cli-expert |
Other Languages (Baseline Skills)
For languages without specialized skills, install the baseline:
| Language | Skills to Install |
|---|---|
| Rust (Cargo.toml) | memory-bank, git-expert, testing-expert + cook (auto-generated for backend or library) |
| Go (go.mod) | memory-bank, git-expert, testing-expert + cook (auto-generated for backend or library) |
| Ruby (Gemfile) | memory-bank, git-expert, database-expert, testing-expert + cook (auto-generated for backend) |
| PHP (composer.json) | memory-bank, git-expert, database-expert, testing-expert + cook (auto-generated for backend) |
| .NET (*.csproj) | memory-bank, git-expert, database-expert, testing-expert + cook (auto-generated for backend or fullstack) |
| Java/Kotlin (pom.xml/build.gradle) | memory-bank, git-expert, database-expert, testing-expert + cook (auto-generated for backend) |
| Swift (Package.swift) | memory-bank, git-expert + cook (auto-generated for mobile or library) |
| Elixir (mix.exs) | memory-bank, git-expert, database-expert, testing-expert + cook (auto-generated for backend) |
| C/C++ (Makefile + .c/.h) | memory-bank, git-expert, testing-expert + cook (auto-generated for library) |
For these languages, add github + github-actions if .github/ exists, and linting-expert if linter config files exist.
Step 4: Skip Rules
Do NOT install skills that conflict:
reactandnextjsare alternatives — installnextjsif bothreactandnextare in depsreact-nativeandreact-native-expoare alternatives — install based on whetherexpois presentelysiajs-dddandelysiajs-ddd-mongooseare alternatives — install based on whethermongooseis presentpython-fastapiandfastapi— install both (they complement each other with different depth)- Do NOT install pre-built cook variants — always auto-generate
cook(see Step 7)
Step 5: Confirm with User
Before installing, show the detection results and proposed skills:
Detected: TypeScript, Bun, ElysiaJS, Mongoose, GitHub Actions
Project type: Backend
Skills to install (11):
Always: memory-bank, agents, git-expert
Auto-gen: cook (customized for backend — ElysiaJS + Mongoose)
Framework: elysiajs-ddd-mongoose, typescript-expert
Database: database-expert
Arch: clean-architecture-ddd, domain-driven-hexagon
Tooling: testing-expert, github, github-actions
Proceed? (Y/n)
If the user declines, ask which skills to skip.
Step 6: Install Skills
Run each install command:
codekit skills add <name>
Install sequentially to avoid conflicts. If a skill is already installed, skip it — codekit skills add will report it.
After installing, check for related skills the user might also want:
codekit skills related <name>
Step 7: Generate Cook Skill
Do NOT install a pre-built cook variant. Instead, generate a custom cook skill tailored to this project.
How to Generate
- Read the matching base cook template:
codekit skills add <cook-variant>to get the base, OR read it from.claude/skills/cook-<type>/SKILL.md - Generate
.claude/skills/cook/SKILL.mdby customizing the base template with project-specific details - Remove the base variant after generating (only keep the customized
cook)
What to Customize
Replace generic terms with actual project details:
| Generic | Replace With |
|---|---|
| "API routes, controllers" | Actual framework (e.g., "NestJS controllers", "FastAPI routers", "ElysiaJS handlers") |
| "models, migrations, schemas" | Actual ORM (e.g., "Prisma models", "Mongoose schemas", "SQLAlchemy models + Alembic migrations") |
| "Run the full test suite" | Actual command (e.g., "bun run test", "pytest", "vitest run") |
| "Run type checking" | Actual command (e.g., "tsc --noEmit", "mypy .") |
| "Run linting" | Actual command (e.g., "eslint .", "ruff check .") |
| "components, pages, state" | Actual stack (e.g., "React components with Zustand store", "Next.js pages with TanStack Query") |
| "data fetching" | Actual library (e.g., "TanStack Query", "SWR", "Axios") |
| "form handling" | Actual library (e.g., "React Hook Form + Zod validation") |
| "package manager" | Actual PM (e.g., "bun", "uv", "pnpm") |
Generated Cook Structure
The generated .claude/skills/cook/SKILL.md must always include:
---
name: cook
description: [Project-specific description with actual tech stack]
---
# Cook — [Project Type] Workflow for [Project Name]
[Phase diagram]
---
## Memory Bank — Required for Every Session
[Always include this section — copy from any cook variant]
---
## [PLAN] Plan
[Customized with actual project context]
## [DESIGN] Design (if applicable)
[Customized with actual component/API patterns]
## [CODE] Code
[Customized with actual framework, ORM, patterns]
## [REVIEW] Review
[Customized checklist with actual tech-specific checks]
## [TEST] Test
[Customized with actual test runner, commands, patterns]
---
## Iteration
[Standard iteration rules]
## Phase Markers
[Standard phase markers]
Example: Generated Cook for a Next.js + Prisma + TanStack Project
---
name: cook
description: Workflow orchestration for the [project-name] fullstack project — Next.js 15, Prisma, TanStack Query, Zustand. Phases: Plan, Design, Code API, Code UI, Review, Test.
---
# Cook — Fullstack Workflow for [project-name]
Plan → Design → Code (API first) → Code (UI) → Review → Test
## Memory Bank — Required for Every Session
[... standard memory-bank section ...]
## [PLAN] Plan
1. Read requirements. Identify both API routes and page/component changes.
2. Break into backend subtasks (Prisma models, API routes) and frontend subtasks (components, pages).
3. Define the API contract — Next.js API route request/response shapes.
4. Define acceptance criteria for the full user flow.
## [DESIGN] Design
1. Design API contract first — Next.js API routes are the bridge.
2. Define component hierarchy and TanStack Query data fetching strategy.
3. Plan Zustand store shape for client state.
4. Plan loading states, optimistic UI, and error handling.
## [CODE] Code — API First
1. Implement Prisma schema changes and run `bunx prisma db push`.
2. Implement Next.js API routes / Server Actions.
3. Validate API works with a test or manual check.
4. Then implement React components with TanStack Query for data fetching.
5. Wire up React Hook Form + Zod for form validation.
6. Use Zustand for client-side state where needed.
## [REVIEW] Review
1. **Prisma** — Schema correct? Migrations clean? No N+1 queries?
2. **API routes** — Correct HTTP methods? Input validated with Zod? Proper error responses?
3. **Components** — TanStack Query keys correct? Loading/error states handled?
4. **Forms** — React Hook Form + Zod validation working? Error messages shown?
5. **Types** — No `any`? Prisma types flowing through to components?
6. **Security** — Auth checks on protected routes? No exposed secrets?
## [TEST] Test
1. `bun run test` — Run Vitest suite.
2. `tsc --noEmit` — Type check passes.
3. `eslint .` — No lint errors.
4. Test API routes with edge case inputs.
5. Visual check — run `bun run dev` and verify the feature.
Step 8: Update Platform Rules
After all skills are installed and cook is generated, regenerate platform rules:
codekit learn --all -y
This updates CLAUDE.md, .cursorrules, GEMINI.md, and AGENTS.md with the installed skills section.
Example Detection
Python FastAPI + uv Project (Backend)
# pyproject.toml
[project]
dependencies = [
"fastapi>=0.115.0",
"sqlalchemy[asyncio]>=2.0",
"asyncpg>=0.30.0",
"alembic>=1.14.0",
]
[tool.uv]
dev-dependencies = [
"pytest>=8.0",
"ruff>=0.8.0",
]
Detected: Python, uv, FastAPI, SQLAlchemy, asyncpg (PostgreSQL), pytest, ruff Project type: Backend (FastAPI API, no UI)
Installed skills:
memory-bank,agents,git-expert(always) +cook(auto-generated for backend)fastapi,python-fastapi(fastapi in deps)database-expert(sqlalchemy + asyncpg in deps)testing-expert(pytest in dev-deps)linting-expert(ruff in dev-deps)github,github-actions(if .github/ exists)
NestJS + PostgreSQL Project (Backend)
{
"dependencies": {
"@nestjs/core": "^10.0.0",
"@nestjs/typeorm": "^10.0.0",
"typeorm": "^0.3.0",
"pg": "^8.0.0"
},
"devDependencies": {
"typescript": "5.x",
"jest": "29.x",
"eslint": "9.x"
}
}
Detected: TypeScript, NestJS, TypeORM, PostgreSQL, Jest, ESLint Project type: Backend (NestJS, no UI)
Installed skills:
memory-bank,agents,git-expert(always) +cook(auto-generated for backend)typescript-expert(typescript in devDeps)database-expert(typeorm + pg in deps)clean-architecture-ddd,domain-driven-hexagon(NestJS architecture)testing-expert(jest in devDeps)linting-expert(eslint in devDeps)github,github-actions(if .github/ exists)
Bun ElysiaJS + MongoDB Project (Backend)
{
"dependencies": {
"elysia": "^1.2.0",
"mongoose": "^8.0.0",
"@elysiajs/cors": "^1.0.0"
},
"devDependencies": {
"typescript": "5.x",
"bun-types": "latest"
}
}
Detected: TypeScript, Bun, ElysiaJS, Mongoose (MongoDB) Project type: Backend (ElysiaJS API, no UI)
Installed skills:
memory-bank,agents,git-expert(always) +cook(auto-generated for backend)elysiajs-ddd-mongoose(elysia + mongoose in deps)typescript-expert(typescript in devDeps)database-expert(mongoose in deps)clean-architecture-ddd,domain-driven-hexagon(DDD architecture)testing-expert
Bun ElysiaJS + PostgreSQL Project (Backend)
{
"dependencies": {
"elysia": "^1.2.0",
"prisma": "^6.0.0",
"@prisma/client": "^6.0.0"
},
"devDependencies": {
"typescript": "5.x",
"bun-types": "latest"
}
}
Detected: TypeScript, Bun, ElysiaJS, Prisma (PostgreSQL) Project type: Backend (ElysiaJS API, no UI)
Installed skills:
memory-bank,agents,git-expert(always) +cook(auto-generated for backend)elysiajs-ddd(elysia + prisma in deps, no mongoose)typescript-expert(typescript in devDeps)database-expert(prisma in deps)clean-architecture-ddd,domain-driven-hexagon(DDD architecture)testing-expert
Next.js + Prisma Project (Fullstack)
{
"dependencies": {
"next": "15.x",
"react": "19.x",
"@prisma/client": "6.x",
"@tanstack/react-query": "^5.0.0",
"@tanstack/react-table": "^8.0.0",
"zustand": "^5.0.0",
"axios": "^1.7.0",
"react-hook-form": "^7.0.0",
"zod": "^3.23.0"
},
"devDependencies": {
"typescript": "5.x",
"eslint": "9.x",
"vitest": "3.x"
}
}
Detected: TypeScript, Next.js, React, Prisma, TanStack Query, TanStack Table, Zustand, Axios, React Hook Form, Zod, ESLint, Vitest Project type: Fullstack (Next.js = API + UI)
Installed skills:
memory-bank,agents,git-expert(always) +cook(auto-generated for fullstack)nextjs(next in deps, prefer over react since both present)typescript-expert(typescript in devDeps)uiux-design-expert,web-design-guidelines,vercel-react-best-practices,vercel-composition-patterns,chrome-devtools(frontend stack)database-expert(prisma in deps)testing-expert(vitest in devDeps)linting-expert(eslint in devDeps)github,github-actions(if .github/ exists)
Recommended stack detected: TanStack Query, TanStack Table, Zustand, Axios, React Hook Form, Zod
React SPA Project (Frontend)
{
"dependencies": {
"react": "19.x",
"react-dom": "19.x",
"@tanstack/react-query": "^5.0.0",
"@tanstack/react-table": "^8.0.0",
"zustand": "^5.0.0",
"axios": "^1.7.0",
"react-hook-form": "^7.0.0",
"zod": "^3.23.0",
"recharts": "^2.0.0"
},
"devDependencies": {
"typescript": "5.x",
"vite": "6.x",
"eslint": "9.x",
"vitest": "3.x"
}
}
Detected: TypeScript, React, Vite, TanStack Query, TanStack Table, Zustand, Axios, React Hook Form, Zod, Recharts, ESLint, Vitest Project type: Frontend (React SPA, no API layer)
Installed skills:
memory-bank,agents,git-expert(always) +cook(auto-generated for frontend)react(react in deps, no next)typescript-expert(typescript in devDeps)uiux-design-expert,web-design-guidelines,vercel-react-best-practices,vercel-composition-patterns,chrome-devtools(frontend stack)testing-expert(vitest in devDeps)linting-expert(eslint in devDeps)
Recommended stack detected: TanStack Query, TanStack Table, Zustand, Axios, React Hook Form, Zod, Recharts
React Native Expo Project (Mobile)
{
"dependencies": {
"expo": "52.x",
"react-native": "0.76.x",
"expo-router": "4.x"
},
"devDependencies": {
"typescript": "5.x",
"jest": "29.x"
}
}
Detected: TypeScript, Expo, React Native, Jest Project type: Mobile (React Native + Expo)
Installed skills:
memory-bank,agents,git-expert(always) +cook(auto-generated for mobile)react-native-expo(expo in deps)react-native-best-practices,vercel-react-native-skills(mobile enhancers)mobile-app-distribution(mobile project)typescript-expert(typescript in devDeps)testing-expert(jest in devDeps)
CLI Tool Project (CLI)
{
"bin": { "mytool": "./dist/index.js" },
"dependencies": {
"commander": "^12.0.0"
},
"devDependencies": {
"typescript": "5.x",
"vitest": "3.x"
}
}
Detected: TypeScript, Commander, Vitest
Project type: CLI (bin field + commander)
Installed skills:
memory-bank,agents,git-expert(always) +cook(auto-generated for CLI)cli-expert(commander in deps)typescript-expert(typescript in devDeps)testing-expert(vitest in devDeps)
Go Backend Project (Backend)
// go.mod
module github.com/user/api
go 1.23
require (
github.com/gin-gonic/gin v1.10.0
github.com/jackc/pgx/v5 v5.7.0
)
Detected: Go, Gin, pgx (PostgreSQL) Project type: Backend (API with database)
Installed skills:
memory-bank,agents,git-expert(always) +cook(auto-generated for backend)database-expert(pgx = PostgreSQL)testing-expert(Go has built-in testing)github,github-actions(if .github/ exists)
Rust Library Project (Library)
# Cargo.toml
[package]
name = "my-lib"
version = "0.1.0"
[lib]
name = "my_lib"
[dev-dependencies]
tokio-test = "0.4"
Detected: Rust, library crate
Project type: Library ([lib] section in Cargo.toml)
Installed skills:
memory-bank,agents,git-expert(always) +cook(auto-generated for library)testing-expertgithub,github-actions(if .github/ exists)