mcpField
U
unity-skills

unity-skills

github.com/besty0728開発1.9k171 回インストール今日更新
リポジトリ

unity-skills について

unity-skills は Unity のワークフロー向けスキル集です。REST 経由で Unity Editor を操作し、シーン編集やスクリプト作成、ガイド、スキルの検索と検証を行えます。

主な機能

  1. 01REST 経由で Unity Editor を操作
  2. 02シーンオブジェクトの作成と編集
  3. 03スクリプト作成とコンパイル確認
  4. 04スキル呼び出しの一括実行
  5. 05意図に応じたスキルと引数の検索

活用シーン

  1. 01シーンオブジェクトの一括作成や調整
  2. 02スクリプトを作成してコンパイルを待機
  3. 03設定や操作上の問題の診断

インストール

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

$npx skills add https://github.com/besty0728/unity-skills --skill unity-skills

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

同梱ファイル

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

references/
2d.md
3d.md
animation.md
assets.md
audio.md
editor.md
index.md
networking.md
optimization.md
other.md
physics.md
platform.md
protocol-discovery.md
protocol-error-codes.md
protocol-observability.md
protocol-operating-mode.md
protocol-runtime-verification.md
protocol-unity-cli.md
README.md
rendering.md
scene_management.md
scripting.md
services.md
shaders.md
SKILL_FULL.md
ui.md
windows.md
xr.md
scripts/
runtime_verification.py
unity_skills.py

詳細

Unity Skills

ドキュメントは英語のみです。どの言語のリクエストでも、意味に基づいてモジュールを選び、必ずユーザーの言語で回答してください。

最初にルートを選択

  • 自動化 — ユーザーから操作を依頼された場合、または走査、検索、一括処理、正確な数値、多数のオブジェクトが必要な場合:REST 経由で Editor を操作します。
  • ガイド — ユーザー自身で操作したい場合、または surfaceProfile が guide の場合:SKILL_GUIDE.md に従い、メニューと Inspector のフィールドを案内します。
  • アドバイス — 何も変更しない設計上の質問:該当するアドバイザリードキュメント(scriptdesign、architecture、patterns。すべてモジュールインデックスにあります)に基づいて回答し、REST 呼び出しは行いません。

適切な Editor を対象にする

ポート 8090~8100 は先着順です。すべての書き込みに ?expectProject=<project>(productName またはフォルダー名)、または正確な ?expectInstance=<instanceId> を追加してください。別の Editor は 409 INSTANCE_MISMATCH を返し、何も実行しません。

GET /health(チェック対象外)には currentMode、surfaceProfile、dryRunPolicy、instanceId が含まれます。最初のリクエストと同じシェルコマンド内で、一度だけ他の呼び出しを追加せずに確認してください。その後は、書き込みが拒否された場合、409、503/接続拒否、または予期しないモードの場合にのみ確認します。bypass と auto は書き込みを直接実行します。ただし auto では、5 個以上のオブジェクトの一括処理、Prefab の適用、シーンレベルの変更、アセットの上書き、または取り消せない変更については、事前にユーザーの承認を得てください(その場合は、事前確認のみを行います)。approval では、FullAuto の書き込みは単発の許可によって制御されます(恒久的な許可はユーザーの Allowlist に登録されます)。

ドメインの再読み込み中、ポートは数秒間 503 を返すか接続を拒否し、その間 ~/.unity_skills/registry.json のエントリーは reloading と表示されます。そのポートを再試行し、別のインスタンスには切り替えないでください。

クイックリファレンス

各スキルは、JSON 引数を使う POST /skill/<name> です。 curl -s "http://localhost:<port>/skill/gameobject_set_transform?expectProject=<project>" -d '{"name":"Crate","posX":4,"posY":1.5,"posZ":-2}'

オブジェクトは name または正確な path/instanceId(同様に parentPath、childPath)で指定します。検索呼び出しは省略してください。名前が間違っている場合は呼び出しが失敗し、候補が返されます。

呼び出し
gameobject_create {name, primitiveType, parentName, x,y,z, rotX,rotY,rotZ, scaleX,scaleY,scaleZ, space} — space:"world" でない限り、x/y/z と rot は親からのローカル値です。scale はローカル値です
gameobject_set_transform {name, posX,posY,posZ, rotX,rotY,rotZ, scaleX,scaleY,scaleZ, localPosX,localPosY,localPosZ} — pos と rot はワールド値、scale と localPos はローカル値です。省略した軸はそのまま保持されます
gameobject_find {name, useRegex, component} · gameobject_get_info {name}
gameobject_rename {name, newName} · gameobject_duplicate {name}
gameobject_set_parent {childName, parentName} · gameobject_set_active {name, active}
gameobject_delete {name}(先に dryRun を実行)
component_add {name, componentType}
component_set_property {name, componentType, propertyName, value} — ベクトルと色は "1,2,3"、参照は referenceName/referencePath/assetPath
component_get_properties {name, componentType}
material_assign {name, materialPath}
light_set_properties {name, r,g,b, intensity, range, spotAngle, shadows}
script_create {scriptName, folder, content} — ソースコード全体。先に dryRun を実行し、下記の説明に従って待機してください
scene_save {}(先に dryRun を実行)

その他すべて:検出呼び出しを 1 回実行

GET /skills/recommend?intent=<words>&includeSchema=true&topN=3&wire=v2 → 正確なスキーマを含む上位 3 件のスキル(約 1~4 KB)。複数のニーズがある場合は、同じ呼び出しに &intent=<words> を追加して、それぞれに対する結果を 1 件追加します。名前がわかっている場合 → GET /skills/schema?names=a,b&wire=v2。より広いレイヤー、v2 のフィールド、定数については検出を参照してください。

実行

複数のステップを1回の呼び出しで実行できます:POST /skills/batch?expectProject=<project> {"steps":[{"skill":"gameobject_create","args":{"name":"Rig"}},{"skill":"gameobject_create","args":{"name":"Arm","parentName":"Rig"}}} — ステップは最大50個です。ステップでは、前のステップで作成したオブジェクトを指定するか、{"$ref":"$0.instanceId"} を使用できます。最初の失敗以降のステップは、continueOnError:true を指定しない限りスキップされます。?mode=transactional は全件成功または全件失敗です → batch。

dryRun。 この表、推奨事項、またはスキーマから、このセッションでシグネチャがわかっている場合は、そのまま実行してください。検証に失敗すると何も実行されず、dryRun レポート(すべての validation カテゴリとパラメーター一覧)が返されます。削除、riskLevel が high の場合、mayTriggerReload/mayEnterPlayMode が設定されている場合、承認モード、トランザクションなしの複数ステップバッチ、または確信が持てない場合は、まず dryRun を実行してください(?mode=dryRun&wire=v2)。dryRunPolicy の適用下では、返された ?dryRunToken= を指定して実行します。valid:true は検証エラーがないことを意味します(warnings によって処理がブロックされることはありませんが、対象が存在しない場合はあります)。authorization は権限チェックをプレビューします。

スキル名やパラメーター名を決して推測しないでください。この表、推奨事項、またはスキーマを使ってください。失敗した場合は suggestedFixes を確認し、応答でモジュールのドキュメントが指定された場合にのみ開いてください。

読み戻しで確認

書き込みが成功すると、Editor から読み戻した状態(例:ワールドの position、valueSet)が返されます。これが検証結果です。resolutionNotes は名前が完全一致していない場合にその旨を示します。非同期の結果やフィールドが不足している場合にのみ *_get_info を使用してください。スクリプトの書き込みと、自分で .cs を書き込んだ後の asset_refresh(compileTriggered:true)は waitUrl を返します。GETを1回実行するとコンパイルとリロードの完了を待機し、status:"completed"、または resultData.compilation にエラーを含む failed が返されます。コマンド1つ: u=http://localhost:<port>; c="$u/skill/script_create?expectProject=<project>"; b='{"scriptName":"Spin","content":"<source>"}'; s='{"steps":[{"skill":"component_add","args":{"name":"Crate","componentType":"Spin"}},{"skill":"component_set_property","args":{"name":"Crate","componentType":"Spin","propertyName":"speed","value":"9"}}]}'; curl -s "$c&mode=dryRun" -d "$b" | grep -q '"valid":true' && J=$(curl -s "$c" -d "$b" | tee /dev/stderr | grep -o '/jobs/[^"]*=90') && curl -s --retry 20 --retry-connrefused --retry-all-errors --retry-delay 2 "$u$J" && curl -s "$u/skills/batch?expectProject=<project>" -d "$s"

サーフェスプロファイルとエラー

surfaceProfile はユーザーが選択したパネルです。guide と noSceneAuthoring では一部の書き込みが非表示になり、その場合は、読むべきドキュメントまたは変更すべきプロファイルを示す SURFACE_EXCLUDED が返されます。これは境界です。タスクの残りを実行し、決して再試行したり、迂回したりしないでください(profiles)。

コード意味 → 対応
MISSING_PARAM / TARGET_NOT_FOUND引数が無効、または解決できません → details に基づいて修正するか、対象を特定します(gameobject_find)。
INSTANCE_MISMATCH (409)suggestedFixes に示された名前を使って、該当するポートに再送します。
MISSING_PACKAGEユーザーに伝えてください(dryRun の missingPackages を確認し、unavailable を推奨して早期に表示します)。インストールするかどうかはユーザーが決めます。
MODE_RESTRICTED / MODE_FORBIDDEN権限の付与/回避、または Allowlist → operating mode。
その他error codes

コンパイル状況、イベント、分析情報 → observability。Editor を閉じた状態でのオプトイン Unity CLI → unity-cli。

現在のスナップショット:REST スキル 839 件、ソースファイル 56 件、カテゴリ 54 件、モジュールドキュメントのディレクトリ 83 件(REST/モジュールドキュメント 54 件 + アドバイザリードキュメント 29 件)、Unity 2022.3+、デフォルトのタイムアウト 15 minutes。

Python ヘルパー:unity-skills/scripts/unity_skills.py

コメント