一句話說明

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) 文件