一句話說明
Claude Code 在終端機裡運作,天生和 Git 整合在一起。這篇整理用 Claude Code 開發功能的流程:從設定 CLAUDE.md 控制行為、建立分支、寫程式碼、做 commit,到最後發 PR 和 review。附上實際的終端機操作範例。
CLAUDE.md:控制 Claude Code 的行為
CLAUDE.md 是放在專案根目錄的指令檔。Claude Code 每次啟動時會自動讀取,依照裡面的規則行事。
一個 Node.js 後端專案的 CLAUDE.md 範例:
# 專案規範
這是一個 Express.js + TypeScript 專案,使用 PostgreSQL。
## 程式碼慣例
- TypeScript strict mode
- 使用 Prisma ORM,不直接寫 SQL
- 所有 API endpoint 都要用 Zod 驗證 request body
- 錯誤處理用 src/lib/errors.ts 中的 AppError class
- 變數用 camelCase,型別用 PascalCase
## 安全規則
- 不要把任何密碼、API Key、token 寫在程式碼中
- 使用者輸入一律要驗證和 sanitize
- API response 不要包含 stack trace 或內部錯誤訊息
- 檔案操作要驗證路徑,防止 Path Traversal
## 測試
- 修改任何功能後,跑 npm test 確認沒壞
- 新功能要寫對應的測試檔案放在 __tests__/ 目錄
## Git
- commit message 用繁體中文
- 格式:<type>: <描述>
- type 可以是 feat, fix, refactor, test, docs, chore
CLAUDE.md 支援階層式設定:如果子目錄也有 CLAUDE.md,會和根目錄的合併(子目錄的優先)。
飛飛的建議:把安全規則放在 CLAUDE.md 裡面非常有效。Claude Code 會在產生程式碼時遵循這些規則。例如寫了「不要把 API Key 寫在程式碼中」,它就會用 process.env.API_KEY 取代硬編碼。
分支策略
用 Claude Code 開發新功能的分支流程:
# 從 main 建立 feature branch
claude "幫我從 main 建一個 branch 叫 feature/add-user-auth"
Claude Code 會執行:
git checkout main
git pull origin main
git checkout -b feature/add-user-auth
它會自己判斷需要先 pull 最新的 main 才建分支。如果有未 commit 的修改,它會提醒你先處理。
在 feature branch 上開發時,Claude Code 會把每個功能點做成一個 commit:
claude "在這個專案加上使用者登入功能,用 JWT + bcrypt"
Claude Code 通常會分成幾個步驟:讀取專案結構 → 檢查現有的 auth 相關程式碼 → 安裝需要的套件 → 寫程式碼 → 跑測試 → commit。
如果你希望它在每個步驟都讓你確認再繼續,可以在 CLAUDE.md 中加上:
每次要 commit 之前先讓我看 diff。
Hook 系統
Claude Code 支援 hook,可以在特定動作前後執行自訂的 shell 命令。Hook 在 .claude/settings.json 中設定:
{
"hooks": {
"PreCommit": [
{
"command": "npm run lint",
"description": "commit 前跑 lint"
},
{
"command": "npm run test -- --bail",
"description": "commit 前跑測試"
}
]
}
}
PreCommit hook 會在 Claude Code 執行 git commit 之前觸發。如果 lint 或測試失敗,commit 會被擋下,Claude Code 會看到錯誤訊息並嘗試修正問題。
這是一個很強的安全防線:AI 產生的程式碼必須通過你定義的品質檢查才能被 commit。
其他可用的 hook 時機包含 PostCommit(commit 之後)、PreToolUse(使用任何工具前)等。
實際操作範例
以下是一個用 Claude Code 從零開始開發功能的終端機互動範例:
$ claude
> 看一下這個專案的結構,然後在 /api/users 加一個
PATCH endpoint 讓使用者可以更新自己的 profile
Claude Code: 讓我先看一下專案結構...
[讀取 package.json, tsconfig.json, src/ 目錄結構]
[讀取 src/routes/users.ts, src/models/user.ts]
[讀取 src/middleware/auth.ts]
我看到這個專案已經有使用者的 CRUD endpoint,
但缺少更新 profile 的功能。我會:
1. 在 src/routes/users.ts 加 PATCH /api/users/:id
2. 加 Zod schema 驗證 request body
3. 確保只能更新自己的 profile(用 auth middleware 的 userId 比對)
4. 寫測試
[修改 src/routes/users.ts]
[修改 src/schemas/user.ts]
[建立 src/__tests__/users-update.test.ts]
跑測試中...
✓ 12 tests passed
要我 commit 嗎?讓你看一下 diff:
[顯示 diff]
你可以在看完 diff 後決定是否 commit,或要求修改。
PR Review 工作流
Claude Code 也可以用來 review 別人的 PR:
claude "review 這個 PR https://github.com/org/repo/pull/42,
重點看安全問題和效能問題"
它會用 gh CLI 拉取 PR 的 diff,逐檔案分析,然後列出發現的問題。
也可以 review 自己的工作分支在發 PR 之前:
claude "比較目前的 branch 和 main 的差異,
幫我做一次 code review,重點看安全漏洞"
Claude Code 會執行 git diff main...HEAD,然後分析所有變更。
用 Claude Code 建立 PR:
claude "幫我發一個 PR 到 main,
標題和描述用繁體中文,描述這個 branch 做了什麼"
它會用 gh pr create 建立 PR,自動從 commit 歷史中整理出描述。
安全與限制
Claude Code 有存取你整個專案目錄的能力。它可以讀取任何檔案、執行任何 shell 命令。這代表:
如果你的專案目錄裡有 .env 檔案,Claude Code 可以讀取裡面的內容。雖然它不會主動把這些內容送到外部,但你送出的 prompt 和程式碼都會透過 API 傳到 Anthropic 的伺服器做推論。
建議做法:在 .claudeignore 中排除敏感檔案:
.env
.env.*
*.pem
*.key
secrets/
Claude Code 執行的 shell 命令是在你的使用者權限下執行的。如果它判斷錯誤執行了 rm -rf 或其他破壞性命令,你的檔案會被刪除。Claude Code 有內建的安全機制,會在執行危險命令前要求你確認,但不要完全依賴這個機制。
定期 commit 是安全網。如果 AI 改壞了什麼,你可以 git checkout 回到上一個 commit。
Claude Code 的 API 費用是按 token 計算的。一個大型專案的單次對話(讓 AI 理解整個 codebase 再做修改)可能會用掉數萬到十幾萬 tokens。建議先從小範圍的任務開始,熟悉用量後再做大範圍修改。
知識檢測
讀完文章後,測試一下你對這個主題的理解。
常見問題
Claude Code 和 Cursor 可以同時使用嗎?
可以。Claude Code 在終端機裡運作,Cursor 是 IDE。一個常見的組合是用 Cursor 做行內補全和小範圍修改,用 Claude Code 做大範圍的重構或 PR review。
CLAUDE.md 會被送到 Anthropic 的伺服器嗎?
會。CLAUDE.md 的內容會作為 system prompt 的一部分送到 Anthropic API。不要在 CLAUDE.md 中放入密碼或 API Key。它應該只包含程式碼慣例和規則。
Claude Code 可以在 CI/CD 中使用嗎?
可以。Claude Code 支援非互動模式(--print 參數),可以在 CI/CD pipeline 中自動執行。例如在 PR 建立時自動做 code review,或在測試失敗時自動分析原因。但要注意 API 費用。
怎麼控制 Claude Code 的 API 用量?
Claude Code 在每次對話結束後會顯示用了多少 tokens。你可以設定 API 的 usage limit(在 Anthropic Console 中設定每月上限),避免意外的高額帳單。大型專案建議用 Sonnet 模型做日常任務(便宜),只在需要高品質推理時用 Opus。
Claude Code 支援哪些程式語言?
所有語言都支援,因為 Claude Code 是在終端機裡讀取檔案和執行命令。它對 Python、JavaScript/TypeScript、Go、Rust、Java 的理解最好,因為訓練資料中這些語言的比例最高。
相關文章
參考資料
- Claude Code 官方文件
- Anthropic API Pricing
- GitHub CLI (gh) 文件