mcpField
M
meta-hook-creator

meta-hook-creator

github.com/oakossエージェントワークフロー2091 回インストール10 週間前に更新
リポジトリ

meta-hook-creator について

Claude Codeのライフサイクルフックを設定するスキルです。自動実行するシェルコマンド、プロンプト、エージェント評価を扱い、イベント、マッチャー、判定、設定上の注意点を説明します。

主な機能

  1. 01ライフサイクルイベントとマッチャー
  2. 02ツール呼び出しの許可、拒否、変更
  3. 03コマンド、プロンプト、エージェントのフック
  4. 04フックの入出力規約
  5. 05設定上の注意点と安全策

活用シーン

  1. 01リスクのあるツール呼び出しの阻止
  2. 02編集後のファイル自動フォーマット
  3. 03プロジェクト固有のプロンプト検証
  4. 04テストや通知の自動実行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oakoss/agent-skills --skill meta-hook-creator

インストール後、Claude Code で/meta-hook-creatorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
event-types.md
hook-configuration.md
templates.md
scripts/
validate-hook.py

詳細

フック作成ツール

概要

Claude Code のフックは、特定のライフサイクルのタイミングで自動的に実行される、ユーザー定義のシェルコマンド、LLM プロンプト、またはエージェントによる評価です。フックは標準入力経由で JSON コンテキストを受け取り、処理を行い、終了コード、標準出力、標準エラー出力を通じて結果を伝えます。

使用する場面: 危険なコマンドのブロック、書き込み後の自動フォーマット、機密ファイルの保護、カスタム通知、環境設定、プロジェクト規約の適用、安全なツールの自動承認、変更後のテスト実行。

使用しない場面: 静的なコンテキストの注入(CLAUDE.md を使用)、単純な権限ルール(許可リストの設定を使用)、一度限りの設定(シェルスクリプトを直接使用)。

クイックリファレンス

パターンイベントマッチャー主なポイント
ツール呼び出しをブロックPreToolUseツール名終了コード 2、または JSON の permissionDecision: "deny"
ツールを自動承認PreToolUseツール名JSON の permissionDecision: "allow"
ツール入力を変更PreToolUseツール名変更したパラメーターを含む JSON の updatedInput
書き込み後にフォーマットPostToolUseWrite|Editフォーマッターを実行し、終了コード 0 を返す
ツールの失敗を記録PostToolUseFailureツール名ツールがエラーをスローするか、失敗を返したときに実行される
権限リクエストを処理PermissionRequestツール名JSON の decision.behavior: "allow" または "deny"
ユーザープロンプトを検証UserPromptSubmitマッチャーなし終了コード 2 でプロンプトをブロックし、標準出力でコンテキストを追加
デスクトップ通知Notification通知タイプpermission_prompt、idle_prompt など
続行を強制Stopマッチャーなし理由を含む JSON の decision: "block"
サブエージェントのライフサイクルSubagentStopエージェントタイプStop と同じ決定制御
環境設定SessionStartソースタイプCLAUDE_ENV_FILE に書き込んで環境変数を保持する
セッションのクリーンアップSessionEnd終了理由終了をブロックできない
圧縮前のコンテキストPreCompactmanual|autoコンテキストの圧縮前に実行される
バックグラウンドタスク任意のイベント後任意コマンドフックに async: true を設定する
LLM による評価サポート対象のイベント任意単一ターンの LLM チェックには type: "prompt" を使用する
複数ターンの検証サポート対象のイベント任意ツールにアクセスできるサブエージェントには type: "agent" を使用する

よくある間違い

間違い正しいパターン
ツール呼び出しをブロックする目的で Exit 1 を使用するPreToolUse と PermissionRequest でブロックするには exit 2 を使用します
exit 2 で JSON を出力するJSON 出力が処理されるのは exit 0 の場合のみです。exit 2 では stderr が使用されます
settings.json に複雑な bash をインラインで記述するスクリプトファイルに切り出し、$CLAUDE_PROJECT_DIR で参照します
時間のかかるフックにタイムアウトを設定しないtimeout フィールドを設定します。デフォルトはコマンドが 600s、プロンプトが 30s、エージェントが 60s です
$CLAUDE_PROJECT_DIR を引用符で囲まない必ず引用符で囲みます:"$CLAUDE_PROJECT_DIR"/.claude/hooks/script.sh
すべてのフックで CLAUDE_ENV_FILE を使用できると思い込むSessionStart フックでのみ使用できます
Stop または UserPromptSubmit に matcher を追加するこれらのイベントは matcher を無視し、常に実行されます
PreToolUse のトップレベルで decision/reason を使用するhookSpecificOutput.permissionDecision と permissionDecisionReason を使用します
Stop フックで stop_hook_active を確認しない無限の継続ループを防ぐため、このフィールドを確認します
終了コードと JSON による判定を混在させるフックごとに、終了コードのみを使う方法か、exit 0 と JSON を使う方法のどちらかを選びます

委任

  • フックパターンの調査:Explore エージェントを使って、プロジェクト内の既存のフックを探します
  • フックのテストと検証:Task エージェントを使って、フックの動作を検証します
  • コードレビュー:code-reviewer エージェントにフックスクリプトのレビューを委任します

参考資料

コメント