$npx -y skills add bigdra50/unity-cli --skill unity-sharedunity-cli 共通ルール。全 unity-* スキルが自動ロードする前提条件。Use as prerequisite for any unity-* skill (verification sequence, fallback order, security policy).
| 1 | # unity-shared |
| 2 | |
| 3 | 全 unity-* スキルが従う共通ルール。 |
| 4 | |
| 5 | ## インスタンス指定 (必須) |
| 6 | |
| 7 | unity-* スキル経由で `u` コマンドを呼ぶ際は **必ず `-i <instance>` を付ける**。default インスタンスに依存しない。 |
| 8 | |
| 9 | ```bash |
| 10 | u -i <instance> refresh # OK |
| 11 | u refresh # NG (skill 経由では使わない) |
| 12 | ``` |
| 13 | |
| 14 | `<instance>` はユーザーから渡される or 親セッションが指定する値で置き換える。`u instances` で接続中 Unity 一覧を確認できる。本ドキュメント以下のサンプルでは `<instance>` をそのまま使うが、実行時は具体名 (例: `TestProject`) に置換する。 |
| 15 | |
| 16 | 理由: 複数 Unity 接続環境で誤ったインスタンスへコマンドを送るリスクと、subagent 間の挙動を default 依存にしないため。 |
| 17 | |
| 18 | ## 接続確認 |
| 19 | |
| 20 | ```bash |
| 21 | u instances # 接続中 Unity 一覧 |
| 22 | u -i <instance> state # 特定エディタの状態 |
| 23 | ``` |
| 24 | |
| 25 | 接続不可時: `unity-relay --port 6500` で Relay 起動。 |
| 26 | |
| 27 | ## Quick Verify |
| 28 | |
| 29 | コード変更後に毎回実行する検証シーケンス。順序厳守 (clear は refresh の**前**に置く。後にすると refresh の診断ログを消してしまう)。 |
| 30 | |
| 31 | ```bash |
| 32 | # 1. 既存ログをクリア (refresh の診断を残すため refresh の前) |
| 33 | u -i <instance> console clear |
| 34 | |
| 35 | # 2. AssetDatabase リフレッシュ (コンパイルトリガー) |
| 36 | u -i <instance> refresh |
| 37 | |
| 38 | # 3. isCompiling が false になるまでポーリング (2秒間隔, 最大30秒) |
| 39 | for _ in $(seq 1 15); do |
| 40 | u -i <instance> state --json | jq -e '.isCompiling == false' >/dev/null && break |
| 41 | sleep 2 |
| 42 | done |
| 43 | |
| 44 | # 4. Error/Warning 取得 (--count は deprecated. head -N を使う) |
| 45 | u -i <instance> console get -l E,W | head -50 |
| 46 | ``` |
| 47 | |
| 48 | `u state --json` の出力例 (抜粋, キーはトップレベル): |
| 49 | |
| 50 | ```json |
| 51 | {"isCompiling": false, "isPlaying": false, "isPaused": false} |
| 52 | ``` |
| 53 | |
| 54 | - Error あり → 修正して再実行 (最大3回) |
| 55 | - Warning のみ → 報告して続行 |
| 56 | |
| 57 | ### 注記: 空 (0 行) は「クリーン」だが「Warning が無い」とは限らない |
| 58 | |
| 59 | Unity はインクリメンタルコンパイルのため、ソース未変更で `refresh` を呼んでも再コンパイルは走らず、過去の Warning は再出力されない。`console clear` 後に空が返っても以下のいずれかを意味する: |
| 60 | |
| 61 | 1. ソース変更があり再コンパイルが走り、エラー/警告がない (本当のクリーン) |
| 62 | 2. ソース未変更で再コンパイルがスキップされ、過去の警告が出力されないだけ |
| 63 | |
| 64 | **直前にソース編集があった文脈なら「クリーン」扱いで OK**。過去の警告を確実に確認したい場合は対象ファイルの touch (`touch Assets/.../Foo.cs`) で mtime を更新してから refresh するか、`Library/ScriptAssemblies/` をクリアする。 |
| 65 | |
| 66 | ## フォールバック順 |
| 67 | |
| 68 | CLI 非対応の操作を行う場合: |
| 69 | |
| 70 | ```text |
| 71 | 1. u -i <instance> <既存コマンド> 最優先 |
| 72 | 2. u -i <instance> api call Type Method 5,243 メソッド対応 |
| 73 | 3. YAML 直接編集 最終手段 (.meta インポート設定等) |
| 74 | ``` |
| 75 | |
| 76 | ## セキュリティ |
| 77 | |
| 78 | - `u api call` は UnityEngine / UnityEditor のみ許可 |
| 79 | - 破壊的操作の実行前にユーザー確認 |