「毎回ちゃんと整形してね」「危ないコマンドは流さないで」。そう毎回お願いするのは疲れるし、何より忘れます。Hooks は、その“お願いベース”をやめて仕組みで強制するための機能です。第6回は Hooks(フック)。これまでとは毛色が違います。
このシリーズ(全13回+番外編・拡張編)
- 基礎 ― 全体像と拡張機能の地図
- Skills(学習編)― 繰り返す手順を覚えさせる
- Skills(実践編)― 作って、つまずいて、直す
- Subagents(学習編)― 作業を別の文脈に切り出す
- Subagents(実践編)― 温泉宿を調べて比較する
- Hooks(学習編)― 特定のタイミングで自動実行する(この記事)
- Hooks(実践編)― 編集したら自動でチェックを走らせる
- MCP(学習編)― 外部サービスへの接続口
- MCP(実践編)― Google ドライブ連携でつまずいた話
- Plugin(学習編)― 作った部品をひとつの箱にまとめる
- Plugin(実践編)― 便利設定を箱に詰めて配る
- Marketplace(学習編)― 箱を並べて配る
- Marketplace(実践編)― お店に公開し、取り込む
- 番外編 ― 拡張機能の選び方チートシート
- 拡張編① Agent Teams(学習編)― 複数のAIをチームで動かす
- 拡張編② Agent Teams(実践編)― 3人チームで多角的にレビューする
Hooks とは ― イベントで自動的にスクリプトを実行する
Hooks は、特定のタイミング(イベント)で自動的にスクリプトを実行する仕組みです。Git を使ったことがあれば「Git hooks の Claude Code 版」と考えると分かりやすいです。
ここがこれまでとの決定的な違いです。Skills や Subagents は「Claude にお願いして、やってくれたらラッキー」。一方 Hooks は、条件に合致すれば、頼まなくても毎回必ず動きます。「賢いお願い」ではなく「機械的なルール」。だから“やってくれなかった”が起きません。
動き出すタイミングと処理の種類
フックが動き出すタイミング(これを「発火」と呼びます)には、ツールを使う前後・作業の開始や終了など、複数のきっかけが用意されています。実行できる処理も、コマンド実行・外部サービスへの通信・AIへの追加指示・別の作業担当(Subagent)の呼び出しなど複数あります。
| 代表的なイベント | 発火タイミング |
|---|---|
PreToolUse | ツールを使う「前」(危険な操作のブロックに使える) |
PostToolUse | ツールを使った「後」(編集後の整形などに使える) |
SessionStart / Stop | セッションの開始・終了(通知や後片付けに使える) |
典型的な使い道
- Claude がファイルを書いたら自動で lint(コード整形・チェック)を走らせる
rm -rfのような危険なコマンドを実行前にブロックする- タスクが終わったら通知を飛ばす
設定例 ― settings.json で「イベント・対象・処理」を指定する
設定は settings.json という設定ファイルに書きますが、自分でファイルを開く必要はありません。Claude Code に「ファイルを書いたら自動でチェックを走らせるフックを設定して」と言葉で頼めば書き込んでくれます(画面の案内に沿って選んでいく形で設定することもできます)。書式は、きっかけとなるイベント・反応する対象(matcher。マッチャーと読みます)・実行する処理の3つを指定する形です。たとえば「Write(ファイルへの書き込み)ツールを使った後に整形・チェックを走らせる」設定は、次のようになります。
matcher が「どのツールに反応するか」、command が「何を実行するか」です。これで、Claude がファイルを書くたびに毎回必ず lint が走ります。「整形して」とお願いし忘れても、抜け漏れが起きません。
まとめ
- Hooks は特定のイベントで自動・確実にスクリプトを実行する仕組み(≒ Git hooks の Claude Code 版)。
- AI の判断に依存せず、条件に合えば毎回必ず動くのが最大の価値。
settings.jsonに「イベント・matcher・処理」を書く。整形・危険操作のブロック・通知などに向く。
次回は Hooks の実践編。この記事の考え方そのままに、「編集したら自動でチェックを走らせる」フックを、ターミナルを開かず Claude に頼んで設定し、実際に動かしてみます。