返回列表
懶人包 / GUIDE
2026-08-04
Claude Code Hooks 與自動化指南:事件驅動的 AI 工作流完全教學
Claude Code Hooks 完全教學,學會用事件驅動機制自動觸發 Shell 指令,搭配 Skills 建立強大的自動化工作流,附 8 個實用 Hook 範例。
Claude Code
Hooks
自動化
事件驅動
工作流
settings.json
CI/CD
註記
本指南由 Mark Liu 編整、實測校稿。內容會隨工具版本與市場變化持續更新,建議搭配實際情境調整應用。
目錄 / INDEX
8
第 1 節
什麼是 Hooks?跟 Skills 有什麼不同?
Skills 是你主動觸發的指令(/do-something),Hooks 是被動觸發的自動化——當某個事件發生時,系統自動執行你預設的指令。兩者搭配使用,就像「Skills 是引擎,Hooks 是自動駕駛」。
-
›
Skills:使用者主動觸發(輸入 /指令 或自然語言)→ Claude 執行預設流程
-
›
Hooks:事件自動觸發(工具被呼叫、訊息送出、指令完成等)→ 系統自動執行 Shell 指令
-
›
組合威力:/Deploy Skill 執行部署 → 部署完成 → Hook 自動跑 Smoke Test → Smoke Test 通過 → Hook 發 Slack 通知
flowchart LR
subgraph Skills[Skills 主動觸發]
A[使用者輸入 /指令] --> B[Claude 執行流程]
end
subgraph Hooks[Hooks 被動觸發]
C[事件發生] --> D[自動執行 Shell 指令]
end
B -->|完成事件| C
第 2 節
Hook 事件類型
Claude Code 支援多種事件類型,每種事件可以綁定不同的 Hook。
| 事件 | 觸發時機 | 常見用途 |
|---|---|---|
| PreToolUse | 工具呼叫前 | 攔截危險操作、確認檔案變更 |
| PostToolUse | 工具呼叫後 | 自動格式化、Log 記錄 |
| UserPromptSubmit | 使用者送出訊息時 | 訊息預處理、自動帶入上下文 |
| Stop | Claude 完成回應時 | 自動通知、產出摘要 |
| SessionStart | 對話開始時 | 環境初始化、載入上下文 |
第 3 節
設定方式:settings.json
Hooks 設定在 Claude Code 的 settings.json 中。可以用 /update-config 指令設定,或手動編輯。
-
›
設定檔位置:~/.Claude/Settings.Json(全域)或 .Claude/Settings.Json(專案層級)
-
›
基本結構:Hooks 物件下按事件類型分組,每個事件可綁定多個 Hook
-
›
每個 Hook 包含:Type(Command)、Command(要執行的 Shell 指令)、Description(說明)
-
›
可選欄位:Matcher(只對特定工具名稱觸發)、Timeout(超時設定)
-
›
優先順序:專案層級的設定會覆蓋全域設定
小提示
- 建議用 /update-config 指令設定,它會自動處理 JSON 格式和路徑問題
- 修改 settings.json 後不需要重啟 Claude Code,設定會立即生效
第 4 節
範例 1-3:開發流程自動化
最常用的開發流程 Hook。
-
›
範例 1 — 檔案修改後自動 Lint:Posttooluse + Matcher: Write/Edit → 執行 Eslint --Fix 或 Black 自動格式化剛修改的檔案
-
›
範例 2 — 對話開始時載入專案狀態:Sessionstart → 執行 Git Status 和 Docker Ps,把結果帶入對話上下文
-
›
範例 3 — 危險操作前攔截:Pretooluse + Matcher: Bash → 檢查指令是否包含 Rm -Rf、Git Push --Force 等危險操作,有的話阻止執行
第 5 節
範例 4-6:品質保證自動化
讓品質檢查自動融入工作流程。
-
›
範例 4 — 提交前自動跑測試:Pretooluse + Matcher: Bash(當指令包含 Git Commit)→ 先跑 Pytest,測試通過才允許提交
-
›
範例 5 — 翻譯安全檢查:Posttooluse + Matcher: Write(當修改 .Po 或 Locale 檔案)→ 自動執行 Python3 Scripts/Check_Translations.Py --Js-Safety
-
›
範例 6 — Json 修改後自動驗證:Posttooluse + Matcher: Write(當修改 Data/Guides/ 下的檔案)→ 自動執行 ./Scripts/Validate_Json.Sh
第 6 節
範例 7-8:通知與記錄
讓團隊自動收到進度更新。
-
›
範例 7 — 完成後自動通知:Stop → 把 Claude 的最後回應摘要發到 Slack 或 Telegram,讓團隊成員知道任務完成
-
›
範例 8 — 操作記錄:Posttooluse → 把每次工具呼叫的類型和參數記錄到 Log 檔案,方便事後追蹤「Claude 做了什麼」
第 7 節
Hooks + Skills 組合模式
Hooks 和 Skills 組合使用能創造強大的自動化工作流。以下是三種常見的組合模式。
-
›
模式 1 — 前置檢查:Hook(Pretooluse)確認環境正常 → Skill 執行主要工作。例如部署前 Hook 檢查 Ci 是否通過
-
›
模式 2 — 後處理鏈:Skill 完成主要工作 → Hook(Stop)自動執行後處理。例如 /Content-Pipeline 建立內容後,Hook 自動 Commit 並通知
-
›
模式 3 — 品質門禁:Skill 修改程式碼 → Hook(Posttooluse)自動跑 Lint 和測試 → 全部通過才繼續。確保 Ai 產出的程式碼符合品質標準
小提示
- 不要在 Hook 中做太重的工作。Hook 應該快速完成(幾秒內),耗時的工作用 Skill 處理
- Hook 失敗會阻擋 Claude 的操作。確保 Hook 指令是可靠的,避免誤阻擋
flowchart TD
subgraph 模式1[模式 1: 前置檢查]
A1[Hook: PreToolUse] --> A2{環境正常?}
A2 -->|是| A3[Skill 執行]
A2 -->|否| A4[阻擋並提醒]
end
subgraph 模式2[模式 2: 後處理鏈]
B1[Skill 完成] --> B2[Hook: Stop]
B2 --> B3[自動 commit]
B2 --> B4[發送通知]
end
subgraph 模式3[模式 3: 品質門禁]
C1[Skill 修改程式碼] --> C2[Hook: PostToolUse]
C2 --> C3[自動 lint + test]
C3 --> C4{通過?}
C4 -->|是| C5[繼續]
C4 -->|否| C6[阻擋]
end
第 8 節
除錯與最佳實踐
Hook 設定出問題時的排查方法和設計建議。
-
›
Hook 沒觸發:確認事件類型和 Matcher 是否正確。用 Echo 指令測試 Hook 是否被呼叫
-
›
Hook 阻擋了操作:檢查 Hook 的 Exit Code。非零的 Exit Code 會阻止操作
-
›
Hook 太慢:加入 Timeout 設定,避免 Hook 卡住整個工作流。預設超時 60 秒
-
›
最佳實踐 1:Hook 指令保持簡單——一個 Hook 做一件事
-
›
最佳實踐 2:用 Description 清楚說明 Hook 的用途,方便團隊成員理解
-
›
最佳實踐 3:先在個人設定中測試,確認無誤後再推到專案設定
-
›
最佳實踐 4:敏感操作(如自動 Push、自動部署)的 Hook 要特別謹慎,建議加入確認步驟
重點整理 / SUMMARY
4
- 1 Hooks 是 Claude Code 的事件驅動機制——當特定事件發生時,自動執行你預設的 Shell 指令
- 2 搭配 Skills 使用,可以建立「觸發 Skill → 執行完成 → Hook 自動後處理」的完整自動化鏈
- 3 常見應用:提交前自動 lint、工具呼叫前確認、完成後自動通知
- 4 設定在 settings.json 中,不需要修改程式碼,純設定驅動
相關連結 / LINKS
相關懶人包 / RELATED
2026 AI 投資趨勢指南:從晶片到應用,掌握 AI 產業鏈投資機會
AI 浪潮正在重塑全球投資市場。從 NVIDIA 到台積電,從雲端服務到 AI 應用,全面解析 AI 相關投資標的與風險
2026 AI 簡報工具完全攻略:10 分鐘做出專業簡報的秘密武器
比較 2026 年最好用的 AI 簡報工具:Gamma、Beautiful.ai、Canva AI、GenPPT、Plus AI,含免費方案、價格、實測心得與選擇建議。
2026 AI 翻譯工具實測:DeepL、ChatGPT、Claude、Gemini 翻譯品質誰最強
2026 AI 翻譯工具實測:DeepL、ChatGPT、Claude、Gemini 誰翻得最準。品質已在 6-7 成場景超越人工,附中文對日韓越泰語選工具建議與免費付費差異,選錯品質差 30%。
ℹ️
一般聲明
本站提供之資訊僅供參考,不保證其完整性與正確性。使用者應自行判斷資訊之適用性。