Claude Codeフックシステム
ツールの実行前後の処理や、ツールの利用可否判断、利用記録といった様々な場面で、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本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
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
$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. 下の青いボタンを押して
claude-code-hooks.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
claude-code-hooksフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
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
公式ドキュメント
- https://code.claude.com/docs/en/hooks - Hooks リファレンス
- https://code.claude.com/docs/en/settings - 設定構成
その他のリソース
./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_DIRfor 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
- https://code.claude.com/docs/en/hooks - Hooks reference
- https://code.claude.com/docs/en/settings - Settings configuration
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