スキルアクティベーションフック
UserPromptSubmitフックがメッセージを解析し、キーワードにマッチしてスキルアクティベーションのヒントを追加することで、Claude Codeが正しいスキルを読み込み忘れることをなくします。
設定をやめて、構築を始めよう。
AIオーケストレーション付きSaaSビルダーテンプレート。
問題: Claude Codeに使うよう指示したスキルが読み込まれない。CLAUDE.mdにルールを移動しても結果は同じ。本来フレームワークが自動的に拾うはずのスキルを、毎回手動でリマインダーとして入力することになる。
即効策: フックがすべてのプロンプトを傍受し、適切なスキル推奨を末尾に付加できる。Claude側での記憶に依存しないため、忘れるという問題が解消される。
「help me implement a feature」というメッセージを送ると、Claudeの入力に実際に届くのは次のような内容だ:
help me implement a feature
SKILL ACTIVATION CHECK
CRITICAL SKILLS (REQUIRED):
-> session-management
RECOMMENDED SKILLS:
-> git-commits
ACTION: Use Skill tool BEFORE respondingClaudeはリクエストのすぐ隣に、引き込むべき正確なスキルを確認できる。推測も記憶も不要。
仕組み
フックが紐付くイベントは UserPromptSubmit だ。送信したものはすべてこのフローを通る:
- メッセージを入力 - 自然言語のリクエスト
- フックが傍受 - Claudeが何も受け取る前
- パターンマッチング - フックが
skill-rules.jsonでキーワードとインテントの一致を確認 - 推奨を追加 - マッチしたスキルがメッセージに付加される
- Claudeが両方受け取る - プロンプトとスキルガイダンスの両方
全体がミリ秒単位で完了する。体感できる遅延はない。
マッチングシステム
2つのストラテジーが並行して動く。
キーワードマッチングはリテラルな文字列チェックだ。「commit」や「git push」と書けば git-commits スキルが発火する。
インテントパターンは実際の言い回しに対してregexを使う。パターン (implement|build).*?feature は「let's implement this feature」も「build a new feature for me」も捉える。
設定: skill-rules.json
各スキルのトリガーは .claude/skills/skill-rules.json に記述する:
{
"skills": {
"session-management": {
"enforcement": "suggest",
"priority": "critical",
"promptTriggers": {
"keywords": ["feature", "implement", "build", "refactor"],
"intentPatterns": ["(implement|build).*?feature"]
}
},
"git-commits": {
"enforcement": "suggest",
"priority": "high",
"promptTriggers": {
"keywords": ["commit", "git push", "commit changes"],
"intentPatterns": ["(create|make).*?commit"]
}
}
}
}提案はプライオリティ別にグループ化される:
- Critical - 作業前に必ず読み込む
- High - 強く推奨
- Medium - 有用なコンテキスト
- Low - オプションの強化
自分の言い回しへのカスタマイズ
フックは語彙に合わせて柔軟に変えられる。「git push」の代わりに「push my code」と入力しがちな場合は追加すればいい:
"keywords": ["commit", "git push", "push my code", "commit changes"]新しいスキルを作ったときは、skill-rules.json でトリガーを編集する。そこに書いた語句を参考に、プロンプトの書き方も自然と揃ってくる。
セッションインテリジェンス
フックはすでに提案したものを記憶する。同じ会話の中で session-management が一度登場していれば、2回目以降は黙っている。カバレッジは維持しつつ、ノイズを減らす。
状態は recommendation-log.json に保持され、7日後に自動でクリアされる。
ClaudeFastでのセットアップ
フックはあらかじめ設定済みで出荷される。.claude/settings.local.json を開いて、次の2つのブロックのいずれかが含まれていることを確認する:
Windows:
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "cmd /c \".claude\\hooks\\SkillActivationHook\\skill-activation-prompt.cmd\""
}
]
}
]
}
}Linux/Mac:
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "bash .claude/hooks/SkillActivationHook/skill-activation-prompt.sh"
}
]
}
]
}
}よくある問題
提案が表示されない - キーワードが実際の言い回しと一致していない可能性が高い。フックを手動で実行して出力を確認する:
echo '{"session_id":"test","prompt":"implement a feature"}' | node .claude/hooks/SkillActivationHook/skill-activation-prompt.mjs不要なタイミングで提案が出る - キーワードが広すぎる。絞り込むか、トリガーをインテントパターンに移動する。
提案が重複する - フックが2か所に同時に設定されている。どちらか1つの設定ファイルに統一して、もう一方から削除する。
次のアクション
skill-rules.jsonが自分の語彙と合っているか確認する- 新たに作成したスキルのキーワードを追加する
- メインのフックガイドでフック全体のカバレッジを設定する
- タスク完了を強制するストップフックを設定する
- フックを補完するCLAUDE.md設定についてさらに学ぶ
- 新しいスキルを作成する必要がある場合はスキルガイドを参照する
スキルアクティベーションフックは人間の記憶をループから取り除く。作業を自然な言葉で説明すれば、適切なスキルを選ぶのはフレームワークの仕事だ。それがフレームワークを持つ意味だ。
設定をやめて、構築を始めよう。
AIオーケストレーション付きSaaSビルダーテンプレート。