Claude Code SSDLC(AI 軟體開發生命週期)教學手冊

版本:v2.1 | 日期:2026-06-26 | 適用對象:資深工程師 / 架構師 / DevOps / AI 工程師
定位:企業級實戰手冊,可直接作為團隊導入規範文件
變更紀錄:v2.0 — 全面更新至 Claude Code 最新版本,涵蓋 Hooks、Skills、Plugins、Agent Teams、Auto Memory、多平台支援等新特性;v2.1 — 修正巢狀程式碼區塊格式錯誤,補充 Hooks/Skills/Subagents 完整 Frontmatter 欄位,新增 Headless 模式與 Sandbox 模式說明,修正 Auto Memory 匯入層數誤植,補齊 Permission 模式完整列舉與附錄 CLI 旗標


目錄


第 1 章:整體架構設計(Architecture)

1.1 Claude Code 在 SSDLC 的角色

Claude Code 是 Anthropic 推出的 Agentic Coding Tool,可在 Terminal、VS Code、JetBrains、Desktop App、Web 以及 Chrome 瀏覽器中使用。它不只是程式碼補全工具,而是能夠:

  • 讀取整個 Codebase:理解專案結構、依賴關係、架構模式
  • 執行指令:自主運行 shell 命令、測試、建置
  • 編輯檔案:跨多個檔案進行精確修改
  • 整合開發工具:透過 MCP(Model Context Protocol)連接外部服務
  • 自主解決問題:Explore → Plan → Implement → Verify 的完整迴圈
  • 持久記憶:透過 CLAUDE.md 和 Auto Memory 跨 Session 保留專案知識
  • 自動化工作流:透過 Hooks、Skills、Plugins 實現確定性行為控制
  • 多 Agent 協作:透過 Subagents 和 Agent Teams 進行平行任務處理

在 SSDLC 中,Claude Code 扮演以下角色:

SSDLC 階段Claude Code 角色具體能力
需求分析需求分析師解析需求文件、產出規格書、識別安全需求
系統設計架構顧問產出架構圖、API 設計、識別設計缺陷
開發自動化開發者產碼、重構、Code Review
測試QA 工程師產出 Unit / Integration / E2E 測試
安全安全審查員安全掃描、弱點識別、OWASP 檢查
部署DevOps 助手CI/CD Pipeline 設計、IaC 產出
維運SRE 助手日誌分析、Incident Debug、效能調校

1.2 AI Agent 在 SDLC 各階段的應用

graph LR
    subgraph SSDLC["SSDLC Workflow"]
        A[需求分析] --> B[系統設計]
        B --> C[開發]
        C --> D[測試]
        D --> E[安全掃描]
        E --> F[部署]
        F --> G[維運]
        G -->|回饋| A
    end

    subgraph Agents["AI Agent Layer"]
        PA[Planner Agent]
        CA[Coder Agent]
        RA[Reviewer Agent]
        SA[Security Agent]
        QA[QA Agent]
    end

    PA --> A
    PA --> B
    CA --> C
    RA --> C
    RA --> D
    SA --> E
    QA --> D
    QA --> G

各階段 Agent 對應

  1. 需求階段 → Planner Agent:自動解析需求文件、產出 User Story、整理驗收標準
  2. 設計階段 → Planner Agent + Coder Agent:產出系統架構、API 規格、資料模型
  3. 開發階段 → Coder Agent + Reviewer Agent:自動產碼、即時 Code Review
  4. 測試階段 → QA Agent:自動產測試案例、執行測試、分析覆蓋率
  5. 安全階段 → Security Agent:SAST/DAST 掃描、依賴檢查、合規驗證
  6. 部署階段 → Coder Agent:產出 CI/CD Pipeline、Infrastructure as Code
  7. 維運階段 → QA Agent:日誌分析、效能監控、Incident 根因分析

1.3 系統架構圖

graph TB
    subgraph Developer["開發者工作區"]
        IDE["VS Code / Terminal"]
        CC["Claude Code Engine"]
        MEM["CLAUDE.md + Auto Memory"]
    end

    subgraph AgentLayer["AI Agent Layer"]
        PL["Planner Agent"]
        CD["Coder Agent"]
        RV["Reviewer Agent"]
        SC["Security Agent"]
        QAA["QA Agent"]
    end

    subgraph Tools["工具整合層"]
        MCP["MCP Servers"]
        CLI["CLI Tools (gh, docker, kubectl)"]
        HOOK["Hooks (Pre/Post)"]
        SKILL["Skills (.claude/skills/)"]
    end

    subgraph Enterprise["企業系統"]
        GH["GitHub / GitLab"]
        CICD["CI/CD Pipeline"]
        JIRA["Jira / Issue Tracker"]
        DB["Database"]
        MON["Monitoring (Prometheus/Grafana)"]
        SEC["Security Scanner (SonarQube)"]
    end

    IDE <--> CC
    CC <--> MEM
    CC --> AgentLayer
    AgentLayer --> Tools
    Tools --> Enterprise

1.4 多 Agent 協作模型

Claude Code 支援多種 Agent 協作模式:

1.4.1 Subagent 模式

Claude Code 內建 Subagent 機制,可在 .claude/agents/ 目錄定義專用 Agent:

<!-- .claude/agents/security-reviewer.md -->
---
name: security-reviewer
description: 審查程式碼的安全漏洞
tools: Read, Grep, Glob, Bash
model: opus
---
你是資深資安工程師。審查程式碼是否有:
- 注入漏洞(SQL / XSS / Command Injection)
- 身份驗證與授權缺陷
- 程式碼中的密鑰或憑證
- 不安全的資料處理

提供具體行號引用與修復建議。

進階 Frontmatter 欄位:除了 namedescriptiontoolsmodel 這類基本識別與工具授權欄位外,Subagent 還可設定執行邊界、資源隔離與協作識別等進階屬性,適合企業導入時依風險等級分層設定:

欄位說明
disallowedTools明確排除的工具清單,與 tools 互補
permissionMode此 Subagent 專屬的權限模式,可比主 Session 更嚴格(如唯讀審查)或更寬鬆
maxTurns限制此 Subagent 最多互動輪數,避免探索或除錯迴圈失控
mcpServers限定此 Subagent 可連接的 MCP Server 清單
hooks此 Subagent 專屬的 Hook 設定,獨立於主 Session 套用
background是否以背景任務模式執行,不阻塞主 Session
effort控制此 Subagent 的推理力度,拿捏品質與成本
isolationContext 隔離層級設定(如獨立 Worktree)
color在多 Agent 視覺化介面中的識別顏色
initialPromptSubagent 啟動時自動帶入的第一則訊息
memorySubagent 累積學習的儲存範圍,詳見第 9.2 節

1.4.2 Agent Teams 模式

利用 Claude Code 的 Agent Teams 功能,實現多 Session 協作:

Agent 角色職責工具權限
Planner需求拆解、任務規劃Read, Glob, Grep, WebSearch
Coder程式碼撰寫Read, Write, Edit, Bash
Reviewer程式碼審查Read, Grep, Glob
Security安全掃描Read, Grep, Bash
QA測試產出與執行Read, Write, Bash

1.4.3 Writer / Reviewer 模式

Session A(Writer):實作功能
    ↓ 產出程式碼
Session B(Reviewer):審查 Session A 的產出
    ↓ 回饋建議
Session A:根據回饋修改

1.5 與企業系統整合

GitHub 整合

# 安裝 GitHub CLI(Claude Code 會自動使用)
gh auth login

# Claude Code 可直接操作
claude -p "建立一個 PR,標題為 feat: add user authentication"

CI/CD 整合(GitHub Actions)

# .github/workflows/claude-code-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 }}
          review_type: comprehensive

MCP Server 整合

# 連接 Jira MCP Server
claude mcp add jira -- npx @anthropic-ai/mcp-server-jira

# 連接資料庫 MCP Server
claude mcp add postgres -- npx @anthropic-ai/mcp-server-postgres

# 連接 Sentry 監控
claude mcp add sentry -- npx @anthropic-ai/mcp-server-sentry

實務建議:整合企業系統時,建議先在測試環境驗證,確認 MCP Server 的權限範圍後,再部署到正式環境。使用 --scope project 確保 MCP 設定只在特定專案生效。

1.6 多平台支援

Claude Code 支援多種開發介面,所有平台共用同一套 CLAUDE.md、Settings 和 MCP 設定:

平台適用場景特色
Terminal CLI主力開發環境完整功能、最高自由度
VS Code ExtensionIDE 整合開發圖形化介面、內嵌面板
JetBrains PluginIntelliJ / WebStorm 使用者IDE 原生整合
Desktop App多 Session 並行管理視覺化 Session 管理、獨立 Worktree
Web(claude.ai)遠端 / 行動裝置Anthropic 安全雲端 VM、隨時隨地使用
Chrome Extension前端 UI 開發開啟瀏覽器分頁、測試 UI、迭代修正
Artifacts快速原型與資料視覺化在對話中直接產出可預覽、可執行的互動式網頁或圖表

跨平台協作方式

需求使用方式
從手機繼續本地 SessionRemote Control
從 Telegram / Discord / iMessage 推送事件到 SessionChannels
定期排程執行任務Routines 或 Desktop 排程任務
自動化 PR Review 與 Issue 分類GitHub Actions / GitLab CI/CD
偵錯線上 Web 應用程式Chrome Extension
建立自訂 Agent 於自有工作流程中Agent SDK

第 2 章:Claude Code 安裝與環境建置

2.1 Claude Code CLI 安裝

Windows 安裝

PowerShell(推薦):

irm https://claude.ai/install.ps1 | iex

CMD

curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

前置條件:Windows 原生安裝需要先安裝 Git for Windows

透過 WinGet

winget install Anthropic.ClaudeCode

macOS / Linux 安裝

curl -fsSL https://claude.ai/install.sh | bash

透過 Homebrew(macOS / Linux):

brew install --cask claude-code

注意:透過 npm 安裝已被官方棄用(npm install -g @anthropic-ai/claude-code 不再建議)。原生安裝方式會自動在背景更新,保持最新版本。

驗證安裝

claude --version
# 預期輸出:claude-code v2.x.x

# 首次啟動
cd your-project
claude
# 系統會提示登入

安裝畫面說明

  • 執行安裝指令後,終端機會顯示下載進度條
  • 安裝完成後,會顯示 Claude Code installed successfully
  • 首次執行 claude 會開啟瀏覽器進行帳號認證
  • 認證完成後返回終端機,顯示互動式介面

2.2 VS Code 整合設定

安裝 VS Code Extension

  1. 開啟 VS Code
  2. Extensions(Ctrl+Shift+X
  3. 搜尋 Claude Code
  4. 安裝官方 Extension

設定方式

VS Code 中使用 Claude Code:

  • 快捷鍵Ctrl+Esc 開啟 Claude Code 面板
  • 命令面板Ctrl+Shift+P → 輸入 Claude Code
  • 終端整合:在 VS Code 內建終端直接執行 claude

推薦工作區設定

// .vscode/settings.json
{
  "claude-code.autoStart": true,
  "claude-code.defaultModel": "opus",
  "editor.formatOnSave": true,
  "terminal.integrated.defaultProfile.windows": "PowerShell"
}

2.3 API Key 與認證設定

方式一:Claude Pro/Team 訂閱(推薦個人使用)

claude
# 首次執行自動開啟瀏覽器認證

方式二:Anthropic Console API Key(推薦企業 CI/CD)

# 設定環境變數
export ANTHROPIC_API_KEY=sk-ant-api03-xxxxx

# Windows PowerShell
$env:ANTHROPIC_API_KEY = "sk-ant-api03-xxxxx"

方式三:第三方 Provider

# Amazon Bedrock
export CLAUDE_CODE_USE_BEDROCK=1
# 需設定 AWS 認證(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)

# Google Vertex AI
export CLAUDE_CODE_USE_VERTEX=1
# 需設定 GCP 認證(GOOGLE_APPLICATION_CREDENTIALS)

# Microsoft Azure AI Foundry
export CLAUDE_CODE_USE_FOUNDRY=1
# 需設定 Azure 認證

安全建議

  • 永遠不要將 API Key 寫死在程式碼中
  • 使用環境變數或 Secret Manager
  • CI/CD 中使用 GitHub Secrets 或 Azure Key Vault
  • 定期輪換 API Key

2.4 Workspace 初始化

步驟一:初始化 CLAUDE.md

cd your-project
claude
# 進入互動模式後執行
/init

執行 /init 後,Claude Code 會:

  1. 分析你的 Codebase 結構
  2. 偵測建置系統(Maven、Gradle、npm 等)
  3. 偵測測試框架
  4. 偵測程式碼風格
  5. 產出 CLAUDE.md 初始檔案

進階初始化:設定 CLAUDE_CODE_NEW_INIT=1 環境變數可啟用互動式多階段流程。/init 會詢問要設定哪些 Artifact(CLAUDE.md、Skills、Hooks),接著用 Subagent 探索 Codebase,透過追問填補缺漏,最終提出可審查的提案後才寫入檔案。如果已存在 CLAUDE.md,/init 會建議改善而非覆寫。

步驟二:建立專案設定

# 建立 .claude 目錄結構
mkdir -p .claude/skills .claude/agents .claude/rules

步驟三:設定權限規則

// .claude/settings.json
{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(mvn *)",
      "Bash(git *)",
      "Bash(gh *)"
    ],
    "deny": [
      "Bash(rm -rf /)",
      "Bash(DROP TABLE*)"
    ]
  },
  "autoMemoryEnabled": true
}

2.5 常見錯誤與排除

問題原因解決方式
The token '&&' is not a valid statement separator在 PowerShell 中執行 CMD 指令確認是否在 PowerShell 中(提示符有 PS
'irm' is not recognized在 CMD 中執行 PowerShell 指令改用 CMD 安裝指令
認證失敗API Key 過期或錯誤重新產生 API Key
CLAUDE.md not found未初始化專案執行 /init
Context window 爆滿單次對話累積過多執行 /clear 清除,或 /compact 壓縮
MCP Server 連線失敗服務未啟動或權限不足檢查 claude mcp list 並重啟服務
自動更新失敗網路問題或權限不足手動執行 claude update

實務踩坑:在企業防火牆環境下,Claude Code 的自動更新可能被擋。建議設定 Proxy:

export HTTPS_PROXY=http://proxy.company.com:8080

2.6 Headless 模式與自動化執行

本手冊後續章節大量使用 claude -p 進行單次任務,這裡集中說明其定位:Headless(非互動)模式讓 Claude Code 以無人值守的方式單次執行,輸入輸出皆可被腳本化串接,是 CI/CD、排程批次、大規模 Fan-Out 平行處理與事件驅動自動化的共同基礎。

適用場景

場景說明
CI/CD 自動審查PR 開啟時觸發安全掃描、Code Review(對應第 4.5 節)
排程批次任務夜間報表、日誌彙整等定期工作(可搭配 Routines)
Fan-Out 平行處理對大量檔案逐一呼叫獨立 Session 處理(對應第 10.3 節 Fan-Out 模式)
事件驅動整合監控系統觸發告警時自動呼叫 Claude Code 分析根因

關鍵旗標

旗標用途
claude -p "<prompt>"基本非互動執行,送出一次 Prompt 並取得結果後結束
--output-format json單次完整結果以結構化 JSON 輸出,便於程式解析
--output-format stream-json串流結構化輸出,適合長任務即時回報進度或串接自有事件管線
--verbose輸出詳細執行過程,便於排查非互動腳本失敗的原因

典型 CI 腳本片段

claude -p "審查這次 PR 變更的安全性與程式碼品質" \
  --permission-mode auto \
  --allowedTools "Read,Grep,Glob" \
  --output-format stream-json \
  --verbose

實務建議:Headless 模式應永遠搭配明確的 --allowedTools 限制可用工具,避免在無人值守情境下執行非預期操作;除錯非互動腳本時,優先加上 --verbose 觀察實際執行步驟,而非單憑最終輸出猜測失敗原因。


第 3 章:專案結構設計(Best Practice)

3.1 Claude Code 專案目錄結構

推薦目錄結構

your-project/
├── .claude/                          # Claude Code 設定根目錄
│   ├── CLAUDE.md                     # 專案級指令(團隊共用,commit 進 Git)
│   ├── settings.json                 # 專案級設定(權限、Hook 等)
│   ├── settings.local.json           # 個人本地設定(加入 .gitignore)
│   ├── agents/                       # 自訂 Subagent 定義
│   │   ├── planner.md                # 規劃 Agent
│   │   ├── security-reviewer.md      # 安全審查 Agent
│   │   ├── code-reviewer.md          # 程式碼審查 Agent
│   │   └── test-generator.md         # 測試產出 Agent
│   ├── skills/                       # 可重用技能
│   │   ├── fix-issue/
│   │   │   └── SKILL.md              # 修復 Issue 技能
│   │   ├── create-api/
│   │   │   └── SKILL.md              # 建立 API 技能
│   │   ├── security-scan/
│   │   │   └── SKILL.md              # 安全掃描技能
│   │   └── ssdlc-review/
│   │       └── SKILL.md              # SSDLC 審查技能
│   └── rules/                        # 規則檔案
│       ├── code-style.md             # 程式碼風格
│       ├── security.md               # 安全規則
│       ├── testing.md                # 測試規則
│       └── api-design.md             # API 設計規則
├── CLAUDE.md                         # 專案根目錄指令(或放 .claude/ 內)
├── CLAUDE.local.md                   # 個人偏好(加入 .gitignore)
├── src/
├── tests/
├── docs/
└── .github/
    └── workflows/
        └── claude-code-review.yml    # CI/CD 整合

範例:根目錄 CLAUDE.md

# 專案指引

## 建置與測試
- 建置:`mvn clean compile`
- 測試:`mvn test`
- 型別檢查:`mvn checkstyle:check`

## 程式碼風格
- 使用 4 空格縮排
- Java 類別使用 PascalCase
- 方法與變數使用 camelCase
- 常數使用 UPPER_SNAKE_CASE
- 使用 JavaDoc 格式撰寫註解

## 測試
- 每個 Service 類別必須有對應的 Unit Test
- 使用 JUnit 5 + Mockito
- 測試覆蓋率需達 80%
- 優先執行單一測試,避免整包跑

## Git 規範
- 分支命名:`feature/JIRA-123-description`
- Commit 訊息:`type(scope): description`
  - type: feat, fix, refactor, test, docs, chore
- PR 必須通過 Code Review 後才可合併

## 安全
- 敏感資料不可 hardcode
- 所有外部輸入必須驗證
- SQL 使用 Prepared Statement
- 啟用 CORS 白名單

## 參考
- @docs/architecture.md
- @docs/api-spec.md

3.2 Prompt Template 設計

Skill 設計範例

<!-- .claude/skills/create-api/SKILL.md -->
---
name: create-api
description: 建立 RESTful API 端點
---
根據以下需求建立新的 API 端點:$ARGUMENTS

### 執行步驟
1. 分析需求,確認 HTTP Method、URL Path、Request/Response Schema
2. 在 `src/main/java/com/tutorial/api/` 建立 Controller
3. 在 `src/main/java/com/tutorial/service/` 建立 Service
4. 在 `src/main/java/com/tutorial/repository/` 建立 Repository(如需要)
5. 建立 DTO(Data Transfer Object)
6. 加入輸入驗證(使用 Jakarta Validation)
7. 撰寫 Unit Test
8. 撰寫 Integration Test
9. 更新 API 文件
10. 執行測試驗證

### 安全要求
- 所有輸入使用 @Valid 驗證
- 使用 Prepared Statement
- 啟用 Rate Limiting
- 記錄 Audit Log

使用方式:

# 在 Claude Code 中使用
/create-api 用戶管理 CRUD API,包含建立、查詢、更新、刪除

Hook 設計範例

// .claude/settings.json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "npx eslint --fix $FILE 2>/dev/null || true"
      }
    ],
    "PreCommit": [
      {
        "command": "mvn checkstyle:check && mvn test"
      }
    ]
  }
}

3.3 Agent Workflow 定義

Planner Agent 定義

<!-- .claude/agents/planner.md -->
---
name: planner
description: 負責需求分析與任務拆解
tools: Read, Glob, Grep, WebSearch, AskUserQuestion
model: opus
---
你是資深架構師。負責:

1. 閱讀需求文件,整理為結構化 User Story
2. 識別技術風險與安全需求
3. 將大任務拆解為可執行的小任務(每個任務 < 2hr)
4. 建立依賴關係圖
5. 產出 SPEC.md

### 輸出格式
```markdown
# Feature: [功能名稱]
## User Stories
- [ ] US-001: 描述...
## Tasks
- [ ] T-001: 描述... (預估:1hr)
## Security Requirements
- SR-001: 描述...
## Dependencies
- T-002 depends on T-001
```

Security Reviewer Agent 定義

<!-- .claude/agents/security-reviewer.md -->
---
name: security-reviewer
description: 審查程式碼安全性,依據 OWASP Top 10
tools: Read, Grep, Glob, Bash
model: opus
---
你是資深資安工程師。依據 OWASP Top 10 (2025) 審查程式碼:

## 檢查項目
1. **A01 - Broken Access Control**:權限控制缺陷
2. **A02 - Cryptographic Failures**:加密不當
3. **A03 - Injection**:注入攻擊(SQL, XSS, Command)
4. **A04 - Insecure Design**:不安全的設計
5. **A05 - Security Misconfiguration**:配置錯誤
6. **A06 - Vulnerable Components**:含已知弱點的元件
7. **A07 - Auth Failures**:身份驗證失敗
8. **A08 - Data Integrity Failures**:資料完整性問題
9. **A09 - Logging Failures**:日誌與監控不足
10. **A10 - SSRF**:伺服器端請求偽造

## 輸出格式
| 嚴重度 | OWASP | 檔案:行號 | 問題描述 | 修復建議 |

3.4 Context 管理策略

Claude Code 的 Context Window 是最重要的資源。以下是管理策略:

策略一:分離關注點

❌ 錯誤做法:在同一個 Session 討論不同主題
    → Context 混亂,AI 品質下降

✅ 正確做法:
    Session 1:需求分析 → /clear
    Session 2:架構設計 → /clear
    Session 3:功能實作 → /clear

策略二:善用 Subagent

# 讓 Subagent 去探索 Codebase,不汙染主 Session
> 使用 subagent 調查 authentication 模組的 token refresh 機制

策略三:Context 壓縮

# 手動壓縮:保留 API 變更的上下文
/compact 專注在 API 變更和安全修正

# 自動壓縮:CLAUDE.md 中設定
# 壓縮時,永遠保留修改過的檔案清單和測試指令

策略四:Session 管理

# 恢復上次 Session
claude --continue

# 選擇歷史 Session
claude --resume

# 命名 Session 方便識別
/rename oauth-migration

實務建議

  • 每個 CLAUDE.md 控制在 200 行以內
  • 使用 .claude/rules/ 分散規則,避免 CLAUDE.md 過載
  • 不常用的知識放在 Skills 中,按需載入
  • 每完成一個功能點就 /clear,保持 Context 乾淨

3.5 Skills / Rules / Plugins 結構

Skills 系統

Skills 是可重用的指令集,Claude 會根據任務自動載入相關 Skill,或由開發者以 /skill-name 手動呼叫。每個 Skill 是一個含有 SKILL.md 的目錄:

.claude/skills/
├── fix-issue/
│   └── SKILL.md          # 主指令(必要)
├── create-api/
│   ├── SKILL.md           # 主指令
│   ├── template.md        # 範本
│   └── examples/
│       └── sample.md      # 範例輸出
└── deploy/
    ├── SKILL.md
    └── scripts/
        └── validate.sh    # Claude 可執行的腳本

SKILL.md Frontmatter 參考

---
name: fix-issue                       # 顯示名稱,也是 /slash-command
description: 修復 GitHub Issue         # Claude 用此判斷何時自動載入
disable-model-invocation: true        # 僅手動呼叫,Claude 不會自動觸發
allowed-tools: Bash(git *) Read Edit  # 此 Skill 啟用時自動授權的工具
disallowed-tools: Bash(rm *)          # 明確禁用的工具,與 allowed-tools 互補
model: sonnet                         # 覆寫此 Skill 執行時使用的模型
argument-hint: "<issue-number>"       # /fix-issue 自動完成時顯示的參數提示
context: fork                         # 在獨立 Subagent Context 中執行
agent: Explore                        # context: fork 時使用的 Agent 類型
paths:                                # 限制 Skill 僅在特定路徑啟用
  - "src/api/**/*.ts"
---
欄位說明
nameSkill 名稱,小寫字母和連字號,最多 64 字元
descriptionClaude 用以判斷何時自動載入;前 1,536 字元會放入 Context
disable-model-invocation設為 true 時,Claude 不會自動觸發(如 deploy、commit)
user-invocable是否允許使用者以 /skill-name 手動呼叫;與 disable-model-invocation 語意相近但作用相反的軸——一個管「Claude 能不能自動觸發」,一個管「使用者能不能手動觸發」,兩者可獨立設定
allowed-toolsSkill 啟用時自動授權的工具,無需逐次確認
disallowed-tools明確禁用的工具清單,即使主 Session 已授權也會被此 Skill 排除
model覆寫此 Skill 執行時使用的模型(例如安全掃描類 Skill 可固定用較強的模型)
effort控制此 Skill 執行時的推理/工具呼叫力度,用於拿捏速度與成本
argument-hint使用者輸入 /skill-name 時,自動完成介面顯示的參數提示文字
context: fork在獨立 Subagent Context 中執行,不汙染主對話
pathsGlob 模式,僅在處理匹配檔案時載入

內建 Bundled Skills:Claude Code 內建 /simplify/batch/debug/loop/claude-api 等 Skill,每個 Session 皆可使用。

Rules(路徑限定規則)

.claude/rules/ 目錄下的 Markdown 檔案可用 YAML frontmatter 限定適用路徑:

<!-- .claude/rules/api-security.md -->
---
paths:
  - "src/api/**/*.ts"
  - "src/controllers/**/*.java"
---

# API 安全規則
- 所有 API 端點必須包含輸入驗證
- 使用標準化的錯誤回應格式
- 加入 OpenAPI 文件註解

paths frontmatter 的規則在 Session 啟動時全部載入;paths 的規則僅在 Claude 讀取匹配檔案時才載入,節省 Context。

Plugins 系統

Plugins 將 Skills、Agents、Hooks、MCP Servers 打包成可安裝、可分享的單元:

my-plugin/
├── .claude-plugin/
│   └── plugin.json          # 插件描述檔(name, version, description)
├── skills/                  # 插件內的 Skills
│   └── code-review/
│       └── SKILL.md
├── agents/                  # 插件內的 Agents
│   └── security-reviewer.md
├── hooks/
│   └── hooks.json           # 插件內的 Hooks
├── monitors/                # 插件內的背景監控設定
│   └── monitors.json        # 監控規則描述檔
├── bin/                     # 可執行檔,啟用插件時加入 PATH
├── .mcp.json                # MCP Server 設定
├── .lsp.json                # LSP Server 設定(Code Intelligence)
└── settings.json            # 預設設定

安裝與管理:

# 瀏覽插件市集
/plugin

# 安裝插件
/plugin install my-plugin

# 本地開發測試
claude --plugin-dir ./my-plugin

# 重新載入插件(開發中修改後)
/reload-plugins

Plugin vs 獨立設定:個人實驗和專案內使用放 .claude/;要跨專案分享或發佈到市場時,打包成 Plugin。Plugin 的 Skill 以 /plugin-name:skill-name 命名空間避免衝突。


第 4 章:SSDLC Workflow 設計(核心)

本章是整份手冊的核心,完整描述如何使用 Claude Code 建立安全軟體開發生命週期。

4.1 需求階段(Requirements)

4.1.1 AI 自動產出需求文件

流程

graph LR
    A[原始需求<br/>Email/會議記錄/Jira] --> B[Claude Code<br/>Planner Agent]
    B --> C[結構化需求文件<br/>SPEC.md]
    C --> D[安全需求分析<br/>SECURITY.md]
    D --> E[驗收標準<br/>ACCEPTANCE.md]
    E --> F[人工審查<br/>Stakeholder]
    F -->|核准| G[進入設計階段]
    F -->|修改| B

使用方式

# 使用 Plan Mode 分析需求
claude
# 按 Ctrl+G 切換到 Plan Mode

> 閱讀以下需求文件,產出結構化的 SPEC.md:
> @docs/requirements/user-management.md
> 
> 需包含:
> 1. User Stories(含驗收標準)
> 2. 非功能性需求(效能、安全、可用性)
> 3. 安全需求(依 OWASP Top 10)
> 4. 資料模型
> 5. API 端點清單
> 6. 異常情境處理

Prompt 模板

<!-- .claude/skills/analyze-requirements/SKILL.md -->
---
name: analyze-requirements
description: 將原始需求轉化為結構化規格文件
---
分析以下需求並產出完整規格文件:$ARGUMENTS

### 輸出結構
1. **功能需求**
   - User Story 格式:As a [角色], I want [功能], so that [價值]
   - 每個 Story 附帶驗收標準(Given-When-Then)

2. **非功能性需求**
   - 效能:回應時間 < 200ms (P95)
   - 可用性:99.9% SLA
   - 安全:OWASP Top 10 防護

3. **安全需求**
   - 身份驗證方式
   - 授權模型(RBAC/ABAC)
   - 資料加密需求
   - 稽核日誌需求

4. **技術約束**
   - 相容性要求
   - 第三方依賴限制

4.1.2 需求追蹤矩陣

# 讓 Claude Code 產出需求追蹤矩陣
> 讀取 SPEC.md,產出需求追蹤矩陣(Requirements Traceability Matrix),
> 格式為 Markdown 表格,包含需求 ID、描述、對應測試案例、狀態

4.2 設計階段(Design)

4.2.1 系統設計(架構圖)

# 使用 Claude Code 產出架構設計
> 基於 @SPEC.md 的需求,設計系統架構:
> - 使用 Clean Architecture
> - 前端:Vue 3 + TypeScript
> - 後端:Spring Boot 3
> - 資料庫:PostgreSQL
> - 快取:Redis
> - 訊息佇列:RabbitMQ
> 
> 產出:
> 1. 系統架構圖(Mermaid)
> 2. 元件圖
> 3. 部署圖
> 4. 資料流圖
> 5. 安全架構圖

4.2.2 API 設計

# 使用 Skill 產出 API 規格
/create-api 用戶管理模組,包含:
- POST /api/v1/users(建立用戶)
- GET /api/v1/users/{id}(查詢用戶)
- PUT /api/v1/users/{id}(更新用戶)
- DELETE /api/v1/users/{id}(刪除用戶)
- GET /api/v1/users(列表查詢,支援分頁)

需包含 OpenAPI 3.0 規格檔

4.2.3 安全設計審查

# 使用 Security Agent 審查設計
> 使用 subagent security-reviewer 審查 @docs/architecture.md 的安全設計:
> - 認證機制是否安全
> - 授權模型是否完整
> - 資料傳輸是否加密
> - 敏感資料存儲策略
> - API 安全防護

4.3 開發階段(Development)

4.3.1 Claude Code 自動產碼

推薦流程:Explore → Plan → Implement → Verify

官方最佳實務:分離研究 / 規劃 / 實作階段是避免「解決錯誤問題」的關鍵。對於範圍明確的小修改(如修正錯字、增加日誌行),可直接讓 Claude 執行。規劃最適合用於不確定方法、跨多檔案變更、或對修改區域不熟悉的情境。

# 步驟 1:Explore(Plan Mode)
# 按 Ctrl+G 切換到 Plan Mode
> 閱讀 @src/main/java/com/tutorial/ 理解目前的程式架構和命名慣例。
> 同時看一下測試是怎麼寫的。

# 步驟 2:Plan(Plan Mode)
> 我要新增 UserService,需要哪些檔案需要修改?
> 建立實作計畫。

# 按 Ctrl+G 可在文字編輯器中直接修改計畫後再讓 Claude 執行

# 步驟 3:Implement(Normal Mode)
# 切回 Normal Mode
> 依照你的計畫實作 UserService。
> 寫完後執行測試,修正所有失敗的測試。

# 步驟 4:Verify
> 使用 subagent 審查剛才的修改,檢查邊界情況和安全問題。

驗證是最高槓桿操作:提供測試、截圖或預期輸出讓 Claude 自行驗證。沒有明確的成功標準,Claude 可能產出看似正確但實際無法運作的程式碼。可用測試套件、Linter、或檢查輸出的 Bash 指令作為驗證手段。前端 UI 變更可使用 Chrome Extension 自動截圖比對。

4.3.2 Code Review AI

<!-- .claude/agents/code-reviewer.md -->
---
name: code-reviewer
description: 全面審查程式碼品質。Claude 在程式碼修改後會主動使用。
tools: Read, Grep, Glob, Bash
model: opus
memory: project
---
你是資深程式碼審查員。啟動後先執行 `git diff` 查看近期變更。

審查標準:

## 正確性
- 邏輯錯誤
- 邊界條件處理
- 空值處理
- 並發安全

## 可維護性
- 命名清晰度
- 方法長度(< 20 行)
- 類別職責單一
- 重複程式碼

## 效能
- N+1 查詢
- 不必要的記憶體配置
- 缺少快取
- 阻塞操作

## 安全
- 輸入驗證
- SQL Injection
- XSS
- 權限檢查

輸出格式:按嚴重度排列(Critical > Major > Minor > Info)

使用方式:

> 使用 subagent code-reviewer 審查 src/main/java/com/tutorial/service/ 的所有變更

4.4 測試階段(Testing)

4.4.1 自動生成測試

# 產出 Unit Test
> 為 @src/main/java/com/tutorial/service/UserService.java 撰寫完整的 Unit Test:
> - 使用 JUnit 5 + Mockito
> - 覆蓋所有公開方法
> - 包含正常情境和異常情境
> - 包含邊界條件測試
> - 執行測試確認全部通過

# 產出 Integration Test
> 為 UserController 撰寫 Integration Test:
> - 使用 @SpringBootTest
> - 使用 TestRestTemplate
> - 測試完整 HTTP Request/Response
> - 包含認證測試

測試產出 Skill

<!-- .claude/skills/generate-tests/SKILL.md -->
---
name: generate-tests
description: 為指定類別產出完整測試
---
為以下類別產出完整測試:$ARGUMENTS

### 測試層級
1. **Unit Test**
   - Mock 所有外部依賴
   - 測試每個公開方法
   - 包含 Happy Path + Error Path + Edge Case

2. **Integration Test**(如為 Controller)
   - 測試完整 HTTP 流程
   - 驗證 Response Status / Body / Headers

3. **安全測試**
   - 未授權存取
   - 權限不足
   - 輸入驗證(XSS / SQL Injection payload)

### 測試命名規範
`test_[方法名]_[情境]_[預期結果]`

### 執行驗證
撰寫完後執行 `mvn test -pl :module-name` 驗證

4.4.2 安全掃描

# 使用 Security Agent 進行安全掃描
> 使用 subagent security-reviewer 掃描整個 src/ 目錄:
> - 依據 OWASP Top 10
> - 檢查 hardcoded secrets
> - 檢查 SQL Injection
> - 檢查 XSS
> - 檢查不安全的依賴
> 
> 產出安全報告至 docs/security-report.md

# 依賴弱點掃描
> 執行 `mvn dependency-check:check` 並分析報告,
> 列出所有 CVE 漏洞及建議修復方式

4.5 部署階段(Deployment)

4.5.1 CI/CD 整合

GitHub Actions 完整範例

# .github/workflows/ssdlc-pipeline.yml
name: SSDLC Pipeline

on:
  pull_request:
    branches: [main, develop]
  push:
    branches: [main]

jobs:
  # 階段 1:程式碼品質檢查
  quality-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Java
        uses: actions/setup-java@v4
        with:
          java-version: '21'
          distribution: 'temurin'
      - name: Code Style Check
        run: mvn checkstyle:check
      - name: Unit Tests
        run: mvn test
      - name: Coverage Report
        run: mvn jacoco:report

  # 階段 2:安全掃描
  security-scan:
    runs-on: ubuntu-latest
    needs: quality-check
    steps:
      - uses: actions/checkout@v4
      - name: SAST Scan
        run: mvn spotbugs:check
      - name: Dependency Check
        run: mvn dependency-check:check
      - name: Claude Code Security Review
        uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: |
            審查此 PR 的安全性,依據 OWASP Top 10 進行檢查。
            如發現安全問題,請在對應程式碼行留下 Review Comment。

  # 階段 3:Claude Code Review
  ai-code-review:
    runs-on: ubuntu-latest
    needs: quality-check
    if: github.event_name == 'pull_request'
    steps:
      - uses: actions/checkout@v4
      - name: Claude Code Review
        uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          review_type: comprehensive

  # 階段 4:建置與部署
  deploy:
    runs-on: ubuntu-latest
    needs: [security-scan, ai-code-review]
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v4
      - name: Build
        run: mvn package -DskipTests
      - name: Deploy
        run: |
          # 部署邏輯
          echo "Deploying to production..."

4.5.2 Dockerfile 產出

> 為這個 Spring Boot 專案產出最佳化的 multi-stage Dockerfile:
> - 使用 Eclipse Temurin JDK 21
> - 使用非 root 使用者
> - 最小化 image size
> - 設定健康檢查
> - 設定安全最佳實務(no-new-privileges, read-only filesystem)

4.6 維運階段(Operations)

4.6.1 AI 監控與問題分析

# 日誌分析
cat application.log | claude -p "分析這份日誌,找出異常模式和潛在問題"

# 效能分析
> 分析 @monitoring/metrics.json,找出效能瓶頸:
> - API 回應時間異常
> - 記憶體洩漏跡象
> - 資料庫連線池使用率

# Incident 處理
> 線上系統出現以下錯誤:[貼上錯誤訊息]
> 1. 分析根因
> 2. 提供臨時修復方案
> 3. 提供永久修復方案
> 4. 建議防護措施避免再次發生

實務建議

  • 在 CI/CD 中加入 Claude Code Security Review 作為 Gate
  • 使用 Claude Code 的 --permission-mode auto 進行非互動式安全掃描
  • 建立 Slack/Teams 整合,讓 Incident 自動觸發 Claude Code 分析

第 5 章:AI Agent Workflow 設計

5.1 多 Agent 協作模式

5.1.1 協作架構

graph TB
    subgraph TeamLead["Team Lead(主 Session)"]
        TL["Claude Code<br/>任務分配與協調"]
    end

    subgraph Workers["Worker Agents"]
        W1["Planner Agent<br/>需求分析"]
        W2["Coder Agent<br/>程式實作"]
        W3["Reviewer Agent<br/>品質審查"]
        W4["Security Agent<br/>安全掃描"]
        W5["QA Agent<br/>測試驗證"]
    end

    subgraph SharedState["共享狀態"]
        GIT["Git Repository"]
        MEM["Auto Memory"]
        SPEC["SPEC.md"]
    end

    TL --> W1
    TL --> W2
    TL --> W3
    TL --> W4
    TL --> W5

    W1 --> SPEC
    W2 --> GIT
    W3 --> GIT
    W4 --> GIT
    W5 --> GIT
    
    W1 --> MEM
    W2 --> MEM
    W3 --> MEM
    W4 --> MEM
    W5 --> MEM

5.1.2 實作範例

# 主 Session:分配任務
> 我需要實作用戶管理模組。請:
> 1. 使用 subagent planner 分析 @SPEC.md 中的用戶管理需求
> 2. 根據分析結果,依序實作各個 API
> 3. 每完成一個 API,使用 subagent code-reviewer 審查
> 4. 最後使用 subagent security-reviewer 進行安全掃描

5.2 自我反饋迴圈(Self-Reflection Loop)

graph LR
    A[產出程式碼] --> B[執行測試]
    B --> C{測試通過?}
    C -->|是| D[Code Review]
    D --> E{審查通過?}
    E -->|是| F[完成]
    E -->|否| G[根據回饋修改]
    G --> A
    C -->|否| H[分析失敗原因]
    H --> A

實作方式

# 自動化反饋迴圈
> 實作 UserService.createUser() 方法:
> 1. 撰寫實作
> 2. 撰寫測試
> 3. 執行測試,修正到全部通過
> 4. 使用 subagent 審查程式碼品質
> 5. 根據審查結果修改,直到通過
> 6. 使用 subagent security-reviewer 檢查安全性
> 7. 修正安全問題
> 完成後 commit

5.3 自我優化系統(Self-Improving System)

Claude Code 的 Auto Memory 機制是自我優化的基礎:

原理

Session 1:犯錯 → 被糾正 → Auto Memory 記錄教訓
Session 2:讀取 Memory → 避免相同錯誤 → 品質提升
Session N:累積大量知識 → 效率持續提升

Auto Memory 設定

// .claude/settings.json
{
  "autoMemoryEnabled": true
}

Auto Memory 儲存位置:~/.claude/projects/<project>/memory/

memory/
├── MEMORY.md          # 記憶索引(每次 Session 自動載入前 200 行)
├── debugging.md       # Debug 經驗
├── api-conventions.md # API 慣例
├── security-notes.md  # 安全筆記
└── build-issues.md    # 建置問題

自我優化示範

# Session 1:Claude Code 第一次寫 DAO,使用了字串拼接
# 你糾正:必須使用 PreparedStatement
# → Auto Memory 自動記錄

# Session 2:Claude Code 寫新的 DAO
# → 自動使用 PreparedStatement,不再犯同樣錯誤

# 查看 Memory
/memory
# 選擇 Auto Memory folder 瀏覽

5.4 Memory / Context 設計

記憶層次架構

層級機制生命週期用途
Session Context對話歷史單次 Session當前任務
Auto Memory~/.claude/projects/<project>/memory/MEMORY.md跨 Session(本機)Claude 自動累積的學習
CLAUDE.md手動維護永久(Git)專案規範、建置指令
CLAUDE.local.md手動維護永久(本機,gitignore)個人偏好
Rules.claude/rules/*.md永久(Git)路徑限定規則
Skills.claude/skills/*/SKILL.md永久(Git)可重用流程(按需載入)
Subagent Memory.claude/agent-memory/<agent-name>/跨 SessionSubagent 獨立累積知識

Auto Memory 需 Claude Code v2.1.59 以上版本。

CLAUDE.md 載入順序

位置範圍載入時機
Managed Policy(/Library/Application Support/ClaudeCode/CLAUDE.md組織全域,不可排除啟動時
~/.claude/CLAUDE.md使用者全域啟動時
./CLAUDE.md./.claude/CLAUDE.md專案共用啟動時
./CLAUDE.local.md個人專案偏好啟動時
子目錄 CLAUDE.md子目錄範圍Claude 讀取該目錄檔案時(延遲載入)

所有發現的檔案疊加載入而非覆蓋。同一目錄內,CLAUDE.local.md 會在 CLAUDE.md 之後載入,因此衝突時個人偏好優先。

Import 語法:CLAUDE.md 可用 @path/to/file 引入外部檔案(最深 4 層),例如:

參見 @README.md 了解專案概述,@package.json 查看可用指令。

# 額外指引
- Git 工作流程:@docs/git-instructions.md
- 個人覆寫:@~/.claude/my-project-instructions.md

Auto Memory 運作機制

~/.claude/projects/<project>/memory/
├── MEMORY.md          # 簡潔索引(每 Session 載入前 200 行 / 25KB)
├── debugging.md       # 除錯模式筆記(按需讀取)
├── api-conventions.md # API 設計決策(按需讀取)
└── ...                # Claude 自行建立的主題檔案
  • MEMORY.md 為入口索引,Claude 每次 Session 自動讀取前 200 行(或 25KB)
  • 超出的詳細內容會被移至獨立的主題檔案,由 Claude 按需讀取
  • 同一 Git Repository 的所有 Worktree 和子目錄共用一個 Auto Memory 目錄
  • 使用 /memory 可瀏覽和編輯所有 Memory 檔案

最佳化策略

# 1. CLAUDE.md:簡潔精準(< 200 行)
# 只放 Claude 無法自己推斷的資訊

# 2. Rules:依路徑分類
# .claude/rules/frontend.md → 只在碰到前端檔案時載入
# .claude/rules/backend.md → 只在碰到後端檔案時載入

# 3. Skills:按需載入
# /fix-issue 1234 → 只在需要時觸發

# 4. Auto Memory:自動管理
# Claude 自行決定哪些值得記住

實務建議

  • 定期審閱 Auto Memory(/memory),刪除過時的記錄
  • CLAUDE.md 像程式碼一樣管理:有人修改就 Code Review
  • 每條規則都問自己:「拿掉這條,Claude 會犯錯嗎?」不會就刪掉

5.5 Agent Teams 與多 Session 協作

當 Subagent 的單一 Context Window 已不能滿足需求,可使用 Agent Teams 在多個獨立 Session 中協作。

啟用方式:設定環境變數 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1

運作原理

  • 每個 Teammate 擁有獨立的 Context Window,不互相干擾
  • 透過 SendMessage 工具在 Agent 之間傳遞訊息
  • Team Lead 負責協調任務、分配工作、彙總結果
  • 支援 --worktreeisolation: "worktree" 在獨立 Git Worktree 中工作

Writer / Reviewer 模式

一個常見的高品質工作流程:

Session A(Writer)Session B(Reviewer)
實作 API Rate Limiter
審查 @src/middleware/rateLimiter.ts,找出邊界情況、Race Condition 和一致性問題
根據審查回饋修正

也可用於測試:一個 Claude 先寫測試,另一個 Claude 寫程式碼通過這些測試。

多 Session 並行方式

方式說明
Desktop App視覺化管理多個 Session,每個 Session 獨立 Worktree
Web(claude.ai)在 Anthropic 安全雲端 VM 中執行
Agent Teams自動化協調多 Session、共用任務列表和訊息

5.6 Plugins 插件生態系

Plugins 拓展了 Claude Code 的能力邊界,將 Skills、Agents、Hooks、MCP/LSP Servers 封裝成可安裝的社群或企業套件。

插件市集

# 瀏覽官方插件市集
/plugin

# 安裝 Code Intelligence 插件(TypeScript、Python 等)
/plugin install typescript-intelligence

# 本地開發中測試插件
claude --plugin-dir ./my-plugin

# 重新載入已安裝的插件
/reload-plugins

Code Intelligence 插件

安裝語言對應的 LSP 插件後,Claude Code 可獲得精準的符號導航和自動錯誤偵測:

語言插件功能
TypeScripttypescript-intelligence型別檢查、符號跳轉、自動 import
Pythonpython-intelligencePylance 整合、型別推斷
Rustrust-intelligencerust-analyzer 整合

插件安全限制

Plugin 來源的 Subagents 不支援 hooksmcpServerspermissionMode frontmatter 欄位(會被忽略)。如需這些功能,將 Agent 檔案複製到 .claude/agents/~/.claude/agents/ 中使用。


第 6 章:Prompt Engineering

6.1 Prompt 模板設計

基本原則

原則錯誤示範正確示範
具體加一些測試為 UserService.createUser() 撰寫 Unit Test,覆蓋正常建立、Email 重複、欄位為空的情境
指定來源為什麼 ExecutionFactory API 很奇怪?查看 ExecutionFactory 的 git history,總結它的 API 是如何演變成現在這樣的
指定驗證實作 email 驗證實作 validateEmail 函數。測試案例:user@example.com 為 true,invalid 為 false,user@.com 為 false。實作完後跑測試
參考模式加一個日曆元件看一下 HomePage 上現有的 Widget 是怎麼實作的,HotDogWidget.php 是好範例。照這個模式實作新的日曆元件
@ 參考看 spec 檔案基於 @docs/SPEC.md 實作,API 規格參考 @docs/api-spec.yaml

@ 檔案參考語法

在 Prompt 中使用 @ 可精確指向檔案或目錄,Claude 會自動讀取內容:

# 參考單一檔案
> 基於 @src/main/java/com/tutorial/service/UserService.java 撰寫測試

# 參考目錄(Claude 會遞迴讀取)
> 理解 @src/main/java/com/tutorial/ 的架構

# 參考 Agent
> 使用 subagent @security-reviewer 審查 @src/

# 組合使用
> 依照 @SPEC.md 的需求,參考 @src/service/OrderService.java 的模式,實作 PaymentService

/btw 側邊提問

使用 /btw 可在不干擾當前工作流程的情況下快速提問,回答不會進入主 Context:

# 當前正在實作功能,突然想查個語法
/btw Java 的 Optional.ofNullable 和 Optional.of 的差別?

# 不中斷當前 Context 的快速查詢
/btw Spring Security 6 的 SecurityFilterChain 怎麼設定?

需求分析 Prompt 模板

我需要實作 [功能描述]。

## 背景
- 這是 [系統名稱] 的一部分
- 目標使用者:[角色]
- 技術棧:[語言/框架]

## 需求
1. [具體需求 1]
2. [具體需求 2]

## 約束
- [技術約束]
- [安全約束]
- [效能約束]

## 驗證標準
- [ ] [測試案例 1]
- [ ] [測試案例 2]
- [ ] 通過安全掃描
- [ ] 效能 < [閾值]

請先 Plan(不要直接寫程式),等我確認後再實作。

程式碼實作 Prompt 模板

依照 @SPEC.md 中 [章節] 的需求,實作 [功能]。

## 參考
- 現有模式:看 @src/service/ExistingService.java 的實作方式
- API 規格:@docs/api-spec.yaml

## 實作要求
1. 遵循 Clean Architecture
2. 使用 DI(Dependency Injection)
3. 加入 Jakarta Validation
4. 寫完 Unit Test

## 測試驗證
實作完後:
1. 執行 `mvn test` 確認測試通過
2. 執行 `mvn checkstyle:check` 確認風格
3. 列出所有新增/修改的檔案

6.2 可重用 Prompt Library

技能庫架構

.claude/skills/
├── requirements/
│   └── analyze-requirements/SKILL.md    # 需求分析
├── design/
│   ├── create-api/SKILL.md              # API 設計
│   ├── create-architecture/SKILL.md     # 架構設計
│   └── create-data-model/SKILL.md       # 資料模型設計
├── development/
│   ├── implement-feature/SKILL.md       # 功能實作
│   ├── fix-issue/SKILL.md               # 修復 Issue
│   └── refactor/SKILL.md               # 重構
├── testing/
│   ├── generate-tests/SKILL.md          # 測試產出
│   └── security-test/SKILL.md           # 安全測試
├── review/
│   ├── code-review/SKILL.md             # 程式碼審查
│   └── security-review/SKILL.md         # 安全審查
└── devops/
    ├── create-pipeline/SKILL.md         # CI/CD Pipeline
    └── create-dockerfile/SKILL.md       # Dockerfile

fix-issue Skill 範例

<!-- .claude/skills/fix-issue/SKILL.md -->
---
name: fix-issue
description: 修復 GitHub Issue
disable-model-invocation: true
---
分析並修復 GitHub Issue:$ARGUMENTS

1. 使用 `gh issue view` 取得 Issue 詳情
2. 理解問題描述
3. 搜尋 Codebase 找到相關檔案
4. 實作修復
5. 撰寫並執行測試驗證
6. 確保 Lint 和型別檢查通過
7. 建立描述性 Commit Message
8. Push 並建立 PR

使用:/fix-issue 1234

6.3 Chain-of-Thought / ReAct 模式

Chain-of-Thought(CoT)

讓 Claude Code 先思考再行動:

> 我要修改 AuthService 的 token refresh 邏輯。
> 
> 在動手之前,請先:
> 1. 讀取目前的實作
> 2. 列出所有呼叫 refreshToken() 的地方
> 3. 分析目前的問題
> 4. 提出修改方案(至少 2 個)
> 5. 分析每個方案的優缺點
> 6. 等我選擇方案後再實作

ReAct(Reason + Act)

讓 Claude Code 在每一步都解釋原因:

> 調查 API /api/v1/users 的回應時間為什麼從 50ms 變成 500ms。
> 
> 每一步都要:
> 1. 說明你要做什麼(Reason)
> 2. 執行(Act)
> 3. 分析結果(Observe)
> 4. 決定下一步
> 
> 不要跳躍結論,每一步都要有證據。

Interview 模式

讓 Claude Code 先訪談你:

> 我想建立一個用戶認證系統。使用 AskUserQuestion 工具詳細訪談我。
> 
> 深入問技術實作、UI/UX、邊界情況、關注點和取捨。
> 不要問顯而易見的問題,挖掘我可能沒考慮到的困難點。
> 
> 訪談完後寫一份完整的 SPEC.md。

6.4 安全 Prompt(避免 Hallucination)

防止 Hallucination 策略

# 策略 1:要求引用來源
> 分析 authentication 模組的安全性。
> 每個發現都要引用具體的檔案名和行號。
> 如果不確定,明確說「不確定」而不是猜測。

# 策略 2:提供驗證方法
> 實作 validateEmail 函數。
> 測試案例:user@example.com = true, invalid = false
> 實作完後跑測試。如果測試失敗,分析原因並修正。

# 策略 3:限制範圍
> 只修改 src/service/UserService.java 中的 createUser() 方法。
> 不要修改其他檔案。
> 不要新增依賴。

# 策略 4:交叉驗證
> 實作完後,使用 subagent 審查這段程式碼的正確性和安全性。

安全 Prompt 模板

在回答之前,請遵守以下安全規則:

1. **不要猜測**:如果不確定,查看原始碼或詢問我
2. **不要產出危險程式碼**:
   - 不使用 eval()
   - 不使用字串拼接 SQL
   - 不 hardcode 密碼或 API Key
   - 不停用安全功能(CSRF, CORS 等)
3. **驗證所有輸入**:使用型別安全的驗證方式
4. **最小權限原則**:只申請必要的權限
5. **日誌安全**:不要在日誌中記錄敏感資料

實務建議

  • 將安全 Prompt 放在 .claude/rules/security.md,自動載入
  • 使用 Hook 在每次編輯後自動執行安全檢查
  • 高風險操作使用 disable-model-invocation: true,強制手動觸發

第 7 章:實務案例

7.1 案例 1:Web 系統(Spring Boot + Vue)

需求描述

建立一個「任務管理系統(Task Manager)」:

  • 用戶可以建立、查看、編輯、刪除任務
  • 任務有狀態(待辦、進行中、完成)
  • 支援分配任務給團隊成員
  • 有權限控管(管理員 / 一般用戶)

步驟 1:需求分析

claude
# Plan Mode
> 我要建立一個任務管理系統(Task Manager)。使用 AskUserQuestion 訪談我,
> 深入了解功能需求、技術需求、安全需求。
> 訪談完後產出 SPEC.md。

Claude Code 會提問

  • 「要支援多少並發用戶?」→ 回答:500
  • 「認證方式偏好 Session 還是 JWT?」→ 回答:JWT
  • 「需要支援哪些角色?」→ 回答:Admin, Manager, User

產出 SPEC.md(節錄):

# Task Manager 系統規格

## User Stories
- US-001: As a User, I want to create a task, so that I can track my work.
  - AC-1: Given valid input, When POST /api/v1/tasks, Then return 201 with task ID
  - AC-2: Given missing title, When POST /api/v1/tasks, Then return 400

## API Endpoints
| Method | Path | Description | Auth |
|---|---|---|---|
| POST | /api/v1/tasks | 建立任務 | User+ |
| GET | /api/v1/tasks | 列表查詢 | User+ |
| GET | /api/v1/tasks/{id} | 查詢單一 | User+ |
| PUT | /api/v1/tasks/{id} | 更新任務 | Owner/Admin |
| DELETE | /api/v1/tasks/{id} | 刪除任務 | Admin |

## Security Requirements
- SR-001: JWT Token 有效期 15 分鐘
- SR-002: Refresh Token 有效期 7 天
- SR-003: 所有 API 需要驗證
- SR-004: 刪除操作需 Admin 權限

步驟 2:系統設計

# Plan Mode
> 基於 @SPEC.md,設計系統架構:
> - 後端:Spring Boot 3 + Java 21
> - 前端:Vue 3 + TypeScript
> - 資料庫:PostgreSQL
> - 認證:JWT
> 
> 產出:架構圖(Mermaid)、資料模型、API 規格(OpenAPI)

步驟 3:後端開發

# Normal Mode
> 基於 @SPEC.md 和 @docs/architecture.md,依序實作:
> 
> 1. Entity 層:Task, User, Role
> 2. Repository 層:JPA Repository
> 3. Service 層:TaskService, UserService
> 4. Controller 層:TaskController, UserController
> 5. Security 配置:JWT Filter, SecurityConfig
> 6. DTO:Request/Response DTO
> 7. Exception Handler:Global Exception Handler
> 
> 每完成一層就寫測試並執行驗證。

步驟 4:測試

# 產出測試
> /generate-tests TaskService - 包含建立、查詢、更新、刪除、權限檢查

# 安全測試
> 使用 subagent security-reviewer 掃描所有已寫的程式碼

# 效能測試基準
> 產出簡單的 JMH 基準測試,測量 TaskService 的 CRUD 效能

步驟 5:部署

> 產出以下 DevOps 檔案:
> 1. Dockerfile(multi-stage, 非 root 用戶)
> 2. docker-compose.yml(包含 PostgreSQL, Redis)
> 3. GitHub Actions workflow(Build → Test → Security → Deploy)
> 4. Kubernetes manifest(Deployment + Service + Ingress)

7.2 案例 2:批次系統(Batch Job)

需求描述

建立一個「報表產出排程系統」:

  • 每日凌晨 2:00 產出前一天的交易報表
  • 處理百萬筆交易紀錄
  • 輸出 CSV 和 PDF 格式
  • 異常時發送告警

完整流程

# 步驟 1:需求分析
> 分析以下批次系統需求,產出 SPEC.md:
> - 每日凌晨 2:00 執行
> - 從交易資料庫讀取前一天的紀錄(預估 100 萬筆)
> - 產出 CSV 和 PDF 報表
> - 上傳至 S3
> - 異常發送 Email 告警
> 
> 特別考慮:效能、容錯、重試機制

# 步驟 2:設計
> 使用 Spring Batch 設計批次系統:
> - Chunk-oriented processing(chunk size: 1000)
> - 使用 JdbcPagingItemReader 讀取
> - Custom ItemProcessor 處理
> - CompositeItemWriter 輸出 CSV + PDF
> - 加入 Retry Policy(最多 3 次)
> - 加入 Skip Policy(容許 10 筆失敗)

# 步驟 3:實作
> 依照設計實作 Spring Batch Job:
> 1. BatchConfig:Job 和 Step 定義
> 2. TransactionReader:分頁讀取
> 3. ReportProcessor:資料轉換
> 4. CsvWriter:CSV 輸出
> 5. PdfWriter:PDF 輸出
> 6. NotificationListener:完成/失敗通知
> 
> 實作完後跑 Integration Test 驗證

# 步驟 4:安全審查
> 使用 subagent security-reviewer 審查批次系統:
> - 資料庫連線安全
> - 檔案存取權限
> - 密碼管理
> - 日誌中不可含敏感資料

# 步驟 5:部署
> 產出 Kubernetes CronJob manifest,排程每日凌晨 2:00 執行

實務踩坑經驗

  • 批次處理大量資料時,注意記憶體使用量。使用 chunk 模式而非一次載入
  • PDF 產出可能很慢,考慮非同步處理
  • 加入 JobRepository 持久化,支援斷點續跑
  • 務必設定 Job 的超時時間,避免無限執行

第 8 章:系統維運(Operations)

8.1 日誌管理

AI 輔助日誌分析

# 分析應用程式日誌
cat /var/log/app/application.log | claude -p "
分析這份日誌,找出:
1. ERROR 等級的錯誤模式
2. 重複出現的 WARN
3. 異常的回應時間
4. 可疑的安全事件
提供摘要和建議。
"

# 即時監控
tail -f application.log | claude -p "
持續監控日誌,如果發現以下情況立即告警:
- OOM(OutOfMemoryError)
- 連線池耗盡
- 認證失敗超過 5 次
- 回應時間 > 3 秒
"

日誌 Skill

<!-- .claude/skills/analyze-logs/SKILL.md -->
---
name: analyze-logs
description: 分析應用程式日誌找出問題
---
分析以下日誌或日誌檔案:$ARGUMENTS

### 分析維度
1. **錯誤模式**:分類並統計 ERROR/WARN
2. **效能問題**:找出慢查詢、慢回應
3. **安全事件**:認證失敗、異常存取
4. **資源問題**:記憶體、連線池、Thread

### 輸出格式
| 嚴重度 | 類型 | 出現次數 | 描述 | 建議 |

8.2 AI 輔助 Debug

Debug 流程

graph LR
    A[問題描述] --> B[Claude Code<br/>分析根因]
    B --> C[搜尋相關程式碼]
    C --> D[產出假設]
    D --> E[驗證假設<br/>加入日誌/測試]
    E --> F{問題解決?}
    F -->|是| G[產出修正<br/>+ 防護測試]
    F -->|否| D
# Debug 範例
> API /api/v1/users 回傳 500 錯誤,錯誤訊息如下:
> [貼上 Stack Trace]
> 
> 請:
> 1. 分析 Stack Trace 找出根因
> 2. 在 Codebase 中找到問題點
> 3. 提出修復方案
> 4. 實作修復
> 5. 撰寫一個能重現此問題的測試
> 6. 確認測試通過
> 7. 提交修復

8.3 Incident 處理

Incident 處理 Skill

<!-- .claude/skills/handle-incident/SKILL.md -->
---
name: handle-incident
description: 處理線上 Incident
disable-model-invocation: true
---
處理以下 Incident:$ARGUMENTS

### 處理流程
1. **評估影響**
   - 受影響的服務
   - 受影響的用戶數
   - 業務影響等級

2. **臨時修復(Mitigation)**
   - 能否 rollback 到上一版?
   - 能否關閉有問題的功能?
   - 能否增加 Circuit Breaker?

3. **根因分析(Root Cause Analysis)**
   - 閱讀相關日誌
   - 檢查最近的程式碼變更
   - 分析監控指標

4. **永久修復**
   - 實作修復
   - 撰寫防護測試
   - 更新監控規則

5. **Post-Mortem**
   - 時間線
   - 根因
   - 修復措施
   - 預防措施

實務建議

  • 建立 Incident Response Playbook,並作為 Skill 載入
  • 使用 Claude Code Channel 整合 Slack,讓 Incident 自動觸發分析
  • 每次 Incident 後更新 Auto Memory,避免同類問題重複發生
  • 使用 Notification Hook 將 Incident 事件即時推送到第三方監控系統

Hooks 事件監控

利用 Hooks 機制自動化 Incident 偵測和回應:

// .claude/settings.json — 維運 Hook 範例
{
  "hooks": {
    // 當 Claude 發現需要通知的事件時觸發
    "Notification": [
      {
        "command": "curl -X POST $SLACK_WEBHOOK -d '{\"text\": \"Claude Code Alert: $EVENT_MESSAGE\"}'",
        "if": "severity == 'error'"
      }
    ],
    // 當工作目錄中的檔案變動時觸發
    "FileChanged": [
      {
        "command": "bash scripts/check-config-drift.sh $FILE_PATH",
        "if": "path matches 'config/**'"
      }
    ]
  }
}
Hook 事件維運場景
Notification錯誤告警推送至 Slack/Teams
FileChanged設定檔變更偵測(Config Drift)
PostToolUse每次工具操作後的稽核日誌
StopSession 結束時產出工作摘要

第 9 章:系統升級與優化(Evolution)

9.1 Prompt 版本控管

版本控管策略

.claude/
├── skills/
│   ├── v1/                    # 舊版本保留
│   │   └── fix-issue/
│   │       └── SKILL.md
│   └── fix-issue/             # 當前版本
│       └── SKILL.md
├── CHANGELOG.md               # 變更記錄
└── rules/
    └── versioning.md          # 版本規則

CHANGELOG 範例

# Claude Code Settings Changelog

## 2026-04-15
- 新增 security-reviewer Agent
- 更新 fix-issue Skill:加入安全掃描步驟
- 更新 CLAUDE.md:加入 PostgreSQL 遷移規範

## 2026-04-01
- 新增 handle-incident Skill
- 修改 code-reviewer Agent:加入效能檢查

9.2 Agent 能力升級

定期評估 Agent 效能

# 定期評估 Agent 效能
> 審查 security-reviewer Agent 最近一個月的表現:
> 1. 查看 Auto Memory 中的安全相關記錄
> 2. 是否有遺漏的安全問題
> 3. 是否有誤報
> 4. 建議改善 Agent 的指令

# 升級 Agent
# 修改 .claude/agents/security-reviewer.md
# 加入新的檢查項目
# commit 並通知團隊

Agent Memory 追蹤

透過 Agent 的 memory frontmatter 追蹤能力成長:

<!-- .claude/agents/security-reviewer.md -->
---
name: security-reviewer
memory: project
---
  • memory: project:Agent 的學習記錄儲存在專案層級 Auto Memory,團隊共用
  • memory: user:儲存在使用者層級,跨專案生效
  • memory: local:僅本機生效,不進 Git

追蹤方式

# 查看特定 Agent 的累積知識
/memory
# 進入 Auto Memory → 檢視 Agent 相關的主題檔案

# 定期回顧 Agent 學到了什麼
> 列出 Auto Memory 中所有與 security-reviewer 相關的記錄,
> 評估哪些是有價值的、哪些需要更正

9.3 Workflow 優化策略

度量指標

指標定義目標
需求轉換率需求 → 可交付 Code 的速度< 2hr / User Story
首次通過率Code Review 一次通過的比率> 80%
安全掃描通過率初次掃描無安全問題的比率> 90%
測試覆蓋率AI 自動產出的測試覆蓋率> 80%
Context 使用效率有效 Token / 總 Token> 60%

優化迴圈

graph LR
    A[收集度量] --> B[分析瓶頸]
    B --> C[調整 Prompt/Agent]
    C --> D[測試效果]
    D --> E{改善?}
    E -->|是| F[更新設定<br/>Commit]
    E -->|否| B
    F --> A

實務建議

  • 每月做一次 CLAUDE.md Review:刪除不再需要的規則
  • 每季做一次 Agent 效能評估:更新 Prompt 和工具權限
  • 追蹤 Token 使用量,找出浪費的模式

第 10 章:最佳實務與建議(Best Practices)

10.1 團隊導入策略

分階段導入

graph LR
    A[Phase 1<br/>探索<br/>1-2 週] --> B[Phase 2<br/>試點<br/>2-4 週]
    B --> C[Phase 3<br/>擴展<br/>4-8 週]
    C --> D[Phase 4<br/>標準化<br/>持續]
階段目標活動成功標準
Phase 1:探索熟悉工具安裝、基本操作、個人專案試用團隊 80% 完成安裝
Phase 2:試點驗證流程選 1-2 個非關鍵專案導入 SSDLCCode Review 效率提升 30%
Phase 3:擴展規模化所有新專案使用、建立 Skills 庫全團隊日常使用
Phase 4:標準化持續改善CLAUDE.md 標準化、Agent 最佳化度量指標持續改善

團隊角色

角色職責
AI Champion推動導入、維護 CLAUDE.md 標準
Prompt Engineer設計與優化 Skill 和 Agent
Security Guard審查 AI 產出的安全合規性
一般開發者日常使用、回報問題、貢獻改善

10.2 治理(Governance)

使用規範

## AI 使用規範

### 允許的使用場景
- 程式碼撰寫與重構
- 測試產出
- 程式碼審查
- 日誌分析
- 文件撰寫

### 禁止的使用場景
- 將公司敏感資料貼入公有 API
- 未經審查直接部署 AI 產出的程式碼
- 停用安全功能以「提升效率」
- 使用 AI 產出繞過合規要求

### 審查要求
- 所有 AI 產出的程式碼必須經過人工 Code Review
- 安全相關的修改需要額外的安全審查
- AI 產出的測試需驗證是否真的在測試目標邏輯

管理組織 CLAUDE.md

<!-- C:\Program Files\ClaudeCode\CLAUDE.md -->
# 組織級 Claude Code 規範(Managed Policy)

## 安全規則(不可覆寫)
- 所有敏感資料必須使用環境變數
- 禁止在程式碼中 hardcode 任何憑證
- 所有 SQL 查詢必須使用 Parameterized Query
- 所有外部輸入必須驗證和消毒

## 合規要求
- 遵循公司資安政策
- 日誌不可記錄 PII(個人識別資訊)
- 所有 API 必須有認證和授權

10.3 安全(Security)

安全層級

Layer 1:Managed Policy(組織級,不可覆寫)
    ↓
Layer 2:Permission Rules(專案級,限制工具使用)
    ↓
Layer 3:Hooks(自動觸發,確保安全檢查)
    ↓
Layer 4:Subagent Security Review(AI 層安全審查)
    ↓
Layer 5:CI/CD Security Gate(Pipeline 安全閘門)

權限設定範例

// .claude/settings.json
{
  "permissions": {
    "allow": [
      "Bash(mvn *)",
      "Bash(npm run *)",
      "Bash(git commit *)",
      "Bash(git push *)",
      "Bash(gh pr create *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(DROP *)",
      "Bash(curl * | bash)",
      "Bash(wget * | sh)",
      "Bash(*password*)",
      "Bash(*secret*)"
    ]
  }
}

權限模式總覽

Claude Code 的 --permission-mode 共有 6 種模式,依「自動化程度」由低到高排列:

模式行為適用場景
default每個操作逐步互動確認(預設值)一般本機開發
plan僅規劃、不執行任何變更架構設計、需求分析等只讀討論階段
acceptEdits自動接受檔案編輯,其餘操作仍詢問信任度較高的重構/實作階段
dontAsk不主動彈出確認提示,但仍完整記錄稽核日誌半自動化、需要事後稽核的場景
auto全自動跳過確認CI/CD、批次腳本等受信任環境
bypassPermissions完全略過權限檢查僅限 Sandbox 或獨立 Worktree 內的全自動 Pipeline

auto 為例,在 CI/CD 或批次腳本中可跳過互動確認:

# CI/CD 中的非互動式安全掃描
claude -p "掃描 src/ 的安全問題" --permission-mode auto --allowedTools "Read,Grep,Glob"

# 搭配 --allowedTools 限制可用工具,遵循最小權限原則
claude -p "修復 lint 錯誤" --permission-mode auto --allowedTools "Read,Edit,Bash(npm run lint*)"

注意--permission-mode auto 在受信任的 CI/CD 環境使用。本機開發建議使用預設的互動確認模式。

實務建議bypassPermissions 風險最高,僅建議搭配下方的 Sandbox 模式或獨立 Worktree 使用,將誤操作的影響範圍鎖在隔離環境內,不直接觸碰正式程式碼或正式環境。

Sandbox 模式

Sandbox 是作業系統層級的存取限制機制,與「自動權限模式」互補:即便 autobypassPermissions 判斷有誤,Sandbox 仍能把破壞範圍鎖在邊界內。Sandbox 主要分兩個維度:

  • 檔案系統邊界:限制 Claude Code 實際可寫入(甚至可讀取)的路徑白名單
  • 網路邊界:限制 Claude Code 可連線的網域,避免意外的對外請求或資料外洩

設定範例:

// .claude/settings.json
{
  "sandbox": {
    "filesystem": {
      "allowWrite": ["./src", "./tests"],
      "denyWrite": ["./node_modules", "./.git"]
    },
    "network": {
      "allowDomains": ["api.github.com", "registry.npmjs.org"]
    }
  }
}

實務建議:Sandbox 屬於進階設定,多數團隊可先從 Permission Rules + Hooks 做起,待自動化程度提高(例如導入夜間批次 Pipeline)後,再導入 Sandbox 作為 bypassPermissions 的雙重防護。

Hooks 安全自動化

Hooks 是確保安全合規的確定性機制(不依賴 AI 判斷)。Claude Code 支援五種 Hook 執行者類型:

Hook 類型執行者用途
command本機 Shell執行腳本、CLI 工具、grep 掃描
httpHTTP Request呼叫外部 API(告警、Webhook、SIEM)
prompt另一個 Claude 實例用 AI 判斷是否允許操作
agentAgent Session啟動完整 Agent 執行複雜檢查
mcp_tool已連接的 MCP Server 工具直接呼叫企業既有 MCP 工具做為 Hook 動作,無需另寫腳本

常用 Hook 事件參考:Hook 事件涵蓋從使用者輸入到 Claude 產出、從主 Session 到 Subagent 的完整生命週期,可依需求在不同階段插入確定性檢查:

事件觸發時機安全用途
UserPromptSubmit使用者送出 Prompt 時輸入內容過濾、自動注入合規前綴
PreToolUse工具執行前攔截危險操作(exit 2 = 阻擋)
PostToolUse工具執行後稽核日誌、敏感資訊掃描
SubagentStopSubagent 完成任務時對 Subagent 產出做二次合規檢查,再回傳給主 Session
StopClaude 完成回應前結果合規審查
SessionStartSession 啟動時環境驗證、安全基準檢查
SessionEndSession 結束時清理暫存資源、產出 Session 摘要稽核紀錄
Notification需通知事件推送告警至 Slack/SIEM
ConfigChange設定變更時設定變更稽核
PreCompact / PostCompactContext 壓縮前後確保壓縮不遺失關鍵安全資訊

進階 Hook 範例

// .claude/settings.json
{
  "hooks": {
    "PreToolUse": [
      {
        // 使用 if 條件篩選:僅當工具為 Bash 時觸發
        "if": "tool == 'Bash'",
        "command": "bash scripts/check-dangerous-command.sh \"$COMMAND\"",
        // exit 0 = 允許, exit 2 = 阻擋
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "grep -rn 'password\\|secret\\|api_key\\|token' $FILE && echo 'WARNING: 可能包含敏感資訊!' || true"
      },
      {
        // HTTP Hook:每次檔案編輯後通知審計系統
        "matcher": "Edit",
        "http": {
          "url": "https://audit.internal/api/events",
          "method": "POST",
          "headers": { "Authorization": "Bearer $AUDIT_TOKEN" }
        }
      }
    ],
    "ConfigChange": [
      {
        // 設定變更時自動記錄稽核日誌
        "command": "echo \"$(date) Config changed: $EVENT_DATA\" >> /var/log/claude-audit.log"
      }
    ]
  }
}

Fan-Out 模式安全

在多 Agent 並行(Fan-Out)場景中,必須對每個 Agent 設定限制:

# 安全的 Fan-Out:限制每個子程序的工具權限
for file in src/service/*.java; do
  claude -p "審查 $file 的安全性" \
    --permission-mode auto \
    --allowedTools "Read,Grep,Glob" &
done
wait

# 每個子程序只能讀取,不能修改檔案

10.4 成本控制(Token / API)

Token 使用優化

策略說明節省效果
頻繁 /clear在不同任務間清除 Context30-50%
使用 Subagent探索在獨立 Context 進行20-30%
CLAUDE.md 精簡保持 < 200 行10-15%
善用 Skills按需載入,不全部載入10-20%
Path-scoped Rules只在相關檔案時載入規則5-10%
/compact 壓縮保留關鍵內容,釋放 Context 空間40-60%
Esc+Esc Rewind回退到之前的 Checkpoint,丟棄錯誤嘗試不定

常見反模式(避免浪費 Token)

反模式問題正確做法
Kitchen Sink Session一個 Session 做所有事,Context 快速膨脹每個任務一個 Session,完成後 /clear
過度指定 CLAUDE.md放了 500 行規則,大部分不相關保持 < 200 行,用 Rules 分路徑載入
無限探索讓 Claude 反覆搜尋不存在的東西明確指向檔案路徑,縮小搜尋範圍
反覆修正同一個錯誤修了 5 次修不好/clear 後用更好的 Prompt 重來
Debug 迴圈循環 debug 不收斂使用 /rewind,從合理的 Checkpoint 重啟

成本監控

# 查看目前 Session 的 Context 使用量
# Claude Code 介面底部會顯示 Token 使用狀態

# 設定 Token 預算(CI/CD 環境)
claude -p "fix lint errors" --max-tokens 50000

# 使用自訂 Status Line 即時監控
# 在 CLAUDE.md 中設定

實務建議

  • 每月追蹤 API 費用,設定告警閾值
  • 大型遷移任務使用 --allowedTools 限制工具,減少不必要的操作
  • 一次處理效果不好時,不要反覆修正,/clear 重寫更好的 Prompt
  • 使用 /compact 搭配保留指示(如 保留 API 設計決策和測試指令),進行「有選擇性的遺忘」

第 11 章:常見問題(FAQ)

Q1:Claude Code 和 GitHub Copilot 有什麼不同?

特性Claude CodeGitHub Copilot
模式Agentic(自主代理)Copilot(輔助補全為主)
操作範圍整個 Codebase + Shell主要是當前檔案
執行能力可執行指令、修改多個檔案主要是程式碼建議
安全審查內建 Agent 支援需額外工具
企業整合MCP, Hooks, SkillsExtensions
Context 管理Auto Memory, CLAUDE.md.github/copilot-instructions.md

建議:兩者可以並用。Copilot 用於日常程式碼補全,Claude Code 用於複雜任務、安全審查、架構設計。

Q2:Context Window 爆了怎麼辦?

# 方法 1:清除重來
/clear

# 方法 2:壓縮保留重要內容
/compact 保留 API 變更和測試指令

# 方法 3:Rewind 到特定點
# 按 Esc + Esc 開啟 Rewind Menu
# 選擇 "Summarize from here"

# 方法 4:使用 Subagent 減少主 Context 負擔
> 使用 subagent 調查 auth 模組的實作方式

Q3:Claude Code 產出的程式碼品質不好怎麼辦?

  1. 檢查 CLAUDE.md:是否有明確的程式碼風格和架構要求
  2. 提供範例:指向 Codebase 中好的範例讓 Claude 參考
  3. 使用 Plan Mode:先規劃再實作
  4. 設定 Hook:自動執行 Lint 和格式化
  5. 使用 Reviewer Agent:自動 Code Review
  6. 更新 Auto Memory:讓 Claude 學習你的偏好

Q4:在企業防火牆環境下如何使用?

# 設定 Proxy
export HTTPS_PROXY=http://proxy.company.com:8080
export HTTP_PROXY=http://proxy.company.com:8080
export NO_PROXY=localhost,127.0.0.1

# 使用第三方 Provider(Bedrock / Vertex)
# 如果可以走內部雲端
export CLAUDE_CODE_USE_BEDROCK=1

Q5:如何確保 AI 不會洩露公司敏感資料?

  1. 使用 Managed CLAUDE.md:組織級安全規則
  2. Permission Deny Rules:禁止敏感操作
  3. 使用私有 API Provider(Bedrock / Vertex)
  4. 不上傳生產資料:使用模擬資料或匿名化資料
  5. 設定 Sandbox:限制檔案系統和網路存取

Q6:如何衡量導入 Claude Code 的 ROI?

指標導入前導入後目標衡量方式
程式碼撰寫速度X 行/天2-3X 行/天Git 統計
Code Review 時間Y 小時0.3-0.5Y 小時PR 週轉時間
測試覆蓋率Z%Z+20%Jacoco Report
安全漏洞數N 個/Release< 0.5NSecurity Scan
On-boarding 時間W 週0.5W 週新人產出首 PR

Q7:Subagent 和直接使用 Claude Code 有什麼不同?

  • Subagent 在獨立的 Context Window 執行,不會汙染主 Session
  • 適合用於:探索 Codebase、Code Review、安全掃描
  • Subagent 只回傳摘要,不會把所有讀過的檔案帶進主 Context
  • 可以為 Subagent 設定不同的 Model(如用 opus 做安全審查)

Q8:Auto Memory 和 CLAUDE.md 該記錄什麼?

內容放 CLAUDE.md放 Auto Memory
建置指令✅(Claude 也會記)
程式碼風格
Git 規範
Debug 經驗
踩坑記錄
架構決策
個人偏好CLAUDE.local.md

Q9:Skills、Rules、Plugins 該怎麼選?

機制使用時機載入方式
CLAUDE.md每次 Session 都需要的專案規範永遠載入
Rules路徑相關的規則(如前端/後端分開的規範)碰到匹配路徑時載入
Skills可重用的任務流程(如 /fix-issue使用者手動觸發(/skill-name
Agents需要獨立 Context / 不同 Model 的專門角色Subagent 呼叫或 @agent-name
Plugins跨專案共用的 Skills + Agents + Hooks 套件/plugin install 安裝後自動可用

決策流程:是否每次都需要 → CLAUDE.md / Rules。是否只在特定情境觸發 → Skills。是否需要獨立 Context → Agent。是否跨團隊共用 → Plugin。

Q10:Agent Teams 何時使用?和 Subagent 有什麼不同?

SubagentAgent Teams
Context共享同一個 Repository 的 Context各自獨立的 Session 和 Context
平行度循序執行(一次一個)真正平行(多個 Session 同時跑)
適用場景Code Review、探索、小任務大型遷移、Writer+Reviewer、並行開發
啟用方式指令中呼叫CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
溝通方式回傳摘要給主 SessionSendMessage 工具互傳訊息

Q11:Hooks 失敗會怎樣?

  • exit 0:Hook 成功,操作繼續
  • exit 2:Hook 阻擋操作(用於 PreToolUse),Claude 會收到阻擋原因
  • 其他 exit code:Hook 錯誤,操作仍會繼續(安全預設為不阻擋)
  • Hook 輸出的 stdout 會被注入 Claude 的 Context
  • 建議在 Hook 中使用 || true 避免非預期的阻擋

Q12:如何在不同平台間切換使用?

平台最適合的場景
Terminal大量產碼、批次操作、CI/CD 整合
VS Code Extension日常開發、檔案編輯、Debug
JetBrains PluginJava/Kotlin 重度使用者
Desktop App多 Session 管理、視覺化操作
Web(claude.ai)無需本機環境、安全沙盒
Chrome Extension從網頁直接引用內容到 Claude

所有平台共用同一份 CLAUDE.md、Auto Memory(本機同步)和 Git 設定。


附錄 A:快速檢查清單(Checklist)

環境建置 Checklist

  • 安裝 Claude Code CLI(claude --version 驗證)
  • 安裝 VS Code Extension
  • 設定認證(API Key 或 OAuth)
  • 設定 Proxy(如有需要)
  • 安裝 Git for Windows(Windows 環境)
  • 安裝 GitHub CLI(gh --version 驗證)

專案初始化 Checklist

  • 執行 /init 產出 CLAUDE.md
  • 建立 .claude/ 目錄結構
  • 設定 .claude/settings.json(權限、Hook)
  • 建立核心 Agents(planner, code-reviewer, security-reviewer)
  • 建立核心 Skills(fix-issue, generate-tests, create-api)
  • 建立 Rules(code-style, security, testing)
  • CLAUDE.local.md.claude/settings.local.json 加入 .gitignore
  • Commit 並 Push .claude/ 目錄

SSDLC 執行 Checklist

  • 需求:使用 Planner Agent 分析需求 → 產出 SPEC.md
  • 設計:使用 Plan Mode 設計架構 → 產出架構文件
  • 開發:Explore → Plan → Implement → Verify
  • 測試:自動產出 Unit/Integration Test → 執行驗證
  • 安全:使用 Security Agent 掃描 → 修復所有問題
  • Code Review:使用 Reviewer Agent → 通過審查
  • 部署:CI/CD Pipeline 通過所有 Gate
  • 維運:設定 AI 日誌分析和告警

安全 Checklist

  • 設定 Managed CLAUDE.md(組織規範)
  • 設定 Permission Deny Rules
  • 設定 PostToolUse Hook(安全檢查)
  • 設定 PreToolUse Hook(危險指令攔截)
  • 設定 ConfigChange Hook(設定變更稽核)
  • API Key 使用環境變數或 Secret Manager
  • CI/CD 中加入 Claude Code Security Review Gate
  • 定期輪換 API Key
  • 啟用 Sandbox(高安全需求場景)
  • 確認 Fan-Out 腳本中每個子程序設定 --allowedTools

Plugins 與 Auto Memory Checklist

  • 安裝團隊需要的 Code Intelligence Plugins(如 typescript-intelligence)
  • 驗證 Auto Memory 已啟用(autoMemoryEnabled: true
  • 檢視 /memory 中的累積知識是否正確
  • 定期清理過時的 Auto Memory 記錄
  • 將共用 Plugins 設定記錄在團隊文件中
  • 確認 Plugin 來源的 Agent 安全限制已知悉(無 hooks/mcpServers/permissionMode)

附錄 B:常用指令速查表

互動模式指令

指令說明
/init初始化 CLAUDE.md
/clear清除 Context
/compact [指示]壓縮 Context(可指定保留內容)
/memory查看/管理 Auto Memory
/rewind回退到之前的狀態
/permissions管理權限
/hooks瀏覽 Hook 設定
/agents瀏覽和管理 Agent
/plugin瀏覽插件市集
/plugin install [name]安裝 Plugin
/reload-plugins重新載入已安裝的 Plugin
/rename [名稱]命名 Session
/btw [問題]側邊快速提問(不進入 Context)
/[skill-name] [args]觸發 Skill(如 /fix-issue 1234
/debug [描述]內建 Debug Skill
/batch [描述]內建批次處理 Skill
@[file-path]在 Prompt 中參考檔案
@[agent-name]在 Prompt 中呼叫 Agent
Ctrl+G切換 Plan Mode
Ctrl+B建立背景任務(Background Task)
Esc中斷 Claude 執行
Esc + Esc開啟 Rewind Menu

CLI 指令

指令說明
claude啟動互動模式
claude -p "prompt"非互動模式(一次性)
claude --continue恢復最近的 Session
claude --resume選擇歷史 Session
claude --agent [name]以指定 Agent 啟動 Session
claude --permission-mode auto自動權限模式(CI/CD 用)
claude --output-format jsonJSON 輸出(單次完整結果)
claude --output-format stream-json串流結構化輸出,適合長任務即時監控
claude --allowedTools "Read,Bash(git *)"限制可用工具
claude --disallowedTools "Bash(rm *)"明確排除可用工具清單,與 --allowedTools 互補
claude --max-tokens 50000限制最大 Token 用量
claude --model [name]指定本次 Session 使用的模型
claude --effort [level]指定本次 Session 的推理力度
claude --verbose輸出詳細執行日誌,便於除錯非互動腳本
claude --safe-mode啟用保守執行策略,降低自動化場景下的誤判風險
claude --permission-prompt-tool [script]自訂權限確認時呼叫的工具,取代預設互動提示
claude --exclude-dynamic-system-prompt-sections排除動態組裝的系統提示片段,用於精簡 Token 或除錯
claude --mcp-config [file]以指定設定檔載入 MCP Server,取代預設搜尋路徑
claude --plugin-dir ./my-plugin以本地 Plugin 目錄啟動(開發用)
claude --worktree在獨立 Git Worktree 中啟動
claude mcp add [name] -- [command]加入 MCP Server
claude mcp list列出 MCP Servers
claude agents list列出所有可用 Agent
claude update手動更新
claude --version查看版本

快捷組合

# CI/CD 中自動修復 Lint 問題
claude -p "fix all lint errors" --permission-mode auto --allowedTools "Read,Edit,Bash(npm run lint*)"

# 批次遷移檔案(Fan-Out 模式)
for file in $(cat files.txt); do
  claude -p "Migrate $file from Java 11 to Java 21" \
    --permission-mode auto \
    --allowedTools "Read,Edit,Bash(git commit *)" &
done
wait

# 自動 Code Review(非互動,JSON 格式輸出)
claude -p "Review the changes in this PR for security and code quality issues" --output-format json

# 指定 Agent 啟動
claude --agent security-reviewer

# 在獨立 Worktree 中執行(不影響主分支)
claude --worktree -p "嘗試將 Hibernate 5 升級到 6,如果測試失敗就回退"

附錄 C:參考資料

官方文件

資源連結
Claude Code 官方文件https://code.claude.com/docs/en/overview
Claude Code Best Practiceshttps://code.claude.com/docs/en/best-practices
Claude Code Memory(CLAUDE.md)https://code.claude.com/docs/en/memory
Claude Code Skillshttps://code.claude.com/docs/en/skills
Claude Code Ruleshttps://code.claude.com/docs/en/rules
Claude Code Hookshttps://code.claude.com/docs/en/hooks-guide
Claude Code Subagentshttps://code.claude.com/docs/en/sub-agents
Claude Code Agent SDKhttps://code.claude.com/docs/en/agent-sdk
Claude Code Pluginshttps://code.claude.com/docs/en/plugins
Claude Code Agent Teamshttps://code.claude.com/docs/en/agent-teams
Claude Code Channelshttps://code.claude.com/docs/en/channels
Claude Code Routines(排程)https://code.claude.com/docs/en/routines
Claude Code Remote Controlhttps://code.claude.com/docs/en/remote-control
Claude Code Permissionshttps://code.claude.com/docs/en/permissions
Claude Code GitHub Actionshttps://code.claude.com/docs/en/github-actions
Claude Code Desktop Apphttps://code.claude.com/docs/en/desktop
Claude Code Chrome Extensionhttps://code.claude.com/docs/en/chrome
Claude Code Features Overviewhttps://code.claude.com/docs/en/features-overview

社群與工具

資源連結
Claude Code GitHub Repositoryhttps://github.com/anthropics/claude-code
Everything Claude Code (ECC)https://github.com/affaan-m/everything-claude-code
Plugin Marketplace(提交入口)https://claude.ai/settings/plugins/submit
Anthropic API 文件https://docs.anthropic.com
OWASP Top 10https://owasp.org/www-project-top-ten/

文件維護說明:本手冊應隨 Claude Code 版本更新而修訂。建議每季進行一次內容審查,確保與最新版本一致。每次修改請更新頂部的版本號和日期。