Skip to content
cccskills
FreePublished on GitHub

guide

Unity Prefab / Scene / Asset の壊れた参照・Variant override・配線ミスを構造化応答で診断し、 dry-run → confirm 経路で安全に修復するための MCP ツールリファレンス。Editor Bridge のセットアップ手順もここに含む。

トリガー: .prefab, .unity, .asset, .mat, Prefab, Variant, 配線, 参照, 壊れた参照, broken reference, GUID, fileID, override, パッチ, patch plan, validate refs, validate structure, where-used, inspect variant, inspect wiring, inspect hierarchy, wiring, null参照, null reference, MonoBehaviour, 階層, hierarchy, Transform整合, 孤立, orphan, 重複fileID, duplicate fileID, Editor Bridge, Bridge セットアップ, bridge setup, deploy_bridge, UNITYTOOL_BRIDGE_WATCH_DIR, watch ディレクトリ のいずれかに該当する作業で使用する。

The English summary is being prepared. Showing the original description.

Works withUnity
See how to install

Files included (1)

  • SKILL.md16.9 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Unity プロジェクトで Prefab / Scene / Asset の検査・編集・参照修復を行う MCP ツールリファレンス。

MCP ツールとして呼び出す(CLI は v0.4.0 で廃止済み)。Plugin 導入時はホスト(Claude Code / Codex CLI)が MCP サーバーを自動起動するため、このスキルが使える時点でツールは接続済み。

書き込みの実適用・実行検証・editor_* ツールを使うには Editor Bridge のセットアップが必要 → Unity Bridge セットアップ。read-only 検査・dry-run だけならセットアップ不要。

30 秒で動く 3 つの例

最短経路。UNITYTOOL_BRIDGE_WATCH_DIR 等の Editor Bridge 環境変数は read-only 経路では不要(broken-reference 検出と Variant 差分は YAML 直読みで完結する)。activate_project はセッションで最初に 1 回呼び、scope(必須)と Unity プロジェクトルート(project_root、任意)を宣言する。

(1) 壊れた参照を検出する — validate_refs で broken GUID / fileID を構造化応答で取り出す。

activate_project(scope="Assets/<feature>", project_root="/path/to/unity/project")
validate_refs(scope="Assets/<feature>")

返ってきた envelope の data.unique_missing_asset_guids が空配列なら OK、要素があれば未解決 GUID の集合(重複排除済み)。data.broken_occurrences に発生回数。

(2) Variant の override を可視化する — inspect_variant で base からの差分のみを取り出す。

inspect_variant(asset_path="Assets/<feature>/Variants/Foo.prefab", show_origin=True)

各 override に origin_path / origin_depth が付き、どの prefab(Base / Mid / Leaf)が値を確定したかを追える。

(3) 編集を dry-run でプレビューする — set_property の confirm=False で差分だけ取り出す(書き込まない)。

set_property(
  asset_path="Assets/<feature>/Foo.prefab",
  symbol_path="CharacterBody/MeshRenderer",
  property_path="m_StaticBatchInfo.firstSubMesh",
  value=2,
  confirm=False,
)

symbol_path は GameObject パス + 末尾コンポーネント名でコンポーネント自体を指す(asset_path と symbol_path は常に別引数)。severity と data.diff を読んで意図通りなら confirm=True + 非空 change_reason で再呼び出し。change_reason を欠くと CHANGE_REASON_REQUIRED で拒否される。

最初に困ったらこの 3 ツール

どこから手をつけるか迷ったらここから。各ツールは read-only で副作用なし。

  • validate_refs — broken GUID / fileID を全件検出する起点。scope 引数でスコープを宣言する。<scope>/config/ignore_guids.txt があれば auto-load される。
  • inspect_wiring — MonoBehaviour フィールドの配線(null / fileID 不整合 / 重複参照)を分析する。script_filter で特定の script class に絞れる。
  • inspect_hierarchy — GameObject の階層ツリーをコンポーネント注釈付きで読む。expand_monobehaviour=true でスクリプトクラス名を展開する。

書き込み系(set_property / patch_apply / add_component 等)はこの 3 つで現状把握してから着手する。

MCP ツールのカテゴリ

全 MCP ツールの正本カタログは docs/tools.md、応答エンベロープ(success / severity / code / message / data / diagnostics)とエラーコードの正本は docs/api-reference.md。各ツールの引数・戻り値は MCP ツールスキーマに記述されている。主なカテゴリ:

  • 検査(read-only・Unity 不要) — validate_refs / validate_structure / inspect_wiring / inspect_variant / inspect_hierarchy / inspect_materials / find_referencing_assets / get_unity_symbols / find_unity_symbol / diff_unity_symbols / list_serialized_fields / validate_field_rename / check_field_coverage
  • 編集(write・dry-run/confirm ゲート) — set_property / set_properties / add_component / remove_component / patch_apply / revert_overrides / set_material_property / copy_asset / rename_asset
  • 実行検証 — validate_runtime(UdonSharp compile + ClientSim、Editor Bridge 常駐が必須)
  • Editor 操作(Editor Bridge 常駐が必須) — editor_* 系。Scene / Hierarchy / Component / Material / BlendShape / Animation / Console / Prefab Stage の検査・編集(editor_screenshot / editor_open_prefab / editor_close_prefab / editor_safe_save_prefab / editor_execute_menu_item / editor_recompile(同期再コンパイル)/ editor_refresh(compile-aware refresh)等)。完全な一覧は docs/tools.md の editor_* カテゴリ群を参照
  • セッション — activate_project(スコープ宣言 + キャッシュ warm)/ get_project_status / deploy_bridge(Bridge C# / .asmdef を Unity プロジェクトへ同期)

offline / live の権威境界: offline 系(get_unity_symbols / find_unity_symbol / set_property / set_properties 等、symbol_path で住所する)は last-saved disk YAML を権威とし Unity 不要で動く。live 系(editor_*、hierarchy_path で住所する)は live editor / Prefab Stage を権威とする。Editor Bridge 接続中かつ live に未保存変更がある間、offline symbol-reference ツールはペイロードに freshness マーカーを付け、ツリーが last-saved disk を反映し live と乖離しうることを通知する(issue #40)。

書き込み系ツールは confirm=True + 非空 change_reason の監査ペアを必須とする(patch_apply / set_properties は out_report も必須)。

パッチ計画 JSON

複数操作をまとめて適用するときは patch_apply に plan JSON を渡す。plan_version: 2 が唯一受け入れられる形状(旧 {"target": ..., "ops": [...]} 形状は ValueError で即時拒否される)。

  • resources[] — 編集対象。kind(prefab / scene / asset / material / json)と mode(open = 既存編集 / create = 新規作成)。
  • ops[] — 操作列。open は既存プロパティの値変更・配列操作のみ。create は階層・コンポーネントのゼロ作成(result ハンドルで作成物に名前を付け後続 op から参照、ルートは自動で "root" ハンドル)。
  • postconditions[] — 適用後の検証条件。

最小例(open mode のプロパティ編集):

{
  "plan_version": 2,
  "resources": [
    {"id": "res1", "kind": "prefab", "path": "Assets/.../Target.prefab", "mode": "open"}
  ],
  "ops": [
    {"resource": "res1", "op": "set", "component": "SkinnedMeshRenderer", "path": "m_Enabled", "value": true}
  ],
  "postconditions": []
}

完全なスキーマ(op 種別一覧、create / scene モード、配列操作、複数リソース、annotated examples)は docs/execution-reference.md の「patch_apply 入力スキーマ」節を参照。実例集は knowledge/prefab-sentinel-patch-patterns.md。

パッチ計画の要点

  • open モードの component は 型名セレクタで指定する(例: SkinnedMeshRenderer、UnityEngine.MeshFilter)。同型が複数あるときは TypeName@/hierarchy/path で曖昧性を解消する。YAML の数値 fileID はセレクタに使えない(C# ブリッジは型名で検索する)。
  • patch_apply の add_component op は create モード専用で、open モードでは create-mode operation エラーになる。既存 Prefab への追加は、別ツールの add_component の対応条件を確認し、prefab-sentinel:variant-safe-edit の事前診断 → dry-run → confirm の経路を使う。対応する MCP 操作が利用できない、または適用条件を確認できない場合は停止し、YAML 直接編集へ迂回しない。
  • 配列操作(insert_array_element / remove_array_element)の path は m_Array.Array.data のように .Array.data で終わる必要がある(Unity SerializedProperty の規約)。
  • ObjectReference の value — open モードは {"guid": "...", "fileID": ...} 形式または null、create モードは {"handle": "..."} でハンドル参照。create モードでハンドル文字列を裸で渡すとランタイムエラーになる。
  • Unity 組み込みリソースの GUID: 0000000000000000e000000000000000(unity default resources — メッシュ Sphere / Cube 等)、0000000000000000f000000000000000(unity_builtin_extra — マテリアル・シェーダ)。fileID⇔名前の解決は prefab_sentinel/builtin_assets.py。
  • UdonSharp コンポーネントは 2 つの MonoBehaviour(UdonSharpBehaviour + backing UdonBehaviour、後者は m_Script が固定 GUID 45115577ef41a5b4ca741ed302693907)で構成され、片方だけでは "Selected U# behaviour is not setup" になる。create モードの add_component で UdonSharpBehaviour 派生型を指定すると backing が自動生成・自動配線される。

ワークフロー・実践パターン

詳細は knowledge ファイルを参照:

  • knowledge/prefab-sentinel-workflow-patterns.md — ワークフロー選択、判断ルール
  • knowledge/prefab-sentinel-variant-patterns.md — Variant 操作、VRChat 着せ替え
  • knowledge/prefab-sentinel-editor-camera.md — カメラ操作パターン
  • knowledge/prefab-sentinel-material-operations.md — マテリアル操作パターン
  • knowledge/prefab-sentinel-wiring-triage.md — 配線検査の読み方
  • knowledge/prefab-sentinel-patch-patterns.md — パッチ計画の実例集

VRChat エコシステムナレッジ

knowledge/ には ModularAvatar / liltoon / VRCFury / AvatarOptimizer など主要な VRChat エコシステムツールのドメインナレッジが同梱されている(L1 概念 / L2 操作パターン / L3 SerializedProperty の 3 レベル構成)。

これらのツールが関わる Prefab / Scene / Material を検査・編集するときは、判断の前に対応する knowledge/*.md を読む。SerializedProperty 名やコンポーネントの不変条件はツールごとに異なり、読まずに編集するとそのツールの作法を外した変更になる。

対象ファイルは knowledge/ を Glob し、コンポーネント型名・シェーダー名・パッケージ名から特定する。VRChat SDK / UdonSharp 自体のナレッジも knowledge/ に含まれる。

個別のファイル名はここに列挙しない — knowledge/ ディレクトリの内容そのものが単一の正本で、新しいツールのナレッジは knowledge-acquisition スキルが随時追加する。このスキルに一覧を持たせると drift するため、必ず Glob で実体を見る。

関連スキル(ワークフロー自動化)

本 guide は MCP ツールリファレンスと Editor Bridge セットアップ手順。以下のスキルは複数ツールを組み合わせたゲート付きワークフローを提供する。

スキル用途トリガー
/prefab-sentinel:variant-safe-editPrefab/Scene/Asset の安全な編集。preflight → dry-run → confirm → validate のフルパイプラインパッチ適用、Prefab 編集全般
/prefab-sentinel:prefab-reference-repair壊れた参照の検出・修復。ignore-guid ポリシーと decision_required ゲート付きvalidate_refs で壊れた GUID/fileID が検出されたとき
/prefab-sentinel:udon-log-triageランタイム例外・Udon/ClientSim ログエラーの分類→アセット特定→修正提案ランタイム例外やログベースのリグレッション発生時

Unity Bridge セットアップ

read-only 検査(validate_* / inspect_* / find_*、および patch の dry-run)は Unity も Bridge も不要 — このスキル冒頭の例だけで動く。書き込みの実適用(confirm=True)・validate_runtime・editor_* ツールを使うときだけ Editor Bridge をセットアップする。

セットアップ runbook

ユーザーが「Bridge セットアップして」と依頼したら、AI 側のツール呼び出しとユーザーの Unity 側手動操作を分けて、次を順に進める。

  1. プロジェクト確認 + Bridge C# 配置(AI) — ユーザーに Unity プロジェクトルートを確認し、activate_project でスコープを宣言してから deploy_bridge を呼ぶ。

    activate_project(scope="Assets/<feature>", project_root="/path/to/unity/project")
    deploy_bridge()
    
    • deploy_bridge は activate_project が前提(プロジェクト未活性なら DEPLOY_NO_PROJECT で停止)。
    • target_dir 省略時の既定は <project_root>/Assets/Editor/PrefabSentinel/。明示する場合もプロジェクト内に限る(外側は DEPLOY_OUTSIDE_PROJECT)。
    • Bridge C#(partial 分割された全ファイル)と .asmdef をコピーし、配置先の親ディレクトリに残った旧 PrefabSentinel.*.cs を除去して CS0101 重複定義エラーを防ぐ。手動 cp は partial 分割ファイル群を取りこぼすため使わない。
  2. Unity でコンパイル完了を待つ(ユーザー手動) — ユーザーに Unity Editor へ切り替えてもらい、配置された C# のコンパイル完了を待つ。この時点では Editor Bridge がまだ起動していないため、editor_recompile / editor_console は使えない(chicken-and-egg)。ユーザーが Unity Console を目視し、コンパイルエラーが無いことを確認する。エラーがある場合: CS0101(重複定義)なら配置先や親ディレクトリに旧 Bridge ファイルが残存、CS0246 等の型未解決なら VRChat SDK / UdonSharp の未導入・バージョン不整合を疑う。

  3. Editor Bridge ウィンドウを開く(ユーザー手動) — Unity Editor の PrefabSentinel > Editor Bridge メニューからウィンドウを開き、watch ディレクトリ(例: <project_root>/Temp/PrefabSentinelBridge)を入力して有効化する。

  4. UNITYTOOL_BRIDGE_WATCH_DIR を設定(AI) — 手順 3 でユーザーが入力した watch ディレクトリのパスを確認し、同じ値を環境変数 UNITYTOOL_BRIDGE_WATCH_DIR に設定する。この env は MCP サーバープロセスが読む。MCP サーバーはホスト(Claude Code / Codex CLI)が起動するため、ホストが MCP サーバーを spawn する際に渡る場所 — OS のユーザー環境変数、またはホストの MCP server 設定の env ブロック — に置く。設定後は反映のためホスト / MCP サーバーセッションを再起動する。UNITYTOOL_* 環境変数の正本と Windows / WSL のパス変換は CONFIGURATION.md を参照。

    依頼の仕方: ユーザーは「watch dir を <path> にして」と頼めばよい。AI はそのパスを確認し、env を設定し、反映には再起動が要る旨を伝える。

  5. 疎通確認(AI) — get_project_status を呼び、data.editor_state が non-null(is_playing 等 4 つの bool フラグが返る)なら Bridge は接続済み。null なら未接続 — 手順 2〜4 を見直す。最後に validate_runtime で実行検証経路まで通ることを確認する。

アーキテクチャ

Python → {uuid}.request.json をアトミック書き込み → Editor Bridge がポーリング検出 → UnityPatchBridge / UnityRuntimeValidationBridge / UnityEditorControlBridge が処理 → {uuid}.response.json をアトミック書き込み → Python がポーリング読み取り。Editor を閉じずに、ロード済みアセットキャッシュを跨いだ操作ができる。

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Create or repair a project-local Inspector profile after INSPECTOR_PROFILE_REQUIRED, INSPECTOR_PROFILE_INCOMPLETE, INSPECTOR_PROFILE_INVALID, or PROFILE_AUTHORING_REQUIRED, using Unity component source, custom Inspector evidence, serialized surfaces, and validation diagnostics.

The English summary is being prepared. Showing the original description.

tyunta/prefab-sentinel11Updated Sep 13, 2026

VRChat エコシステムツール(ModularAvatar / liltoon / VRCFury / AvatarOptimizer 等)の ナレッジを 4 フェーズで段階的に調査・検証し `knowledge/*.md` に再現可能な形で蓄積する。 ソースコード読解 → inspect 実測まで進めると confidence を `high` に昇格できる。 トリガー: 新しい VRChat コミュニティツールに初めて遭遇した、 既存ナレッジの confidence が low で作業に支障がある、 ユーザーから「このツールについて調べて」と依頼された場合。

The English summary is being prepared. Showing the original description.

tyunta/prefab-sentinel11Updated Sep 13, 2026

壊れた GUID / fileID 参照を検出し、一意な置換先のみ `safe_fix`、それ以外は `decision_required` で保留する。ignore-guid file (`<scope>/config/ignore_guids.txt`) と allowlist branch 経由で noise を整理する。 トリガー: `validate_refs` で missing GUID / fileID が出た、Broken PPtr の調査。

The English summary is being prepared. Showing the original description.

tyunta/prefab-sentinel11Updated Sep 13, 2026

Udon / ClientSim のランタイム例外を分類してアセット / コンポーネントに紐づけ、 決定的な修正は `safe_fix`、判断が必要なものは `decision_required` で仕分ける。 トリガー: ランタイム例外、Udon nullref、ClientSim 起動失敗、ログベースの regression。

The English summary is being prepared. Showing the original description.

tyunta/prefab-sentinel11Updated Sep 13, 2026

Prefab / Scene / Asset を壊さず編集する。preflight 診断 → dry-run 差分 → confirm + change_reason 監査 → runtime 検証の 4 段ゲートを 1 経路で踏む。 トリガー: パッチ適用、Prefab Variant 編集、`set_property` / `patch_apply` / `revert_overrides` を伴う変更全般。

The English summary is being prepared. Showing the original description.

tyunta/prefab-sentinel11Updated Sep 13, 2026

See all skills by tyunta

Report a problem with this skill