hookslisted
Install: claude install-skill kimny1143/claude-code-template
# hooks - Claude Code Hooks
Claude Code の Hook 作成・管理ガイド。
---
## 概要
Hooks はツール実行の前後に自動で実行されるスクリプト。
| タイプ | タイミング | 用途 |
|--------|-----------|------|
| PreToolUse | ツール実行**前** | 検証、危険操作ブロック |
| PostToolUse | ツール実行**後** | 提案、ログ��録 |
| Stop | 会話終了時 | クリーンアップ |
---
## Hook 作成
### 1. スクリプト作成
```bash
#!/bin/bash
# .claude/hooks/my-hook.sh
# 環境変数
# TOOL_NAME: ツール名 (Write, Edit, Bash, etc.)
# TOOL_INPUT: JSON��式の入力パラメータ
# 終了コード
# 0: 成功(許可)
# 1: 警告(許可、メッセージ表示)
# 2: ブロック(実行を停止)
# 例: 危険なコマンドをブロック
if echo "$TOOL_INPUT" | grep -q "rm -rf /"; then
echo "🚫 危険なコマンドをブロックしました" >&2
exit 2
fi
exit 0
```
### 2. 実行権限付与
```bash
chmod +x .claude/hooks/my-hook.sh
```
### 3. 設定ファイルに登録
```json
// .claude/settings.local.json
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "/path/to/project/.claude/hooks/my-hook.sh"
}
]
}
]
}
}
```
---
## 実用的な Hook 例
### PreToolUse: 危険操作ブロック
```bash
#!/bin/bash
# validate-dangerous-ops.sh
case "$TOOL_NAME" in
"Bash")
COMMAND=$(echo "$TOOL_INPUT" | jq -r '.command // empty')
# force push をブロック
if echo "$COMMAND" | grep -qE 'git push.*(--force|-f).*(main|master)'; then
echo "🚫 main/master への force push は禁止です" >&2
exit 2
fi
;;
"Write"|"Edit")
FILE_PATH=$(echo "$TOOL_INPUT" | jq -r '.file_path // empty')
# .env ファイル編集を警告
if echo "$FILE_PATH" | grep -qE '\.env'; t