課程資訊
- 課程:Anthropic Courses — Claude Code in Action
- 章節:Part 3 · Section 1 — Hooks & SDK
- 📢 分享者:王以謙 | GitHub:yulin0629
學習目標
理解 Hooks 機制並實作自訂 hook,識別常見陷阱與注意事項,透過 Claude Code SDK 將 AI 能力整合進自有工具鏈與自動化流程
本章涵蓋主題與分享範圍
| Lesson | 主題 | 本次分享 |
|---|---|---|
| 312000 | Introducing hooks | ✅ |
| 312002 | Defining hooks | ✅ |
| 312003 | Implementing a hook | ✅ |
| 312004 | Useful hooks | ✅ |
| 312423 | Gotchas around hooks | ✅ |
| 312427 | Another useful hook | ✅ |
| 312001 | The Claude Code SDK | ✅ |
各 Lesson 速覽
1. Introducing hooks
Hooks 是 Claude Code 的攔截機制,可在工具呼叫前(PreToolUse)或後(PostToolUse)執行自訂命令,實現程式碼格式化、測試、存取控制等自動化流程。
→ 前往閱讀
2. Defining hooks
定義 Hook 的四個步驟:選擇 PreToolUse 或 PostToolUse、指定監聽的工具、撰寫接收 JSON stdin 的命令、透過 exit code 控制行為(0 放行、2 阻擋)。
→ 前往閱讀
3. Implementing a hook
實作一個 PreToolUse hook,阻止 Claude 讀取 .env 檔案。從建立 Node.js 腳本、解析 stdin JSON、檢查檔案路徑到以 exit code 2 阻擋敏感操作的完整流程。
→ 前往閱讀
4. Useful hooks
兩個實用的生產級 Hook:TypeScript 型別檢查 hook(編輯後自動執行 tsc 捕捉簽名不匹配),以及查詢重複偵測 hook(使用 Agent SDK 啟動獨立 Claude 實例檢查資料庫查詢是否重複)。
→ 前往閱讀
5. Gotchas around hooks
Hook 腳本應使用絕對路徑以防止路徑攔截攻擊,但這會讓設定難以在團隊間共享。解法是在 settings.example.json 中使用 $PWD 佔位符,搭配 init-claude.js 腳本在設定時自動替換為實際專案路徑。
→ 前往閱讀
6. Another useful hook
除了 PreToolUse 和 PostToolUse,Claude Code 還支援 Notification、Stop、SubagentStop、PreCompact、UserPromptSubmit 等 Hook 類型。建議先用 jq debug hook 檢查各 hook 的 stdin 結構,再實作正式邏輯。
→ 前往閱讀
7. The Claude Code SDK
Agent SDK 讓你從 TypeScript 或 Python 程式化驅動 Claude Code,提供與 CLI 相同的完整能力(檔案讀寫、工具呼叫),支援自訂 prompt、MCP servers、hooks、subagents 與工具白名單。
→ 前往閱讀
建議閱讀順序
- 先讀 Introducing hooks — 建立 Hook 機制的整體概念
- 接著 Defining hooks → Implementing a hook — 從定義到實作的完整流程
- 再讀 Useful hooks + Another useful hook — 了解進階應用場景與更多 Hook 類型
- 注意 Gotchas around hooks — 掌握安全性與團隊協作的注意事項
- 最後讀 The Claude Code SDK — 將 Claude Code 能力整合進自有工具鏈