unity-skills について
unity-skills は Unity のワークフロー向けスキル集です。REST 経由で Unity Editor を操作し、シーン編集やスクリプト作成、ガイド、スキルの検索と検証を行えます。
主な機能
- 01REST 経由で Unity Editor を操作
- 02シーンオブジェクトの作成と編集
- 03スクリプト作成とコンパイル確認
- 04スキル呼び出しの一括実行
- 05意図に応じたスキルと引数の検索
活用シーン
- 01シーンオブジェクトの一括作成や調整
- 02スクリプトを作成してコンパイルを待機
- 03設定や操作上の問題の診断
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-skillsインストール後、Claude Code で/unity-skillsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/2d.md3d.mdanimation.mdassets.mdaudio.mdeditor.mdindex.mdnetworking.mdoptimization.mdother.mdphysics.mdplatform.mdprotocol-discovery.mdprotocol-error-codes.mdprotocol-observability.mdprotocol-operating-mode.mdprotocol-runtime-verification.mdprotocol-unity-cli.mdREADME.mdrendering.mdscene_management.mdscripting.mdservices.mdshaders.mdSKILL_FULL.mdui.mdwindows.mdxr.mdscripts/runtime_verification.pyunity_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