Claude Codeの仕組み講座

区分2 仕事に合わせて組む★★

No.06 フック

フックは「この瞬間には必ずこれをやる」という自動の仕掛けです。スキルと違ってAIの判断に関係なく動くのが一番の特徴なので、この単元はそこだけ確実に持ち帰ってください。
目次
  1. 第0章 前提知識
  2. 第1章 フックの中身
  3. 第2章 使う時の注意
  4. 確認問題

第0章 前提知識

① フック :決まった瞬間に必ず動く仕掛け

たとえ話にします。 会社の入口にある「入退室のたびに鳴るチャイム」です。誰がどんな気分で通っても、通れば必ず鳴ります。 Claude Codeでも、「道具を使う前」「道具を使った後」「返事を終えた時」など決まった瞬間に、指定した命令(コマンド)を自動で動かせます。

② スキルとの違い

動くかどうか たとえ
スキル AIが判断して使う 棚の業務マニュアル
フック AIの判断に関係なく必ず動く 入口のチャイム

「毎回、確実に」やりたいことはフック。「状況を見て上手に」やりたいことはスキルです。

なお CLAUDE.md は毎回読まれる決まりですが、AIへの「お願い」です。絶対に外せない事は、deny(No.04)かフック(No.06)で仕組みにします。

第1章 フックの中身

内容は大きく3つです。

① 動く瞬間(イベント) 必ず覚える

「イベント」とは、フックが動く「瞬間」の名前のことです。名前は英語で、Pre=前、Post=後、ToolUse=道具を使うこと、と読めば意味が分かります。よく使うのは次の4つです。

ほかに、会話の始まり(SessionStart)などもあります。全部は覚えなくて大丈夫です。

② 書く場所と形 必ず覚える

設定ファイル(Claude Codeの動きを決める settings.json。No.05で詳しくやります)の hooks という項目に書きます。置き場所は、自分の全作業場に効かせるなら ~/.claude/settings.json(これを「ユーザー設定」と呼びます)、その作業場だけなら .claude/settings.json です。 「どの道具の時に動かすか」は matcher(絞り込みの条件。空欄なら全部の道具)で絞れます(例:ファイルを書いた時だけ)。

{
  "hooks": {
    "Notification": [
      { "matcher": "", "hooks": [ { "type": "command",
        "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'" } ] }
    ]
  }
}

Claudeが入力待ちになった時に、Macの通知を出す例です(公式ガイドの例)。osascript は、Macの機能を文字の命令で動かす道具で、ここでは通知の表示に使っています。

○ よくある勘違い:「フックはAIにお願いする仕組み」→ ×。AIではなくClaude Code本体が動かします
○ 関係する単元:No.05 設定ファイル(書く場所)、No.03 スキル(判断して動く側)

③ 何に使えるか さらっと

止める時は、命令の終了コードを 2 にして理由を返します。終了コードとは、命令が終わる時に返す番号のことで、0 は成功、2 はフックでは「止めて」の合図です。あなたの環境にも、返事を終える時に動くフック(Stop)と、プロンプト(あなたが送る依頼文)を送った時に動くフックが入っています。

第2章 使う時の注意

① 必ず動くので、慎重に 必ず覚える

必ず動くのは強みですが、間違った命令を入れると毎回間違えます。小さく作って、1つずつ動きを確かめます。会話の入力欄で /hooks と打つと(/ で始まる、操作の呼び出しです)、いま入っているフックを見られます。

フック=AIの判断と無関係に、決まった瞬間に必ず動く。確実さが欲しい物はフック、判断が欲しい物はスキル。

確認問題

問1 「返事が終わるたびに、必ずMacに通知を出したい」。向いているのは?

問2 フックを自分の全作業場で使いたい時の書き場所は?

出典:Claude Code 公式ドキュメント「Automate actions with hooks」(https://code.claude.com/docs/en/hooks-guide )/手元の ~/.claude/settings.json の hooks