Initial commit
This commit is contained in:
117
hooks/README.md
Normal file
117
hooks/README.md
Normal file
@@ -0,0 +1,117 @@
|
||||
# Hooks - Claude Codeフック集
|
||||
|
||||
Claude Codeのセッションやツール実行時に自動的に実行されるフックスクリプト集です。
|
||||
|
||||
## 利用可能なフック
|
||||
|
||||
### start-session.js
|
||||
**イベント**: SessionStart
|
||||
**目的**: セッション開始時に動作モードの設定を促す
|
||||
|
||||
セッション開始時にmode_listの実行と適切なモードの有効化を促します。
|
||||
セッションのソースタイプ(startup/resume/clear/compact)に応じて適切な指示を提供します。
|
||||
これにより、コンテキストリセット後も一貫した作業スタイルを維持できます。
|
||||
|
||||
### post-tool-use.sh
|
||||
**イベント**: PostToolUse (Bashツール限定)
|
||||
**目的**: cdコマンド実行後の現在ディレクトリをコンテキストに追加
|
||||
|
||||
Bashツールで`cd`コマンドが実行された際に、移動後の現在ディレクトリを`[cwd: /path/to/dir]`形式で
|
||||
コンテキストに追加します。これにより、ディレクトリ移動の追跡が容易になります。
|
||||
|
||||
## フックの仕組み
|
||||
|
||||
### 実行フロー
|
||||
1. Claude Codeが特定のイベント(SessionStart、PostToolUse等)を検出
|
||||
2. `~/.claude/settings.json`のmatcherパターンに一致するか確認
|
||||
3. 一致した場合、指定されたコマンドを実行
|
||||
4. フックスクリプトがJSON形式で追加コンテキストを出力
|
||||
5. Claude Codeがコンテキストを会話に追加
|
||||
|
||||
### JSON出力形式
|
||||
```json
|
||||
{
|
||||
"hookSpecificOutput": {
|
||||
"hookEventName": "EventName",
|
||||
"additionalContext": "追加するテキスト"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 新規フックの作成方法
|
||||
|
||||
### 1. スクリプトの作成
|
||||
```bash
|
||||
cat > hooks/my-hook.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
echo '{
|
||||
"hookSpecificOutput": {
|
||||
"hookEventName": "MyEvent",
|
||||
"additionalContext": "カスタムメッセージ"
|
||||
}
|
||||
}'
|
||||
EOF
|
||||
```
|
||||
|
||||
### 2. 実行権限の付与
|
||||
```bash
|
||||
chmod +x hooks/my-hook.sh
|
||||
```
|
||||
|
||||
### 3. settings.jsonへの登録
|
||||
```json
|
||||
"EventName": [
|
||||
{
|
||||
"matcher": "パターン",
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"command": "~/Develop/otolab/ai-agent-prompts/hooks/my-hook.sh"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
## 環境変数
|
||||
|
||||
フックスクリプト内で利用可能な環境変数(イベントによって異なる):
|
||||
|
||||
### PostToolUse
|
||||
- `CLAUDE_CODE_TOOL_NAME` - 実行されたツール名(例: "Bash", "Read", "Write")
|
||||
- `CLAUDE_CODE_TOOL_PARAMS` - ツールパラメータ(JSON文字列)
|
||||
- `CLAUDE_CODE_TOOL_RESULT` - ツール実行結果(利用可能な場合)
|
||||
|
||||
## デバッグ方法
|
||||
|
||||
### ログファイルへの出力
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# デバッグ情報をログファイルに記録
|
||||
echo "$(date): Hook executed" >> /tmp/hook-debug.log
|
||||
echo "Tool: $CLAUDE_CODE_TOOL_NAME" >> /tmp/hook-debug.log
|
||||
```
|
||||
|
||||
### 環境変数の確認
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# すべての環境変数を記録
|
||||
env > /tmp/hook-env.txt
|
||||
```
|
||||
|
||||
## ベストプラクティス
|
||||
|
||||
1. **軽量に保つ**: フックの実行時間を最小限に
|
||||
2. **エラーハンドリング**: 失敗してもセッションを妨げない
|
||||
3. **条件分岐**: 必要な場合のみ出力を生成
|
||||
4. **ログ記録**: デバッグ用のログは別ファイルに
|
||||
|
||||
## 注意事項
|
||||
|
||||
- フックスクリプトの出力はJSON形式である必要があります
|
||||
- 不正なJSON出力はエラーになる可能性があります
|
||||
- matcherパターンは正確に設定してください
|
||||
- 設定変更後はClaude Codeの再起動が必要です
|
||||
|
||||
---
|
||||
**作成**: 2025年10月6日
|
||||
Reference in New Issue
Block a user