unity-cli について
unity-cli は、Unity Editor が閉じている状態でローカルのシェルから Unity CLI を使う手順を説明するモジュールです。Unity 開発者向けに、プロジェクトの起動、テストやバッチ処理、ヘッドレスビルドを扱いますが、実行はプロジェクト設定と機能スイッチに従います。
主な機能
- 01Unity Editor インスタンスの起動と確認
- 02起動時のコマンドライン引数指定
- 03NUnit XML 出力付きのテスト実行
- 04単発バッチタスクの実行
- 05コマンドラインからのプロジェクトビルド
活用シーン
- 01CI での回帰テスト実行
- 02Editor を閉じた状態でのカスタムバッチメソッド実行
- 03指定したシーンを開いてプロジェクトを起動
- 04機能が有効な場合のヘッドレスビルド
MCP 対応
REST スキルはなく、ローカルで実行するシェルコマンドを説明します。Editor が閉じている場合に、MCP 経由の Editor ワークフローを補完します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-cliインストール後、Claude Code で/unity-cliを入力して読み込まれたか確認します。
詳細
このモジュールのスキルを呼び出す前に: 名前や説明から推測したパラメーターでスキルを呼び出そうとしている場合は、いったん停止してください。先にこのファイルを読むか、
GET /skills/recommend?includeSchema=trueでスキーマを取得してください。recommend/schema からパラメーターの定義をすでに取得している場合は、そのまま dryRun に進めます。
Unity CLI(参考情報)
参考情報モジュール — REST スキルはありません。 ここに記載されているコマンドはすべて、REST サーバー経由ではなく、ユーザーのマシン上のあなたのシェルで実行します。これは、Unity Editor が閉じているときにも使えることが目的です。
ゲート — まずここを読んでください
以下を使用する前に、バインド設定を確認してください。
<projectRoot>/Library/UnitySkills/cli_config.json
- ファイルが見つからない、読み取れない、または
enabled: falseの場合 → このプロジェクトでは Unity CLI はオフです。このモジュール全体を無視してください。 求められていないのに CLI のインストールを勧めないでください。ユーザーはWindow > UnitySkills → AI Config → Unity CLI Setup…からオプトインします。 enabled: trueの場合 → 実行ファイルとしてcliPathを使用してください(PATH に含まれていない場合があります)。featuresの機能ごとの切り替え設定に従ってください。
{
"schemaVersion": 1,
"enabled": true,
"cliPath": "/Users/me/.local/bin/unity",
"cliVersion": "1.0.0-beta.5",
"projectPath": "/path/to/Project",
"editorVersion": "6000.0.32f1",
"boundAt": "2026-07-26T09:00:00Z",
"features": { "coldStart": true, "openArgs": true, "cliTest": true, "cliRun": false, "cliBuild": false }
}
古いプラグインバージョンで書き込まれた設定には、cliRun / cliBuild キーがない場合があります。この2つについては、キーがない場合はオフです(最初の3つのキーは従来どおりの意味です)。どちらも新規バインド時はデフォルトでオフになり、ユーザーがパネルでプロジェクトごとに有効にします。
グローバルレジストリ(~/.unity_skills/registry.json)にも、実行中の各インスタンスについて cliBound / cliPath が記録されています。これは稼働状況の確認にのみ使用し、認可には決して使用しないでください。プロジェクトで CLI の使用を認可するのは、そのプロジェクト自身の cli_config.json だけです。レジストリに表示されていても、プロジェクト自身の設定を読んでいないプロジェクトをコールドスタートしないでください。また、設定内の projectPath はバインド時のスナップショットです。実際に設定ファイルを見つけたディレクトリを正しいパスとしてください(ヘルパー get_cli_config() はすでにこの値を書き換えます)。保存されたパスが実際のプロジェクトルートと異なる場合は、そのパスを決して open しないでください。
Unity CLI は実験版(ベータ)で、コマンドの仕様はリリースごとに変わります。このドキュメントは
1.0.0-beta.9に対して検証済みです(beta.7 はリリース当日に取り下げられました)。設定内のcliVersionはバインド時のスナップショットにすぎず、インストール済みのバイナリはそれより新しいバージョンになっている場合があります。最近仕様が変更されたコマンドを使う前に、<cliPath> --versionと<cliPath> <command> --helpを実行してください。ディスク上のバイナリについては、--helpが常に最終的な判断基準です。beta9 以降の<cliPath> skill show --list/--path <file>は、Unity 独自のエージェントスキルを読み取り専用で出力します(オフラインで合計約44kトークン。一度に読むファイルは1つにしてください)。これは二次的な参照情報であり、認可ではありません。このモジュールのゲートと禁止事項のリストは引き続き適用されます。コマンドが予期せずエラーになった場合は、まず<cliPath> doctor --format jsonを実行してください(環境のスナップショットを取得します。ログをさらに確認するには--tail <n>を指定します)。再試行する前に、--helpも再確認してください。CLI の問題を回避するためにサーバーや設定を変更してはいけません。
1. コールドスタート/ライフサイクル(features.coldStart)
REST では決して実現できない唯一の機能です。エディターが起動していないときに、エディターを起動します。
<cliPath> status --format json # any editor instances running?
<cliPath> open "<projectPath>" --args -unityskills-coldstart
コールドスタート時は必ず --args -unityskills-coldstart を渡してください。UnitySkills プラグインはエディターの起動時にこのマーカーを検出し、ユーザーの自動起動設定がオフでも、このセッションの REST サーバーを強制的に起動します。マーカーを付けない場合は、ユーザーが保存した設定に依存します。このマーカーはエディターセッションごとに一度だけ消費され、セッション中に手動で停止した場合に、それを上書きすることはありません。
事前確認 — 読み取り専用で、機能スイッチは不要です。 open/test/run/build はすべて、プロジェクトの ProjectVersion.txt からエディターを特定します。セッション中に CLI を初めて起動する前に、次の確認を実行してください。どれもプロジェクトを変更しません。
<cliPath> editors -i --format json # all versions: is the bound editorVersion installed?
<cliPath> doctor --ci --format json # beta6+: exit 6 = definitive blocker, 7 = retryable
<cliPath> projects verify "<projectPath>" --format json # beta6+: exit 6 = errors, 0 = clean or warnings only
doctor --ci(プロジェクトルートから実行)は、ライセンス、プロジェクトのエディター、ディスク容量、Unity サービスを確認します。errors[].code(LICENSE_NONE、EDITOR_NOT_INSTALLED、DISK_SPACE_LOW、NETWORK_UNREACHABLE)に応じて処理します。6→ 停止して報告、7→ 数回再試行してからユーザーに伝えます。通常のdoctorは常に0で終了します。macOS では beta6~8 がキーチェーンのプロンプトで停止することがあるため、シェルのタイムアウトで囲んでください。projects verifyはエディター、ライセンス、ネットワークを必要とせず、次の項目だけを検出します。META_MISSING/META_ORPHAN/GUID_DUPLICATE/CONFLICT_MARKERS/MANIFEST_INVALIDは終了コード6です。報告し、手動で修復してはいけません。警告(--expect-editor <version>によるPATH_UNVERIFIABLE、EDITOR_VERSION_DRIFT)は、--strictを指定しない限り終了コード0です。
エディターがインストールされていない場合は、停止してユーザーに伝えてください。install を実行したり、--allow-install を渡したりしてはいけません(「禁止事項」を参照)。
起動後、UnitySkills REST サーバーの準備が整うまでポーリングしてください(初回のインポート/コンパイルには数分かかる場合があります)。
from unity_skills import wait_for_health
health = wait_for_health(timeout=600) # polls /health on ports 8090-8100
beta9 以降では、CLI の短い監視時間内にエディターが終了すると、open は 6(OPEN_EDITOR_EXITED)で終了します。その場合は wait_for_health を待たず、直ちに報告してください。この監視時間内の終了のみが対象です。エディターがその後に終了しても検知されず、古いバイナリはどのような場合も 0 で終了するため、wait_for_health のタイムアウトが実際の失敗を示すシグナルとなります。
稼働状況の切り分け — やみくもに再試行するより、こちらを優先してください。 REST に接続できない場合は、コールドスタートを決める前にエディターが実際に起動しているかを確認してください。
- まず、プロジェクト独自の
cli_config.jsonを読み取ります。 ファイルが存在し、enabled: trueの場合にのみ続行してください。 - UnitySkills レジストリを確認します。
~/.unity_skills/registry.jsonを読み、pathがプロジェクトルートと一致するエントリーを見つけ、そのpidを確認します(ps -p <pid>/Windows のtasklist)。PID が有効なら、エディターは起動中ですが処理中です(ドメインリロード/インポート)。通常の REST の待機と再試行を続け、コールドスタートはしないでください。 - CLI のプロセス一覧と照合します。
<cliPath> editors running --format json --non-interactiveには、CLI が認識できるエディターインスタンスが一覧表示されます。確認材料として役立ちますが、CLI のバックエンドが認識するインスタンスのみが対象です。 Library/UnityLockfileを確認します。 ロックファイルが保持されている場合は、レジストリーのエントリーがなくても、このプロジェクトでエディターインスタンスが開いています。<cliPath> statusは補足情報であり、確定的な情報ではありません。Unity Pipeline の接続状態のみを反映します。テーブルが空、または終了コードがゼロ以外でも、エディターが閉じているとは限りません。実際に確認したところ、Pipeline パッケージのない起動中のエディターは何も表示されません。
PID、CLI のプロセス一覧、またはロックファイルによって、このプロジェクトでエディターがすでに起動していると判断できる場合は、open、run、build を実行してはいけません。同じプロジェクトでの2つ目のインスタンスの起動は Unity に拒否されます。上記のどの方法でも、このプロジェクトで起動中のエディターが確認されない場合に限り、open でコールドスタートしてから wait_for_health を実行してください。
2. 引数を指定して起動(features.openArgs)
<cliPath> open "<projectPath>" --args -openscene "Assets/Scenes/Main.unity"
--args の後に指定したものはすべて、標準のコマンドライン引数として Unity Editor に渡されます。特定のシーンや独自の -executeMethod などを指定して、既知の状態で起動する場合に便利です。指定できるのは起動時のみです。起動済みのエディターでは、代わりに REST の scene_load を使用してください。
3. ヘッドレステスト(features.cliTest)
<cliPath> test "<projectPath>" --mode EditMode --filter <pattern> --output test-results.xml --timeout 1800
--mode <EditMode|PlayMode>— 省略すると、エディターのデフォルトのテストプラットフォームで実行します。両方のモードをテストするには、2 回に分けて実行します。--filter <pattern>— 名前が一致するテストのみを実行します。--output <path>— NUnit XML レポート(デフォルトはtest-results.xml)。CI では、引き続きこのファイルをテスト結果として使用します。- CI 専用パラメーター —
test --helpにはレポート/カバレッジのフラグ(beta4 以降:--report-format nunit,junit、--junit-output、--coverage*)と、beta6 以降では--shard N/M、--retries N(失敗したテストのみを再実行し、試行ごとに--timeoutを適用します。フレークするテストはtest-results.retries.jsonに記録され、1 度も成功しないテストがある場合は引き続き終了コード8になります)、--rerun-failed(--outputから失敗したテストを読み込み、test-results.rerun.xmlに書き込みます)が表示されることがあります。beta9 以降の--affected --since <ref>は、変更の影響が及ぶ可能性のあるテストのみを実行します(近似判定であり、test-results.affected.xmlに書き込みます)。信頼して使う前に、まず--affected-compareを実行して偽陰性率を測定してください。セレクターは相互に排他的です。パラメーターは、現在のバイナリのtest --helpに記載されている場合のみ使用してください。名前を推測してはいけません。 --timeout <seconds>(環境変数UNITY_TEST_TIMEOUT)— N 秒後に Unity プロセスを強制終了します。デフォルトでは無効です。無人実行では必ず設定してください。- 追加のエディター引数は
--の後に渡します(例:-- -nographics)。 - 終了コード:
0はすべて成功(--retriesによってフレークするテストが成功した場合も同様ですが、フレークしたことは引き続き報告されます)。beta6 以降:8はテスト失敗(errors[0].codeはTESTS_FAILED)、6は判定不能 — コンパイルエラー、ライセンスエラー、エディターのクラッシュ(TEST_RUN_ERROR)、または--timeoutの期限切れ(TEST_TIMED_OUT)。beta3~5:6は両方を意味します。XML を確認して区別してください。7は CLI の再試行後も Unity サービスに到達できない場合、130は SIGINT、143は SIGTERM です。それ以外のゼロ以外の値はコマンド自体の失敗です。XML だけでなく、stderr、JSON エンベロープ、errors[].codeを確認してください。6/7は可能な場合のみ再試行し、8は再試行してはいけません。
ルーティングのルール:
- 対話的な反復作業(エディターがすでに起動しており、少数のテストにすばやくフィードバックが必要)→ REST の
test_*スキル。 - 完全な回帰テスト/CI 形式の実行、またはエディターが閉じている場合 →
unity test(ヘッドレス、NUnit XML を出力)。エディターが開いているプロジェクトに対してunity testを実行してはいけません。
4. バッチ実行(features.cliRun)
バインドされたプロジェクトのみを対象に、エディターが閉じている状態で実行するワンショットのバッチ自動化です。REST(エディター起動中、対話型)とコールドスタート(起動して稼働状態を維持)の間に位置する、3 つ目のライフサイクルオプションです。
<cliPath> run "<projectPath>" --timeout 1800 -- -executeMethod Your.Static.Method -quit
--より後のすべての引数は、標準のコマンドライン引数として Unity Editor に渡されます。典型的な形式は-executeMethod <static method>と-quitの組み合わせです(アセットの再インポート、バッチ修正、カスタムパイプラインなど)。- エディターログを stdout にストリーミングし、エディターの終了コードを返します。ゼロ以外の場合、バッチ実行は失敗です。beta5 以降では、エディターのクラッシュは
stopped with signal SIG…と報告されます(§6 を参照)。これはエディターのクラッシュであり、ビジネスロジックの失敗ではありません。 --timeout <seconds>(環境変数UNITY_RUN_TIMEOUT)— デフォルトでは無効です。必ず設定してください。設定しないと、バッチエディターがハングした場合にシェルが永久にブロックされる可能性があります。- ルーティング:エディターがすでに起動している → REST スキルを使用し、
runは使用しないでください(Unity は同じプロジェクトでの 2 つ目のインスタンスを拒否します。コールドスタートと同じLibrary/UnityLockfileのルールが適用されます)。エディターが閉じており、永続的なセッションが必要 → コールドスタート。エディターが閉じており、ワンショットのタスクを実行する →run。 run --command <name>は Unity Pipeline パッケージのコマンドを実行します。これはこのワークフローの対象外です(DO NOT を参照)。
5. ヘッドレスビルド(features.cliBuild)
cliBuild はデフォルトではオフです。ユーザーが有効にした場合は、インストールされている CLI のバージョン、Unity Editor のバージョン、ターゲットプラットフォーム、Build Profile の有無に基づいてビルドパスを選択します。
パス 1 — Unity 6 の Build Profile(beta4 以降)
<cliPath> build "<projectPath>" --profile "Windows" --output-path ./Builds/win64
--profileには、Build Profile アセットのパス、または Build Profile ウィンドウに表示されるプロファイル名を指定できます。- Unity 6(
6000.x)と、設定済みの Build Profile が必要です。
パス 2 — ビルトインのデスクトップビルド(beta4+)
<cliPath> build "<projectPath>" --target StandaloneWindows64 --output-path ./Builds/win64
--targetは引き続き必須です。- デスクトップターゲットでは、beta4 以降、
--execute-methodは任意です。--output-pathが指定されている場合、CLI はビルトインのデスクトップビルドを実行できます。
パス 3 — カスタム C# ビルドメソッド(全バージョンで利用可能、モバイル/WebGL では必須)
<cliPath> build "<projectPath>" --target Android --execute-method Builder.PerformBuild --output-path ./Builds/android
--execute-methodは引き続き使用でき、指定した場合は優先されます。Android、iOS、WebGL、またはすでにカスタムビルドパイプラインがあるプロジェクトでは、これを使用してください。--output-pathは-buildOutputとして Unity に渡されます。値の読み取りは execute-method 自体が担います。- プロジェクトに静的ビルドメソッドがまだない場合、ユーザーにそのことを伝えてください。求められていないのに、プロジェクトにメソッドを書き加えてはいけません。
共通のビルドフラグ
- ビルドログはデフォルトで末尾部分が標準出力に表示されます(無効にするには
--no-tailを指定します)。--log-fileで別の場所を指定しない限り、ログ全体は<project>/Logs/build-<target>-<timestamp>.logに保存されます。beta6 以降では、ビルドされた内容(ビルド失敗時も含む)を記録した<output>.provenance.jsonも成果物と同じ場所に書き込まれます(スキップするには--no-provenanceを指定します)。 --timeout <seconds>(環境変数UNITY_BUILD_TIMEOUT、beta6 以降)—ビルドを中断して終了コード6で終了します。デフォルトでは無効です。無人ビルドでは必ずタイムアウトを設定してください。beta6 以降の json/ndjson にはハートビートフレームも含まれます(経過時間と、ログの最終更新からの秒数。--quietを指定した場合も含む)。Editor が停止した場合は、出力が途絶えるのではなく、ログの更新間隔が長くなります。- ダーティーワークツリーのガード:未コミットの変更がある場合、
buildは実行されません。この保護は意図的なものです。ユーザーが明示的に許可した場合にのみ--allow-dirty-buildを渡してください。 --versioning-strategy <semantic|tag|custom|none>(デフォルトはnone)は、git のタグ/履歴からビルドバージョンを設定します。--build-versionはcustomの場合にのみ適用されます。- Android:
--android-export-type <apk|aab|android-studio-project>とキーストア/署名用のフラグが用意されていますが、コマンドライン上のシークレットはシェル履歴や CI ログに漏れる可能性があります。署名はユーザー自身に対応してもらい、キーストアのパスワードをシェルコマンドに貼り付けるよう求めてはいけません。 runと同じライフサイクルルールが適用されます。対象はバインド済みのプロジェクトに限られ、エディターは閉じている必要があります。エディターが再び起動した後は、通常の操作はすべて REST 経由で行います。- 終了コード/シグナル:
0は成功、6はビルド失敗、--timeoutの期限超過(beta6 以降)、または Editor の異常終了、7は再試行後も Unity サービスに接続できない場合、130は SIGINT、143は SIGTERM です。beta5 以降では、Editor のクラッシュはstopped with signal SIG…と報告されます(§6 を参照)。これをBUILD_FAILEDとは別のものとして扱ってください。
6. 自動化の契約(すべてのコマンド)
- 構造化出力:
--format <human|json|tsv|ndjson>(環境変数UNITY_FORMAT);--jsonは--format jsonの短縮形です。標準出力がパイプに渡される場合、既定値は通知なしで TSV になります。そのため、常に--format jsonを明示的に指定することをおすすめします。JSON レスポンスでは標準エンベロープ{success, command, data, errors, warnings}が使われます。ndjsonは、実行時間の長いコマンドの進行状況イベントをストリーミングします。 - 非対話モード:
--non-interactive(環境変数UNITY_NON_INTERACTIVE)を指定すると、プロンプトがシェルを停止させる代わりに致命的なエラーになります。--quiet(環境変数UNITY_QUIET)および--no-banner(環境変数UNITY_NO_BANNER)と組み合わせると、機械処理に適した出力になります。 - スクリプトからの呼び出しに推奨される環境変数(推奨設定。上記のフラグと同等です):
UNITY_NON_INTERACTIVE=1— 対話型プロンプトを無効にします。UNITY_FORMAT=json— 既定の出力形式です。両方が設定されている場合は、コマンドラインの--formatが優先されます。UNITY_NO_PAGER=1— 長い出力をページャーで表示しません(beta4+ では対話型ターミナルでページャーが使用されます)。UNITY_NO_CRASH_REPORT=1— Sentry による匿名クラッシュレポートの送信をオプトアウトします(beta3+)。UNITY_NO_CLI_INVOKED_TELEMETRY=1— 実行ごとの使用状況の送信をオプトアウトします(beta9+。分析機能のオプトインとは別です)。
- エラーと終了コード:データは標準出力に、エラーや診断情報は標準エラー出力に送られます(JSON モードのエラーも同様です)。JSON エンベロープ、
errors[].code、標準エラー出力を必ず併せて確認してください。終了コードだけに頼らないでください。
| 終了コード | 意味 |
|---|---|
0 | 成功。 |
1 | 一般的なエラー — 標準エラー出力または JSON の errors を確認してください。 |
2 | 使用方法または引数のエラー(コマンドが間違っている、必須フラグがない)。 |
3 | 認証または認可の失敗。 |
4 | 必須の設定がありません。 |
6 | 主要な操作が失敗したか、判定に至りませんでした — ビルドの失敗、--timeout の期限切れ(beta6+)、Editor の異常終了またはクラッシュ、判定結果のない test(beta6+。beta3–5 では失敗したテストもここに含まれます)、doctor --ci による明確なブロッカーの検出、projects verify のエラー、監視中に Editor が終了した open(beta9+、OPEN_EDITOR_EXITED)。 |
7 | CLI による再試行後も Unity サービスに到達できない、または doctor --ci が判定に至りませんでした(beta6+)。再試行は回数を制限してください。6 は最終的なエラーで、7 は一時的な可能性があります。 |
8 | テストに失敗しました(test、beta6+、TESTS_FAILED)。再試行しないでください。beta3–5 では 6 として報告されます。 |
130 | ユーザーがキャンセルしました(SIGINT / Ctrl+C)。 |
143 | SIGTERM によって終了しました。 |
- NDJSON ストリーミング:リアルタイムの進行状況を確認するには、
--format ndjsonを使用します。beta4 以降、ストリームは最終的にtype=resultの終端フレームで終了します。最終状態には、進行状況フレームや標準エラー出力の行ではなく、最後の{"type":"result","success":...}フレームを使用してください。beta3 では結果フレームが出力されないため、終了コードと標準エラー出力を使用してください。 - シグナルによるクラッシュ(beta5+):
build/test/runは、Editor のクラッシュをstopped with signal SIGSEGV/SIGILL/SIGTRAP/SIGFPE/SIGBUSと報告します。これらは、業務上の失敗(beta6+ のTESTS_FAILED/それ以前のTEST_FAILED、BUILD_FAILED)や、CLI 側の失敗(引数、設定、ネットワーク、認証)と区別してください。 --verboseはスタックトレースを含むエラーの詳細をすべて表示します。CLI の問題をユーザーに報告する際に、一度だけ使用すると便利です。
禁止事項
cli_config.jsonが存在しないか、enabled:falseの場合は CLI を使用しないでください。ユーザーは使用を許可していません。バインドされたプロジェクトのみ(設定ファイルが見つかったディレクトリ)を操作し、他のプロジェクトをopen/test/run/buildしないでください。- Unity CLI を自分でインストールしないでください。インストールするかどうかは、パネルでユーザーが決定します。
--allow-installを渡さないでください(test/run/buildで受け付けられます)。また、ユーザーから明示的に依頼されない限り、unity install/install-modules/uninstall/editors upgrade/hub/ライセンス関連のコマンドを使用しないでください。エディターのインストール、アップグレード、削除は時間がかかり、システムに変更を加える大規模な操作であり、ユーザーだけが行うべきです。unity mcpをそのまま実行しないでください。ブロッキング状態の stdio MCP サーバーが起動し、クライアントを待機するため、シェルがハングします。unity command/unity pipeline/unity run --commandを使用しないでください。Unity Pipeline パッケージの経路は UnitySkills REST がすでに提供している機能と重複しており、このワークフローには含まれません。unity projects execやunity projects cleanを使用しないでください。これらは複数のプロジェクトを対象とし、「バインドされたプロジェクトのみを操作する」という境界に反します。unity projects create|new|clone|link|unlink|upgrade、unity templates、unity cloud、unity collab、または読み取り専用のstatus/diff/summarize/affected/conflicts/explain/providers以外のunity vcs動詞を使用しないでください。これらは、バインドされたプロジェクトの境界外にあるプロジェクトやリポジトリ(ローカル、リモート、Unity Cloud)を作成、移動、書き換えます。projects createは beta8+ でデフォルトでクラウドに対応しています。- ユーザーから明示的に依頼されない限り、
unity close/projects close(beta8+)を使用しないでください。これらは 保存せずに Editor を終了します。正常に終了するにはcom.unity.pipelineが必要です(ない場合はpipeline_missingとなり、終了操作をユーザーに戻します)。また、--force(SIGTERM→SIGKILL)を渡すことは決してできません。まず REST 経由で保存してください。 unity editors pruneやunity editors verifyを使用しないでください。これらはグローバルな Editor のインストール構成を変更または検証するものであり、プロジェクトのライフサイクルの範囲外です。unity command --detach、unity eval --detach、unity jobを使用しないでください。デタッチされたコマンドとジョブキューは、バインドされたプロジェクトのワークフローとは異なる制御チャネルです。unity skill installやunity skill refreshを使用しないでください。これらは AI クライアントの設定ディレクトリに書き込みます。また、公式スキルは UnitySkills 独自の助言や機能制限を回避する可能性があります。スキルのインストールは、パネルでユーザーが決定します。unity skill show(beta9+)で読み取ることは問題ありません。Gate を参照してください。unity shell --protocol ndjsonを使用しないでください。これは beta3 のウォームプロセス用マシンプロトコルであり、公式 MCP 経路と同等のため、このワークフローには含まれません。- CLI に自己更新(
unity self-update、別名upgrade、self-install/self-uninstall、Homebrew、winget など)をさせたり、同梱ツールを管理(unity plugin install|remove|upgrade、beta8+)させたりしないでください。更新とインストールはユーザーが決定します。 - CLI の人間向け出力を解析しないでください(表示言語は
unity languageに従います。たとえば、表の見出しが中国語になる場合があります)。プログラムから結果を読み取る必要がある場合は、必ず--format json --non-interactiveを渡してください。 - CLI が使えることを REST ワークフローの代わりとみなさないでください。
/healthが応答した後は、通常の操作はすべて REST スキル経由で行ってください。
7. Linux の互換性に関する注意事項
beta4 以降、Unity CLI を Linux で使用するには glibc 2.34 以降が必要です。また、Ubuntu 20.04 以前、Debian 11、RHEL/CentOS 8、Amazon Linux 2 はサポート対象外になりました。これらのシステムでは、通常の「コマンドが見つかりません」というエラーではなく、glibc 関連のエラーが発生して CLI の起動に失敗する場合があります。
これを「CLI がインストールされていない」と判断して、ユーザーに再インストールを促さないでください。代わりに互換性の制約を示してください。インストールされているバイナリは、この OS/glibc バージョンでは実行できません。選択肢は、beta3 の機能を使い続ける、OS をアップグレードする、または別のマシンを使用することです。UnitySkills によってグローバルな最小バージョンが強制されることはありません。機能は CLI の実際の動作に応じて分岐します。
- beta3 — 従来の
buildセマンティクス(--execute-methodが必須)。NDJSON のターミナル結果フレームはありません。 - beta4+ — Build Profile に対応し、デスクトップビルドを内蔵。NDJSON のターミナル
type=resultフレームに対応します。 - beta5+ — 名前付きの Editor シグナル診断(
SIGSEGV、SIGILL、SIGTRAP、SIGFPE、SIGBUS)に対応します。 - beta6+ —
testの終了コード8= 失敗 /6= 判定なし、build --timeout、doctor --ci、projects verify、test --shard/--retries/--rerun-failed、来歴マニフェスト<output>.provenance.jsonに対応します。 - beta8+ —
unity closeとvcs/pluginコマンドグループ(DO NOT を参照)、unity upgradeがself-updateに名称変更(エイリアスは維持)、projects createがデフォルトで Unity Cloud プロジェクトを作成します。 - beta9+ — Editor が早期終了した場合、
openは終了コード6/OPEN_EDITOR_EXITEDを返します(以前は常に0)。buildはすでに開いているプロジェクトを拒否します。test --affected、読み取り専用のskill show、version --format json、UNITY_NO_CLI_INVOKED_TELEMETRY=1に対応します。doctorは macOS のキーチェーンプロンプトでハングしなくなりました。projects verifyはネイティブプラグインフォルダー(.bundle/.framework/.androidlib/.plugin)を誤ってフラグ付けしなくなりました。
最も安全な分岐方法は、セッションの開始時に <cliPath> --version(beta9 以降は version --format json)と <cliPath> <command> --help を実行し、バイナリが実際に報告する内容に基づいて処理することです。
正確なシグネチャ
正確な名前、パラメーター、デフォルト値、戻り値は、このファイルではなく、GET /skills/schema または unity_skills.get_skill_schema() で定義されています。