Claude Code Best Practice 教學手冊

版本:基於 GitHub 專案 shanraisshan/claude-code-best-practice(v2.1.126,2026 年 5 月 1 日)
適用對象:資深工程師、架構師、技術主管
定位:企業級 AI 輔助開發實戰手冊
語言:繁體中文 文件版本:v1.1 文件更新日期:2026 年 5 月 2 日


目錄


第 1 章 專案介紹與核心理念

1.1 claude-code-best-practice 是什麼

claude-code-best-practice 是由 Shayan Rais(shanraisshan)維護的開源專案,目前已累積超過 50,000 顆 GitHub Stars,是 Claude Code 社群中最受歡迎的實戰指南。該專案彙整了:

  • Anthropic 官方工程師(Boris Cherny — Claude Code 創建者、Thariq、Cat Wu、Lydia Hallie 等)分享的最佳實踐
  • 社群貢獻者的實戰經驗與工作流設計
  • 超過 82 則精選 Tips,涵蓋 Prompting、Planning、Context、Session、Agents、Skills、Hooks 等面向
  • 10+ 種主流開發工作流(Superpowers、Everything Claude Code、Spec Kit、gstack、BMAD-METHOD 等)的比較分析

專案核心定位:從 Vibe Coding 到 Agentic Engineering 的實戰轉型指南

1.2 Vibe Coding → Agentic Engineering 轉型

階段Vibe Coding(直覺式編碼)Agentic Engineering(智能體工程)
開發方式人直接寫 code,AI 僅做補全人定義目標與約束,AI Agent 自主執行
上下文管理不關注 context 用量主動管理 context,保持 < 40%
任務拆解一次性大任務拆解為可獨立完成的子任務
品質保證事後 reviewPlan → Execute → Verify 閉環
工具運用只用 IDE 補全整合 Subagents、Skills、Hooks、MCP
團隊協作個人使用標準化工作流,可複製推廣

轉型的關鍵心態轉變

  1. 不要當保母(🚫👶):Boris Cherny 反覆強調,不要微管理 Claude 的每一步。貼上 bug,說「fix」,讓它自己找方法
  2. 先規劃再執行:永遠從 Plan Mode 開始,不要直接讓 Claude 開始寫 code
  3. 投資自動化:重複做的事就做成 Skill 或 Command,讓工作流可重現

1.3 Hot Features 與 Beta 功能清單

截至 v2.1.126,Claude Code 已發展為功能龐大的開發平台,以下為核心與最新功能分類:

類別功能說明
核心工作流Ultrareview多 Agent 雲端深度 Code Review
Ultraplan雲端規劃 + 瀏覽器審閱
No Flicker ModeCLAUDE_CODE_NO_FLICKER=1 + /tui fullscreen
Auto Mode--permission-mode auto,背景安全分類器自動審批
Power-ups/powerup 快速互動教學
Fast Mode低延遲回應,以速度換深度
多平台Claude Code Webclaude.ai 瀏覽器版
Desktop App/desktop 切換至桌面版
Chrome Extension瀏覽器整合
Slack 整合/install-slack-app
Mobile App/mobile QR 碼下載
進階功能Agent SDK程式化控制 Claude Code
Agent Teamstmux + git worktrees 多 Agent 平行開發
Remote Control/remote-control 遠端控制 session
Computer Use電腦操作能力
Scheduled Tasks/schedule/loop 定時/循環任務
Routines自動化排程
Channels團隊訊息傳遞(beta)
Devcontainers容器化開發環境支援
開發輔助Simplify & Batch/simplify 重構、/batch 批次操作
Git Worktreesisolation: "worktree" 平行分支
Voice Dictation/voice 語音輸入
Tasks/tasks 背景任務管理
Teleport/teleport 拉取雲端 session 到本地

1.4 為什麼適合企業級開發

  1. 結構化規則系統:CLAUDE.md + .claude/rules/ 提供多層次、可版控的規則管理
  2. 企業級權限控制
    • Managed Settings:5 層設定階層,IT 可透過 MDM、Registry、Server 強制部署策略
    • Auto Mode:背景安全分類器自動審批,減少人工確認
    • Sandbox:沙箱模式限制 Bash 指令的檔案與網路存取
  3. 可審計性:25 個 Hook 事件(含 HTTP Hooks)支援操作日誌、安全檢查
  4. CI/CD 整合:原生支援 GitHub Actions(anthropics/claude-code-action@v1
  5. 多 Agent 協作:Agent Teams + Worktree 隔離支援平行開發
  6. 成本可控:5 層 Effort Level(low/medium/high/xhigh/max)精細控制推理深度
  7. Plugin 生態系:Marketplace 機制支援團隊共享擴充功能

實務案例:Boris Cherny 曾在一天內完成 141 個 PR,變更 45,000 行程式碼,每個 PR 的 p50 僅 118 行,展示了 Agentic Engineering 的高效能。


第 2 章 整體架構設計

2.1 Claude Code 在系統中的角色

Claude Code 不僅是 CLI 工具,而是一個完整的開發智能體平台。它在系統中扮演以下角色:

┌─────────────────────────────────────────────────────────────────┐
│                     開發者工作環境                                │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────────┐    │
│  │ Terminal  │  │ VS Code  │  │  Chrome  │  │ Claude Web   │    │
│  │ (CLI)     │  │ Extension│  │ Extension│  │ (claude.ai)  │    │
│  └────┬─────┘  └────┬─────┘  └────┬─────┘  └──────┬───────┘    │
│       └──────────────┼───────────┬─┘               │            │
│                      ▼           ▼                 ▼            │
│              ┌───────────────────────────────────────┐          │
│              │        Claude Code Core Engine         │          │
│              │  ┌─────────┐ ┌────────┐ ┌──────────┐ │          │
│              │  │Subagents│ │ Skills │ │  Hooks   │ │          │
│              │  └─────────┘ └────────┘ └──────────┘ │          │
│              │  ┌─────────┐ ┌────────┐ ┌──────────┐ │          │
│              │  │Commands │ │  MCP   │ │ Plugins  │ │          │
│              │  └─────────┘ └────────┘ └──────────┘ │          │
│              └──────────────┬────────────────────────┘          │
│                             ▼                                   │
│              ┌──────────────────────────────┐                   │
│              │     專案檔案系統 / Git        │                   │
│              └──────────────────────────────┘                   │
└─────────────────────────────────────────────────────────────────┘

2.2 與 GitHub Copilot 的協作架構

Claude Code 與 GitHub Copilot 各有所長,最佳實踐是雙 AI 協作

能力維度Claude CodeGitHub Copilot
架構規劃★★★★★ (Plan Mode + Subagents)★★★
程式碼生成★★★★★★★★★(內嵌式補全)
多檔案重構★★★★★(Agent 自主執行)★★★
即時補全★★(需切換模式)★★★★★(打字即補全)
CI/CD 整合★★★★★(GitHub Actions 原生)★★★
安全審查★★★★(Hooks + Skills)★★★(Copilot Review)
逆向工程★★★★★(大量 context 分析)★★

建議分工

  • Claude Code:架構設計、複雜重構、Code Review、CI/CD 自動化、安全掃描
  • GitHub Copilot:日常編碼補全、小範圍修改、文件撰寫

2.3 Agentic Workflow 架構

所有主流工作流都收斂到同一架構模式:Research → Plan → Execute → Review → Ship

flowchart LR
    A[Research
需求分析] --> B[Plan
架構規劃] B --> C[Execute
分工實作] C --> D[Review
品質審查] D --> E[Ship
交付部署] D -->|不通過| C subgraph Execute C1[Subagent 1
Backend] C2[Subagent 2
Frontend] C3[Subagent 3
Test] end

**Orchestration Workflow(編排工作流)**是 claude-code-best-practice 的核心設計模式:

Command → Agent → Skill
   │         │        │
   │         │        └── 具體技能執行(SKILL.md + 支援檔案)
   │         └── 子代理分派(.claude/agents/<name>.md)
   └── 使用者觸發點(.claude/commands/<name>.md)

實際範例 — Weather Orchestrator

# 使用者只需輸入一個 command
claude
/weather-orchestrator

# 背後自動觸發:
# 1. Command 解析使用者意圖
# 2. 分派給對應的 Agent
# 3. Agent 調用 Skill 完成任務
# 4. 結果回傳主 context

2.4 多 Agent(Subagents)設計模式

根據 Boris Cherny 的最佳實踐,應設計功能導向的子代理而非通用型代理:

┌─────────────────────────────────────┐
│          Main Context               │
│  (架構規劃、任務分派、結果整合)      │
│                                     │
│  ┌──────┐ ┌──────┐ ┌──────┐        │
│  │Auth  │ │API   │ │DB    │        │
│  │Agent │ │Agent │ │Agent │        │
│  └──┬───┘ └──┬───┘ └──┬───┘        │
│     │        │        │             │
│  ┌──┴───┐ ┌──┴───┐ ┌──┴───┐        │
│  │Auth  │ │API   │ │DB    │        │
│  │Skill │ │Skill │ │Skill │        │
│  └──────┘ └──────┘ └──────┘        │
└─────────────────────────────────────┘

設計原則

  1. 每個 Subagent 專注一個功能領域(不要做通用 QA 或 Backend Engineer)
  2. Subagent 處理完後只回傳結論,中間的 20+ 次檔案讀取和搜尋留在子 context
  3. 使用 isolation: "worktree" 讓多個 Agent 平行操作不同 Git 分支
  4. 利用 Agent Teams(tmux + git worktrees)實現真正的平行開發

2.5 與 CI/CD / DevOps 整合方式

flowchart TB
    Dev[開發者] -->|push| GH[GitHub Repository]
    GH -->|trigger| GA[GitHub Actions]
    GA -->|claude code| CC[Claude Code CI]
    
    CC --> CR[Code Review
自動審查] CC --> ST[Security Test
安全掃描] CC --> UT[Unit Test
單元測試] CR --> MR{Merge Ready?} ST --> MR UT --> MR MR -->|Yes| Deploy[Deploy] MR -->|No| Dev

GitHub Actions 整合範例

# .github/workflows/claude-review.yml
name: Claude Code Review
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Claude Code Review
        uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          command: |
            Review this PR for:
            1. Security vulnerabilities
            2. Performance issues
            3. Code quality
            4. Test coverage

注意事項:GitLab CI/CD 整合目前仍屬 beta 階段,生產環境使用需評估風險。


第 3 章 安裝與環境建置

3.1 Claude Code CLI 安裝

前置需求

元件最低版本建議版本
Node.js18.x20.x LTS
npm9.x10.x
Git2.x最新版
OSWindows 10 / macOS 12 / Ubuntu 20.04最新穩定版

安裝步驟

# 1. 安裝 Claude Code CLI
npm install -g @anthropic-ai/claude-code

# 2. 驗證安裝
claude --version

# 3. 認證(首次使用)
claude auth login

# 4. 診斷安裝問題
claude /doctor

Windows 特別注意

# Windows 使用 npx 啟動 MCP Server 時需注意路徑問題
# 建議使用 PowerShell 7+ 而非 cmd.exe

# 安裝 PowerShell 7
winget install Microsoft.PowerShell

# 設定預設終端
# VS Code: Terminal > Default Profile > PowerShell 7

3.2 Terminal 優化

Claude Code 在終端中的效能和體驗取決於終端配置:

推薦終端(Boris Cherny 建議):

平台推薦終端理由
macOSiTerm2 / Ghostty效能好、支援 tmux
LinuxGhostty / AlacrittyGPU 加速、低延遲
WindowsWindows Terminal原生整合、支援 WSL
跨平台tmux多窗格、Agent Teams 必備

Terminal 優化設定

# 優化終端顯示和換行邏輯
claude /terminal-setup

# No Flicker Mode — 消除畫面閃爍(beta)
export CLAUDE_CODE_NO_FLICKER=1
claude /tui fullscreen

Shift + Enter 換行:在終端中使用 Shift + Enter 輸入多行指令,避免誤送出。

3.3 專案初始化方式

# 1. 進入專案目錄
cd /path/to/your-project

# 2. 啟動 Claude Code
claude

# 3. Claude 會自動掃描專案結構,建議執行初始化
# 在 Claude 對話中:
> 分析這個專案結構,幫我建立 CLAUDE.md 和 .claude/ 設定

# 4. 或使用現成的工作流初始化
> /speckit.constitution   # 使用 Spec Kit 工作流
> /gsd-new-project        # 使用 Get Shit Done 工作流

3.4 開發環境最佳實踐

建議的目錄結構初始化

your-project/
├── CLAUDE.md                     # 專案級規則(< 200 行)
├── .claude/
│   ├── settings.json             # Claude Code 設定
│   ├── settings.local.json       # 本地設定(不進版控)
│   ├── agents/                   # 子代理定義
│   │   ├── backend-agent.md
│   │   ├── frontend-agent.md
│   │   └── security-agent.md
│   ├── commands/                 # 自訂斜線指令
│   │   ├── plan.md
│   │   ├── review.md
│   │   └── ship.md
│   ├── skills/                   # 技能模組
│   │   └── api-design/
│   │       ├── SKILL.md
│   │       └── references/
│   ├── hooks/                    # 事件鉤子腳本
│   │   ├── pre-tool-use.sh
│   │   └── post-tool-use.sh
│   └── rules/                    # 延遲載入規則
│       ├── backend.md
│       ├── frontend.md
│       └── security.md
├── .mcp.json                     # MCP Server 設定
└── src/                          # 專案源碼

VS Code 設定建議

// .vscode/settings.json
{
  "terminal.integrated.defaultProfile.windows": "PowerShell",
  "terminal.integrated.fontSize": 14,
  "editor.formatOnSave": true,
  "files.autoSave": "afterDelay"
}

最佳實踐:任何開發者應能啟動 Claude,說 “run the tests” 就能在第一次嘗試就成功。如果不行,代表你的 CLAUDE.md 缺少必要的 setup/build/test 指令。(Dex Horthy)

3.5 Devcontainers 與遠端開發

Claude Code 支援 Devcontainers 和遠端開發環境,適用於團隊統一開發環境:

# 使用 --remote 啟動雲端 session
claude --remote

# 設定預設遠端環境
/remote-env

# 從 claude.ai 拉取雲端 session 到本地終端
/teleport

遠端開發注意事項

  • 遠端環境中 permissions.defaultMode 僅接受 acceptEditsplan
  • 使用 CLAUDE_CODE_REMOTE 環境變數偵測是否在雲端環境中
  • 使用 CLAUDE_CODE_REMOTE_SESSION_ID 建構 session 連結

企業建議:使用 /team-onboarding 自動產生團隊入門指南(分析最近 30 天的 session、commands、MCP 使用紀錄)。


第 4 章 專案結構設計

4.1 CLAUDE.md 設計原則

CLAUDE.md 是 Claude Code 的「大腦記憶」,它決定了 Claude 在你專案中的行為基準。

核心規則:200 行限制

Boris Cherny 明確指出:CLAUDE.md 應控制在 200 行以內。HumanLayer 團隊甚至建議 60 行就夠了(但仍無法 100% 保證 Claude 完全遵守)。

為什麼要短?

  • 過長的 CLAUDE.md 會導致 Claude 選擇性忽略規則
  • 每次對話開始都會載入 CLAUDE.md,過長浪費 token
  • 精簡的規則更容易被模型可靠遵守

CLAUDE.md 範本

# 專案名稱:Enterprise Banking System

## 專案概述
Java 17 + Spring Boot 3.2 企業級銀行系統,使用 Clean Architecture。

## 建置與執行
- 建置:`mvn clean compile`
- 測試:`mvn test`
- 執行:`mvn spring-boot:run`
- 程式碼風格檢查:`mvn checkstyle:check`

## 架構規範
- 遵循 Clean Architecture(Domain → Application → Infrastructure)
- API 設計遵循 RESTful 規範
- 所有 Controller 方法需有 @Operation 註解

## 編碼規範
- 使用 JavaDoc 格式撰寫公開方法註解
- 類別名稱使用 PascalCase
- 常數使用 UPPER_SNAKE_CASE
- 禁止在 Controller 層直接存取 Repository

## 測試規範
- 每個 Service 類別需有對應的單元測試
- 測試覆蓋率目標 > 80%
- 使用 @SpringBootTest 進行整合測試

## 安全規範
- 不可在程式碼中硬編碼密碼或 API Key
- SQL 查詢必須使用參數化查詢
- 所有外部輸入必須驗證

應該放在 CLAUDE.md 的內容

✅ 應放入❌ 不應放入
專案概述(一句話)詳細架構文件
Build / Test / Run 指令商業邏輯說明
核心架構約束API 規格書
命名慣例變更日誌
必須遵守的安全規則教學內容

Monorepo 的 CLAUDE.md 策略

monorepo/
├── CLAUDE.md                 # 根層規則(全域適用)
├── packages/
│   ├── backend/
│   │   └── CLAUDE.md         # 後端特定規則
│   ├── frontend/
│   │   └── CLAUDE.md         # 前端特定規則
│   └── shared/
│       └── CLAUDE.md         # 共用套件規則

Claude Code 會自動載入祖先 + 後代的 CLAUDE.md,形成規則繼承鏈。

4.2 .claude/rules/*.md 延遲載入機制

當 CLAUDE.md 的 200 行不夠用時,使用 .claude/rules/ 進行規則分割:

.claude/rules/
├── backend.md        # 後端開發規則
├── frontend.md       # 前端開發規則
├── security.md       # 安全開發規則
├── database.md       # 資料庫操作規則
└── testing.md        # 測試撰寫規則

關鍵機制

  • 無 frontmatter 的 rules:每次 session 自動載入(等同 CLAUDE.md)
  • 有 paths frontmatter 的 rules:僅當 Claude 接觸匹配路徑的檔案時才載入

4.3 YAML Frontmatter 規則設計

---
# .claude/rules/spring-boot.md
paths:
  - "src/main/java/**/*.java"
  - "src/test/java/**/*.java"
---

# Spring Boot 開發規則

## Controller 層
- 所有 REST API 需使用 @RestController
- 回傳值統一使用 ResponseEntity<>
- 路徑命名使用 kebab-case

## Service 層
- 使用 @Transactional 管理交易
- 業務例外使用自訂 Exception 類別
- 不可直接在 Service 中使用 HttpServletRequest
---
# .claude/rules/react-components.md
paths:
  - "src/components/**/*.tsx"
  - "src/pages/**/*.tsx"
---

# React 元件開發規則

## 元件設計
- 使用 Functional Components + Hooks
- Props 必須定義 TypeScript Interface
- 狀態管理使用 Zustand 或 React Query

4.4 多層規則架構(Global / Module / Feature)

flowchart TB
    G[Global Rules
CLAUDE.md + .claude/rules/無frontmatter] --> M1[Module: Backend
.claude/rules/backend.md
paths: src/main/**] G --> M2[Module: Frontend
.claude/rules/frontend.md
paths: web/**] G --> M3[Module: Security
.claude/rules/security.md
paths: **/security/**] M1 --> F1[Feature: Auth
paths: **/auth/**] M1 --> F2[Feature: Payment
paths: **/payment/**] M2 --> F3[Feature: Dashboard
paths: **/dashboard/**]

規則優先順序

  1. ~/.claude/rules/ — 全域使用者規則
  2. CLAUDE.md — 專案根目錄規則
  3. .claude/rules/*.md(無 frontmatter)— 專案級通用規則
  4. .claude/rules/*.md(有 paths)— 依觸及檔案動態載入
  5. Subagent 定義中的規則 — Agent 專屬

進階技巧:使用 <important if="..."> 標籤包裹關鍵規則,避免 CLAUDE.md 過長時被忽略。(Dex Horthy)

4.5 settings.json 設計與階層體系

Boris Cherny 建議:使用 settings.json 做確定性行為控制,不要在 CLAUDE.md 中寫 “NEVER do X”

設定階層(5 層優先順序)

設定以優先順序由高到低套用:

層級來源範圍可版控用途
1Managed Settings組織IT 部署安全策略,不可被覆寫
2CLI 引數Session單次 session 臨時覆寫
3.claude/settings.local.json專案❌ (git-ignored)個人專案設定
4.claude/settings.json專案團隊共享設定
5~/.claude/settings.json使用者全域個人預設

Managed Settings 部署方式(企業級):

  • Server-managed:遠端伺服器推送
  • MDM Profiles:macOS plist(com.anthropic.claudecode
  • Registry:Windows HKLM\SOFTWARE\Policies\ClaudeCode(管理員)/ HKCU(使用者)
  • File-based
    • managed-settings.json + managed-settings.d/*.json(drop-in 目錄)
    • 路徑:macOS /Library/Application Support/ClaudeCode/、Windows C:\Program Files\ClaudeCode\

重要deny 規則具有最高安全優先順序,無法被低優先順序的 allow/ask 覆寫。陣列設定(如 permissions.allow)跨層級合併且去重。

核心設定範例

// .claude/settings.json
{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "model": "sonnet",
  "effortLevel": "high",
  "language": "chinese",
  "tui": "fullscreen",
  "viewMode": "default",

  "permissions": {
    "allow": [
      "Bash(mvn *)",
      "Bash(npm run *)",
      "Bash(git diff *)",
      "Edit(src/**)",
      "Edit(docs/**)",
      "Agent(*)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(git push --force *)",
      "Read(.env*)",
      "Edit(**/secrets/**)"
    ],
    "defaultMode": "acceptEdits"
  },

  "attribution": {
    "commit": ""
  },

  "worktree": {
    "symlinkDirectories": ["node_modules", ".cache"],
    "sparsePaths": ["packages/my-app", "shared/utils"]
  },

  "sandbox": {
    "enabled": true,
    "autoAllowBashIfSandboxed": true,
    "excludedCommands": ["git", "docker", "gh"]
  },

  "statusLine": {
    "type": "command",
    "command": "git branch --show-current 2>/dev/null || echo 'no-branch'",
    "refreshInterval": 5
  },

  "env": {
    "CLAUDE_CODE_EFFORT_LEVEL": "high",
    "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "50"
  }
}

工具權限語法速查

工具語法範例
BashBash(command pattern)Bash(npm run *), Bash(git * main)
ReadRead(path pattern)Read(.env), Read(./secrets/**)
EditEdit(path pattern)Edit(src/**), Edit(*.ts)
WriteWrite(path pattern)Write(*.md)
WebFetchWebFetch(domain:pattern)WebFetch(domain:example.com)
WebSearchWebSearch全域搜尋
Task/AgentTask(agent) / Agent(name)Task(Explore), Agent(*)
SkillSkill(skill-name)Skill(weather-fetcher)
MCPMCP(server:tool)MCP(github:*), mcp__memory__*

路徑前綴規則// = 絕對路徑、~/ = Home 目錄、/ = 專案根目錄、./ 或無 = 相對路徑。

重要提醒:不要在 CLAUDE.md 中寫 “NEVER add Co-Authored-By”,改用 attribution.commit: "" 這樣的確定性設定。(davila7)

4.6 Plugins 與 Marketplaces

Claude Code v2.1.126 引入完整的 Plugin 生態系統:

// .claude/settings.json — Plugin 設定
{
  "enabledPlugins": {
    "formatter@acme-tools": true,
    "deployer@acme-tools": true
  },
  "extraKnownMarketplaces": {
    "acme-tools": {
      "source": {
        "source": "github",
        "repo": "acme-corp/claude-plugins"
      }
    }
  }
}

Marketplace 來源類型githubgitdirectoryhostPatternsettingsurlnpmfile

企業管控

  • blockedMarketplaces:封鎖特定 marketplace
  • strictKnownMarketplaces:僅允許白名單 marketplace
  • pluginTrustMessage:自訂 plugin 信任提示訊息

第 5 章 Claude Code 核心工作流

5.1 Plan Mode(規劃模式)

核心原則:永遠從 Plan Mode 開始,不要直接讓 Claude 寫 code。

# 方法 1:在 Claude 對話中切換
> Shift+Tab  # 循環切換 Ask → Plan → Auto 模式

# 方法 2:使用 /model 選擇規劃用模型
> /model     # 選擇 Opus 做規劃,Sonnet 做編碼

Plan Mode 工作流

flowchart LR
    A[需求描述] --> B[Plan Mode
使用 Opus] B --> C[產出規劃文件] C --> D[人工審核
修正規劃] D --> E[切換 Auto Mode
使用 Sonnet] E --> F[自動執行] F --> G[Review 結果]

進階技巧

# 請 Claude 先面試你,釐清需求
> 使用 AskUserQuestion 工具來面試我,了解這個功能的需求

# 規劃完成後,開一個新 session 來執行
> /clear
> 根據以下規劃執行實作:[貼上規劃內容]

# 請第二個 Claude 以 Staff Engineer 角色審核規劃
> 以 Staff Engineer 的角度審核這份規劃,指出風險和遺漏

5.2 任務拆解策略(50% Context Rule)

Context 管理是 Agentic Engineering 最關鍵的技能。

Context 用量與智能退化

Context 用量狀態建議操作
0-30%最佳智能區正常工作
30-40%安全區注意任務進度
40-60%退化區(Dumb Zone)準備收尾或 /compact
60-100%嚴重退化區立即 /compact 或 /clear
300-400k tokensContext Rot模型可靠性大幅下降

Thariq(Anthropic 工程師)的建議

  • 新手:保持 context 在 40% 以下,60% 時就結束
  • 老手:積極保持在 30% 以下,只有簡單任務才推到 60%

任務拆解實踐

# 確認目前 context 用量
> /context

# 將大任務拆解
> 請將這個功能拆解成可獨立完成的子任務,每個子任務需在 50% context 內完成

# 任務拆解範例輸出:
# 1. 建立 Domain Entity(預計 10% context)
# 2. 建立 Repository Interface(預計 5% context)
# 3. 實作 Service Layer(預計 15% context)
# 4. 實作 Controller(預計 10% context)
# 5. 撰寫單元測試(預計 15% context)

5.3 /compact 使用時機

/compact 是壓縮當前對話 context 的指令,但自動觸發的 compact 品質最差,因為此時模型已處於 context rot 狀態。

手動 /compact 的最佳實踐

# 帶提示的 compact(推薦)
> /compact focus on the auth refactor, drop the test debugging

# 純 compact(不推薦,壓縮時缺乏方向)
> /compact

何時用 /compact vs /clear

情境建議理由
任務中期,需要繼續/compact + 提示保留動量,允許細節模糊
高風險的下一步/clear + 簡短摘要完全控制帶入的 context
切換新任務/clear新任務新 session
Context 已到 50%+/compact + 提示及時壓縮避免退化

進階技巧 — Summarize from Here

# 在 /rewind 之前,先讓 Claude 寫一份交接摘要
> 從這裡開始,寫一份摘要說明你做了什麼、下一步是什麼

# 然後 /rewind 到之前的狀態
> /rewind

# 再把摘要貼回來,就像「未來的 Claude 給過去的 Claude 的筆記」

5.4 長任務控制技巧

Session 管理

# 重新命名 session(方便識別)
> /rename [TODO - auth refactor]

# 恢復之前的 session
> /resume

# 查看 session 歷史
> claude --resume

每個 Turn 都是分支點

Thariq 建議在每個 turn 結束後,有意識地選擇下一步:

Claude 完成一個 turn
    ├── Continue    → 繼續目前任務
    ├── /rewind     → 回到之前的檢查點重試
    ├── /clear      → 清空 context 重新開始
    ├── /compact    → 壓縮 context 繼續
    └── Subagent    → 分派給子代理處理

Rewind > Correct

# 錯誤做法:在失敗的嘗試上疊加修正
> 這個方法不對,請改用 xxx

# 正確做法:回退到失敗前,用學到的資訊重新嘗試
> Esc Esc  # 雙擊 Escape 取消
> /rewind   # 回到失敗前的狀態
> 使用 xxx 方法來實作這個功能  # 用新的方向重新嘗試

使用 Ultrathink 提升推理品質

# 在需要深度推理的 prompt 中加入 ultrathink 關鍵字
> ultrathink 分析這個分散式交易的一致性問題,並提出解決方案

# 或使用 Opus 4.7 的 Adaptive Thinking 調整努力等級
# low → medium → high → xhigh → max

Effort Level(推理深度控制)

等級推理深度適用模型預設
max最大深度Opus 4.6 only
xhigh擴展深度Opus 4.7 onlyOpus 4.7 預設
high完整深度Opus 4.6 / Sonnet 4.6所有方案預設
medium平衡同上
low最快回應同上
# 設定 Effort Level
> /effort high       # 直接設定
> /effort auto       # 重設為模型預設

# 在 Skill 中使用努力等級模板變數
# ${CLAUDE_EFFORT} — 取得當前 effort level

實用 Session 指令

# 建立對話分支(不影響原始對話)
> /branch my-experiment

# 快速旁白問題(不加入主對話)
> /btw 這個 API 的回傳格式是什麼?

# 產生 session 摘要
> /recap

# 使用 Ultraplan 在雲端規劃
> /ultraplan 設計微服務拆分方案

實務案例:使用 /focus 模式可以隱藏所有中間步驟,只顯示最終結果。適合信任模型能力的資深開發者使用。(Boris)

5.5 Auto Mode 與 Permission 模式

Auto Mode 是 v2.1.111 新增的背景安全分類器,自動審批安全操作、阻擋危險操作:

模式說明適用場景
default標準權限確認一般開發
acceptEdits自動接受檔案修改信任度中等
dontAsk非預批准的工具自動拒絕嚴格控制
auto安全分類器自動審批(Research Preview)進階使用
plan唯讀探索模式規劃階段
bypassPermissions跳過所有權限檢查(危險)測試/CI
# 啟動 Auto Mode
claude --permission-mode auto

# 在 session 中循環切換
> Shift+Tab  # Ask → Plan → Auto

# 自訂 Auto Mode 規則
# ~/.claude/settings.json(不可放在共享的 .claude/settings.json)
{
  "autoMode": {
    "environment": [
      "Source control: github.example.com/acme-corp",
      "Trusted internal domains: *.internal.example.com"
    ],
    "soft_deny": [
      "$defaults",
      "Never run terraform apply",
      "Never delete production databases"
    ],
    "allow": [
      "$defaults",
      "Allow running npm test without prompting"
    ]
  }
}

注意$defaults 是特殊哨兵字串,繼承內建規則。不包含 $defaults取代而非追加預設規則。使用 claude auto-mode defaults 查看內建規則。


第 6 章 Agentic Engineering 實戰

6.1 Subagents 設計

Subagent 是 Claude Code 中最強大的功能之一,讓你能將任務分派給獨立的 context 窗口執行。

Subagent Frontmatter 欄位(16 個)

欄位類型必填說明
namestring唯一識別名稱,使用小寫字母和連字號
descriptionstring何時調用。使用 “PROACTIVELY” 可讓 Claude 自動觸發
toolsstring/list工具白名單(如 Read, Write, Edit, Bash)。省略則繼承所有。支援 Agent(agent_type) 語法
disallowedToolsstring/list工具黑名單,從繼承或指定列表中移除
modelstring使用模型:sonnetopushaiku、完整 ID 或 inherit(預設)
permissionModestringdefaultacceptEditsautodontAskbypassPermissionsplan
maxTurnsinteger最大執行輪次,超過後停止
skillslist啟動時預載入 context 的 Skill 名稱列表
mcpServerslist此 Agent 使用的 MCP Server(名稱字串或 {name: config} 物件)
hooksobject此 Agent 範圍內的生命週期 Hook(PreToolUse、PostToolUse、Stop 最常用)
memorystring持久記憶範圍:userprojectlocal
backgroundboolean設為 true 永遠以背景任務執行
effortstring推理深度:lowmediumhighxhighmax(Opus 4.6 only)
isolationstring設為 "worktree" 在暫時 git worktree 中執行
initialPromptstring作為主 session agent 時自動提交的初始提示(--agentagent 設定)
colorstring任務清單顯示顏色:redbluegreenyellowpurpleorangepinkcyan

5 個官方內建 Agent

#名稱模型工具用途
1general-purposeinherit全部複雜多步驟任務——預設 subagent 類型
2ExplorehaikuRead-only快速程式碼搜尋與探索(無 Write/Edit)
3PlaninheritRead-onlyPlan Mode 下的預規劃研究
4statusline-setupsonnetRead, Edit設定 Status Line
5claude-code-guidehaikuGlob, Grep, Read, WebFetch, WebSearch回答 Claude Code 功能問題

Subagent 定義範例

<!-- .claude/agents/backend-agent.md -->
---
name: backend-agent
description: "PROACTIVELY 處理後端 Java/Spring Boot 開發任務"
model: sonnet
tools: Read, Edit, Bash, Grep, Glob
disallowedTools: "Bash(rm -rf *), Bash(git push *)"
effort: high
color: blue
---

# Backend Agent

你是一個專精 Java / Spring Boot 的後端開發代理。

## 職責
- 實作 Service、Repository、Controller 層
- 撰寫單元測試
- 處理資料庫 Migration

## 規範
- 遵循 Clean Architecture
- 使用 @Transactional 管理交易
- 所有公開方法需撰寫 JavaDoc

## 限制
- 不可修改 .env 或設定檔
- 不可直接操作生產資料庫
- 遇到架構問題需回報主 context
<!-- .claude/agents/security-agent.md -->
---
name: security-agent
description: "PROACTIVELY 負責安全審查和弱點掃描"
model: opus
tools: Read, Grep, Glob, Bash
disallowedTools: Edit, "Bash(git *)"
color: red
maxTurns: 30
---

# Security Agent

你是一個專精資安的安全審查代理。

## 職責
- 掃描程式碼中的安全弱點(OWASP Top 10)
- 檢查敏感資料暴露風險
- 驗證輸入驗證機制
- 審查 SQL Injection 風險
- 檢查 XSS 風險

## 輸出格式
以結構化報告回報:
- 風險等級(Critical / High / Medium / Low)
- 影響範圍
- 修復建議
- 參考標準(CWE / CVE)
<!-- .claude/agents/db-agent.md -->
---
name: db-agent
description: "處理資料庫設計、Migration 和查詢最佳化"
model: sonnet
tools: Read, Grep, Glob, Bash
disallowedTools: "Bash(DROP *), Bash(DELETE FROM *), Bash(TRUNCATE *)"
isolation: worktree
color: green
---

# Database Agent

你是一個專精資料庫設計的代理。

## 職責
- 設計資料表結構
- 撰寫 Flyway/Liquibase Migration
- 最佳化慢查詢
- 設計索引策略

## 規範
- 所有查詢必須使用參數化(防 SQL Injection)
- 禁止使用 SELECT *
- 大量資料查詢需加上分頁
- Migration 必須可回滾

6.2 多 Agent 協作模式

模式一:Sequential(依序執行)

# 主 context 依序分派任務
> 使用 backend-agent 建立 User Entity 和 Repository
> [等待完成]
> 使用 backend-agent 建立 UserService
> [等待完成]
> 使用 security-agent 審查上述程式碼的安全性

模式二:Parallel(平行執行)— Agent Teams

# 使用 Agent Teams(需 tmux + git worktrees)
# 多個 Claude 實例在不同 worktree 同時工作

# 設定方式:
# 1. 建立 git worktree
git worktree add ../project-auth feature/auth
git worktree add ../project-api feature/api

# 2. 在不同 tmux 窗格啟動 Claude
tmux new-session -d -s auth "cd ../project-auth && claude"
tmux new-session -d -s api "cd ../project-api && claude"

# 3. 各自獨立開發
# auth 窗格:實作認證模組
# api 窗格:實作 API 端點

模式三:Orchestrator(編排器模式)

<!-- .claude/commands/implement-feature.md -->
---
description: 使用多 Agent 協作實作功能
---

# 功能實作工作流

1. **規劃階段**:分析需求,拆解為子任務
2. **實作階段**:
   - 使用 @backend-agent 實作後端邏輯
   - 使用 @frontend-agent 實作前端 UI
   - 使用 @db-agent 處理資料庫 Migration
3. **驗證階段**:
   - 使用 @security-agent 執行安全審查
   - 使用 @test-agent 補齊測試
4. **整合階段**:
   - 合併所有變更
   - 執行整合測試
   - 產生 PR

請先以 Plan Mode 規劃,待使用者確認後再執行。

6.3 任務分派與回收機制

Subagent 的核心價值在於 context 隔離

主 Context                    子 Context(Subagent)
┌──────────┐                 ┌──────────────────────┐
│ 任務描述  │ ──分派──▶      │ 20 次檔案讀取         │
│ 期望結果  │                │ 12 次搜尋             │
│          │                │ 3 次失敗嘗試           │
│          │                │ 最終成功方案           │
│ 結論報告  │ ◀──回收──      │                      │
└──────────┘                 └──────────────────────┘

主 context 只看到結論,中間的探索過程留在子 context

何時使用 Subagent

情境使用 Subagent直接在主 context
需要大量檔案搜尋
結果需要後續使用
獨立可完成的任務
需要與使用者互動
探索性任務
高確定性修改

6.4 如何避免「全能型 Agent 失控」

Boris Cherny 的建議:

  1. 功能導向,非角色導向

    ❌ backend-engineer(太通用)
    ✅ auth-module-agent(專注功能)
    ✅ payment-integration-agent(專注功能)
  2. 限制工具存取

    # 每個 Agent 只給必要的工具
    allowed-tools:
      - Read        # 只讀
      - Grep        # 搜尋
    tools:
      deny:
        - Edit      # 不允許修改
  3. 使用 Worktree 隔離

    # Agent 定義中使用 worktree 隔離
    isolation: "worktree"
  4. Test Time Compute(Boris Cherny 的核心觀念):

    「分開的 context 窗口讓結果更好——一個 agent 可能製造 bug,另一個(同模型)可以找出 bug。」

實務案例:Boris 建議用 /code-review 做多 Agent PR 分析,能在合併前捕捉 bug、安全弱點和回歸問題。

6.5 Agent SDK 與程式化整合

Claude Code 提供 Agent SDK,可在程式中控制 Claude Code 行為:

# SDK 模式啟動
claude -p "分析這個專案" --output-format json

# 結合 CI/CD pipeline
claude -p "review this PR for security issues" \
  --permission-mode bypassPermissions \
  --no-session-persistence

關鍵環境變數

  • CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS:停用 SDK 模式中的內建 subagent
  • CLAUDE_AGENT_SDK_MCP_NO_PREFIX:跳過 MCP 工具的 mcp__<server>__ 前綴
  • CLAUDE_CODE_EXIT_AFTER_STOP_DELAY:閒置後自動結束 SDK session

Remote Control

# 讓本地 session 可被 claude.ai 遠端控制
> /remote-control

# 從 claude.ai 拉取雲端 session 到本地
> /teleport

第 7 章 Hooks 自動化機制

7.1 Hooks 概述與事件類型

Hooks 是 Claude Code 的事件驅動自動化機制,在特定生命週期事件觸發時執行自訂腳本。完整的 Hook 參考文件維護於獨立 repo:claude-code-hooks

截至 v2.1.126,共支援 25 個 Hook 事件,以下為最常用的 6 種:

Hook 類型觸發時機適用場景
SessionStart開始新 session 時載入專案上下文
PreToolUse執行工具前安全檢查、權限控制
PostToolUse工具執行後程式碼格式化、日誌記錄
StopClaude 完成一個 turn 時驗證工作、推動繼續
Notification需要通知時提醒、警報
PermissionRequest需要權限時自動審批安全操作

Hook 設定相關 settings 欄位

  • hooks:Hook 定義
  • disableAllHooks:停用所有 Hook(同時停用自訂 Status Line)
  • allowManagedHooksOnly:僅允許 Managed Settings 中定義的 Hook
  • allowedHttpHookUrls:允許的 HTTP Hook URL
  • httpHookAllowedEnvVars:HTTP Hook 允許存取的環境變數

7.2 SessionStart — 自動載入上下文

// .claude/settings.json(hooks 區段)
{
  "hooks": {
    "SessionStart": [
      {
        "name": "load-project-context",
        "command": "cat docs/architecture.md docs/api-spec.md | head -200",
        "description": "載入專案架構和 API 規格"
      },
      {
        "name": "check-git-status",
        "command": "git status --short && git log --oneline -5",
        "description": "顯示 Git 狀態和最近 5 個 commit"
      },
      {
        "name": "load-todo",
        "command": "cat TODO.md 2>/dev/null || echo 'No TODO.md found'",
        "description": "載入待辦事項"
      }
    ]
  }
}

進階:自動補充 compact 後的關鍵上下文

#!/bin/bash
# .claude/hooks/restore-context.sh
# SessionStart hook:恢復關鍵上下文

echo "=== 專案上下文 ==="
echo "Git Branch: $(git branch --show-current)"
echo "Last Commit: $(git log --oneline -1)"
echo ""
echo "=== 未完成任務 ==="
grep -r "TODO\|FIXME\|HACK" src/ --include="*.java" | head -10
echo ""
echo "=== 測試狀態 ==="
mvn test -q 2>&1 | tail -5

7.3 PreToolUse — 安全檢查

{
  "hooks": {
    "PreToolUse": [
      {
        "name": "protect-sensitive-files",
        "matcher": "Edit",
        "if": "path matches '**/.env*' or path matches '**/secrets/**' or path matches '**/credentials/**'",
        "command": "echo 'BLOCKED: Cannot modify sensitive files' && exit 1",
        "description": "禁止修改敏感檔案"
      },
      {
        "name": "readonly-sql",
        "matcher": "Bash",
        "if": "command contains 'psql' or command contains 'mysql'",
        "command": "bash .claude/hooks/validate-sql.sh",
        "description": "僅允許唯讀 SQL 查詢"
      },
      {
        "name": "track-skill-usage",
        "matcher": "*",
        "command": "echo \"$(date +%Y-%m-%dT%H:%M:%S) TOOL: $CLAUDE_TOOL_NAME\" >> .claude/hooks/usage.log",
        "description": "追蹤工具使用頻率"
      }
    ]
  }
}

SQL 驗證腳本範例

#!/bin/bash
# .claude/hooks/validate-sql.sh
# 僅允許 SELECT 查詢,阻擋 DML/DDL

SQL_CMD="$1"
if echo "$SQL_CMD" | grep -iE "(INSERT|UPDATE|DELETE|DROP|ALTER|TRUNCATE|CREATE)" > /dev/null; then
    echo "BLOCKED: Only SELECT queries are allowed"
    exit 1
fi
echo "ALLOWED: Read-only query"
exit 0

7.4 PostToolUse — 自動格式化與品質檢查

{
  "hooks": {
    "PostToolUse": [
      {
        "name": "auto-format-java",
        "matcher": "Edit",
        "if": "path matches '**/*.java'",
        "command": "google-java-format --replace $CLAUDE_FILE_PATH",
        "description": "自動格式化 Java 程式碼"
      },
      {
        "name": "auto-lint-typescript",
        "matcher": "Edit",
        "if": "path matches '**/*.ts' or path matches '**/*.tsx'",
        "command": "npx eslint --fix $CLAUDE_FILE_PATH",
        "description": "自動修正 TypeScript lint 問題"
      },
      {
        "name": "audit-log",
        "matcher": "Edit",
        "command": "echo \"$(date +%Y-%m-%dT%H:%M:%S) EDIT: $CLAUDE_FILE_PATH by Claude\" >> .claude/audit.log",
        "description": "記錄所有檔案修改到稽核日誌"
      }
    ]
  }
}

7.5 Stop Hook — 品質門檻

{
  "hooks": {
    "Stop": [
      {
        "name": "verify-tests-pass",
        "command": "mvn test -q 2>&1 | tail -3",
        "description": "每次 turn 結束時驗證測試是否通過"
      },
      {
        "name": "nudge-continue",
        "command": "echo 'Before stopping, verify: 1) All tests pass 2) No security issues 3) Code is formatted'",
        "description": "提醒 Claude 在停止前驗證工作"
      }
    ]
  }
}

7.6 Permission Request Hook — 智能審批

{
  "hooks": {
    "PermissionRequest": [
      {
        "name": "opus-security-gate",
        "command": "python3 .claude/hooks/security-gate.py",
        "description": "使用 Opus 模型掃描權限請求,自動批准安全操作"
      }
    ]
  }
}

Boris Cherny 建議:路由權限請求到 Opus 模型掃描攻擊行為,自動批准安全的操作(🚫👶 不要手動逐一確認)。

7.7 HTTP Hooks 與進階機制

除了本地腳本 Hook 外,v2.1.126 支援 HTTP Hooks——將事件傳送到遠端 HTTP 端點:

{
  "hooks": {
    "PostToolUse": [
      {
        "name": "remote-audit",
        "type": "http",
        "url": "https://audit.company.com/claude-events",
        "description": "將工具使用事件傳送到企業審計系統"
      }
    ]
  }
}

HTTP Hooks 安全管控

  • allowedHttpHookUrls:限制允許的 HTTP Hook URL(支援萬用字元)
  • httpHookAllowedEnvVars:控制 HTTP Hook 可存取的環境變數
  • 企業可透過 Managed Settings 限制僅允許公司內部 URL

Hooks 專屬環境變數(由 Claude Code 自動注入):

變數說明
CLAUDE_TOOL_NAME當前工具名稱
CLAUDE_FILE_PATH操作的檔案路徑
CLAUDE_SESSION_IDSession ID
AI_AGENT標記父程序為 AI Agent

Exit Code 語意

  • 0:允許(Hook 輸出注入 Claude 的 context)
  • 1:阻擋操作(PreToolUse 會阻止工具執行)
  • 2:允許但靜默(不注入輸出到 context)

除錯技巧:使用 claude --debug 可看到 Hook 執行細節。

7.8 企業級 Hooks 最佳實踐總結

Hook 類型企業用途範例
SessionStart自動載入上下文載入架構文件、Git 狀態
PreToolUse安全門檻禁止修改 .env、限制 SQL
PostToolUse品質保證自動格式化、lint
Stop驗證完成執行測試、安全掃描
Notification稽核追蹤操作日誌、Slack 通知
PermissionRequest智能審批自動判斷安全性

On-Demand Hooks(技能內鉤子)

# 在 Skill 中定義臨時 hooks
# /careful — 阻擋破壞性指令
# /freeze — 阻擋目錄外的編輯

重要注意事項:Hooks 的除錯可使用 claude --debug-hooks 旗標,或查看 .claude/hooks/ 目錄下的日誌檔案。


第 8 章 AI 輔助開發實戰場景

8.1 Web Application 開發

前端 + 後端協作流程

flowchart LR
    A[需求分析] --> B[API 設計]
    B --> C[平行開發]
    
    subgraph 平行開發
        C1[Backend Agent
Spring Boot] C2[Frontend Agent
Vue/React] end C --> C1 C --> C2 C1 --> D[整合測試] C2 --> D D --> E[安全審查] E --> F[部署]

實戰指令範例

# 1. API 設計(Plan Mode)
> 以 RESTful 風格設計使用者管理 API,包含:
> - CRUD 操作
> - 認證/授權
> - 分頁和篩選
> 請產出 OpenAPI 3.0 規格

# 2. 後端實作(分派給 Backend Agent)
> 使用 backend-agent 根據 api-spec.yaml 實作:
> - UserController
> - UserService
> - UserRepository
> - User Entity
> - 完整單元測試

# 3. 前端實作(分派給 Frontend Agent)
> 使用 frontend-agent 根據 api-spec.yaml 實作:
> - 使用者列表頁面
> - 使用者表單(新增/編輯)
> - API 整合層(axios/fetch)
> - 狀態管理

# 4. 整合測試
> 執行整合測試,驗證前後端 API 對接是否正確

Clean Architecture 實作

# 使用 Claude Code 建立 Clean Architecture 骨架
> 請建立以下 Clean Architecture 結構:
> 
> domain/
>   ├── entities/         # 業務實體
>   ├── repositories/     # Repository 介面
>   └── usecases/         # 業務邏輯
> 
> application/
>   ├── services/         # 應用服務
>   ├── dto/              # 資料傳輸物件
>   └── mappers/          # Entity <-> DTO 轉換
> 
> infrastructure/
>   ├── persistence/      # Repository 實作
>   ├── web/              # Controller
>   └── config/           # 設定

# 同時使用 ArchUnit 測試驗證架構約束
> 撰寫 ArchUnit 測試,確保:
> 1. Domain 層不依賴 Infrastructure 層
> 2. Controller 不直接存取 Repository
> 3. Entity 不使用 Spring 註解

ArchUnit 測試範例

@AnalyzeClasses(packages = "com.example")
public class ArchitectureTest {

    @ArchTest
    static final ArchRule domain_should_not_depend_on_infrastructure =
        noClasses()
            .that().resideInAPackage("..domain..")
            .should().dependOnClassesThat()
            .resideInAPackage("..infrastructure..");

    @ArchTest
    static final ArchRule controllers_should_not_access_repositories =
        noClasses()
            .that().resideInAPackage("..web..")
            .should().dependOnClassesThat()
            .resideInAPackage("..persistence..");
}

8.2 舊系統逆向工程

分析 Legacy Code

# 1. 系統概觀分析
> ultrathink 分析這個專案的整體架構:
> - 辨識主要模組和它們的職責
> - 找出模組間的依賴關係
> - 辨識使用的技術棧和框架
> - 產出 ASCII 架構圖

# 2. 業務規則抽取
> 分析 src/main/java/com/legacy/ 目錄下的所有 Service 類別:
> - 抽取核心業務規則
> - 辨識隱藏的業務邏輯(寫在 Controller 或 DAO 中的)
> - 產出業務規則文件

# 3. 資料庫依賴分析
> 分析所有 SQL 查詢和資料庫操作:
> - 列出所有資料表和它們的關聯
> - 辨識未被使用的資料表
> - 找出效能問題(全表掃描、缺少索引)
> - 產出 ER Diagram(Mermaid 格式)

建立系統文件

# 使用 ASCII 圖表理解架構(Boris 強調的技巧)
> 請使用 ASCII 圖表畫出這個系統的:
> 1. 系統架構圖
> 2. 資料流圖
> 3. 模組依賴圖
> 4. API 呼叫序列圖

# 範例輸出:
# ┌─────────┐    ┌──────────┐    ┌──────────┐
# │  Web UI │───▶│  Gateway │───▶│  Service │
# └─────────┘    └──────────┘    └────┬─────┘
#                                     │
#                                ┌────▼─────┐
#                                │    DB    │
#                                └──────────┘

自動產出架構圖

# 產出 Mermaid 架構圖
> 分析 src/ 目錄,產出 Mermaid 格式的:
> 1. 類別圖(主要 Entity 和 Service 的關聯)
> 2. 序列圖(主要 API 的呼叫流程)
> 3. 元件圖(模組間的依賴關係)

逆向工程專用 Skill 範例

<!-- .claude/skills/reverse-engineering/SKILL.md -->
---
description: "Triggered when analyzing legacy code or performing reverse engineering tasks"
---

# Legacy Code Analysis Skill

## 目標
分析舊系統程式碼,產出結構化的分析報告。

## 分析步驟
1. 掃描專案結構,辨識技術棧
2. 分析模組依賴關係
3. 抽取業務規則
4. 識別技術債
5. 評估安全風險
6. 產出遷移建議

## 輸出格式
### 系統概觀
- 技術棧:[列表]
- 模組數量:[數字]
- 程式碼行數:[數字]

### 架構分析
[ASCII 或 Mermaid 圖表]

### 業務規則清單
| 規則 ID | 描述 | 所在位置 | 複雜度 |
|---------|------|---------|--------|

### 技術債清單
| 項目 | 嚴重度 | 影響範圍 | 建議修復方式 |
|------|--------|---------|-------------|

### 安全風險
| 風險 | OWASP 分類 | 嚴重度 | 修復建議 |
|------|-----------|--------|---------|

8.3 Framework 升級

Spring Boot 升級策略

# 1. 升級前評估
> 分析目前的 Spring Boot 版本(2.7.x),列出升級到 3.2 的:
> - Breaking Changes 清單
> - 需要修改的程式碼範圍
> - 相依套件相容性問題
> - 預估工作量

# 2. 分階段升級計畫
> 制定分階段升級計畫:
> Phase 1:更新 pom.xml 依賴
> Phase 2:修復編譯錯誤
> Phase 3:更新 API 變更(javax → jakarta)
> Phase 4:修復測試
> Phase 5:效能驗證

# 3. 自動重構
> 使用 subagent 批次修改所有 javax.* import 為 jakarta.*
> 同時更新相關的設定檔

Breaking Change 分析 Skill

<!-- .claude/skills/framework-upgrade/SKILL.md -->
---
description: "Triggered when upgrading framework versions or analyzing breaking changes"
---

# Framework Upgrade Analysis

## 分析步驟
1. 讀取目前的 dependency 版本
2. 與目標版本比較 release notes
3. 掃描程式碼中受影響的 API 使用
4. 產出影響分析報告
5. 提供自動修復建議

## Gotchas(常見踩坑)
- Spring Boot 2.x → 3.x:javax → jakarta namespace 變更
- Java 8 → 17:Records、Sealed Classes 可選用
- JUnit 4 → 5:@Test 和 Assert 語法變更
- 部分 deprecated API 在新版中已移除

Boris Cherny 建議:保持 codebase 乾淨,完成進行中的 migration。部分遷移的框架會混淆模型,讓它選錯模式。


第 9 章 CLI 與數據分析整合

9.1 BigQuery CLI 使用方式

Claude Code 可以直接呼叫命令列工具進行資料分析,實現無需手寫 SQL 的資料分析工作流

# 直接在 Claude 對話中使用 BigQuery
> 查詢過去 7 天的使用者登入統計,按小時分組

# Claude 會自動產生並執行:
bq query --use_legacy_sql=false \
  'SELECT 
     TIMESTAMP_TRUNC(login_time, HOUR) as hour,
     COUNT(*) as login_count
   FROM `project.dataset.user_logins`
   WHERE login_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
   GROUP BY hour
   ORDER BY hour'

9.2 無 SQL 分析流程

# 1. 自然語言查詢
> 找出過去一個月中,哪些 API 端點的回應時間超過 2 秒

# 2. Claude 自動:
#    a. 產生 SQL
#    b. 執行查詢
#    c. 分析結果
#    d. 產出視覺化建議

# 3. 進階分析
> 比較上週和這週的 API 效能差異,找出退化最嚴重的 5 個端點

9.3 自動生成報表

# 產出效能報表
> 請根據以下資料產出效能分析報表(Markdown 格式):
> - 包含圖表(Mermaid)
> - 包含趨勢分析
> - 包含異常偵測
> - 包含改善建議

# 定期報表生成(使用 /loop)
> /loop every 24h 產出每日系統健康報表,儲存到 reports/daily/

MCP 整合資料分析

// .mcp.json
{
  "mcpServers": {
    "database": {
      "command": "npx",
      "args": ["@anthropic-ai/mcp-server-postgres"],
      "env": {
        "DATABASE_URL": "${DATABASE_URL}"
      }
    },
    "bigquery": {
      "command": "npx",
      "args": ["@anthropic-ai/mcp-server-bigquery"],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "${GOOGLE_CREDS_PATH}"
      }
    }
  }
}

安全提醒:資料庫 MCP Server 建議設定為唯讀模式,使用 PreToolUse hook 驗證所有 SQL 查詢不包含 DML/DDL。


第 10 章 與 GitHub Copilot 協作模式

10.1 Claude Code vs Copilot 分工

flowchart TB
    subgraph "Claude Code 負責"
        CC1[架構設計與規劃]
        CC2[跨檔案重構]
        CC3[Code Review]
        CC4[CI/CD 自動化]
        CC5[安全審查]
        CC6[逆向工程]
        CC7[大範圍修改]
    end
    
    subgraph "GitHub Copilot 負責"
        GC1[即時程式碼補全]
        GC2[單檔案內編輯]
        GC3[文件撰寫]
        GC4[小範圍修改]
        GC5[程式碼片段生成]
    end
    
    subgraph "協作領域"
        CO1[PR Review]
        CO2[Bug Fix]
        CO3[測試撰寫]
    end

10.2 Code Generation vs Architecture Planning

任務首選工具理由
系統架構設計Claude Code (Plan Mode)支援大量 context 分析
單一方法實作GitHub Copilot即時補全更快
API 端點實作Claude Code可同時產生 Controller + Service + Test
變數命名GitHub Copilotcontext 感知的即時建議
資料庫 MigrationClaude Code需要理解整個 schema
CSS 調整GitHub Copilot快速補全
安全審查Claude CodeSubagent + Hook 自動化
README 撰寫兩者皆可Claude 更全面,Copilot 更快

10.3 雙 AI Workflow 設計

Cross-Model Workflow

claude-code-best-practice 專案中記錄了 Cross-Model Workflow:結合不同 AI 模型實現更好的品質。

# 步驟 1:Claude Code 做規劃(Opus)
claude --model opus
> 設計使用者認證系統的架構方案

# 步驟 2:切換到 Sonnet 做實作
> /model sonnet
> 根據上述架構方案實作

# 步驟 3:使用 Copilot 做微調
# 在 VS Code 中開啟生成的檔案,使用 Copilot 補完細節

# 步驟 4:Claude Code 做 Review
> /code-review
# 或使用另一個 Claude 實例做 cross-model review

日常開發中的雙 AI 工作流

早上啟動 → Claude Code Plan Mode(規劃今日任務)
    │
    ├── 大型功能開發 → Claude Code(Subagent 分派)
    │   └── 細節調整 → GitHub Copilot(即時補全)
    │
    ├── Bug Fix → GitHub Copilot(快速修復)
    │   └── 安全驗證 → Claude Code(Security Agent)
    │
    ├── Code Review → Claude Code(/code-review)
    │
    └── 文件更新 → GitHub Copilot + Claude Code
        │
下班前 → Claude Code(產出 PR + 每日報告)

Boris 建議:使用 Opus 做 Plan Mode,Sonnet 做程式碼生成,取兩者之長。Cat Wu 也建議在 /config 中設定不同任務使用不同模型。

10.4 Cross-Model 與多引擎工作流

Claude Code 支援 Model Aliases 快速切換,搭配多引擎策略可最大化開發效率:

Alias對應模型建議用途
sonnetClaude Sonnet 4.6日常程式碼生成(預設)
opusClaude Opus 4.6架構規劃、安全審查
haikuClaude Haiku快速探索、文件查詢
sonnet[1m]Sonnet(1M context)大型 codebase 分析
opus[1m]Opus(1M context)全面架構審查
opusplanOpus(Plan 專用)深度規劃

多引擎實戰模式

# 同時開啟多個 Claude 終端,各負責不同任務
# Terminal 1(Opus — 規劃)
claude --model opus
> /plan 設計整個微服務架構

# Terminal 2(Sonnet — 實作)
claude --model sonnet
> 根據 architecture.md 實作 UserService

# Terminal 3(Haiku — 快速查詢)
claude --model haiku
> 搜尋所有使用 deprecated API 的檔案

第三方模型搭配(透過 MCP 或外部整合):

階段Claude Code第三方 AI
規劃Opus Plan Mode
實作Sonnet 程式碼生成Copilot 即時補全
審查Opus Code ReviewSonarQube SAST
測試Sonnet 測試生成Copilot 測試補全
文件Sonnet 文件撰寫Copilot README 補全

第 11 章 SSDLC 安全開發整合

11.1 Threat Modeling(威脅建模)

在開發初期使用 Claude Code 進行威脅建模,辨識潛在安全風險。

# 使用 Security Agent 進行威脅建模
> 使用 security-agent 對以下系統進行威脅建模:
> - 使用者認證模組(JWT + OAuth2)
> - 支付處理模組(PCI DSS 合規)
> - API Gateway
> 
> 請使用 STRIDE 模型分析,產出威脅矩陣

# Claude 會自動分析並產出:
# 1. 資料流圖(DFD)
# 2. STRIDE 威脅分析
# 3. 風險評級
# 4. 緩解措施建議

威脅建模 Skill 範例

<!-- .claude/skills/threat-modeling/SKILL.md -->
---
description: "Triggered when performing security analysis or threat modeling"
---

# Threat Modeling Skill

## 分析框架:STRIDE
- **S**poofing(身分偽造)
- **T**ampering(資料竄改)
- **R**epudiation(不可否認性)
- **I**nformation Disclosure(資訊洩漏)
- **D**enial of Service(阻斷服務)
- **E**levation of Privilege(權限提升)

## 輸出格式

### 威脅矩陣
| 威脅類型 | 元件 | 攻擊向量 | 影響 | 可能性 | 風險等級 | 緩解措施 |
|---------|------|---------|------|--------|---------|---------|

### 資料流圖
[Mermaid 圖表]

## 參考標準
- OWASP Top 10 (2021)
- CWE/SANS Top 25
- NIST SP 800-53

11.2 Secure Coding 規範

將安全編碼規範嵌入 .claude/rules/ 中,確保所有生成的程式碼符合標準:

---
# .claude/rules/security.md
paths:
  - "src/**/*.java"
  - "src/**/*.ts"
---

# 安全編碼規範

## 輸入驗證(OWASP A03: Injection)
- 所有外部輸入必須使用白名單驗證
- SQL 查詢必須使用 PreparedStatement 或 JPA 參數化
- 禁止字串拼接 SQL
- URL 參數必須進行 URL 解碼後再驗證

## 認證與授權(OWASP A01: Broken Access Control)
- 密碼必須使用 BCrypt 或 Argon2 雜湊
- JWT Token 必須設定合理的過期時間(建議 15 分鐘)
- Refresh Token 必須存放在 HttpOnly Cookie
- 所有 API 端點必須驗證授權

## 敏感資料保護(OWASP A02: Cryptographic Failures)
- 禁止在日誌中輸出密碼、Token、個人資料
- 傳輸中資料必須使用 TLS 1.2+
- 靜態資料使用 AES-256 加密
- API Key 和密碼必須存放在環境變數或 Vault

## XSS 防護(OWASP A07: Cross-Site Scripting)
- 所有使用者輸出必須進行 HTML 編碼
- Content-Security-Policy Header 必須設定
- 禁止使用 innerHTML(前端)
- 使用 sanitize 函式庫處理 Rich Text

## CSRF 防護
- 所有狀態變更操作必須使用 CSRF Token
- SameSite Cookie 屬性設定為 Strict 或 Lax

11.3 自動弱點掃描(SAST / DAST)

PreToolUse Hook 整合 SAST

{
  "hooks": {
    "PostToolUse": [
      {
        "name": "security-scan-on-edit",
        "matcher": "Edit",
        "if": "path matches '**/*.java'",
        "command": "bash .claude/hooks/security-scan.sh $CLAUDE_FILE_PATH",
        "description": "每次編輯 Java 檔案後自動執行安全掃描"
      }
    ]
  }
}
#!/bin/bash
# .claude/hooks/security-scan.sh
FILE_PATH="$1"

# 檢查常見安全問題
echo "=== Security Scan: $FILE_PATH ==="

# 1. SQL Injection 檢查
if grep -n "Statement\|createQuery.*+" "$FILE_PATH" 2>/dev/null; then
    echo "WARNING: Potential SQL Injection - Use PreparedStatement"
fi

# 2. 硬編碼密碼檢查
if grep -inE "password\s*=\s*\"[^\"]+\"|api_key\s*=\s*\"" "$FILE_PATH" 2>/dev/null; then
    echo "CRITICAL: Hard-coded credentials detected"
fi

# 3. 不安全的隨機數
if grep -n "java.util.Random" "$FILE_PATH" 2>/dev/null; then
    echo "WARNING: Use SecureRandom instead of Random for security purposes"
fi

# 4. 日誌中的敏感資訊
if grep -nE "log\.(info|debug|warn|error).*password|log\.(info|debug|warn|error).*token" "$FILE_PATH" 2>/dev/null; then
    echo "WARNING: Sensitive data may be logged"
fi

echo "=== Scan Complete ==="

CI/CD 整合安全掃描

# .github/workflows/security-scan.yml
name: Security Scan
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  sast:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: OWASP Dependency Check
        uses: dependency-check/Dependency-Check_Action@main
        with:
          project: 'my-project'
          path: '.'
          format: 'HTML'
          
      - name: SpotBugs Security
        run: mvn spotbugs:check -Dspotbugs.effort=max
        
      - name: Claude Security Review
        uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          command: |
            使用 security-agent 審查此 PR 的安全性:
            1. OWASP Top 10 風險
            2. 敏感資料暴露
            3. 認證/授權問題
            4. 輸入驗證缺失

11.4 Sandbox 沙箱模式

Sandbox 是 Claude Code 的安全執行環境,將 Bash 指令限制在隔離的沙箱中,大幅降低誤操作風險。

啟用方式

# CLI 啟用
claude --sandbox

# 或在對話中切換
> /sandbox

settings.json Sandbox 設定

{
  "sandbox": {
    // 啟用沙箱
    "enabled": true,
    // 無法使用沙箱時的行為:true=報錯停止,false=退回正常模式
    "failIfUnavailable": false,
    // 沙箱啟用時自動允許 Bash 指令(不再逐一確認)
    "autoAllowBashIfSandboxed": true,
    // 排除不進沙箱的指令(如需要存取主機資源的)
    "excludedCommands": ["docker", "kubectl"],
    // 允許在沙箱外執行的指令(需明確列出)
    "allowUnsandboxedCommands": ["git"],
    
    // 網路設定
    "network": {
      // 允許沙箱內的網路存取(預設 false)
      "allowNetworkAccess": false,
      // 白名單域名
      "allowedDomains": ["registry.npmjs.org", "repo.maven.apache.org"]
    },
    
    // 檔案系統設定
    "filesystem": {
      // 額外掛載的唯讀路徑
      "readonlyPaths": ["/etc/ssl/certs"],
      // 額外掛載的可寫路徑
      "writablePaths": ["/tmp/build-output"]
    }
  }
}

Sandbox 與 Permission Mode 搭配

組合效果適用場景
Sandbox + default沙箱隔離 + 每次確認最安全(初學者)
Sandbox + acceptEdits沙箱隔離 + 自動接受編輯日常開發
Sandbox + auto沙箱隔離 + Auto Mode 規則進階自動化
Sandbox + autoAllowBashIfSandboxedBash 全自動 + 沙箱保護推薦:效率與安全兼顧

Boris Cherny 建議:使用 Sandbox 取代 dangerously-skip-permissions——同樣減少確認提示,但有安全隔離保護。

11.5 Compliance(OWASP / ISO)

# 合規性檢查指令
> 檢查此專案是否符合以下標準:
> 1. OWASP Top 10 (2021) — 逐項對照
> 2. OWASP ASVS Level 2
> 3. 銀行業 FISC 安全基準
> 4. 個資法(GDPR / 台灣個資法)相關要求
>
> 產出合規性差距分析報告

# SSDLC 整合流程
> 設計 SSDLC 安全閘門:
> - 需求階段:威脅建模 Gate
> - 設計階段:架構安全審查 Gate
> - 開發階段:SAST 掃描 Gate(每次 commit)
> - 測試階段:DAST 掃描 Gate
> - 部署階段:合規性驗證 Gate
> - 維運階段:持續監控 Gate

企業級重點:銀行和金融機構必須在每個 SSDLC 階段設定安全閘門(Security Gate),確保程式碼在合併前通過安全審查。使用 Claude Code 的 Hooks 機制可以自動化這些檢查。


第 12 章 系統維護與最佳化

12.1 長期使用策略

每日例行事項

時間動作工具
早上開始更新 Claude Codenpm update -g @anthropic-ai/claude-code
早上開始閱讀 Changelogclaude changelog
開發中監控 context 用量/context
切換任務新 session 或 /compact/clear/compact
午後檢查 Hook 日誌查看 .claude/audit.log
下班前commit 並產出 PRClaude Code 自動化

每週例行事項

# 1. 檢查 CLAUDE.md 是否需要更新
> 審查 CLAUDE.md 的規則是否過時,建議更新項目

# 2. 審查 Skills 使用頻率
# 查看 PreToolUse hook 的使用日誌
cat .claude/hooks/usage.log | sort | uniq -c | sort -rn

# 3. 清理自動記憶
# 審查 ~/.claude/projects/<project>/memory/ 中的自動記憶
# 刪除過時或錯誤的記憶

12.2 Token 使用優化

Context 管理是成本控制的核心

策略說明預估節省
積極 /compact保持 context < 30%30-50% token
使用 Subagent隔離探索性任務20-40% token
延遲載入規則YAML frontmatter paths10-20% token
新任務新 session避免 context 膨脹20-30% token
/rewind > correct避免失敗嘗試污染 context15-25% token

具體做法

# 1. 使用 /context 監控用量
> /context

# 2. 帶提示的 /compact(比自動 compact 好很多)
> /compact 保留認證模組的進度,移除測試除錯的 context

# 3. 使用 Subagent 做探索性搜尋
> 使用 subagent 搜尋所有使用 deprecated API 的檔案,只回報清單

# 4. 使用 Fast Mode 處理簡單任務(beta)
> /fast  # 使用較小模型處理簡單任務,節省 token

12.3 成本控制(模型選擇)

模型選擇策略

任務類型建議模型Effort Level理由
架構規劃Opushigh~max最強推理能力
程式碼生成Sonnethigh速度和品質平衡
簡單修改Haiku / Fast Modelow~medium低成本快速完成
安全審查Opusxhigh~max需要深度分析
文件撰寫Sonnetmedium足夠好且便宜
程式碼格式化Haikulow機械性任務
探索搜尋Haiku(Explore Agent)low唯讀快速掃描
# 在對話中切換模型
> /model opus      # 切換到 Opus(規劃階段)
> /model sonnet    # 切換到 Sonnet(實作階段)
> /fast            # 開啟 Fast Mode(簡單任務)

# 使用 Adaptive Thinking 控制推理深度(Opus 4.7)
# low → medium → high → xhigh → max
# low:最快、最省 token
# max:最智能、最花 token

成本監控

# 查看使用量和計畫限制
> /usage

# 設定 extra-usage 溢出計費
> /extra-usage

Thariq 建議:Prompt Caching 是降低成本的關鍵。Claude Code 內部大量使用 prompt caching 來減少重複 token 消耗。保持 CLAUDE.md 穩定有助於提高 cache 命中率。


第 13 章 系統升級策略

13.1 Claude Code 規則升級

規則版本管理

# 將所有 Claude Code 設定納入版本控制
.claude/
├── settings.json          # ✅ 進版控
├── settings.local.json    # ❌ 不進版控(.gitignore)
├── agents/                # ✅ 進版控
├── commands/              # ✅ 進版控
├── skills/                # ✅ 進版控
├── hooks/                 # ✅ 進版控
└── rules/                 # ✅ 進版控

# .gitignore 中排除的項目
# .claude/settings.local.json
# .claude/hooks/*.log
# .claude/audit.log

升級 SOP

# 1. 更新 Claude Code CLI
npm update -g @anthropic-ai/claude-code

# 2. 閱讀 changelog 了解新功能
claude changelog
# 或查看 GitHub: https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md

# 3. 檢查 settings.json 是否需要更新
# 新版本可能增加新的設定項
> 檢查目前的 .claude/settings.json 是否有需要更新的設定項

# 4. 測試現有 Hooks 和 Skills 是否相容
> 執行所有 skills 和 hooks 的冒煙測試

# 5. 更新團隊文件
> 更新 CLAUDE.md 和 .claude/rules/ 中的過時規則

13.2 Prompt 演進管理

# Prompt 版本管理策略
prompts/
├── v1/
│   ├── plan.md
│   └── review.md
├── v2/
│   ├── plan.md         # 改進版
│   └── review.md       # 改進版
└── current/            # 符號連結到最新版
    ├── plan.md -> ../v2/plan.md
    └── review.md -> ../v2/review.md

Prompt 演進原則

  1. 記錄失敗模式:在 Skill 中建立 Gotchas section,記錄 Claude 的常見失敗點
  2. 描述而非規定:skill description 是觸發器(“when should I fire?"),不是摘要
  3. 目標導向:給 Claude 目標和約束,不要給逐步指令
  4. 持續優化:定期審查 Hook 日誌中的 Skill 使用頻率,調整觸發條件

13.3 Agent 持續優化

<!-- Agent 最佳化檢查清單 -->

## 每月 Agent 審查
- [ ] 檢查每個 Agent 的使用頻率
- [ ] 審查 Agent 的權限是否過大
- [ ] 更新 Agent 的 tools / disallowedTools 設定
- [ ] 調整 Agent 使用的模型(成本 vs 品質)
- [ ] 檢查 Agent 定義檔的行數是否過多
- [ ] 更新 Gotchas section
- [ ] 刪除不再使用的 Agent

## Agent 效能指標
- 任務完成率
- 平均 context 使用量
- 錯誤率
- 人工介入率

Skills 和 Agents 的區分

維度Skills(技能)Agents(代理)Commands(指令)
定義位置.claude/skills/*/SKILL.md.claude/agents/*.md.claude/commands/*.md
觸發方式自動(描述匹配)或手動手動指派或自動委派手動(/command
Context可用 context: fork 隔離獨立 context主 context
適用時機重複性技能需要獨立思考的任務工作流觸發點
Boris 建議做超過一次的事 → Skill功能導向的分工每日重複的操作

Boris Cherny 建議:使用 Commands 做工作流觸發點,Agents 做任務分派,Skills 做具體技能。三者配合形成 Orchestration Workflow。

13.4 Plugins、Channels 與 Routines

v2.1.126 引入了 Plugin 生態系統,允許第三方擴展 Claude Code 的能力。

Plugin 設定

{
  // 啟用的 Plugin 列表
  "enabledPlugins": [
    "github:owner/repo",        // GitHub 倉庫
    "npm:package-name",         // npm 套件
    "directory:/path/to/plugin" // 本地目錄
  ],
  
  // 已知 Marketplace(預設 + 自訂)
  "extraKnownMarketplaces": [
    "https://marketplace.company.com"
  ],
  
  // 嚴格模式:僅允許已知 Marketplace 的 Plugin
  "strictKnownMarketplaces": true,
  
  // 封鎖的 Marketplace
  "blockedMarketplaces": [
    "https://untrusted.example.com"
  ]
}

Plugin 來源類型

來源類型語法範例說明
githubgithub:owner/repo從 GitHub 倉庫安裝
gitgit:https://git.company.com/repo.git任意 Git 倉庫
npmnpm:@scope/plugin-name從 npm Registry 安裝
directorydirectory:/path/to/plugin本地目錄開發用
filefile:/path/to/plugin.js單一檔案 Plugin
urlurl:https://cdn.example.com/plugin.tar.gz遠端 URL
hostPattern主機名稱匹配進階用途
settingssettings 內嵌定義直接定義在 settings.json

Channels 與 Routines

  • Channels:定義 Plugin 的更新頻道(stable / beta / nightly)
  • Routines:Plugin 可註冊的自動化流程,在特定事件觸發

企業安全建議:使用 strictKnownMarketplaces: true + blockedMarketplaces 限制 Plugin 來源,防止未審核的擴展被安裝。


第 14 章 團隊導入建議

14.1 團隊導入流程(Phase 1~3)

flowchart LR
    P1[Phase 1
學習與試驗
2-4 週] --> P2[Phase 2
標準化與推廣
4-8 週] P2 --> P3[Phase 3
全面採用與優化
持續進行]

Phase 1:學習與試驗(2-4 週)

目標:建立團隊對 Claude Code 的基礎認知

週次活動產出
第 1 週安裝 Claude Code、閱讀 claude-code-best-practice README環境就緒
第 1 週嘗試基本指令:Plan Mode、/compact、/context基礎操作熟悉
第 2 週建立第一個 CLAUDE.md專案規則文件
第 2 週嘗試 Subagent 和 Skills了解 Agent 概念
第 3 週建立第一個 Command 和 Skill自訂工作流
第 3 週進行第一次 AI Code ReviewCode Review 流程
第 4 週回顧與調整,記錄學習心得經驗文件

學習資源路徑

# 1. 閱讀 repo 如同一門課程
# 先理解 Commands、Agents、Skills、Hooks 各自是什麼

# 2. Clone 並實際操作範例
git clone https://github.com/shanraisshan/claude-code-best-practice
cd claude-code-best-practice
claude
> /weather-orchestrator    # 試跑 Orchestration Workflow

# 3. 將最佳實踐應用到自己的專案
> 分析我的專案,建議應該從 claude-code-best-practice 中採用哪些實踐

Phase 2:標準化與推廣(4-8 週)

活動負責人產出
建立團隊共用 CLAUDE.md 範本Tech Lead標準 CLAUDE.md
設計團隊共用 Agents架構師標準 Agent 定義
建立 Security Hooks安全團隊安全自動化流程
整合 CI/CD(GitHub Actions)DevOps自動化 pipeline
制定 AI Code Review 規範全團隊Code Review SOP
建立 Skill Library資深開發團隊 Skill 庫

團隊共用設定管理

# 建立團隊共用的 Starter Repository
team-claude-starter/
├── CLAUDE.md                    # 團隊通用規則
├── .claude/
│   ├── settings.json            # 團隊通用設定
│   ├── agents/
│   │   ├── backend-agent.md     # 團隊標準 Agent
│   │   ├── frontend-agent.md
│   │   └── security-agent.md
│   ├── commands/
│   │   ├── plan.md
│   │   ├── review.md
│   │   └── ship.md
│   ├── skills/
│   │   ├── code-review/
│   │   ├── security-scan/
│   │   └── api-design/
│   ├── hooks/
│   │   ├── security-check.sh
│   │   └── auto-format.sh
│   └── rules/
│       ├── coding-standards.md
│       └── security.md
├── .mcp.json                    # 團隊 MCP 設定
└── .github/
    └── workflows/
        └── claude-review.yml    # CI/CD 整合

Phase 3:全面採用與優化(持續進行)

  • 量化指標追蹤

    • AI 產出程式碼的 bug 率
    • Code Review 平均時間
    • 每人每日 PR 數量
    • 安全弱點發現率
  • 持續優化

    • 每月回顧 Skill 使用頻率
    • 每季更新 CLAUDE.md 和 Agent 定義
    • 半年度安全審查

14.2 開發規範

AI 生成程式碼的 Review 規範

## AI Code Review Checklist

### 功能正確性
- [ ] 邏輯是否正確
- [ ] 邊界條件是否處理
- [ ] 錯誤處理是否完整

### 安全性
- [ ] 輸入驗證是否到位
- [ ] 是否有 SQL Injection 風險
- [ ] 是否有 XSS 風險
- [ ] 敏感資料是否暴露

### 可維護性
- [ ] 命名是否清晰
- [ ] 是否有適當註解
- [ ] 是否遵循架構規範
- [ ] 是否有過度工程

### 效能
- [ ] 是否有 N+1 查詢問題
- [ ] 是否有不必要的迴圈
- [ ] 是否有記憶體洩漏風險

### 測試
- [ ] 是否有對應的單元測試
- [ ] 測試案例是否涵蓋邊界條件
- [ ] 是否有整合測試

14.3 Code Review + AI Review 模式

flowchart TB
    A[開發者提交 PR] --> B[Claude Code Review
自動審查] B --> C{AI 審查通過?} C -->|否| D[開發者修正] D --> B C -->|是| E[人工 Code Review] E --> F{人工審查通過?} F -->|否| D F -->|是| G[合併]

三層 Review 機制

  1. 自動 Review(Claude Code Hook)

    • PostToolUse 自動格式化和 lint
    • 安全掃描
  2. AI Review(PR 觸發)

    • Claude Code /code-review 進行多 Agent 分析
    • 標記潛在的 bug、安全問題、效能問題
  3. 人工 Review

    • 架構決策確認
    • 業務邏輯驗證
    • 最終核准
# 在 PR 中 tag @claude 做自動 Review
# Claude GitHub App 會自動分析 PR

# 或使用 CLI 進行 Review
> /code-review

# 進階:將重複的 review 反饋轉成 lint 規則
# Boris: "tag @claude on a coworker's PR to auto-generate lint rules
# for recurring review feedback — automate yourself out of code review"

14.4 常見錯誤與反模式

❌ Anti-Patterns(反模式)

反模式正確做法
跳過 Plan Mode 直接寫 code永遠先 Plan
讓 context 超過 60% 還不 compact保持 < 40%,主動 /compact
使用通用型 Agent(如 “backend engineer”)使用功能導向 Agent(如 “auth-module-agent”)
在 CLAUDE.md 中寫超過 200 行使用 .claude/rules/ 分割
在 CLAUDE.md 中寫 “NEVER do X”使用 settings.json 做確定性控制
失敗後在同一 context 修正/rewind 回到失敗前重試
使用 dangerously-skip-permissions使用 Auto Mode 或 /sandbox
微管理 Claude 的每一步給目標和約束,讓它自主執行
所有任務在主 context 做探索性任務分派給 Subagent
忽略 Hook 日誌定期審查操作日誌
不更新 CLAUDE.md每月審查並更新規則
讓部分遷移的框架留在 codebase完成遷移再讓 Claude 工作

✅ Best Practices Summary

  1. Boris 的 13 條核心原則

    • 永遠從 Plan Mode 開始
    • 使用 Commands 做每日工作流
    • 建立功能導向的 Subagent
    • 使用 PostToolUse Hook 自動格式化
    • 使用 /permissions 的 wildcard 語法
    • 使用 voice prompting 提升 10x 效率
    • 使用 ASCII 圖表理解架構
    • 保持 PR 小而專注
    • 永遠 squash merge
    • 每日更新 Claude Code
  2. Thariq 的 Session 管理

    • 每個 turn 都是分支點
    • 新任務 = 新 session
    • 使用帶提示的 /compact
    • /rewind > correct
    • Subagent 做 context 管理

第 15 章 最佳實踐總結與 Checklist

15.1 專案初始化 Checklist

## 專案初始化 Checklist

### 環境設定
- [ ] 安裝 Claude Code CLI(最新版)
- [ ] 設定終端環境(iTerm/Ghostty/Windows Terminal)
- [ ] 安裝 VS Code Claude Code Extension(如需要)
- [ ] 設定認證(claude auth login)
- [ ] 執行 /doctor 驗證安裝

### 專案結構
- [ ] 建立 CLAUDE.md(< 200 行)
- [ ] 建立 .claude/settings.json
- [ ] 建立 .claude/rules/(延遲載入規則)
- [ ] 建立 .claude/agents/(功能導向 Agent)
- [ ] 建立 .claude/commands/(常用工作流)
- [ ] 建立 .claude/skills/(重複使用的技能)
- [ ] 建立 .claude/hooks/(安全和品質 Hook)
- [ ] 建立 .mcp.json(外部工具整合)

### 安全設定
- [ ] 設定 permissions allow/deny 清單
- [ ] 設定 PreToolUse 安全 Hook
- [ ] 禁止修改敏感檔案(.env, secrets/)
- [ ] 設定 SQL 只讀 Hook(如適用)
- [ ] 設定 audit log Hook

### CI/CD 整合
- [ ] 設定 GitHub Actions Claude Review workflow
- [ ] 設定安全掃描 workflow
- [ ] 測試 CI 流程

15.2 每日開發 Checklist

## 每日開發 Checklist

### 早上啟動
- [ ] 更新 Claude Code(npm update -g @anthropic-ai/claude-code)
- [ ] 閱讀 changelog
- [ ] 查看 Git 狀態
- [ ] 開啟 Plan Mode 規劃今日任務

### 開發中
- [ ] 使用 Plan Mode 規劃複雜任務
- [ ] 監控 /context 用量(保持 < 40%)
- [ ] 新任務用新 session
- [ ] 探索性任務用 Subagent
- [ ] 每小時至少 commit 一次
- [ ] 使用帶提示的 /compact

### Code Review
- [ ] 使用 /code-review 做 AI Review
- [ ] 每個 PR 保持小而專注(p50: 118 行)
- [ ] 使用 squash merge

### 下班前
- [ ] 確認所有測試通過
- [ ] 提交 PR
- [ ] /rename session(方便明天續接)

15.3 安全 Checklist

## 安全開發 Checklist

### 程式碼安全
- [ ] 所有外部輸入已驗證
- [ ] SQL 查詢使用參數化
- [ ] 無硬編碼密碼或 API Key
- [ ] 日誌不輸出敏感資訊
- [ ] XSS 防護到位
- [ ] CSRF Token 已設定

### Claude Code 安全
- [ ] permissions deny 清單已設定
- [ ] 敏感檔案保護 Hook 已啟用
- [ ] SQL 只讀 Hook 已設定
- [ ] Audit log 已啟用
- [ ] 不使用 dangerously-skip-permissions
- [ ] 使用 Auto Mode 或 /sandbox

### CI/CD 安全
- [ ] SAST 掃描已整合
- [ ] DAST 掃描已整合
- [ ] 依賴安全檢查已設定
- [ ] Claude Security Review 已整合
- [ ] API Key 使用 Secrets 管理

15.4 團隊導入 Checklist

## 團隊導入 Checklist

### Phase 1(學習與試驗)
- [ ] 所有成員完成 Claude Code 安裝
- [ ] 完成基礎操作訓練
- [ ] 閱讀 claude-code-best-practice 文件
- [ ] 建立第一個 CLAUDE.md
- [ ] 完成第一次 AI Code Review

### Phase 2(標準化)
- [ ] 建立團隊共用 CLAUDE.md 範本
- [ ] 建立團隊共用 Agent 定義
- [ ] 建立 Security Hooks
- [ ] 整合 CI/CD
- [ ] 制定 AI Code Review 規範
- [ ] 建立 Skill Library

### Phase 3(全面採用)
- [ ] 量化指標追蹤已建立
- [ ] 每月 Agent 審查機制已建立
- [ ] 每季規則更新流程已建立
- [ ] 半年度安全審查已排程
- [ ] 跨團隊知識分享機制已建立

15.5 升級前 Checklist

## Claude Code 升級 Checklist

### 升級前
- [ ] 備份 .claude/ 目錄設定
- [ ] 記錄目前版本號
- [ ] 閱讀目標版本的 changelog
- [ ] 檢查 breaking changes

### 升級中
- [ ] 執行 npm update -g @anthropic-ai/claude-code
- [ ] 驗證安裝:claude --version
- [ ] 執行 /doctor

### 升級後
- [ ] 測試 CLAUDE.md 載入
- [ ] 測試所有 Hooks 正常運作
- [ ] 測試所有 Skills 正常觸發
- [ ] 測試所有 Agents 正常分派
- [ ] 測試 MCP Server 連線
- [ ] 測試 CI/CD workflow
- [ ] 更新團隊文件

附錄 A:核心指令速查表(75 個官方指令)

認證(Auth)— 5 個

指令功能
claude auth login登入 Claude Code
claude auth logout登出
claude auth status查看目前認證狀態
claude auth switch切換帳號
claude auth token顯示或設定 API Token

設定(Config)— 13 個

指令功能
/config開啟設定界面
/permissions管理工具權限 allow/deny
/model選擇模型(sonnet / opus / haiku)
/sandbox切換沙箱模式
/focus聚焦模式(隱藏中間過程)
/fast快速模式(使用較小模型)
/effort設定推理深度(low/medium/high/xhigh/max)
/voice語音輸入模式
/theme設定主題
/terminal-setup設定終端最佳化
/statusline自訂狀態列
/extra-usage設定溢出計費
claude configCLI 設定管理

Context 管理 — 7 個

指令功能
/context查看 context 使用量
/compact [hint]壓縮 context(可帶提示保留重點)
/clear清空 context 開始新對話
/rewind回退到之前的檢查點
/add-dir新增目錄到 context
/add-file新增檔案到 context
/release-notes查看版本更新說明

除錯(Debug)— 4 個

指令功能
/doctor診斷 Claude Code 安裝問題
/bug-report產出 bug report
/debug除錯模式(顯示詳細輸出)
/cost查看 session 花費

匯出(Export)— 2 個

指令功能
/export匯出對話記錄
/export-theme匯出目前主題設定

擴展(Extensions)— 8 個

指令功能
/install安裝 MCP Server 或 Plugin
/uninstall移除 MCP Server 或 Plugin
/mcp管理 MCP Server
/plugin管理 Plugin
/extensions列出已安裝的擴展
/marketplace瀏覽 Plugin Marketplace
/code-review啟動程式碼審查工作流
/remote-control啟用遠端控制(cloud ↔ local)

記憶(Memory)— 1 個

指令功能
/memory管理 Claude 的持久記憶

模型(Model)— 6 個

指令功能
/model sonnet切換到 Sonnet
/model opus切換到 Opus
/model haiku切換到 Haiku
/model sonnet[1m]Sonnet 1M context
/model opus[1m]Opus 1M context
/usage查看使用量和計畫限制

專案(Project)— 7 個

指令功能
/init初始化 Claude Code 專案(建立 CLAUDE.md)
/plan進入 Plan Mode
/loop本地迴圈任務(最長 7 天)
/schedule雲端排程任務
/branch建立新分支後繼續工作
/btw插入附帶任務(不影響主任務)
/recap回顧目前進度

遠端(Remote)— 7 個

指令功能
/remote-control讓本地 session 被 cloud 控制
/teleport從 cloud 拉取 session 到本地
/team-onboarding團隊上線引導
/sshSSH 遠端連線模式
claude --remote啟動遠端模式
/share分享 session 給他人
/ultraplan深度規劃模式

Session 管理 — 9 個

指令功能
/rename重新命名 session
/resume恢復之前的 session
/sessions列出所有 session
/switch切換 session
/fork複製目前 session 為新分支
/history查看 session 歷史
claude changelog查看 Claude Code 更新日誌
Shift+Tab切換模式:Ask → Plan → Auto
Esc Esc取消目前操作

內建 Skill 指令 — 6 個

指令功能
/simplify簡化程式碼
/batch批次處理多個檔案
/debugAI 輔助除錯
/loop迴圈執行任務
/claude-apiClaude API 整合
/fewer-permission-prompts減少權限提示(設定指導)

附錄 B:主流開發工作流比較

工作流Stars核心流程AgentsCommandsSkills
Superpowers175kbrainstorm → plan → build → test → review → ship5314
Everything Claude Code171kplan → tdd → review → security → e2e → merge48143230
Spec Kit92kconstitution → clarify → specify → plan → tasks → implement090
gstack88koffice-hours → plan-review → implement → qa → ship0043
Get Shit Done59knew-project → discuss → plan → execute → verify → ship33650
Matt Pocock Skills51k聚焦 TypeScript 開發的 22 個精選 Skill0022
BMAD-METHOD46kbrief → prd → architecture → stories → sprint → review0040
OpenSpec45kspec → validate → plan → implement → verify → ship(11 Commands)0110
oh-my-claudecode32kinterview → team → plan → exec → verify → fix → merge19038
agent-skills27kspec → plan → build → test → review → ship3721

附錄 C:Skill Collections 資源

名稱StarsSkills 數量特色
anthropics/skills127k17官方標準技能集
mattpocock/skills51k22TypeScript 開發專精
wshobson/agents35k152大量通用 Agent
agent-skills27k21Google Chrome 團隊推薦
scientific-agent-skills20k134科學計算與研究
awesome-agent-skills20k930+社群精選合集
awesome-agent-skills20k930+

附錄 D:參考資源

官方文件

社群資源

Boris Cherny(Claude Code 創建者)系列文章

Thariq(Anthropic 工程師)系列文章


文件維護:本手冊基於 claude-code-best-practice v2.1.126(2026 年 5 月 1 日)撰寫。建議每月參照原始 GitHub 專案更新內容。
聯絡方式:如有問題或建議,請透過專案 issue 或內部 Slack 頻道回報。