フックとは何か、CLAUDE.md の決まりとの違いを知る

フックは、決まった場面で必ず動く仕組みです。部長(部門ごとのフォルダで動く Claude Code)がうっかり忘れても、仕組みのほうが動いてくれます。
私が実際に入れたフックを例に、仕組みと使い方をまとめました。
何度も英語の返答になっていた
Claude Code とのやりとりで、私が困っていたことがあります。返答が、ときどき英語になってしまうのです。
そのたびに、日本語で返答するよう頼み直していました。英語の返答が何度もくり返され、そのたびにイライラしました。
作業の記録を読み合わせて改善案を出す手順書(スキル)で振り返ると、「日本語で」と頼み直した回数は10回。
フックは必ず通る関所
そこで入れたのが、フックです。
公式の説明によれば、フックは決まった場面で自動で動く命令です。
場面とは、たとえばチャットを始めたとき、メッセージを送ったとき、返答が終わったときなど。動かすかどうかを AI に選ばせず、その場面が来たら必ず動きます。
たとえるなら、必ず通る関所です。決まった場面が来るたびに、関所で決まった確認が行われます。

返答のたびに日本語かを確かめる
私が入れたのは、部長の返答が終わるたびに動くフックです。調べるのは、返答の中の日本語の文字の割合。
日本語が少なすぎたら、部長が返答を終えようとしたところでフックが呼び止め、日本語で書き直させます。日本語なら、そのまま通します。
その命令の中身は、小さなプログラムです。といっても、私が書いたわけではありません。部長に頼んで作ってもらいました。
返答の言葉を確かめる役目までフックに任せられると分かり、感心しました。
CLAUDE.md の決まりとの違い
「日本語で返答する」と、CLAUDE.md に書いておく方法もあります。ただ、公式の説明では、CLAUDE.md は文脈として読まれるもので、必ず守らせる設定ではありません。
フックは違います。決まった場面が来れば、必ず動く。忘れては困ることを、部長の注意力だけに頼らずに済むわけです。
CLAUDE.md の基本は、こちらの記事で解説しています。
関連記事:CLAUDE.md とは何か、プロンプトとの違いを知る
CLAUDE.md・スキル・サブエージェント・フックの使い分けは、こちらの記事にまとめています。
関連記事:CLAUDE.md・スキル・サブエージェント・フックの使い分け
フックの置き場所
フックは、Claude Code の動き方を決める設定ファイル(settings.json)に書きます。
おもな置き場所は2つ。パソコンの中のどのフォルダにも効かせるなら自分用の設定ファイルに、1つの部門だけなら、その部門のフォルダの設定ファイルに書きます。
私の日本語のフックは、自分用の設定ファイルに置きました。そのうえで、本部(すべてのプロジェクトを入れた親のフォルダ)の中のチャットだけで動くようにしてあります。
見つかった穴もすぐに直った
フックを入れたのは、ゲーム事業部のチャットでした。ところが、制作部門のチャットで、英語の返答がそのまま出てきました。
私が気づいて伝え、部長に調べてもらうと、穴が見つかりました。寡黙な職人(サブエージェント)の報告のあとの英語の返答を、その前の日本語の返答と混ぜて数えていたため、見逃していたのです。
部長はすぐに直してくれたので、不満はありませんでした。直したあとのフックは、職人の報告が届いたらそこで区切り、そのあとの返答だけで確かめます。
サブエージェントについては、こちらの記事で解説しています。
