router について
ゲーム開発タスク向けのルーティングスキルです。プロジェクトのファイルからエンジンを特定し、必要最小限のスキルを選んで読み込みと組み合わせ方を案内します。エンジン API 自体は解説しません。
主な機能
- 01プロジェクトファイルからエンジンを特定
- 02依頼内容に応じたタスク分類
- 03必要最小限のスキル選択
- 04スキルの読み込みと構成順の案内
- 05エンジン不明時の代替手順
活用シーン
- 01ゲームの制作やデバッグを始める場面
- 02ゲーム開発の依頼に適したスキルの選定
- 03エンジンや作業内容が変わった際の再ルーティング
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ gamedev-skills/ awesome-gamedev-agent-skills --skill routerインストール後、Claude Code で/routerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/engine-detection.mdrouting-table.md詳細
マスタールーター — ゲーム開発スキルのディスパッチャー
ゲーム開発作業のエントリーポイントです。プロジェクトを判定して1つのエンジンを選び、依頼内容からタスクを分類し、必要最小限の専門スキルを示して、作業に入る前にそれらを読むよう指示します。ディスパッチと組み合わせを行います。エンジン API を改めて教えるものではありません。
使用するタイミング
- ゲーム開発の依頼を受けたら、最初に使用します。ゲーム、レベル、プレイヤー、敵、シェーダー、UI、セーブシステム、マルチプレイヤー、入力、オーディオ、AI、会話、プロシージャルコンテンツ、ビジュアルアセット一式の制作やデバッグなど、読み込むスキルを判断する際に使用してください。
- ユーザーがエンジンやジャンルを指定した場合、「ゲームを作って」と言った場合、または「どのスキルを使えばよいですか?」と尋ねた場合に使用します。
使用しないタイミング:適切なスキルを読み込み、タスクがその範囲内にある場合は、そのスキルに沿って作業してください。ターンごとにルーターを再実行しないでください。タスクが新しいエンジンや関心領域に切り替わった場合にのみ、再度ルーティングします(ルーターの手順6)。
ルーティングアルゴリズム
- エンジンとバージョンを検出 — プロジェクトの特徴からエンジンのスキルセットを最大1つ(または「不明」)に絞り込み、次にプロジェクトのバージョン情報を読み取ります。§1。
- タスクを分類 — 依頼の表現から分野、最大1つのジャンル、ワークフローを判定します。§2。
- 解決 — 最小限のセットを選びます。エンジンのスキル、分野、ジャンル、ワークフローです。§3。
- 読み込み(開示) — 選択した
SKILL.mdの本文のみを開きます。references/は必要に応じて参照します。§4。 - 組み合わせ — 順序は、エンジンの基礎 → 分野の概念 → ジャンル固有のつなぎ込み → ワークフローです。§5。
- フォールバック — エンジンが不明、または適合するスキルがない場合は、質問するか Godot を既定値として選びます。不足している点を明示します。§6。
1. エンジンの検出(プロジェクトの特徴)
最も確度の高いシグナルを調べ、エンジンを必ず1つ選びます。最初に一致した時点で終了します。
| # | エンジン | 主なシグナル | スキルセットのルート |
|---|---|---|---|
| 1 | Godot | project.godot | skills/godot/ |
| 2 | Unreal | *.uproject | skills/unreal/ |
| 3 | Unity | Assets/ および ProjectSettings/ProjectVersion.txt | skills/unity/ |
| 4 | Bevy | bevy 依存関係を含む Cargo.toml | skills/other-engines/bevy-ecs/ |
| 5 | Phaser | phaser を依存関係に含む package.json | skills/web-engines/phaser-* |
| 6 | PixiJS | pixi.js を依存関係に含む package.json | skills/web-engines/pixijs-rendering/ |
| 7 | three.js | three を依存関係に含む package.json | skills/web-engines/threejs-* |
| 8 | LÖVE | love.* を呼び出す conf.lua / main.lua | skills/other-engines/love2d-core/ |
| 9 | pygame | import pygame を含む *.py | skills/other-engines/pygame-core/ |
| 10 | Roblox | *.rbxl(x) / *.project.json(Rojo) | skills/other-engines/roblox-* |
副次的なシグナル、Godot-C#/Unity/Bevy の判別ルール、複数の Web エンジンの判別ルール、モノレポ、プレーンテキストでのエンジン言及については、references/engine-detection.md を読んでください。
エンジンを特定したら、API を選ぶ前にプロジェクトのメタデータまたは依存関係のロックファイルからバージョンを確認します。既存のプロジェクトでは、移行が依頼されない限り、固定されたバージョンを使用します。カタログのベースラインは新規プロジェクトにのみ適用します。バージョン情報の正確な取得元は、検出リファレンスと ../docs/VERSION-SUPPORT.md に記載されています。
2. タスクの分類(表現 → カテゴリ)
エンジンの後、依頼に含まれるタスクの兆候を確認します(3つの加算式カテゴリです)。
- 分野(エンジンを横断する概念):
create-game-assets、game-ai、ai-behavior-trees-utility-ai、procedural-gen、dialogue-systems、save-systems、audio-design、shader-programming、physics-tuning、level-design、input-systems、game-feel、camera-systems、game-ui-ux、performance-optimization。 概念を示す語句(「スプライトシート」、「アートディレクション」、「テクスチャ」、「経路探索」、 「セーブスロット」、「フラグメントシェーダー」、「画面揺れ」、「カメラ追従」、「HUD/メニュー」、 「最適化/低 FPS」)によって検出されます。 - ジャンル(ゲーム全体のテンプレート):
platformer、roguelike、rpg、fps-shooter、tower-defense、card-game、visual-novel、survival-crafting、puzzle。ジャンルを示す語句 (「ローグライクを作る」、「デッキ構築ゲーム」)によって検出されます。 - ワークフロー(プロセス/リリース):
game-jam、prototype-fast、steam-publish、itch-publish。プロセスを示す語句(「Steam で公開する」、「バーティカルスライス」)によって検出されます。
ファイルの兆候によって、さらに判断を絞り込めます:*.yarn/*.ink → dialogue-systems/visual-novel;steam_appid.txt
→ steam-publish;*.inputactions → unity-input-system。
3. ルーティング表(タスク → カテゴリ → スキル)
3a. エンジンスキル — 検出されたエンジンとサブタスクに一致するものを1つ読みます
- Godot(
skills/godot/):言語godot-gdscript/godot-csharp;構造godot-nodes-scenes、godot-signals-groups;2Dgodot-2d-movement、godot-tilemap;3Dgodot-3d-essentials;物理godot-physics;UIgodot-ui-control;アニメーションgodot-animation;シェーダーgodot-shaders;データgodot-resources;オーディオgodot-audio; ネットコードgodot-multiplayer;ヘッドレス CLI テストgodot-gdscript-headless-testing;リリースgodot-export。 - Unity(
skills/unity/):スクリプトunity-csharp-scripting;入力unity-input-system; 物理unity-physics;アニメーションunity-animation;データunity-scriptableobjects;2Dunity-tilemap-2d;AI ナビゲーションunity-navmesh;リリースunity-build-pipeline。 - Unreal(
skills/unreal/):ビジュアルスクリプティングunreal-blueprints;C++ ゲームプレイunreal-cpp-gameplay;入力unreal-enhanced-input;AIunreal-behavior-trees;VFXunreal-niagara;リリースunreal-packaging。 - Web(
skills/web-engines/):phaser-core、phaser-arcade-physics;pixijs-rendering;threejs-scene-setup、threejs-gltf-loading、threejs-materials-lighting。 - その他(
skills/other-engines/):bevy-ecs、pygame-core、love2d-core;Roblox の基礎roblox-luau、永続化roblox-datastores、UIroblox-ui、リモート通信/セキュリティroblox-networking、キャラクターのライフサイクルroblox-characters、シミュレーション/クエリroblox-physics、Studio 内の操作roblox-studio-workflow。
3b. 分野 — エンジンスキルと一緒に読み込む(コンセプト ↔ エンジン API)
コンセプト(says:) | 分野スキル | 組み合わせるもの(エンジン API) |
|---|---|---|
| アートディレクション、ゲームアセット、スプライト、タイルセット、テクスチャ、アイコン、3D プロップ | create-game-assets | エンジンのインポーター/レンダリングスキル、利用可能な場合は imagegen |
| 敵 AI、ビヘイビアツリー、経路探索、ステアリング | game-ai | unity-navmesh / unreal-behavior-trees / Godot ナビゲーション |
| BT ランタイム、ブラックボード、デコレーター、セレクター/シーケンス、ユーティリティ AI、応答曲線、考慮要素 | ai-behavior-trees-utility-ai | game-ai(モデルの選択)/ unreal-behavior-trees(エンジンアセット) |
| プロシージャル生成、ノイズ、シード、ダンジョン生成 | procedural-gen | エンジンのタイルマップ/グリッドスキル |
| ダイアログ、Yarn、Ink、会話ツリー | dialogue-systems | エンジンの UI スキル |
| セーブ/ロード、スロット、永続化 | save-systems | roblox-datastores / エンジンの IO |
| アダプティブミュージック、ミキサー、ダッキング、効果音 | audio-design | godot-audio / Unity AudioMixer |
| シェーダー、フラグメント、ディゾルブ/アウトライン | shader-programming | godot-shaders / エンジンのマテリアル |
| ジッター、トンネリング、固定タイムステップ | physics-tuning | godot-physics / unity-physics |
| ホワイトボックス、ブロックアウト、タイル配置、ペーシング | level-design | godot-tilemap / unity-tilemap-2d |
| 入力の再割り当て、ゲームパッド、入力バッファリング | input-systems | unity-input-system / unreal-enhanced-input / Godot InputMap |
| 画面揺れ、ヒットストップ、爽快感、スクワッシュ&ストレッチ、「パンチのある演出にする」 | game-feel | エンジンのアニメーション/トゥイーン + camera-systems(揺れ) |
| カメラ追従、デッドゾーン、先読み、オービット、一人称視点 | camera-systems | godot-2d-movement / godot-3d-essentials / Cinemachine |
| HUD、メニュー、UI レイアウト、スケーリング、セーフエリア、フォーカス移動 | game-ui-ux | godot-ui-control / Unity UI(UGUI/UI Toolkit) |
| 低 FPS、最適化、ドローコール、GC スパイク、プーリング、プロファイラー | performance-optimization | エンジンのプロファイラー + physics-tuning |
Roblox の場合は、エンジンをまたぐコンセプトに、対応するエンジンスキルを組み合わせてください。HUD/メニューのリクエストには
roblox-ui + game-ui-ux(ゲームプレイのバインディングには input-systems も追加)を使用します。リモートの悪用や
レプリケーションのリクエストには roblox-networking + roblox-luau を使用します。リスポーン/リグのリクエストには
roblox-characters を使用します。物理シミュレーション/クエリのリクエストには roblox-physics を使用します
(安定性のために physics-tuning も追加)。プレースを直接編集する場合は roblox-studio-workflow も使用します。
3c. ジャンル — エンジン + 分野を組み合わせる(検出されたエンジンに * を対応させる)
ジャンル(says:) | 組み合わせるもの |
|---|---|
| プラットフォーマー、ジャンプ、二段ジャンプ | godot-2d-movement(またはエンジンの物理機能)+ godot-tilemap/unity-tilemap-2d + level-design + camera-systems + game-feel |
| ローグライク、プロシージャルダンジョン、パーマデス | procedural-gen + godot-tilemap/unity-tilemap-2d + game-ai + save-systems + game-feel |
| RPG、ステータス、インベントリ、クエスト | godot-resources/unity-scriptableobjects + dialogue-systems + save-systems + game-ui-ux |
| FPS、一人称視点、ヒットスキャン | godot-3d-essentials/unreal-cpp-gameplay + input-systems + game-ai + camera-systems + game-feel |
| タワーディフェンス、ウェーブ、レーン | game-ai + エンジンの移動機能 + level-design + game-ui-ux |
| カードゲーム、デッキ構築、TCG | godot-resources/unity-scriptableobjects + game-ui-ux(+ エンジンの UI) |
| ビジュアルノベル、分岐ストーリー | dialogue-systems + save-systems + game-ui-ux |
| サバイバル、クラフト、採集 | save-systems + godot-resources/unity-scriptableobjects + procedural-gen + game-ui-ux |
| パズル、マッチ3、グリッドロジック | godot-tilemap/unity-tilemap-2d + level-design + game-feel |
3d. ワークフロー — エンジンに依存しないプロセスとリリース
game-jam(ジャム、48時間、Ludum Dare/GMTK) · prototype-fast(垂直スライス、MVP、グレーボックス) ·
steam-publish(Steam、Steamworks、デポ;steam_appid.txt) · itch-publish(itch.io、butler;
.itch.toml)。
スキルごとのトリガー一覧と、すべてのエンジンへのバインドについては、
references/routing-table.md をお読みください。
4. 読み込みプロトコル(段階的な情報開示)
- 事前読み込み: コンテキストに含まれるのは、各スキルの
nameとdescriptionのみです。それらと フィンガープリントから判断し、スキル本文を事前に読まないでください。 - 選択時: 選択した 各 スキルの
skills/<category>/<name>/SKILL.mdの本文を読み込みます。読み込むのは そのスキルだけです。カテゴリ全体をまとめて読み込まないでください。 - 必要に応じて: サブタスクにその詳細が必要な場合に限り、スキルに含まれる
references/ファイルを 読み込みます(読み込みのタイミングはスキル本文に記載されています)。 - 方向転換時に再ルーティング: タスクが変わった場合(移動 → セーブなど)は、すべてを読み込んだままにせず、 新たに関連するスキルを選択して読み込みます。
何を、なぜ読み込むかを伝えます。例:「Godot(project.godot)を検出しました。コントローラー用に
godot-2d-movement、ジャンプの手触り用に platformer を読み込みます。コヨーテタイム/入力バッファリングが必要な場合は、
platformer スキルの feel-tuning.md リファレンスも開きます。」
5. 組み合わせのルール
- エンジンセットは1つ、コンセプトは追加可能。 エンジンスキルセットは必ず1つだけとし、タスクに必要な 分野を追加し、通常はジャンルを 最大1つ 選びます。ワークフローは独立して追加します。
- 順序: エンジンの基礎 → 分野のコンセプト → ジャンルのオーケストレーション → ワークフロー。アセットを 制作する場合は、ファミリーを生成する前にビジュアルの方向性を承認し、その後、エンジンのインポート設定と 実際のコンテキストでのキャプチャで仕上げます。
- 重複する場合の役割分担: エンジンスキルは API/構文を担当します。分野スキルは移植可能な コンセプト/アルゴリズムを担当し、コードについてはエンジンスキルに委ねます。ジャンルスキルは構造/接着部分を担当し、 基本要素を再度教えるのではなく、該当箇所へのリンクを示します。
- 引き継ぎ: ジャンルの
composesに*-2d-movementのようなスロットが指定されている場合は、 検出されたエンジンに対応付けます。そのエンジンに該当するスキルがない場合は、§6 とreferences/routing-table.mdの「Binding gaps」を参照してください。
6. エンジン不明時と該当スキルがない場合のフォールバック
エンジンが不明(フィンガープリントがなく、エンジン名も指定されていない場合):
- リクエストにプレーンテキストでエンジン名(「in Unity」「using Phaser」など)があるか確認します。見つかった場合は、 それを採用します。
- タスクが純粋なコンセプト/ジャンル/ワークフローに関する質問の場合は、エンジンに依存しない分野/ジャンル/ワークフローの
スキルに直接ルーティングします。エンジンは不要です(「適切なセーブ形式は?」→
save-systems)。 - エンジンの選択が回答を妨げる場合に限り、対象を絞った質問を 1つだけ 尋ねます(「どのエンジンを使いますか? Godot、Unity、Unreal、またはウェブ/その他のエンジンですか?」)。ユーザーに希望がなく、エンジンが必要な場合は、 Godot をデフォルトとして使用し、その旨を伝えます(ここで最も広くカバーされているエンジンです)。
- エンジンをでっち上げたり、推測に基づいてエンジンスキルを読み込んだりしないでください。
エンジンは特定されているが、サブタスクに対応するスキルがない場合: 最も近いエンジンスキルと、関連する分野の
スキルを読み込み、不足している点を明確に伝えます(例:「専用の Unity 2D-movement スキルはありません。
unity-csharp-scripting と unity-physics を使用します」)。スキル名を捏造しないでください。
ジャンルが複数または競合する場合: 文面から主要なジャンルを選びます。副次的なジャンルにも触れ、 ユーザーが確認した場合は読み込むことを提案します。
使用例
| リクエスト | 検出されたエンジン | 読み込まれるスキル(順序) |
|---|---|---|
| "Godot のプレイヤーに二段ジャンプを追加して" | Godot(project.godot) | godot-2d-movement → platformer |
| "Unity の RPG 用にインベントリを作って" | Unity(Assets/+ProjectSettings/) | unity-scriptableobjects → rpg → save-systems |
| "Godot でプロシージャル生成のダンジョン型ローグライクを作って" | Godot | godot-tilemap → procedural-gen → roguelike |
".yarn ファイルから分岐型の会話を作って" | (不要) | dialogue-systems(エンジンが検出された場合はエンジン UI スキルも追加) |
| "マイグレーションに対応したセーブスロットの設計方法を教えて" | (なし) | save-systems のみ |
| "butler を使って itch にゲームを公開して" | (任意/なし) | itch-publish のみ |
| "ゲームを作りたいけれど、何を使えばいいかわからない" | 不明 → 質問する。デフォルトは Godot | ルーターが一度だけ質問し、その後、たとえば godot-nodes-scenes |
| "Godot のゲームで、攻撃が強く感じられるようにして" | Godot(project.godot) | game-feel(揺れには camera-systems も追加) |
| "カメラがプレイヤーを滑らかに追従するようにして" | (検出されたエンジン) | camera-systems(エンジンの移動スキルも追加) |
| "Unity のゲームが 30 FPS まで落ちるので、最適化して" | Unity(Assets/+ProjectSettings/) | performance-optimization(まずプロファイリング) → エンジンスキル |
| "統一感のあるピクセルアートのプレイヤーと敵のセットを作って" | (検出されたエンジン) | create-game-assets → 関連するエンジンのインポート/レンダリングスキル |
参考資料
- エンジンの完全なフィンガープリント、二次的なシグナル、判別方法:
references/engine-detection.md。 - スキルごとの網羅的なトリガーワード、エンジンとの紐付け、紐付けの不足箇所:
references/routing-table.md。