「毎回ちゃんと整形してね」「危ないコマンドは流さないで」——そう毎回お願いするのは疲れるし、何より忘れます。Hooks は、その“お願いベース”をやめて仕組みで強制するための機能です。第6回は Hooks(フック)。これまでとは毛色が違います。
このシリーズ(全10回・順次追加)
Hooks とは ― イベントで自動的にスクリプトを実行する
Hooks は、特定のタイミング(イベント)で自動的にスクリプトを実行する仕組みです。Git を使ったことがあれば「Git hooks の Claude Code 版」と考えると分かりやすいです。
ここがこれまでとの決定的な違いです。Skills や Subagents は「Claude にお願いして、やってくれたらラッキー」。一方 Hooks は、条件に合致すれば、頼まなくても毎回必ず動きます。「賢いお願い」ではなく「機械的なルール」。だから“やってくれなかった”が起きません。
発火するタイミングと処理の種類
発火タイミングには、ツールを使う前後・セッションの開始や終了など、多数のイベントが用意されています(公式では十数種類)。実行する処理も、コマンド実行・HTTPリクエスト・プロンプト・Subagent 呼び出しなど複数あります。
| 代表的なイベント | 発火タイミング |
|---|---|
PreToolUse | ツールを使う「前」(危険な操作のブロックに使える) |
PostToolUse | ツールを使った「後」(編集後の整形などに使える) |
SessionStart / Stop | セッションの開始・終了(通知や後片付けに使える) |
典型的な使い道
- Claude がファイルを書いたら自動で lint(コード整形・チェック)を走らせる
rm -rfのような危険なコマンドを実行前にブロックする- タスクが終わったら通知を飛ばす
設定例 ― settings.json で「イベント・対象・処理」を指定する
設定は settings.json に書くか、対話的な /hooks コマンドで行います。書式は、イベント・対象(matcher)・実行する処理を指定する形です。下は「Write(書き込み)ツールの実行後に npm run lint を走らせる」例です。
matcher が「どのツールに反応するか」、command が「何を実行するか」です。これで、Claude がファイルを書くたびに毎回必ず lint が走ります。「整形して」とお願いし忘れても、抜け漏れが起きません。
まとめ
- Hooks は特定のイベントで自動・確実にスクリプトを実行する仕組み(≒ Git hooks の Claude Code 版)。
- AI の判断に依存せず、条件に合えば毎回必ず動くのが最大の価値。
settings.jsonに「イベント・matcher・処理」を書く。整形・危険操作のブロック・通知などに向く。
次回からは2回に分けて MCP(外部サービスへの接続口) を扱います。まず学習編で仕組みを押さえ、実践編では実際に Google ドライブと連携してつまずいた話を共有します。