jpskill.com
🛠️ 開発・MCP コミュニティ

Claude Codeフックシステム

claude-code-hooks

ツールの実行前後の処理や、ツールの利用可否判断、利用記録といった様々な場面で、Claudeが自動的に特定の処理を実行できる仕組みを構築・管理するSkill。

📜 元の英語説明(参考)

Claude Code hook system for pre/post tool execution. Triggers on: hooks, PreToolUse, PostToolUse, hook script, tool validation, audit logging.

🇯🇵 日本人クリエイター向け解説

一言でいうと

ツールの実行前後の処理や、ツールの利用可否判断、利用記録といった様々な場面で、Claudeが自動的に特定の処理を実行できる仕組みを構築・管理するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o claude-code-hooks.zip https://jpskill.com/download/5904.zip && unzip -o claude-code-hooks.zip && rm claude-code-hooks.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/5904.zip -OutFile "$d\claude-code-hooks.zip"; Expand-Archive "$d\claude-code-hooks.zip" -DestinationPath $d -Force; ri "$d\claude-code-hooks.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して claude-code-hooks.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → claude-code-hooks フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-17
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Claude Code Hooks

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 すべてのツール使用をログに記録
カスタム承認 PermissionRequest Slack 通知
セッション初期化 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-patterns.md - 本番環境のセキュリティ

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

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Claude Code Hooks

Execute custom scripts before/after Claude Code tool invocations.

Quick Reference

Event When Has Matcher
PreToolUse Before tool execution Yes
PostToolUse After tool completes Yes
PermissionRequest Permission dialog shown Yes
Notification Notifications sent Yes
UserPromptSubmit User submits prompt No
Stop Agent finishes No
SubagentStop Subagent finishes No
PreCompact Before context compaction No
SessionStart Session begins/resumes No
SessionEnd Session ends No

Basic Configuration

Add to ~/.claude/settings.json or .claude/settings.local.json:

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

Matcher Patterns

Pattern Matches
"Write" Only Write tool
"*" or "" All tools
"mcp__*" All MCP tools
"Bash" Bash commands

Hook Script Requirements

#!/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

Common Use Cases

Use Case Event Example
Validate inputs PreToolUse Block dangerous commands
Audit logging PostToolUse Log all tool usage
Custom approval PermissionRequest Slack notification
Session init SessionStart Load project context

Security Checklist

  • [ ] Quote all variables: "$VAR" not $VAR
  • [ ] Validate paths (no .. traversal)
  • [ ] Use $CLAUDE_PROJECT_DIR for paths
  • [ ] Set reasonable timeouts
  • [ ] Handle jq parsing errors

Troubleshooting

# Debug hook loading
claude --debug

# List registered hooks
/hooks

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

Official Documentation

Additional Resources

  • ./references/hook-events.md - All events with input/output schemas
  • ./references/configuration.md - Advanced config patterns
  • ./references/security-patterns.md - Production security

See Also: claude-code-debug for troubleshooting, claude-code-headless for CLI automation