CC Guide
中級

Hook でツール実行を自動化する

PreToolUse, PostToolUse, SessionStart などのフックを使って、ツール実行前後に自動処理を組み込む方法

hooksautomationconfiguration

クイック実践ガイド -- Hooksの設定をすぐ試せるレシピ集です。体系的に学びたい方は Hooks自動化ガイド をご覧ください。

Hook でツール実行を自動化する

Claude Code のフックシステムを使うと、ツールの実行前後にカスタムスクリプトを自動実行できます。コードフォーマット、型チェック、セキュリティスキャンなどを自動化して、コード品質を維持しましょう。

フックのイベント種別

イベントタイミングMatcher の有無
PreToolUseツール実行前あり(ツール名、正規表現可)
PostToolUseツール実行後あり(ツール名、正規表現可)
Notification通知送信時なし
UserPromptSubmitユーザー入力時なし
Stopメインエージェント完了時なし
SubagentStopサブエージェント完了時なし
PreCompactcompact 実行前manual / auto
SessionStartセッション開始時startup / resume / clear / compact
SessionEndセッション終了時なし
InstructionsLoadedCLAUDE.md/rules ロード時session_start, compact 等

設定例: Edit 後の自動フォーマット

settings.jsonhooks ブロックに設定します。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write|MultiEdit",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write $CLAUDE_FILE_PATH 2>/dev/null"
          }
        ]
      }
    ]
  }
}

設定例: TypeScript ファイル編集後の型チェック

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "if [[ \"$CLAUDE_FILE_PATH\" == *.ts || \"$CLAUDE_FILE_PATH\" == *.tsx ]]; then npx tsc --noEmit 2>&1 | head -20; fi"
          }
        ]
      }
    ]
  }
}

終了コードの意味

コード意味動作
0成功stdout がユーザーに表示
2ブロックstderr が Claude へフィードバックされる
その他非ブロックエラーstderr がユーザーに表示

終了コード 2 を使うと、Claude にフィードバックを返して操作を修正させることができます。

非同期フック

async: true を設定すると、Claude の処理をブロックせずにフックを実行できます。

{
  "type": "command",
  "command": "notify-send 'Claude Code: Task complete'",
  "async": true,
  "timeout": 30
}

実践的なフック構成

目的イベントMatcher
編集後にフォーマットPostToolUseEdit|Write
Push 前にレビューPreToolUseBash(git push:*)
セッション開始時にコンテキスト注入SessionStartstartup
compact 前に状態保存PreCompactmanual
console.log 検出PostToolUseEdit

フックは軽量なスクリプトに保ち、重い処理は async: true で実行しましょう。


あわせて読む

関連コンテンツ