codebase-onboarding
分析陌生 codebase,產出上手指南和起手的 CLAUDE.md
中文翻譯
---
name: codebase-onboarding
description: 分析不熟悉的 codebase,產出結構化的上手指南,包含架構地圖、關鍵進入點、慣例,以及一份起手的 CLAUDE.md。適用於加入新專案,或第一次在某個 repo 裡設定 Claude Code。
metadata:
origin: ECC
---
# Codebase Onboarding
有系統地分析不熟悉的 codebase,產出結構化的上手指南。設計給加入新專案的開發者,或是第一次在既有 repo 裡設定 Claude Code 的人。
## When to Use
- 第一次用 Claude Code 開啟某個專案
- 加入新團隊或新的 repository
- 使用者問「help me understand this codebase」
- 使用者要求為專案產生 CLAUDE.md
- 使用者說「onboard me」或「walk me through this repo」
## How It Works
### Phase 1: Reconnaissance
不用讀完每個檔案,先蒐集這個專案的原始訊號。平行執行下面這些檢查:
```
1. Package manifest detection
→ package.json, go.mod, Cargo.toml, pyproject.toml, pom.xml, build.gradle,
Gemfile, composer.json, mix.exs, pubspec.yaml
2. Framework fingerprinting
→ next.config.*, nuxt.config.*, angular.json, vite.config.*,
django settings, flask app factory, fastapi main, rails config
3. Entry point identification
→ main.*, index.*, app.*, server.*, cmd/, src/main/
4. Directory structure snapshot
→ Top 2 levels of the directory tree, ignoring node_modules, vendor,
.git, dist, build, __pycache__, .next
5. Config and tooling detection
→ .eslintrc*, .prettierrc*, tsconfig.json, Makefile, Dockerfile,
docker-compose*, .github/workflows/, .env.example, CI configs
6. Test structure detection
→ tests/, test/, __tests__/, *_test.go, *.spec.ts, *.test.js,
pytest.ini, jest.config.*, vitest.config.*
```
### Phase 2: Architecture Mapping
從偵察得到的資料,找出:
**Tech Stack**
- 程式語言和版本限制
- Framework 和主要的函式庫
- 資料庫和 ORM
- 建置工具和 bundler
- CI/CD 平台
**Architecture Pattern**
- Monolith、monorepo、microservices 或 serverless
- 前後端分離或 full-stack
- API 風格:REST、GraphQL、gRPC、tRPC
**Key Directories**
把最上層的目錄對應到它們的用途:
<!-- 這是 React 專案的範例,請換成偵測到的目錄 -->
```
src/components/ → React UI components
src/api/ → API route handlers
src/lib/ → Shared utilities
src/db/ → Database models and migrations
tests/ → Test suites
scripts/ → Build and deployment scripts
```
**Data Flow**
追蹤一個請求從進入到回應:
- 請求從哪裡進來?(router、handler、controller)
- 怎麼驗證?(middleware、schema、guard)
- 商業邏輯在哪裡?(service、model、use case)
- 怎麼連到資料庫?(ORM、raw query、repository)
### Phase 3: Convention Detection
找出 codebase 已經遵循的模式:
**Naming Conventions**
- 檔案命名:kebab-case、camelCase、PascalCase、snake_case
- 元件/類別的命名模式
- 測試檔案的命名:`*.test.ts`、`*.spec.ts`、`*_test.go`
**Code Patterns**
- 錯誤處理風格:try/catch、Result 型別、錯誤碼
- 依賴注入或直接 import
- 狀態管理的做法
- 非同步模式:callback、promise、async/await、channel
**Git Conventions**
- 從最近的 branch 看 branch 命名
- 從最近的 commit 看 commit 訊息風格
- PR 工作流程(squash、merge、rebase)
- 如果 repo 還沒有 commit,或只有淺層歷史(例如 `git clone --depth 1`),就跳過這一節,並註明「Git history unavailable or too shallow to detect conventions」
### Phase 4: Generate Onboarding Artifacts
產出兩份東西:
#### Output 1: Onboarding Guide
```markdown
# Onboarding Guide: [Project Name]
## Overview
[2-3 sentences: what this project does and who it serves]
## Tech Stack
<!-- Example for a Next.js project — replace with detected stack -->
| Layer | Technology | Version |
|-------|-----------|---------|
| Language | TypeScript | 5.x |
| Framework | Next.js | 14.x |
| Database | PostgreSQL | 16 |
| ORM | Prisma | 5.x |
| Testing | Jest + Playwright | - |
## Architecture
[Diagram or description of how components connect]
## Key Entry Points
<!-- Example for a Next.js project — replace with detected paths -->
- **API routes**: `src/app/api/` — Next.js route handlers
- **UI pages**: `src/app/(dashboard)/` — authenticated pages
- **Database**: `prisma/schema.prisma` — data model source of truth
- **Config**: `next.config.ts` — build and runtime config
## Directory Map
[Top-level directory → purpose mapping]
## Request Lifecycle
[Trace one API request from entry to response]
## Conventions
- [File naming pattern]
- [Error handling approach]
- [Testing patterns]
- [Git workflow]
## Common Tasks
<!-- Example for a Node.js project — replace with detected commands -->
- **Run dev server**: `npm run dev`
- **Run tests**: `npm test`
- **Run linter**: `npm run lint`
- **Database migrations**: `npx prisma migrate dev`
- **Build for production**: `npm run build`
## Where to Look
<!-- Example for a Next.js project — replace with detected paths -->
| I want to... | Look at... |
|--------------|-----------|
| Add an API endpoint | `src/app/api/` |
| Add a UI page | `src/app/(dashboard)/` |
| Add a database table | `prisma/schema.prisma` |
| Add a test | `tests/` matching the source path |
| Change build config | `next.config.ts` |
```
#### Output 2: Starter CLAUDE.md
根據偵測到的慣例,產生或更新專案專屬的 CLAUDE.md。如果 `CLAUDE.md` 已經存在,先讀它再加強,保留既有的專案專屬指示,並清楚標出新增或更動了什麼。
```markdown
# Project Instructions
## Tech Stack
[Detected stack summary]
## Code Style
- [Detected naming conventions]
- [Detected patterns to follow]
## Testing
- Run tests: `[detected test command]`
- Test pattern: [detected test file convention]
- Coverage: [if configured, the coverage command]
## Build & Run
- Dev: `[detected dev command]`
- Build: `[detected build command]`
- Lint: `[detected lint command]`
## Project Structure
[Key directory → purpose map]
## Conventions
- [Commit style if detectable]
- [PR workflow if detectable]
- [Error handling patterns]
```
## Best Practices
1. **不要全部都讀**:偵察應該用 Glob 和 Grep,不要對每個檔案都用 Read。只有訊號不明確時,才選擇性地讀。
2. **要驗證,不要猜**:如果從設定檔偵測到某個 framework,但實際程式碼用的是別的東西,以程式碼為準。
3. **尊重既有的 CLAUDE.md**:如果已經有一份,就加強它,不要取代它。標出哪些是新的、哪些是原本就有的。
4. **保持精簡**:上手指南應該 2 分鐘內就能掃完。細節屬於程式碼,不屬於指南。
5. **標出未知的部分**:如果某個慣例無法有把握地偵測出來,就直說,不要猜。「Could not determine test runner」比給錯誤的答案好。
## Anti-Patterns to Avoid
- 產生超過 100 行的 CLAUDE.md,要保持聚焦
- 列出每一個依賴,只強調那些會左右你怎麼寫程式的
- 描述顯而易見的目錄名稱,`src/` 不需要解釋
- 照抄 README,上手指南要補上 README 缺少的結構性洞見
## Examples
### Example 1: First time in a new repo
**User**: "Onboard me to this codebase"
**Action**: 執行完整的 4 個階段流程 → 產出 Onboarding Guide + Starter CLAUDE.md
**Output**: Onboarding Guide 直接印在對話裡,再加上寫到專案根目錄的 `CLAUDE.md`
### Example 2: Generate CLAUDE.md for existing project
**User**: "Generate a CLAUDE.md for this project"
**Action**: 執行 Phase 1-3,跳過 Onboarding Guide,只產出 CLAUDE.md
**Output**: 含有偵測到的慣例、專案專屬的 `CLAUDE.md`
### Example 3: Enhance existing CLAUDE.md
**User**: "Update the CLAUDE.md with current project conventions"
**Action**: 讀取現有的 CLAUDE.md,執行 Phase 1-3,合併新的發現
**Output**: 更新後的 `CLAUDE.md`,新增的部分有清楚標記英文原文
---
name: codebase-onboarding
description: Analyze an unfamiliar codebase and generate a structured onboarding guide with architecture map, key entry points, conventions, and a starter CLAUDE.md. Use when joining a new project or setting up Claude Code for the first time in a repo.
metadata:
origin: ECC
---
# Codebase Onboarding
Systematically analyze an unfamiliar codebase and produce a structured onboarding guide. Designed for developers joining a new project or setting up Claude Code in an existing repo for the first time.
## When to Use
- First time opening a project with Claude Code
- Joining a new team or repository
- User asks "help me understand this codebase"
- User asks to generate a CLAUDE.md for a project
- User says "onboard me" or "walk me through this repo"
## How It Works
### Phase 1: Reconnaissance
Gather raw signals about the project without reading every file. Run these checks in parallel:
```
1. Package manifest detection
→ package.json, go.mod, Cargo.toml, pyproject.toml, pom.xml, build.gradle,
Gemfile, composer.json, mix.exs, pubspec.yaml
2. Framework fingerprinting
→ next.config.*, nuxt.config.*, angular.json, vite.config.*,
django settings, flask app factory, fastapi main, rails config
3. Entry point identification
→ main.*, index.*, app.*, server.*, cmd/, src/main/
4. Directory structure snapshot
→ Top 2 levels of the directory tree, ignoring node_modules, vendor,
.git, dist, build, __pycache__, .next
5. Config and tooling detection
→ .eslintrc*, .prettierrc*, tsconfig.json, Makefile, Dockerfile,
docker-compose*, .github/workflows/, .env.example, CI configs
6. Test structure detection
→ tests/, test/, __tests__/, *_test.go, *.spec.ts, *.test.js,
pytest.ini, jest.config.*, vitest.config.*
```
### Phase 2: Architecture Mapping
From the reconnaissance data, identify:
**Tech Stack**
- Language(s) and version constraints
- Framework(s) and major libraries
- Database(s) and ORMs
- Build tools and bundlers
- CI/CD platform
**Architecture Pattern**
- Monolith, monorepo, microservices, or serverless
- Frontend/backend split or full-stack
- API style: REST, GraphQL, gRPC, tRPC
**Key Directories**
Map the top-level directories to their purpose:
<!-- Example for a React project — replace with detected directories -->
```
src/components/ → React UI components
src/api/ → API route handlers
src/lib/ → Shared utilities
src/db/ → Database models and migrations
tests/ → Test suites
scripts/ → Build and deployment scripts
```
**Data Flow**
Trace one request from entry to response:
- Where does a request enter? (router, handler, controller)
- How is it validated? (middleware, schemas, guards)
- Where is business logic? (services, models, use cases)
- How does it reach the database? (ORM, raw queries, repositories)
### Phase 3: Convention Detection
Identify patterns the codebase already follows:
**Naming Conventions**
- File naming: kebab-case, camelCase, PascalCase, snake_case
- Component/class naming patterns
- Test file naming: `*.test.ts`, `*.spec.ts`, `*_test.go`
**Code Patterns**
- Error handling style: try/catch, Result types, error codes
- Dependency injection or direct imports
- State management approach
- Async patterns: callbacks, promises, async/await, channels
**Git Conventions**
- Branch naming from recent branches
- Commit message style from recent commits
- PR workflow (squash, merge, rebase)
- If the repo has no commits yet or only a shallow history (e.g. `git clone --depth 1`), skip this section and note "Git history unavailable or too shallow to detect conventions"
### Phase 4: Generate Onboarding Artifacts
Produce two outputs:
#### Output 1: Onboarding Guide
```markdown
# Onboarding Guide: [Project Name]
## Overview
[2-3 sentences: what this project does and who it serves]
## Tech Stack
<!-- Example for a Next.js project — replace with detected stack -->
| Layer | Technology | Version |
|-------|-----------|---------|
| Language | TypeScript | 5.x |
| Framework | Next.js | 14.x |
| Database | PostgreSQL | 16 |
| ORM | Prisma | 5.x |
| Testing | Jest + Playwright | - |
## Architecture
[Diagram or description of how components connect]
## Key Entry Points
<!-- Example for a Next.js project — replace with detected paths -->
- **API routes**: `src/app/api/` — Next.js route handlers
- **UI pages**: `src/app/(dashboard)/` — authenticated pages
- **Database**: `prisma/schema.prisma` — data model source of truth
- **Config**: `next.config.ts` — build and runtime config
## Directory Map
[Top-level directory → purpose mapping]
## Request Lifecycle
[Trace one API request from entry to response]
## Conventions
- [File naming pattern]
- [Error handling approach]
- [Testing patterns]
- [Git workflow]
## Common Tasks
<!-- Example for a Node.js project — replace with detected commands -->
- **Run dev server**: `npm run dev`
- **Run tests**: `npm test`
- **Run linter**: `npm run lint`
- **Database migrations**: `npx prisma migrate dev`
- **Build for production**: `npm run build`
## Where to Look
<!-- Example for a Next.js project — replace with detected paths -->
| I want to... | Look at... |
|--------------|-----------|
| Add an API endpoint | `src/app/api/` |
| Add a UI page | `src/app/(dashboard)/` |
| Add a database table | `prisma/schema.prisma` |
| Add a test | `tests/` matching the source path |
| Change build config | `next.config.ts` |
```
#### Output 2: Starter CLAUDE.md
Generate or update a project-specific CLAUDE.md based on detected conventions. If `CLAUDE.md` already exists, read it first and enhance it — preserve existing project-specific instructions and clearly call out what was added or changed.
```markdown
# Project Instructions
## Tech Stack
[Detected stack summary]
## Code Style
- [Detected naming conventions]
- [Detected patterns to follow]
## Testing
- Run tests: `[detected test command]`
- Test pattern: [detected test file convention]
- Coverage: [if configured, the coverage command]
## Build & Run
- Dev: `[detected dev command]`
- Build: `[detected build command]`
- Lint: `[detected lint command]`
## Project Structure
[Key directory → purpose map]
## Conventions
- [Commit style if detectable]
- [PR workflow if detectable]
- [Error handling patterns]
```
## Best Practices
1. **Don't read everything** — reconnaissance should use Glob and Grep, not Read on every file. Read selectively only for ambiguous signals.
2. **Verify, don't guess** — if a framework is detected from config but the actual code uses something different, trust the code.
3. **Respect existing CLAUDE.md** — if one already exists, enhance it rather than replacing it. Call out what's new vs existing.
4. **Stay concise** — the onboarding guide should be scannable in 2 minutes. Details belong in the code, not the guide.
5. **Flag unknowns** — if a convention can't be confidently detected, say so rather than guessing. "Could not determine test runner" is better than a wrong answer.
## Anti-Patterns to Avoid
- Generating a CLAUDE.md that's longer than 100 lines — keep it focused
- Listing every dependency — highlight only the ones that shape how you write code
- Describing obvious directory names — `src/` doesn't need an explanation
- Copying the README — the onboarding guide adds structural insight the README lacks
## Examples
### Example 1: First time in a new repo
**User**: "Onboard me to this codebase"
**Action**: Run full 4-phase workflow → produce Onboarding Guide + Starter CLAUDE.md
**Output**: Onboarding Guide printed directly to the conversation, plus a `CLAUDE.md` written to the project root
### Example 2: Generate CLAUDE.md for existing project
**User**: "Generate a CLAUDE.md for this project"
**Action**: Run Phases 1-3, skip Onboarding Guide, produce only CLAUDE.md
**Output**: Project-specific `CLAUDE.md` with detected conventions
### Example 3: Enhance existing CLAUDE.md
**User**: "Update the CLAUDE.md with current project conventions"
**Action**: Read existing CLAUDE.md, run Phases 1-3, merge new findings
**Output**: Updated `CLAUDE.md` with additions clearly marked