九號工具站
返回列表

Claude Code Hooks 與自動化指南:事件驅動的 AI 工作流完全教學

Claude Code Hooks 完全教學,學會用事件驅動機制自動觸發 Shell 指令,搭配 Skills 建立強大的自動化工作流,附 8 個實用 Hook 範例。

Claude Code Hooks 自動化 事件驅動 工作流 settings.json CI/CD

最後更新:2026-05-26

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 要特別謹慎,建議加入確認步驟

重點整理

  • 1 Hooks 是 Claude Code 的事件驅動機制——當特定事件發生時,自動執行你預設的 Shell 指令
  • 2 搭配 Skills 使用,可以建立「觸發 Skill → 執行完成 → Hook 自動後處理」的完整自動化鏈
  • 3 常見應用:提交前自動 lint、工具呼叫前確認、完成後自動通知
  • 4 設定在 settings.json 中,不需要修改程式碼,純設定驅動
ℹ️

一般聲明

本站提供之資訊僅供參考,不保證其完整性與正確性。使用者應自行判斷資訊之適用性。

意見反饋