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.
Codebase Onboarding
系統性地分析不熟悉的程式碼庫,並產出結構化的入門指南。專為首次加入新專案或首次在現有儲存庫中設定 Claude Code 的開發者設計。
使用時機
- 首次使用 Claude Code 開啟專案
- 加入新團隊或新儲存庫
- 使用者詢問「幫我理解這個程式碼庫」
- 使用者要求為專案產生 CLAUDE.md
- 使用者說「幫我入門」或「帶我認識這個儲存庫」
運作方式
階段一:偵查
在不讀取每個檔案的情況下,收集專案的原始訊號。平行執行以下檢查:
1. 套件清單偵測
→ package.json, go.mod, Cargo.toml, pyproject.toml, pom.xml, build.gradle,
Gemfile, composer.json, mix.exs, pubspec.yaml
2. 框架指紋辨識
→ next.config.*, nuxt.config.*, angular.json, vite.config.*,
django settings, flask app factory, fastapi main, rails config
3. 進入點識別
→ main.*, index.*, app.*, server.*, cmd/, src/main/
4. 目錄結構快照
→ 目錄樹的前兩層,忽略 node_modules, vendor,
.git, dist, build, __pycache__, .next
5. 設定與工具偵測
→ .eslintrc*, .prettierrc*, tsconfig.json, Makefile, Dockerfile,
docker-compose*, .github/workflows/, .env.example, CI configs
6. 測試結構偵測
→ tests/, test/, __tests__/, *_test.go, *.spec.ts, *.test.js,
pytest.ini, jest.config.*, vitest.config.*
階段二:架構對應
從偵查資料中識別:
技術棧
- 語言與版本限制
- 框架與主要函式庫
- 資料庫與 ORM
- 建置工具與打包器
- CI/CD 平台
架構模式
- 單體、單一儲存庫、微服務或無伺服器
- 前後端分離或全端
- API 風格:REST, GraphQL, gRPC, tRPC
關鍵目錄
將頂層目錄對應到其用途:
<!-- 以 React 專案為例 — 請替換為偵測到的目錄 -->
src/components/ → React UI 元件
src/api/ → API 路由處理器
src/lib/ → 共用工具
src/db/ → 資料庫模型與遷移
tests/ → 測試套件
scripts/ → 建置與部署腳本
資料流程
追蹤一個請求從進入到回應的過程:
- 請求從哪裡進入?(路由器、處理器、控制器)
- 如何驗證?(中介軟體、綱要、守衛)
- 商業邏輯在哪裡?(服務、模型、使用案例)
- 如何到達資料庫?(ORM、原始查詢、儲存庫)
階段三:慣例偵測
識別程式碼庫已遵循的模式:
命名慣例
- 檔案命名:kebab-case, camelCase, PascalCase, snake_case
- 元件/類別命名模式
- 測試檔案命名:
*.test.ts,*.spec.ts,*_test.go
程式碼模式
- 錯誤處理風格:try/catch, Result 型別, 錯誤碼
- 依賴注入或直接匯入
- 狀態管理方式
- 非同步模式:callbacks, promises, async/await, channels
Git 慣例
- 從近期分支推斷分支命名
- 從近期提交推斷提交訊息風格
- PR 工作流程(squash, merge, rebase)
- 如果儲存庫尚無提交或只有淺層歷史(例如
git clone --depth 1),則跳過此部分並註明「Git 歷史不可用或太淺,無法偵測慣例」
階段四:產生入門產出物
產出兩項輸出:
輸出 1:入門指南
# 入門指南:[專案名稱]
## 概述
[2-3 句話:此專案的用途與服務對象]
## 技術棧
<!-- 以 Next.js 專案為例 — 請替換為偵測到的棧 -->
| 層級 | 技術 | 版本 |
|-------|-----------|---------|
| 語言 | TypeScript | 5.x |
| 框架 | Next.js | 14.x |
| 資料庫 | PostgreSQL | 16 |
| ORM | Prisma | 5.x |
| 測試 | Jest + Playwright | - |
## 架構
[元件如何連接的圖表或描述]
## 關鍵進入點
<!-- 以 Next.js 專案為例 — 請替換為偵測到的路徑 -->
- **API 路由**:`src/app/api/` — Next.js 路由處理器
- **UI 頁面**:`src/app/(dashboard)/` — 已驗證頁面
- **資料庫**:`prisma/schema.prisma` — 資料模型來源
- **設定檔**:`next.config.ts` — 建置與執行時期設定
## 目錄對應
[頂層目錄 → 用途對應]
## 請求生命週期
[追蹤一個 API 請求從進入到回應的過程]
## 慣例
- [檔案命名模式]
- [錯誤處理方式]
- [測試模式]
- [Git 工作流程]
## 常見任務
<!-- 以 Node.js 專案為例 — 請替換為偵測到的指令 -->
- **執行開發伺服器**:`npm run dev`
- **執行測試**:`npm test`
- **執行 lint**:`npm run lint`
- **資料庫遷移**:`npx prisma migrate dev`
- **建置正式版**:`npm run build`
## 到哪裡找
<!-- 以 Next.js 專案為例 — 請替換為偵測到的路徑 -->
| 我想... | 請看... |
|--------------|-----------|
| 新增 API 端點 | `src/app/api/` |
| 新增 UI 頁面 | `src/app/(dashboard)/` |
| 新增資料庫表格 | `prisma/schema.prisma` |
| 新增測試 | `tests/` 對應原始碼路徑 |
| 變更建置設定 | `next.config.ts` |
輸出 2:初始 CLAUDE.md
根據偵測到的慣例產生或更新專案專屬的 CLAUDE.md。如果 CLAUDE.md 已存在,請先讀取並增強它 — 保留現有的專案專屬指示,並清楚標註新增或變更的內容。
# 專案指示
## 技術棧
[偵測到的棧摘要]
## 程式碼風格
- [偵測到的命名慣例]
- [偵測到的應遵循模式]
## 測試
- 執行測試:`[detected test command]`
- 測試模式:[偵測到的測試檔案慣例]
- 涵蓋率:[若有設定,則為涵蓋率指令]
## 建置與執行
- 開發:`[detected dev command]`
- 建置:`[detected build command]`
- Lint:`[detected lint command]`
## 專案結構
[關鍵目錄 → 用途對應]
## 慣例
- [提交風格,若可偵測]
- [PR 工作流程,若可偵測]
- [錯誤處理模式]
最佳實務
- 不要讀取所有內容 — 偵查應使用 Glob 和 Grep,而非對每個檔案進行 Read。僅在訊號不明確時選擇性讀取。
- 驗證,不要猜測 — 如果從設定檔偵測到某個框架,但實際程式碼使用不同框架,請相信程式碼。
- 尊重現有的 CLAUDE.md — 如果已存在,請增強而非取代。標註哪些是新增的,哪些是原有的。
- 保持簡潔 — 入門指南應能在 2 分鐘內掃讀完畢。細節應留在程式碼中,而非指南中。
- 標註未知項目 — 如果無法自信地偵測某個慣例,請如實告知,而非猜測。「無法確定測試執行器」勝過錯誤答案。
應避免的反模式
- 產生超過 100 行的 CLAUDE.md — 保持聚焦
- 列出所有相依套件 — 僅凸顯那些影響你如何撰寫程式碼的套件
- 描述顯而易見的目錄名稱 —
src/不需要解釋 - 複製 README — 入門指南應提供 README 所缺乏的結構性洞察
範例
範例 1:首次進入新儲存庫
使用者:「幫我入門這個程式碼庫」
動作:執行完整的 4 階段工作流程 → 產出入門指南 + 初始 CLAUDE.md
輸出:入門指南直接列印到對話中,並在專案根目錄寫入 CLAUDE.md
範例 2:為現有專案產生 CLAUDE.md
使用者:「為這個專案產生 CLAUDE.md」
動作:執行階段 1-3,跳過入門指南,僅產出 CLAUDE.md
輸出:專案專屬的 CLAUDE.md,包含偵測到的慣例
範例 3:增強現有的 CLAUDE.md
使用者:「用目前的專案慣例更新 CLAUDE.md」
動作:讀取現有的 CLAUDE.md,執行階段 1-3,合併新的發現
輸出:更新後的 CLAUDE.md,新增內容清楚標記






