Claude Code:活用 Hooks 打造更聰明可靠的開發流程

更新 發佈閱讀 10 分鐘
本文整理自 Anthropic Academy

Claude Code 提供了一套 可自動化執行的 Hooks 機制,幫助我們在大型專案中避免常見錯誤、保持程式碼品質穩定。這篇文章將分享幾個實用的 Claude Code Hooks 範例與進階技巧,讓你打造更聰明、更可靠的開發流程。

Claude Code 之所以會幫忙寫程式,我簡單理解:有點像是一個中繼站把使用者跟 Claude 拉起來,而 Hooks 會插在 Claude code 跟 Claude 之間去介入,你可以再去做一些你想指定的任務。

截圖自Anthropic Academy

截圖自Anthropic Academy

Hooks 常用種類如下:

  • PreToolUse:function call 之前執行
  • PostToolUser:function call 之後執行
  • Notification:當 Claude Code 傳送通知時觸發
  • Stop:Claude 回覆結束時觸發
  • 還有一些... e.g. SubagentStop, PreCompact, ...

工具列表(Tool Names)如下:

  • Read:讀取檔案內容(如讀取原始碼、設定檔等)
  • Edit / MultiEdit:編輯現有檔案(可用於小幅度或多段編輯)
  • Write:建立新檔案並寫入內容
  • Bash:執行 Shell 指令或腳本
  • Glob:依樣式條件(如 *.ts)尋找檔案或資料夾
  • Grep:在檔案中搜尋特定字串內容
  • Task:產生 Claude 子代理任務,處理更複雜目標
  • WebFetch / WebSearch:存取或搜尋網頁資源
  • 還有:NotebookRead, NotebookEdit, TodoWrite, ...

講白了 Claude Code 作為中介,使用「工具」作為溝通邏輯,分派工作給 Claude。

Hooks 設定位置

使用 Claude Code 時,所有設定都會藏在專案(或家目錄)底下的「.claude」資料夾當中。Hooks 也會在此設定。

截圖自Anthropic Academy

截圖自Anthropic Academy

常用設定

設定 PreToolUse

PreToolUse Hook 會在 Claude 執行某個工具之前觸發,並允許你審查其即將執行的操作。你可以根據工具名稱與參數做判斷:

"PreToolUse": [
{
"matcher": "Read",
"hooks": [
{
"type": "command",
"command": "node /home/hooks/read_hook.ts"
}
]
}
]

在這個例子中:

  • 每當 Claude 嘗試使用 Read 工具時,就會先執行指定的指令 read_hook.ts
  • 你的命令會從標準輸入(stdin)接收到工具調用的 JSON 詳細資料
  • 然後你可以根據這些資訊做出兩種決策:
    1. 允許:回傳 exit code 0,Claude 將正常繼續執行工具
    2. 阻擋:回傳 exit code 2,Claude 將中止該操作,並顯示 stderr 作為錯誤提示

設定 PostToolUse

PostToolUse Hook 會在 Claude 執行工具 之後 觸發,因此無法阻擋操作。但你可以用來進行:

  • 檔案格式化(例如剛寫入或編輯的檔案)
  • 對 Claude 回傳附加訊息或後處理結果
"PostToolUse": [
{
"matcher": "Write|Edit|MultiEdit",
"hooks": [
{
"type": "command",
"command": "node /home/hooks/edit_hook.ts"
}
]
}
]

在這段設定中:

  • 當 Claude 執行檔案寫入或編輯後
  • 就會自動執行 edit_hook.ts
  • 這個腳本可以讀取 Claude 剛剛操作的內容,例如格式、檔名、變更差異等等,並進行額外後處理

實際可能應用場景

以下是 Claude Code hooks 官方認為在實務上常見的幾種應用方式:

  • 程式碼格式化:在 Claude 編輯完檔案後自動執行 formatter
  • 自動化測試:當檔案變動時觸發單元測試或整合測試
  • 存取控制:阻擋 Claude 讀取或編輯特定敏感檔案
  • 程式品質檢查:執行 linter 或 type checker,並將錯誤回饋給 Claude
  • 存取記錄與稽核:記錄 Claude 操作過的檔案或內容
  • 命名規則 / 結構驗證:自動檢查變數命名、檔案路徑、模組歸屬等規範

最常用的兩個 Hooks:

  • PreToolUse 給你預防與限制 Claude 行為的能力
  • PostToolUse 則提供擴充、審查、強化 Claude 行為的機會

官方範例

1. 防止 Claude 閱讀敏感檔 .env

假設使用者輸入 "read a .env file",但我們不想要 Claude 去讀取。

因此或許我們可以:

使用 PreToolUse Hook 監控 Claude 使用 ReadGrep 工具時讀取資料,如果 Claude 試圖閱讀 .envsecrets/ 等敏感目錄,則跳出 Exit Code 2 以阻擋操作。

​以下是範例 settings.local.json <- Claude Code 設定檔

{
"hooks": {
"PreToolUse": [
{
"matcher": "Read|Grep",
"hooks": [
{
"type": "command",
"command": "node ./hooks/read_hook.js"
}
]
},
]
}
...
}

read_hook.js

async function main() {
const chunks = [];
for await (const chunk of process.stdin) {
chunks.push(chunk);
}

const toolArgs = JSON.parse(Buffer.concat(chunks).toString());
// readPath is the path to the file that Claude is trying to read
const readPath = toolArgs.tool_input?.file_path || toolArgs.tool_input?.path || "";

// TODO: ensure Claude isn't trying to read the .env file

if (readPath.includes(".env")) {
console.error("you cannot read .env files");
process.exit(2);
}
}

main();

2. TypeScript 類型檢查自動修復

問題情境:當你要求 Claude 新增一個函式參數,Claude 常常會只修改函式定義,卻漏改其他呼叫處,造成類型錯誤。

解法:使用 PostToolUse Hook 在 Claude 修改任何檔案後,立即執行 tsc --noEmit,擱取類型錯誤,並將錯誤回饋給 Claude,讓 Claude 自動修正確保程式碼無類型錯誤。

3. 強者大大分享製作「語音通知系統」

強者大大分享的範例是,在任務結束時執行預先設計好的 chatgptsay.sh ,這個功能是把你給定message 用 gpt-4o-mini-tts 讀出來。

也就是說,看起來是在 Notification Hook 上做設計,加入這個機制。所以在每次任務完以後,就會有聲音告訴你 Claude 做了啥XDD

使用 Hooks 安全建議

截圖自Anthropic Academy

截圖自Anthropic Academy

  1. 驗證並清淨輸入:不能直接信任 stdin JSON 中的資料
  2. 總是加上引號:對 shell 變數用 "$VAR" 而非 $VAR
  3. 防禦路徑繞迴:檢查 file_path 是否包含 ..
  4. 使用絕對路徑:避免相對路徑被抽離環境用錯(重要)
  5. 跳過敏感檔案:如 .env.git/、ssh keys 等
留言
avatar-img
CT
99會員
93內容數
加入沙龍追蹤 CT 更多文章!
CT的其他內容
2025/06/20
自從 Anthropic 釋出 Claude Code 之後,近幾週開始有人認為可以取代、甚至超越 Cursor 等 AI 寫程式工具!以下整理我最愛、最推薦新手立即上手的功能,也分享幾個小技巧,希望幫助你快速體驗 Claude Code 的魅力。
Thumbnail
2025/06/20
自從 Anthropic 釋出 Claude Code 之後,近幾週開始有人認為可以取代、甚至超越 Cursor 等 AI 寫程式工具!以下整理我最愛、最推薦新手立即上手的功能,也分享幾個小技巧,希望幫助你快速體驗 Claude Code 的魅力。
Thumbnail
2025/06/20
此文章翻譯自 Claude 官方文件,提供使用Claude Code的進階技巧,包含設定CLAUDE.md、整合工具、常見工作流程(例如測試先行、視覺輔助)、優化工作流程技巧(例如清楚指令、提供視覺參考、及早糾正)、以及運用headless模式、平行運行多個Claude實例等進階應用。
Thumbnail
2025/06/20
此文章翻譯自 Claude 官方文件,提供使用Claude Code的進階技巧,包含設定CLAUDE.md、整合工具、常見工作流程(例如測試先行、視覺輔助)、優化工作流程技巧(例如清楚指令、提供視覺參考、及早糾正)、以及運用headless模式、平行運行多個Claude實例等進階應用。
Thumbnail
2025/06/19
本文將介紹一系列 Claude Code 安裝、初步使用與一些「你必須要知道」且「很多人不知道」的功能! 將 Claude Code 融合在 VS Code / Cursor... 中!(本文以 Cursor 為例) 安裝在 Windows 可能會遇到的問題 安裝 目前僅支援 Mac, Li
Thumbnail
2025/06/19
本文將介紹一系列 Claude Code 安裝、初步使用與一些「你必須要知道」且「很多人不知道」的功能! 將 Claude Code 融合在 VS Code / Cursor... 中!(本文以 Cursor 為例) 安裝在 Windows 可能會遇到的問題 安裝 目前僅支援 Mac, Li
Thumbnail
看更多
你可能也想看
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
確保沒有遺漏或錯誤 程式的完整資訊資料對於程式設計至關重要。這是因為只有透過完整的資訊,我們才能確保在程式設計中沒有任何遺漏或錯誤。最終,後台管理扮演著管理系統中所有動作和行為是否符合特定標準的重要角色。 採取不符合預期的行動 這種符合性的重要性在於,當我們設計程式時,希望使用者按照預期的方式
Thumbnail
確保沒有遺漏或錯誤 程式的完整資訊資料對於程式設計至關重要。這是因為只有透過完整的資訊,我們才能確保在程式設計中沒有任何遺漏或錯誤。最終,後台管理扮演著管理系統中所有動作和行為是否符合特定標準的重要角色。 採取不符合預期的行動 這種符合性的重要性在於,當我們設計程式時,希望使用者按照預期的方式
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
當你在開發程式時,難免會遇到各種錯誤和異常情況。這些錯誤可能是因為代碼中的錯誤、外部資源無法訪問或其他不可預期的狀況。為了提高程式的可靠性、穩定性和可維護性,我們使用「例外處理」來處理這些異常情況。
Thumbnail
當你在開發程式時,難免會遇到各種錯誤和異常情況。這些錯誤可能是因為代碼中的錯誤、外部資源無法訪問或其他不可預期的狀況。為了提高程式的可靠性、穩定性和可維護性,我們使用「例外處理」來處理這些異常情況。
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
這篇內容,將會講解什麼是方法,以及與方法相關的知識。包括定義Method、Method Variable 方法變數、跨區使用Method、使用函式時要注意括號。
Thumbnail
這篇內容,將會講解什麼是方法,以及與方法相關的知識。包括定義Method、Method Variable 方法變數、跨區使用Method、使用函式時要注意括號。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
建立自己的Module有哪些好處?
Thumbnail
建立自己的Module有哪些好處?
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News