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