unity-batch について
unity-batchは、Unityオブジェクトの検索、一括編集のプレビュー、複数スキルの順次実行を行うスキル群とHTTPエンドポイントを提供します。実行レポートと非同期ジョブ処理にも対応し、大規模または時間のかかる操作を扱えます。
主な機能
- 01GameObject、コンポーネント、アセットの検索
- 02一括編集の実行前プレビュー
- 031リクエストで最大50件のスキル呼び出し
- 04ジョブの追跡と実行レポートの取得
- 05失敗したステップや操作の再試行
活用シーン
- 01シーン全体のプロパティ変更をプレビューして適用
- 02オブジェクト作成とコンポーネント追加の順次実行
- 03時間のかかる一括編集の結果確認
- 04成功済み処理を繰り返さず失敗ステップを再試行
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-batchインストール後、Claude Code で/unity-batchを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/batch_cleanup_temp_objects.mdbatch_execute.mdbatch_fix_missing_scripts.mdbatch_preview_rename.mdbatch_preview_replace_material.mdbatch_preview_set_property.mdbatch_query_assets.mdbatch_query_components.mdbatch_query_gameobjects.mdbatch_replace_material.mdbatch_report_get.mdbatch_report_list.mdbatch_retry_failed.mdbatch_set_render_layer.mdbatch_standardize_naming.mdbatch_validate_scene_objects.mdjob_cancel.mdjob_list.mdjob_logs.mdjob_progress.mdjob_status.mdjob_wait.md詳細
トリガー
- 多数のオブジェクトを一度に操作する
- 長時間かかる非同期ジョブを実行またはポーリングする
- 一括編集をプレビューしてから確定する
- 大量のオブジェクトを一度に操作する、長時間かかる非同期ジョブを実行またはポーリングする、プレビューしてから一括編集を確定する
Unity Batch Skills
POST /skills/batch エンドポイントでは、一括編集のクエリ → プレビュー → 実行、実行レポート、非同期ジョブを扱います。パラメーターはスキル名ではなくスキーマから取得します。実行と dryRun のルールについては、ルートの SKILL.md を参照してください。
POST /skills/batch — 1 回の HTTP 呼び出しで複数のスキルを実行
スキルではなく HTTP エンドポイントです。skills_batch を POST /skill/<name> に送信しないでください。1 つのメインスレッドジョブ内で、通常のスキル呼び出しを最大 50 件、順番に実行します。各呼び出しでは、単一スキルの全パイプライン(検証、権限ゲート、個別の Undo グループ、監査)を通過します。3 件以上の書き込みがある場合に特に効果が大きく、N 回のラウンドトリップとメインスレッドの起動が、それぞれ 1 回で済みます。
POST /skills/batch
{
"steps": [
{"skill": "gameobject_create", "args": {"name": "Cube", "primitiveType": "Cube"}},
{"skill": "component_add", "args": {"instanceId": {"$ref": "$0.instanceId"}, "componentType": "Rigidbody"}}
],
"continueOnError": false
}
| ボディフィールド | デフォルト | 説明 |
|---|---|---|
steps | 必須 | {skill, args} オブジェクトを順番に指定します。50 件を超えると → 400 SEMANTIC_INVALID になります。呼び出しを分割してください。 |
continueOnError | false | false = 最初の失敗で停止します。true = 失敗を記録して続行します。 |
params | なし | args 内の {"$param":"name"} または {"$param":"name","default":X} ノードに設定する値です。静的な値として $ref の前に解決されます。デフォルト値のないスロットが欠落している場合、そのステップは失敗します。 |
$ref:唯一のキーが$refである args オブジェクト{"$ref":"$N.path"}は、先行する成功済みステップN(0 始まり)の結果にあるpathの値(例:instanceId、results[0].path。$Nのみの場合は結果全体)に置き換えられます。構造化された args のみが検索対象で、文字列は対象外です。解決できない参照(後続のステップ、失敗したステップ、一致なし)がある場合、そのステップはSEMANTIC_INVALIDで失敗します。作成したオブジェクトは、名前ではなく$ref(instanceId、または Unity 6000.4+ ではentityId)を使って参照してください。同じ名前の既存オブジェクトが名前検索で選ばれる場合があります。- クエリ:
?mode=dryRun(バッチの dryRun ゲート)を指定すると、すべてのステップを検証しますが、実行はせず、停止することもありません。ステップでは、先行ステップが作成するオブジェクトを指定できます(スキップされたライブチェックについて警告が表示されます)。また、$ref引数は構造のみが検証されます(refsValidated)。?mode=transactionalは Undo によるロールバックを伴う全件成功または全件失敗のモードです。不明なスキル、ドメインリロードを引き起こす可能性のあるステップ、またはcontinueOnError:trueが含まれる場合は、事前に拒否されます(400)。?diff=1を指定すると、正味のsceneDiffが追加されます。?wire=v2を指定すると、dryRun のステップペイロードが簡略化されます。expectInstance/expectProjectは/skillと同様に機能します。?mode=planはサポートされていません。mode/dryRunはボディにも指定できます。この場合、各キーはクエリが優先され、空の値は指定なしとして扱われます。これら以外のキー(ボディではsteps、params、continueOnError、mode、dryRun)は400 UNKNOWN_PARAMになります。
レスポンスの読み方。 バッチが実行された場合、HTTP 200 が返されます。拒否されたリクエスト(不正なボディ、ステップ数が 50 を超える、不明なモードまたはキー)のみが 4xx になります。
{"status":"partial","mode":"execute","dryRun":false,"executed":2,"failed":1,
"results":[{"index":0,"skill":"...","status":"success","result":{...}},
{"index":1,"skill":"...","status":"error","error":{"errorCode":"...","error":"..."}},
{"index":2,"skill":"...","status":"skipped"}]}
status:completed(失敗なし)、partial、またはrolled_back(transactional:実行済みステップはrolled_backとなり、アセットを書き込むステップにはrollbackReliability:"partial"のフラグが付きます)。mode/dryRunには実際に実行された内容が反映されます。各エントリーにはindexとskillが含まれます。- 部分的な失敗:
successステップは適用されます。失敗したステップで Undo に記録された変更は元に戻されます。skippedステップは実行されていません。修正した失敗ステップとスキップされたステップのみを再送信し、成功したステップは再送信しないでください。 - 認可による中断は常に発生します。
continueOnErrorの設定にかかわらず、MODE_RESTRICTED/CONFIRMATION_REQUIREDのステップでバッチは停止し、完全なペイロード(許可トークンを含む)が返されます。許可を完了してから、残りのステップを再送信してください。
batch_executeとは異なります。batch_execute(confirmToken)は、プレビュー済みの一括操作を 1 つ確定します(N 個のオブジェクトに対する 1 つの動詞)。POST /skills/batchは、任意の対象に対する N 種類のスキル を組み合わせ、トークンを必要としません。プレビュー/確認ゲートを省略することはありません。batch_executeステップにも、個別のconfirmTokenが必要です。
ジョブ。 スキルまたはステップが jobId を返した場合(非同期実行、テスト、コンパイル)、GET /jobs/{id}?wait=<s> で待機します(最大 120 秒。ジョブが終了状態になると resultData とともに応答します。waitTimedOut:true の場合は GET を再度実行してください。ドメインリロード中に 503 が発生した場合は、同じ URL を再試行してください)。または、GET /jobs/{id} をポーリングしてください。どちらもメインスレッドのスキルキューを使用せず、job_status よりはるかに小さい処理です。job_wait はメインスレッドをブロックします(最大 2 秒)。
プレビュー → 実行
queryJsonで選択します(フィルターは AND で適用されます:nameの部分一致、namePatternの正規表現、path/parentPathの完全一致、entityId、instanceId、tag、layer、componentType、sceneName、active、isStatic、prefabSource、includeInactive(false)、limit(500))。batch_query_*で一致する対象を確認できます。batch_preview_*または修正ツール(batch_fix_missing_scripts、batch_standardize_naming、batch_set_render_layer、batch_replace_material、batch_cleanup_temp_objects)でプレビューします。プレビューは読み取り専用で、{confirmToken, kind, summary, riskLevel, targetCount, executableCount, skipCount, sampleChanges: [{targetPath, action, before, after}], skipReasons}を返します。- サンプルとリスクを確認してから(実行によって多数のオブジェクトが削除または変更される場合があります)、
batch_execute(confirmToken)を実行します。トークンは一度だけ使用でき、有効期限は 1 時間です。期限切れの場合は、再度プレビューしてください。大規模な実行ではjobIdが返され、レポート(batch_report_get)に失敗が記載されます。batch_retry_failed(reportId)を実行すると、失敗した項目のみが再実行されます。
guide サーフェスプロファイルではプレビューも引き続き機能しますが、surfaceExclusion が含まれます。その場合、batch_execute はトークンを消費せずに SURFACE_EXCLUDED を返します。
動作モード
22 個のスキルのうち 4 個を除くすべては、読み取り専用の SemiAuto(クエリ、プレビュー、修正ツール、検証、レポート、ジョブの状態/進行状況/ログ/一覧)で、Approval のもとで直接実行されます。4 個の FullAuto(batch_execute、job_wait、job_cancel、batch_retry_failed)は、まずそこで MODE_RESTRICTED を返し、許可が必要です。Auto/Bypass ではすべて実行できます。NeverInSemi に該当するものはありません → 動作モード。
スキルの概要
- クエリ:
batch_query_gameobjects、batch_query_components、batch_query_assets(タイプ/フォルダー/名前の正規表現/ラベル)。 - プレビュー:
batch_preview_rename(prefix/suffix/replace/regex_replace)、batch_preview_set_property、batch_preview_replace_material、および上記の修正ツール。batch_validate_scene_objectsはレポートのみを返します(スクリプト/参照の不足、重複した名前、空のオブジェクト)。 - 実行とレポート:
batch_execute、batch_retry_failed、batch_report_get、batch_report_list。 - ジョブ:
job_status、job_progress、job_logs、job_list、job_wait、job_cancel。
スキルごとのテーブルと結果の形式については、reference/<skill_name>.md を参照してください。通常は不要です。スキーマにパラメーターが記載されています。
禁止事項(よくある誤った生成):
batch_executeは、プレビューまたは修正ツールの呼び出しで取得したconfirmTokenなしでは実行できません。batch_runは存在しません →batch_execute(confirmToken)を使用してください。job_poll/job_resultは存在しません → 状態の確認にはGET /jobs/{id}(またはjob_status)を使用してください。job_statusのresultHintに、大きな結果を返すスキルが示されます。batch_delete/batch_moveは存在しません → アセットレベルの操作にはasset_*スキルを使用してください。
その他:アセットの一括移動/コピー/削除 → asset_*、ワークフローセッションの取り消し → workflow_*。
正確なシグネチャ
Batch カテゴリーはありません。GET /skills/schema?category=Workflow には、これらのスキル(クエリ、プレビュー、実行、レポート、ジョブ)のうち 16 個が含まれ、?category=Validation には 5 個の修正ツールと batch_validate_scene_objects が含まれます。または ?names=a,b を使用してください。