知道機制是什麼還不夠,要知道在哪個情境組合哪些 skill,才能把 Claude 從「聰明的打字員」變成「懂得接哪個工具的工程夥伴」。這篇把本機安裝的 36 個 skills 對應到三個最常碰到的開發情境:開發大功能、architecture 設計、以及維護舊系統。
情境一:開發大功能
典型場景:PM 說「下季要做通知系統」,需求模糊、影響面廣、不知道從哪開始。
Skill 鏈
interview-me
↓ 確認「通知系統」背後的真正意圖(是要減少用戶流失?還是要讓 PM 能追蹤任務?)
spec-driven-development
↓ 把意圖轉成有六大核心、明確驗收標準的 spec
planning-and-task-breakdown
↓ 把 spec 拆成垂直切片,每個任務 ≤5 個檔案,有依賴順序
incremental-implementation(每個 slice)
↓ 實作 → 測試 → verify → commit,保持系統永遠可跑
test-driven-development(平行)
↓ spec 的驗收標準 → red test → 讓它通過
doubt-driven-development(遇到非顯然決策時)
↓ 對關鍵決策做對抗式審查,不讓「確定感」取代驗證
Claude Code 機制的介入點
CLAUDE.md:在 Specify 之前確認 CLAUDE.md 已涵蓋:build/test 指令、tech stack、命名慣例、DB schema 變更需先 ask。這讓後續所有 subagent 和 session 都自動繼承這些規則,不需要每次重複說。
Subagents 平行化:當 spec 已確定(特別是 API contract),可以派兩個 subagent:
- Subagent A:實作 backend API endpoints + DB migration
- Subagent B:實作 frontend API client + UI 元件(對著 mock data)
- 主 session:整合、E2E 測試
前提是 api-and-interface-design skill 在 Plan 階段把介面先定清楚——合約確立後,前後端才能真正並行,不需要等對方。
Hooks(PostToolUse):配置在每次 file edit 後自動跑 tsc --noEmit 和 lint。型別錯誤和 lint violation 在 subagent 寫完每個 slice 後立刻浮現,不會累積到最後整合時才爆。
Worktree 隔離:subagent 用 isolation: 'worktree' 在獨立 git worktree 工作,避免並行 edit 衝突;subagent 完成後主 session merge。
常見短路點
把「planning」和「tasks」合併成一步,結果任務沒有驗收標準。沒有驗收標準的任務,subagent 不知道「完成」的定義,往往會過度實作或停在一半。planning-and-task-breakdown 要求每個任務都有「驗收標準 + 驗證指令 + 預期改動檔案數」——這三項缺一,任務不算定義清楚。
情境二:Architecture 設計
典型場景:系統成長到需要考慮「要不要拆服務」、「選哪個 auth 策略」、「DB 要換嗎」這類影響深遠、reversibility 低的決策。
Skill 鏈
interview-me
↓ 確認:這個架構決策現在非做不可嗎?驅動力是什麼?
api-and-interface-design
↓ 先定介面邊界(contract first),再考慮實作
doubt-driven-development
↓ 對架構方案做對抗式審查——「試圖推翻它」而非「確認它沒問題」
documentation-and-adrs
↓ 把決策、備選方案、拒絕理由寫進 ADR,commit 進 repo
context-engineering
↓ 確認決策層的假設已進入 CLAUDE.md,後續 session 不需要重解釋
Claude Code 機制的介入點
Doubt-Driven 的多代理評審:架構決策是 doubt-driven 最值得用的地方。一個主 session 提出方案,派出 subagent 以對抗式 prompt 嘗試推翻它(找假設、邊界 case、隱藏耦合)。對同一個方案,可以從三個角度各派一個 subagent:scalability 角度、complexity 角度、reversibility 角度。多角度發現主 session 的盲點比同一個 context 自我審查更有效。
ADR commit 進 repo(documentation-and-adrs):ADR 存放在 docs/decisions/ADR-XXX.md,commit 進版本庫。其重要性不只是給人看——它讓後續的 Claude session 讀到決策背景,不需要每次重解釋「為什麼不用方案 B」。沒有 ADR,六個月後新開一個 session,Claude 可能會重新建議你已經評估並拒絕的方案。
CLAUDE.md 固化架構約束:決策做好後,把核心約束(「這個 monorepo 不引入微服務架構」、「所有外部 API 呼叫要走 src/lib/api/ 這一層」)寫進 CLAUDE.md。這讓後續所有 AI session 和 subagent 都受這個約束限制,不會被無心的「我只是加一個 axios 直接呼叫」悄悄違反。
api-and-interface-design:contract-first 的價值:在定架構時,「先定介面、後定實作」的效益特別高。TypeScript interface、OpenAPI schema、GraphQL type 這些 contract 文件一旦 commit,後續的 subagent 和開發者都能對著同一份 contract 獨立工作,不需要等實作完成才能整合。
架構決策的對抗式審查格式
一個可複用的 Doubt-Driven 架構審查 prompt 框架:
## 對抗式架構審查
ARTIFACT(待審查的方案):
[用 3–5 句說清楚架構方案]
CONTRACT(這個方案必須滿足的條件):
1. [constraint 1]
2. [constraint 2]
3. [constraint 3]
→ 請試圖推翻這個方案。找出:
- 未陳述的假設
- 在哪個 scale 或邊界條件下方案會失效
- 隱藏的耦合或單點失效
- 未來 18 個月內可能讓這個決策難以逆轉的原因
→ 不要驗證,只找問題。如果真的找不到問題,明確說明「無法找到問題,因為……」情境三:Maintenance(維護舊系統)
典型場景:生產系統偶爾出現不明原因的 timeout;有一個沒人動的模組但又不敢刪;依賴套件三個月沒更新;每次 oncall 都要花三小時才能定位問題。
Skill 鏈
debugging-and-error-recovery(有 bug 時)
↓ Reproduce → 隔離根因 → Fix → Guard(加測試防止回歸)
observability-and-instrumentation(fix 完之後)
↓ 加 structured log/metric,下次同類問題靠 query 找,不靠 grep
code-review-and-quality(定期)
↓ 五軸審查:correctness、readability、architecture、security、performance
deprecation-and-migration(有舊東西需要汰換時)
↓ 評估是否值得維護 → 建替代方案 → 遷移 → 安全移除
Claude Code 機制的介入點
CLAUDE.md + structure.md(最高槓桿):維護工作中,Claude 最大的摩擦來源是「每次都要重解釋系統架構」。一個好的 CLAUDE.md 搭配 structure.md(系統地圖)讓 Claude 知道:哪個模組負責什麼、哪些路徑不能碰、測試在哪裡、關鍵的已知坑(known gotchas)。這是 maintenance 情境下投資報酬率最高的一次性投入。
Explore subagent(context 隔離):除錯時,Explore subagent 可以做大範圍的 codebase 搜索(grep pattern、找呼叫鏈、追 dependency),把搜索結果摘要帶回主 session,而不是把幾十個 grep 結果直接倒進主 context。主 session 的 context 越精簡,推理品質越穩定。
Scheduled Tasks(預防性自動化):
- 每週:
npm audit、dependency 是否有高危漏洞 - 每天:跑完整測試套件,把失敗率趨勢記錄下來
- 每月:跑
deprecation-and-migrationskill 評估哪些模組的維護成本已超過其貢獻
這類工作不需要人在旁邊,scheduled task 的 prompt 要明確寫出「成功定義是什麼」和「結果如何呈現/通知」。
Hooks(PostToolUse 品質門): 維護期的 regression 風險高——「只改一行」卻炸掉其他地方的情況常見。PostToolUse hook 在每次 file edit 後自動跑測試,讓 regression 在 subagent 還沒做完下一個任務前就被攔截,不會把多個問題疊在一起。
debugging-and-error-recovery 的核心原則:Stop-the-Line
這個 skill 的最重要戒律:任何意外發生時,先停止加新功能,先保留證據,先定位根因。在維護情境下,這尤其重要——因為「先快速修好、再研究為什麼」往往導致改了一個 bug 蓋住了另一個 bug,然後兩週後才發現。維護的債比功能的債更難清。
維護與遷移的決策框架(deprecation-and-migration)
在決定一個舊模組要不要汰換前,回答:
| 問題 | 如果是 | 如果否 |
|---|---|---|
| 這個模組還有唯一貢獻的功能嗎? | 繼續維護 | 考慮廢棄 |
| 有替代方案嗎? | 可以開始遷移計畫 | 先建替代方案 |
| 遷移成本可自動化嗎? | 優先做 | 評估人工成本 vs 維護成本 |
| 廢棄後誰受影響? | 需要公告期 + 遷移指南 | — |
Code is a liability(deprecation-and-migration skill 的核心主張):每行程式碼都有持續的維護成本——測試、文件、安全 patch、依賴更新。功能的價值來自它做的事,不是來自程式碼本身。相同功能可以用更少程式碼提供時,舊程式碼應該離開。
橫切三個情境的 CLAUDE.md 策略
不論在哪個情境,CLAUDE.md 都是 Claude 輔助品質的底層保障。三個情境各有不同的 CLAUDE.md 重點:
| 情境 | CLAUDE.md 應涵蓋 |
|---|---|
| 開發大功能 | Tech stack、build/test 指令、命名慣例、「先問再做」的邊界(DB schema、新依賴) |
| Architecture | 已固化的架構決策(防止 Claude 重新建議已否決方案)、模組邊界規則 |
| Maintenance | Known gotchas(已知的系統陷阱)、哪些路徑高風險、oncall 相關的 runbook 指引 |
評估 CLAUDE.md 品質的測試:開一個新 session,只讀 CLAUDE.md,然後請 Claude 描述這個專案的 tech stack、build 方式、以及它不能做的三件事。如果回答準確,CLAUDE.md 有效;如果答不出來,它缺少了什麼就補什麼。
延伸
- 這些機制如何運作 → 用 Claude 做開發輔助:機制層全景
- Spec-Driven 在大功能開發的位置 → Spec-Driven Development:規格先行
- 架構決策的對抗式審查詳細做法 → Spec-Driven + Doubt-Driven 組合
- 閉環工作流程 → Framing → Spec → 實作 → 驗證:閉環全景
- 回到全景 → Problem Framing + Spec-Driven Development 專欄首頁