Hooksとは
Hooksは、Claude Codeのツール実行イベントに応じてシェルコマンドを自動実行する仕組みです。コード編集後のフォーマット、コミット前のチェックなど、定型作業を自動化できます。
設定場所
// .claude/settings.json
{
"hooks": {
"postToolUse": [
{
"matcher": "Edit|Write",
"command": "npx prettier --write $CLAUDE_FILE_PATH"
}
]
}
}
フックの種類
| フック | タイミング | 用途 |
|---|---|---|
preToolUse |
ツール実行前 | バリデーション、確認 |
postToolUse |
ツール実行後 | フォーマット、チェック |
notification |
通知時 | 外部連携 |
実践レシピ
1. 自動フォーマット
ファイル編集後にPrettierを自動実行:
{
"hooks": {
"postToolUse": [
{
"matcher": "Edit|Write",
"command": "npx prettier --write $CLAUDE_FILE_PATH"
}
]
}
}
2. ESLint自動チェック
TypeScriptファイル編集後にlintチェック:
{
"hooks": {
"postToolUse": [
{
"matcher": "Edit",
"command": "npx eslint $CLAUDE_FILE_PATH --fix --quiet 2>/dev/null || true"
}
]
}
}
3. 危険なコマンドのブロック
本番データベースへの接続を防止:
{
"hooks": {
"preToolUse": [
{
"matcher": "Bash",
"command": "echo $CLAUDE_TOOL_INPUT | grep -q 'production' && echo 'BLOCKED: production access' && exit 1 || exit 0"
}
]
}
}
注意点
- フックのコマンドがエラー(exit code != 0)を返すと、ツール実行がブロックされます
preToolUseで exit 1 を返すとツール実行をキャンセルできます- 重いフックはClaude Codeの応答速度に影響するため、軽量に保ちましょう
- フックの出力はClaude Codeのコンテキストに含まれます