在導入 Claude Code 的團隊中,若要找出「能產出符合預期的程式碼」的團隊與「每次都需要手動修正」的團隊之間的差異,最後會發現關鍵在於 CLAUDE.md 的設計品質。
本文將介紹依專案規模區分使用的 7 種 CLAUDE.md 範本。從個人腳本到大型 monorepo,都能直接複製使用的實戰模式集。
CLAUDE.md 是 Claude Code 在產生與編輯程式碼時,會自動讀取的專案指示文件。它可以集中管理那些不必每次寫進 prompt 的「隱含脈絡」。
主要會定義以下內容:
CLAUDE.md 可以放在 3 種作用範圍 中,且越下層優先度越高、會進行合併。
| 作用範圍 | 路徑範例 | 用途 | 共享範圍 |
|---|---|---|---|
| 使用者全域 | ~/.claude/CLAUDE.md |
個人偏好(語言、風格) | 只有自己 |
| 專案根目錄 | ./CLAUDE.md |
技術棧、規範 | 團隊全體(Git 管理) |
| 子目錄 | ./packages/api/CLAUDE.md |
套件專屬限制 | 團隊全體(Git 管理) |
重點: 子目錄的 CLAUDE.md,會在 Claude Code 操作該目錄內的檔案時額外讀取。最佳做法不是覆蓋根目錄內容,而是作為補充來設計。
預期規模: 1 人 / 檔案數 1~10 / 一次性~小型工具
最大重點是「不要寫太多」。對個人腳本來說,寫一份冗長的 CLAUDE.md 是過度工程化。
# CLAUDE.md
## 專案概要
CLI 工具。從標準輸入讀取 CSV,並將彙整結果以 JSON 輸出。
## 技術棧
- Python 3.12
- 不可使用外部函式庫(僅限標準函式庫)
## 程式碼風格
- 必須使用型別提示
- 函式需撰寫 1 行的 docstring
## 建置・執行
- 執行:`python main.py < input.csv`
- 測試:`python -m pytest tests/`
範本大小建議:10~20 行
你真正需要的只有三件事:「在做什麼」「可以使用哪些工具」「要怎麼執行」。
預期規模: 2~5 人 / 檔案數 50~300 / Web 應用程式
透過明確定義分層式架構的邊界,Claude Code 才能正確判斷「哪個邏輯應該放在哪個檔案」。
# CLAUDE.md
## 專案概要
內部用庫存管理系統(SaaS)。
## 技術棧
- Backend: TypeScript / NestJS / Prisma / PostgreSQL
- Frontend: TypeScript / Next.js(App Router)/ Tailwind CSS v4
- 測試: Vitest(單元)/ Playwright(E2E)
- CI: GitHub Actions
## 架構方針
### 目錄結構與責任
- `src/domain/` … 領域模型・商業規則。禁止相依外部套件。
- `src/application/` … 使用案例。只可 import domain。
- `src/infrastructure/` … DB・外部 API 連接。Prisma Client 只允許放在這裡。
- `src/presentation/` … Controller / DTO / 驗證。
### 相依方向(嚴格遵守)
presentation → application → domain ← infrastructure
### 程式碼風格
- 變數/函式:camelCase / 類別:PascalCase
- 禁止 `any`。請使用 `unknown` + 型別守衛。
- 錯誤請以 Result 型別(neverthrow)回傳。不要 throw。
- 禁止魔術數字。常數請定義在 `src/constants/`。
## 禁止事項
- 從 `domain/` 直接 import `infrastructure/`
- 將 Prisma 的模型型別洩漏到領域層
- 用 `console.log` 除錯(請使用 logger)
## 測試方針
- domain / application 必須有單元測試(目標覆蓋率 80% 以上)
- infrastructure 使用整合測試
- E2E 只針對主要使用流程
## 指令集
- 開發:`pnpm dev`
- 測試:`pnpm test`
- 單一測試:`pnpm test -- --run src/path/to/file.test.ts`
- Lint:`pnpm lint`
- Migration:`pnpm prisma migrate dev`
範本大小建議:40~80 行
「相依方向」與「禁止事項」這兩個區塊特別有效。Claude Code 會更高精度地生成遵守這些規則的程式碼。
預期規模: 5 人以上 / 套件數 3 以上 / monorepo 架構
規模一大,把所有內容寫在單一檔案就會失控。根目錄只寫共通方針,各套件再放各自專屬的 CLAUDE.md,這是鐵則。
# CLAUDE.md(根目錄)
## 專案概要
EC 平台。monorepo(pnpm workspace)。
## 共通規則
- 必須使用 TypeScript strict 模式
- Commit 訊息:Conventional Commits 格式
- PR 以「一個功能一個 PR」為原則。建議控制在 500 行以下。
## 套件間相依
- shared → 不依賴其他套件
- api、web → 可依賴 shared
- 禁止 api ↔ web 直接相依
## 共通指令
- 全體建置:`pnpm build`
- 全體測試:`pnpm test`
- 指定套件:`pnpm --filter @app/api test`
# CLAUDE.md(packages/api)
## 這個套件的責任
REST API 伺服器。提供認證、庫存、訂單領域。
## 額外技術棧
- NestJS v10 / Prisma v6 / PostgreSQL 16
## 這個套件的專屬規則
- 新增 endpoint 時,一定要加上 OpenAPI 裝飾器
- 必須在 `src/modules/` 底下,以功能為單位建立模組
- DB migration 一定要用 `pnpm prisma migrate dev --name <說明>` 建立
## 測試
- `pnpm --filter @app/api test`
範本大小建議:根目錄 20~40 行 + 各套件 15~30 行
這是與專案規模無關、但在 讓 Claude Code 執行特定任務 時很有效的範本。可追加到根目錄的 CLAUDE.md,或作為用途別區塊管理在 ~/.claude/CLAUDE.md 中。
## 程式碼審查模式
請以下列觀點進行審查:
### 必須檢查的項目
1. 安全性:SQL injection、XSS、認證繞過的可能性
2. 效能:N+1 查詢、不必要的重繪、記憶體洩漏
3. 錯誤處理:例外被吞掉、對使用者洩漏資訊
4. 測試:邊界值、異常情況的測試案例不足
### 審查輸出格式
- 明確標示嚴重程度(Critical / Warning / Info)
- 顯示對應行號
- 提供包含程式碼的修正建議
## 測試生成模式
### 方針
- 測試框架:Vitest
- 以 AAA 模式(Arrange / Act / Assert)結構化
- 原則上一個測試案例只寫一個 assertion
### 必要測試案例
- 正常系:代表性輸入下的預期行為
- 邊界值:空陣列、空字串、0、最大值
- 異常系:null/undefined、型別不正確、網路錯誤
- 冪等性:相同輸入應回傳相同結果
### Mock 方針
- 外部 API 呼叫一律 mock
- DB 使用 in-memory SQLite 或 mock repository
- 與時間相關的測試請使用 `vi.useFakeTimers()`
## 重構模式
### 原則
- 不改變外部可見的行為(輸入/輸出)
- 重構前先確認既有測試都通過
- 一個 commit 只做一項重構(不要混在一起)
### 優先套用的模式
1. 萃取函式(Extract Function):5 行以上的巢狀結構應拆分
2. 提早回傳(Guard Clause):減少巢狀
3. 將魔術數字改為常數
4. 嚴格化型別:`string` → 聯集型別 / 品牌型別
### 禁止事項
- 把功能新增混進重構
- 對沒有測試的程式碼直接改結構(請先補測試)
- 同時進行效能最佳化與重構
CLAUDE.md 並不是「寫越多越好」。請注意以下反模式。
| 模式 | 症狀 | 對策 |
|---|---|---|
| 全部塞進型 | 在單一檔案中記載所有套件細節,超過 300 行。 | 改為階層式拆分(模式 4) |
| 只追加不整理型 | 矛盾指示共存。「禁止 any」與「型別不用太在意」同時存在。 | 每月盤點,刪除不必要的內容 |
| 程式碼大量內嵌型 | 貼上 50 行以上的範例程式碼。 | 範例保持最少(5 行以內),細節請參考其他文件 |
| 願望清單型 | 像「請寫出可讀性高的程式碼」這類模糊指示的羅列。 | 改寫成具體規則(例如「函式 30 行以內」「巢狀 3 層以內」) |
| 混入機密資訊型 | 在 CLAUDE.md 中寫入 API Key 或 DB 密碼。 | 只記錄環境變數名稱,並指示參照 .env。 |
只要掌握以下 3 點,Claude Code 的輸出品質就會大幅提升。
□ 用 1~2 行寫出專案概要
□ 列出技術棧
□ 寫出目錄結構與各目錄的責任
□ 寫出相依方向規則
□ 用 5 項以內寫出程式碼規範
□ 寫出 3 項以上「禁止事項」
□ 寫出建置・測試・執行指令
□ 如果是 monorepo,判斷是否需要階層式拆分
原文出處:https://qiita.com/hikariclaude01/items/e54c70c90c6aa84d0f66