- 通知:自訂當 Claude Code 等待您的輸入或執行某些操作的權限時如何通知您。
- 自動格式化:在每次檔案編輯後,在 .ts 檔案上執行
prettier、在 .go 檔案上執行gofmt等。 - 日誌記錄:追蹤和計算所有執行的命令以進行合規性或除錯。
- 回饋:當 Claude Code 產生不遵循您的程式碼庫慣例的程式碼時提供自動回饋。
- 自訂權限:阻止對生產檔案或敏感目錄的修改。
鉤子事件概述
Claude Code 提供多個鉤子事件,在工作流程的不同點執行:- PreToolUse:在工具呼叫之前執行(可以阻止它們)
- PostToolUse:在工具呼叫完成後執行
- UserPromptSubmit:當使用者提交提示時執行,在 Claude 處理之前
- Notification:當 Claude Code 傳送通知時執行
- Stop:當 Claude Code 完成回應時執行
- SubagentStop:當子代理任務完成時執行
- PreCompact:在 Claude Code 即將執行壓縮操作之前執行
- SessionStart:當 Claude Code 啟動新工作階段或繼續現有工作階段時執行
- SessionEnd:當 Claude Code 工作階段結束時執行
快速入門
在此快速入門中,您將新增一個鉤子來記錄 Claude Code 執行的 shell 命令。先決條件
安裝jq 以在命令列中進行 JSON 處理。
步驟 1:開啟鉤子設定
執行/hooks斜線命令並選擇 PreToolUse 鉤子事件。
PreToolUse 鉤子在工具呼叫之前執行,可以阻止它們,同時向 Claude 提供有關如何執行不同操作的回饋。
步驟 2:新增匹配器
選擇+ Add new matcher… 以僅在 Bash 工具呼叫上執行您的鉤子。
為匹配器輸入 Bash。
您可以使用
* 來匹配所有工具。步驟 3:新增鉤子
選擇+ Add new hook… 並輸入此命令:
步驟 4:儲存您的設定
對於儲存位置,選擇User settings,因為您正在記錄到您的主目錄。此鉤子將適用於所有專案,而不僅僅是您目前的專案。
然後按 Esc 直到您返回 REPL。您的鉤子現已註冊!
步驟 5:驗證您的鉤子
再次執行/hooks 或檢查 ~/.claude/settings.json 以查看您的設定:
步驟 6:測試您的鉤子
要求 Claude 執行簡單命令(如ls)並檢查您的日誌檔案:
更多範例
如需完整的範例實作,請參閱我們公開程式碼庫中的 bash 命令驗證器範例。
程式碼格式化鉤子
編輯後自動格式化 TypeScript 檔案:Markdown 格式化鉤子
自動修復 markdown 檔案中遺失的語言標籤和格式化問題:.claude/hooks/markdown_formatter.py:
- 偵測未標記程式碼區塊中的程式設計語言
- 為語法突出顯示新增適當的語言標籤
- 修復過度的空白行,同時保留程式碼內容
- 僅處理 markdown 檔案(
.md、.mdx)