ツール実行後にフックしたい
10. フックコマンド / 機能
PostToolUse事後処理
概要
ツールの実行が完了した後に呼び出されます。ファイル変更後の lint やフォーマット、テスト実行などに便利です。
設定例
// settings.json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write",
"hooks": [
{
"type": "command",
"command": "npx prettier --write \"$CLAUDE_FILE_PATH\" 2>/dev/null || true"
}
]
},
{
"matcher": "Edit",
"hooks": [
{
"type": "command",
"command": "npx eslint --fix \"$CLAUDE_FILE_PATH\" 2>/dev/null || true"
}
]
},
{
"matcher": "Write(*.test.ts)",
"hooks": [
{
"type": "command",
"command": "npm test -- --findRelatedTests \"$CLAUDE_FILE_PATH\" 2>&1 | head -20"
}
]
}
]
}
}こんな時に使う
- ファイル保存後に自動処理したい時
- 変更後に lint やフォーマットを実行したい時
- テストファイル更新時に自動テストしたい時
- ファイル変更をログに記録したい時
使い方
- 1PostToolUse イベントにフック定義を追加
- 2matcher で対象ツールやファイルパターンを指定
- 3環境変数 $CLAUDE_FILE_PATH で変更されたファイルパスを取得
- 4|| true を付けるとエラーでも続行
Tips
- フォーマッターやリンターの出力を Claude にフィードバックできる
- 2>/dev/null でエラー出力を抑制すると Claude が混乱しにくい
- head -20 などで出力を制限すると効率的
- Write と Edit の両方に設定すると漏れなく処理できる