Files
gh-otolab-ai-agent-prompts-…/hooks/README.md
2025-11-30 08:46:35 +08:00

117 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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日