Communityコーディング&開発github.com

medjbilou/claude-skill-router

スキルルーター。ユーザーのメッセージに「/route」が含まれている場合にのみ使用します(先頭、末尾、または単独送信)。インストール済みの全スキルからリクエストに最適な1~5個のスキルを選び、読み込み・実行後、次に実行すべきスキルを提案します。「/route build」でカタログを作成、「/route refresh」で再同期します。

claude-skill-router とは?

このスキルは、Claude CodeやCursorなどのAIエージェント向けルーターとして機能し、ユーザーが「/route」を含むプロンプトを送信したときにのみ起動します。まず、インベントリスクリプトを使ってインストール済みスキルのカタログが最新か確認し、必要に応じて「/route build」または「/route refresh」を促します。次に、リクエスト内容に基づいてカテゴリを選択し、各スキルの適合性を「USE / NOT / NEXT / NEEDS」フィールドから評価。1~5個の最小セットで全要求をカバーするよう選定し、実行計画を表形式で表示。スキルを順次読み込み、作業を実行後、進捗確認テーブルを生成し、ログを記録します。最後に「Next skills」として次に実行すべきスキルを最大3つ提案。単純なリクエストはスキルなしで処理する早期終了機能や、ユーザー定義のオーバーライドルールにも対応。複数スキルの競合時はより特化したスキルが優先されます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/medjbilou/claude-skill-router/tree/HEAD/skills/route

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Route

引数: $ARGUMENTS

以下で<base>と書かれているのは、このテキストの上に表示されている「このスキルのベースディレクトリ」のパスを意味します。スクリプトは <base>/scripts/inventory.py です。個人用カタログは ~/.claude/route-catalog/(または $ROUTE_CATALOG_DIR)にあり、プラグインの内部には決して置きません。

0. リクエストを見つける

ユーザーが通常のプロンプトを書き、それに /route を追加します。ユーザーの言葉からリクエストを特定してください:

  • /route がプロンプトと同じメッセージ内にある場合(前後どちらでも):リクエストは、そのメッセージ全体から /route という単語を取り除いたものです。
  • /route が単独で送信された場合:リクエストは、ユーザーの直前のメッセージ(または同じタスクに属する複数のメッセージ)を会話全体と合わせて解釈したものです。裸の「/route」という単語をリクエストとして扱わないでください。
  • 上記の引数にテキストが格納されている場合:それをリクエストまたはその一部として扱いますが、ユーザー自身のメッセージが異なる場合はそちらを優先します。
  • /route が到着する前にそのリクエストの処理をすでに開始していた場合、完了した部分を確認し、残りの作業のみをルーティングしてください。完了したステップをやり直さないでください。
  • リクエストが build の場合、<base>/BUILD.md を読み、それに従ってください。refresh の場合は、「リフレッシュ」にスキップします。

ユーザーのプロンプトをタスクとして維持してください。1つのスキルがカバーする部分だけに縮小しないでください。プロンプトのすべての部分は、読み込まれたスキルまたはあなた自身の作業によってカバーされなければなりません。

1. リクエストを理解する

自分用に1行書いてください:目標、成果物、関係する技術やファイル、フェーズ(計画、構築、デバッグ、レビュー、検証、出荷、ドキュメント、メディア、運用)。会話を活用してください:「直して」や「動画を作って」のようなリクエストは、ちょうど議論された内容を指します。まだコードベースを探索しないでください。

早期終了:リクエストが些細な場合(名前の変更、1行の修正、単純な質問)、「スキル不要:(理由)」を出力し、タスクを実行してください。カタログは読まないでください。

プロジェクトの CLAUDE.md があらゆる作業の前に最初のステップを要求している場合(例:「診断する前にエラーテキストのラン��ックを検索する」)、そのステップを今実行してください。その結果によって、必要なスキルが変わる可能性があります。

2. 候補を見つける

  1. カレントディレクトリから python3 <base>/scripts/inventory.py --check を実行します。
    • NO CATALOG:ルーターが一度だけ /route build を必要としていることをユーザーに伝え、今すぐ実行するか尋ね、その間あなた自身のスキルリストで見えるスキルを使ってリクエストを処理します。
    • それ以外の場合は、catalog in sync を出力するか、NEW スキル(インストールされたがカタログにないもの、その説明付き)と GONE エントリ(もはやインストールされていないもの)を出力します。NEWスキルは有効な候補です。GONEのものは絶対に選ばないでください。
  2. --check がオーバーライドファイルの存在を報告した場合、そのファイルを最初に読んでください。そのファイルにはユーザー自身のルーティングルール(「UIポリッシュ -> better-ui、impeccableは使わない」など)が含まれています。リクエストにマッチするオーバーライドは、カタログ、そのデフォルトピック、あなた自身の判断に優先します。そのオーバーライドを「理由」列に記載してください。
  3. --check が最初の行に出力するカタログフォルダ内で、INDEX.md と、存在する場合は PROFILE.md(ユーザーのスタックと習慣)を読んでください。
  4. リクエストにマッチする1~3個のカテゴリを選び、それらのカテゴリファイルのみを読んでください。各スキル行は次の書式です: - `name` [load] USE: ... | NOT: ... | NEXT: ... | NEEDS: ...

3. セットを選ぶ

  • リクエスト全体をカバーする最小のセットを選んでください:通常は1~3スキル、最大でも5つまでです。
  • 1つのジョブにつき1スキル。同じジョブを実行する2つのスキルを決して読み込まないでください。カテゴリの「デフォルトピック」に従ってください。
  • 各スキルのNOTフィールドに従ってください。NOTがこのリクエストにより適したスキルを指定している場合、そちらを採用してください。
  • 同じジョブに対しては、プロジェクトスキル([project]、このリポジトリの .claude/skills 内)またはユーザー自身のカスタムスキルを汎用スキルより優先してください。
  • スキルに NEEDS がリストされていて、ここで不足している場合、その旨を述べて次善のスキルを選んでください。
  • どのスキルも真の価値を追加しない場合、「スキル不要」と言ってタスクを実行してください。
  • リクエストの2つの非常に異なる解釈が異なるスキルにつながる場合、何かを読み込む前に選択肢を提示して短い質問を1つしてください。

4. 計画を表示し、読み込む

最初のスキル呼び出しの前に、以下の表を可視テキストとして表示してください。これは必須の出力であり、ナレーションではありません。「ツール呼び出し前のテキストなし」スタイルがアクティブな場合でも表示してください。

#スキル理由読み込み方法
1skill-nameリクエストに関連した1行skill / read / builtin / project

行は条件付きでも構いません:「条件が成立する場合のみ」と理由列に書き、その条件が成立したときだけ読み込んでください。

表の下に「副作用」メモを追加し、メッセージ送信、デプロイ、データ削除、有料クレジット消費、本番環境への書き込みを行うすべてのステップ(スキルか作業自体かを問わず)を記載してください。そのステップの前に確認を取ってください。それ以外の場合は待たずに続行します。

表の順序でスキルを読み込んでください(まず計画、次に構築、最後に検証):

  • [skill]、[builtin]、[project]:正確な名前で Skill ツールを呼び出し、そのスキルが処理すべきリクエストの一部を args として渡します。
  • [read <path>]:このスキルは Skill ツールが拒否します(ユーザーのみ使用)。<path> にあるファイルを読み込み、読み込まれたかのようにそれに従ってください。
  • Skill の呼び出しが失敗した場合、代わりにそのスキルの SKILL.md を読み(フラグなしの inventory.py はすべてのパスを出力します)、そのように伝えてください。

5. 作業を実行する

読み込まれたスキルを一緒に従ってください。2つのスキルが競合する場合、より特化したスキルがタスクのその部分で優先されます。ユーザーのCLAUDE.mdファイルと明示的な指示は、すべてのスキルに優先します。

途中で新しいニーズが現れた場合(例:修正にマイグレーションが必要になった)、もう1つスキルを読み込んで、1行で告知してください:「x も読み込み中:(理由)」

6. チェック、ログ記録、報告、次に実行すべきことを提案する

終了チェック:2つ以上のスキルが読み込まれた場合、またはリクエストに複数の部分があった場合、最終応答の前に各部分をチェックしてください。読み込まれた各スキル、およびスキルがカバーしなかったリクエストの各部分について、証拠(ファイル:行、テスト結果、コマンド出力)を添えて、完了/部分的/ブロック済みを判定してください。それを最終応答に以下のような短い表として含めてください:

部分スキルステータス証拠

部分またはブロックされている部分がある場合は、何が不足しているかを述べて、タスクを完了と呼ばないでください。単一スキル、単一部分のリクエストの場合は表を省略します。

ログ:python3 <base>/scripts/inventory.py --log '<json>' を1回実行し、1つのJSONオブジェクトを含めます:request(最大160文字のリクエスト、機密情報なし)、loaded(読み込まれたスキル)、used(実際に作業を形成した指示を持つ読み込まれたスキル)、unused(読み込まれたが不要だったスキル)、skipped(実行されなかった計画行)、next(あなたが提案する次のスキル)、no_skill(スキルが不要だった場合はtrue)、check(

関連スキル