mcpField
C
claude-code-hooks

claude-code-hooks

github.com/0xdarkmatterエージェントワークフロー7839 回インストール2 週間前に更新
リポジトリ

claude-code-hooks について

claude-code-hooksは、Claude Codeのツール呼び出しにフックを設定するスキルです。呼び出し前後のイベントでカスタムスクリプトを実行したい開発者向けに、マッチャー、設定、デバッグ、安全対策を説明します。

主な機能

  1. 01ツール呼び出し前後のスクリプト実行
  2. 02イベントとツールによるフックの照合
  3. 03権限・セッションイベントの設定
  4. 04標準入力からのJSON受信
  5. 05デバッグとスクリプト安全対策

活用シーン

  1. 01Bash実行前に危険なコマンドを遮断
  2. 02監査用にツール呼び出しを記録
  3. 03セッション開始時にプロジェクト情報を読み込む
  4. 04権限リクエストに独自の承認手順を設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/0xdarkmatter/claude-mods --skill claude-code-hooks

インストール後、Claude Code で/claude-code-hooksを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
.gitkeep
references/
configuration.md
security-patterns.md
hook-events.md
scripts/
.gitkeep

詳細

Claude Code フック

Claude Code のツール呼び出しの前後にカスタムスクリプトを実行します。

クイックリファレンス

イベントタイミングマッチャーあり
PreToolUseツール実行前はい
PostToolUseツール完了後はい
PermissionRequest権限ダイアログの表示時はい
Notification通知の送信時はい
UserPromptSubmitユーザーがプロンプトを送信した時いいえ
Stopエージェントの終了時いいえ
SubagentStopサブエージェントの終了時いいえ
PreCompactコンテキスト圧縮の前いいえ
SessionStartセッションの開始/再開時いいえ
SessionEndセッションの終了時いいえ

基本設定

~/.claude/settings.json または .claude/settings.local.json に追加します。

{
  "hooks": {
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{
        "type": "command",
        "command": "$CLAUDE_PROJECT_DIR/hooks/validate.sh",
        "timeout": 5000
      }]
    }]
  }
}

マッチャーパターン

パターンマッチ対象
"Write"Write ツールのみ
"*" または ""すべてのツール
"mcp__*"すべての MCP ツール
"Bash"Bash コマンド

フックスクリプトの要件

#!/bin/bash
# Receives JSON via stdin: { "tool_name": "...", "tool_input": {...} }
INPUT=$(cat)
TOOL=$(echo "$INPUT" | jq -r '.tool_name')

# Exit codes:
# 0 = Success (continue)
# 2 = Block with error (stderr shown to Claude)
# Other = Non-blocking error

よくあるユースケース

ユースケースイベント例
入力の検証PreToolUse危険なコマンドをブロック
監査ログPostToolUseすべてのツール使用を記録
カスタム承認PermissionRequestSlack 通知
セッションの初期化SessionStartプロジェクトのコンテキストを読み込む

セキュリティチェックリスト

  • すべての変数を引用符で囲みます。$VAR ではなく "$VAR" を使用します
  • パスを検証します(.. によるトラバーサルがないこと)
  • パスには $CLAUDE_PROJECT_DIR を使用します
  • 適切なタイムアウトを設定します
  • jq の解析エラーを処理します

トラブルシューティング

# Debug hook loading
claude --debug

# List registered hooks
/hooks

# Test script manually
echo '{"tool_name":"Bash"}' | ./hooks/validate.sh

公式ドキュメント

追加リソース

  • ./references/hook-events.md - 入力/出力スキーマを含むすべてのイベント
  • ./references/configuration.md - 高度な設定パターン
  • ./references/security-ops.md - 本番環境のセキュリティ

関連項目: トラブルシューティングについては claude-code-debug、CLI 自動化については claude-code-headless を参照してください

コメント