フック
決まった操作をきっかけに自動で動く仕組み
このページのまとめ
フックは 「特定の出来事が起きたら自動でこれを実行する」設定です。~/.claude/settings.json に JSON 形式で記述します。PreToolUse(ツール実行前)・PostToolUse(ツール実行後)・Stop(セッション終了時)の 3 種類があります。 ファイル保存後の自動 Lint・コミット前のテスト確認・危険コマンドのブロックなど、Claude Code への指示なしで定型作業を完全自動化できます。
フックの仕組み
イベント発生
ファイル保存・コミット前・コマンド実行前など
フック起動
settings.json の設定に従い
自動実行完了
Lint・フォーマット・通知・ブロックなど
イベント駆動で自動化
ファイル保存・コミット前など特定のタイミングで自動実行
指示なしで動く
Claude Code への指示不要。終了コードで処理の続行/ブロックを制御
スキルと組み合わせ可
フックからスキルを自動呼び出して、高度なワークフロー自動化を実現
PreToolUse
ツール実行の直前
危険コマンドをブロック・バリデーション
PostToolUse
ツール実行の直後
自動フォーマット・Lint・テスト実行
Stop
セッション終了時
Slack通知・ログ記録・完了報告
フックで自動化できることの具体例
- ファイル保存時→ Lint(コードの品質チェック)・フォーマッターを自動実行
- コミット前→ テストが通るか確認し、失敗したらコミットをブロック
- コード変更時→ パスワード等の機密情報が含まれていないかスキャン
- コマンド実行前→ 危険なコマンド(rm -rf など)を検知してブロック
- セッション終了時→ Slack や通知ツールに作業完了を自動送信
フック設定ファイルの記述例(ESLint)
以下は ~/.claude/settings.json にフックを設定する例です。ファイル書き込み後に自動で ESLint を実行します。
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write",
"hooks": [
{
"type": "command",
"command": "npx eslint --fix $CLAUDE_TOOL_INPUT_FILE_PATH"
}
]
}
]
}
}フックのその他の設定例(Prettier・セキュリティ)
Prettier で自動フォーマット(PostToolUse)
ファイルを書き込むたびに Prettier が自動で整形します。手動でフォーマットする手間が完全になくなります。
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write",
"hooks": [
{
"type": "command",
"command": "npx prettier --write $CLAUDE_TOOL_INPUT_FILE_PATH"
}
]
}
]
}
}危険コマンドのブロック(PreToolUse)
rm -rf など取り消しのきかないコマンドを Claude が実行しようとしたとき、事前に止めることができます。
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "bash ~/scripts/check-dangerous-cmd.sh"
}
]
}
]
}
}フックの導入手順(3ステップ)
スクリプトを用意
Claude Navi または GitHub で使いたいスクリプトを入手
設定ファイルに追記
~/.claude/settings.json再起動して確認
Claude Code を再起動し動作確認
よくある質問
フックはどこに設定しますか?
~/.claude/settings.json(全プロジェクト共通のグローバル設定)に記述します。プロジェクト固有の設定は .claude/settings.json に書くこともできます。
フックのスクリプトはどの言語で書けますか?
Bash・Python・Node.js など、実行可能なスクリプトであれば言語は問いません。スクリプトファイルには実行権限(chmod +x)を付与してください。
PreToolUse でコマンドをブロックするにはどうすればよいですか?
スクリプトが終了コード 0 以外(非ゼロ)を返すと、Claude Code はそのツール実行をキャンセルします。標準出力に書いたメッセージはブロック理由として Claude に渡されます。
フックの設定を反映するには再起動が必要ですか?
はい、設定変更後は Claude Code を再起動すると有効になります。
スキルとフックはどう使い分けますか?
スキルは「/スキル名 と入力して手動で呼び出す指示書」です。フックは「特定のイベントが起きたら自動で実行される処理」です。組み合わせることで、スキルをフックで自動呼び出す高度な自動化も実現できます。