[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KFZKPFAQ7S66H74ANZPZ3R":3,"skill-same:01M6KFZKPFAQ7S66H74ANZPZ3R":80},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":61,"repositoryHtmlUrl":62,"repositoryHomepageUrl":6,"ownerHtmlUrl":63,"ownerBlogUrl":6,"ownerDescription":64,"updatedAt":65,"install":66,"resources":79},"01M6KFZKPFAQ7S66H74ANZPZ3R","routing",null,"Lazy skill loading router for the Unity DOTS agent team. Use this to determine which Unity-Skills modules to load before spawning agents. Never load all modules — select only what the task requires.","dyCuong03\u002Funity-agent-team","dyCuong03","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F137050365?v=4","01M6KFXC85HQHXZJC2VC1KY6EZ","CuongND","01M6KFXCCHP6CD5MTA8NECJC36",8,"MIT","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frouting\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"lazy","orchestration","layer","which","loading","unity","as","agent team","do","modules","only","never","router","orchestrator","select","team","architect","Meta","code","2026-11-10 10:12:30",false,"---\nname: routing\ndescription: Lazy skill loading router for the Unity DOTS agent team. Use this to determine which Unity-Skills modules to load before spawning agents. Never load all modules — select only what the task requires.\nuse-when: |-\n  Load when the orchestrator needs to select which Unity-Skills modules to include for an agent prompt. Load when determining Layer 1\u002F2\u002F3 skill loading strategy before spawning any agent.\ndo-not-use-when: |-\n  Do not load as a runtime skill inside any agent role. Internal orchestration helper only — never loaded by triage, unity-dev, architect, or tester.\nplatforms: [claude-code]\ntask-categories: [meta, orchestration]\nmetadata:\n  source: internal\n  version: 1.0.0\n  tier: 1\n\n---\n\n# Unity Skill Router\n\n## Status\n\nUnity-Skills routing layer **vendored** at `.claude\u002Fskills\u002Funity-skills\u002F`\n(upstream `Besty0728\u002FUnity-Skills` v1.9.2 — see\n`.claude\u002Fskills\u002Funity-skills\u002FVERSION`). 69 module SKILL.md files are\navailable locally; the orchestrator can resolve every `@.claude\u002Fskills\u002F\nunity-skills\u002Fskills\u002F\u003Cmodule>\u002FSKILL.md` reference without a missing-file\nfallback. The Unity Editor package (`com.besty.unity-skills`) must still\nbe installed into the consuming Unity project for REST calls to\n`http:\u002F\u002Flocalhost:8090` to succeed.\n\n## Purpose\n\nSelect the minimum set of Unity-Skills modules to load for a given task.\nPrevent prompt bloat. Maximize relevance. Preserve DOTS-first policy.\n\n## Domain Gating (MANDATORY — applies before keyword routing)\n\nThe classifier from `.claude\u002Fdocs\u002Frules\u002Fdual-stack-domain-system.md` runs first.\nIts output decides which side of the catalog the router is even allowed to\ndraw from:\n\n| Triage domain | Layer 1 (DOTS) | Layer 2 (Unity Foundation) | Layer 3 (unity-skills modules) |\n|---|---|---|---|\n| **DOTS** (Domain 1) | Heavy — always | Light — always | **Skip by default.** Load only if a unity-skills module is explicitly required by a hybrid touchpoint (e.g. Baker authoring, presentation bridge). MonoBehaviour-first modules are forbidden in this domain. |\n| **Unity** (Domain 2) | Light — advisory only | Heavy — always | **Primary source.** Use the keyword table below. Max 2 domain + 2 advisory. |\n| **Hybrid** (Domain 3) | Heavy — DOTS owns runtime truth | Heavy — Unity owns presentation | **Both sides loaded.** Pick one DOTS-side concern and one Unity-side concern; `verification-contract.md` requires the bridge contract be documented in `workspace\u002Fdesign.md`. |\n| **Ambiguous** | Layer 1 + 2 only | Layer 1 + 2 only | None — escalate to architect per `escalation-rules-domain.md`. |\n\nHard scoping rules:\n\n- **DOTS domain → never load** `ui`, `animator`, `navmesh`, `dotween`,\n  `event`, `gameobject`, `component` (all MonoBehaviour-first; see\n  `unity-skills-conflicts.md`). The ecs-penalty modifier in\n  `skill-confidence-routing.md` already drops these below threshold; the\n  router must respect that and not bypass it.\n- **Unity domain → never load** burst, scheduling, native-container, ECS\n  job pattern advisory unless DOTS APIs are detected in touched code.\n- **Hybrid domain → BOTH allowed**, but the bridge direction is one-way\n  (DOTS writes state, Unity reads). Verify this in `ownership-boundaries.md`.\n- **Loaded module budget** (any domain): max 2 domain + 2 advisory per agent\n  per task. The confidence threshold ≥ 0.70 from\n  `skill-confidence-routing.md` still applies.\n\n## Hard Limits\n\n- Maximum 2 domain skill modules per agent per task\n- Maximum 2 advisory modules per agent per task\n- NEVER load `workflow` or `smart` modules — they conflict with orchestration\n- NEVER load DOTween modules for ECS simulation layer tasks\n- NEVER load `gameobject` or `component` modules for runtime ECS entity tasks\n\n## Unity-DOTS Skill Pack (ECS_DEFAULT — auto-loaded when triage classifies DOTS or Hybrid)\n\nThe `unity-dots\u002F*` sub-skills (vendored under `.claude\u002Fskills\u002Funity-dots\u002F`) are loaded **in addition to** Layer 1 \u002F Layer 2 when the triage domain classification is DOTS or Hybrid. They are NOT loaded for Unity-only tasks.\n\n| Keywords (case-insensitive) | unity-dots skill | Confidence floor |\n|---|---|---|\n| baking, baker, authoring, TransformUsageFlags, BlobAsset, prefab reference, DependsOn | `dots-baking-patterns` | 0.80 |\n| ECB, EntityCommandBuffer, structural change, ParallelWriter, ChunkIndexInQuery, playback phase, BeginSimulation, EndSimulation | `dots-ecb-orchestration` | 0.80 |\n| enableable, IEnableableComponent, EnabledRefRW, SetComponentEnabled, state flip, hot toggle, archetype churn | `dots-enableable-components` | 0.78 |\n| DestroyEntity, lifecycle, ICleanupComponentData, orphan entity, two-phase teardown, subscene unload | `dots-entity-lifecycle` | 0.78 |\n| spawn, Instantiate, batched spawn, Random.CreateFromIndex, RequireForUpdate, ECB.Instantiate | `dots-spawning-patterns` | 0.78 |\n\nLoading rules:\n- Apply on top of the existing per-domain budget (max 2 unity-skills domain + 2 advisory). Unity-dots skills count **separately** as ECS_DEFAULT — they are not gated by the 2+2 budget.\n- Hard-cap unity-dots skills per agent: **2** for a tiny\u002Fsmall task, **3** for medium, **all** for large\u002Fcritical or refactor-agent runs.\n- For ambiguous classification: do NOT load unity-dots skills. Architect must classify first.\n\n## Boot Requirement\n\nBefore calling any REST skill, the orchestrator MUST call:\n```\nGET http:\u002F\u002Flocalhost:8090\u002Fhealth\n```\nCheck `currentMode`: `approval` \u002F `auto` \u002F `bypass`.\nAgents must respect this mode — do not call SemiAuto or NeverInSemi skills without user confirmation in Approval mode.\n\n## Layer Definitions\n\n### Layer 1 — Core ECS (always loaded, no routing needed)\nFile: `@.claude\u002Fskills\u002Funity-dots-best-practices\u002FSKILL.md`\n- Loaded for every agent in every task\n- DOTS > OOP Unity — this layer's rules take precedence over all Unity-Skills advice\n\n### Layer 2 — Unity Foundation (always loaded lightweight)\nFile: `@.claude\u002Fskills\u002Funity-foundation\u002FSKILL.md`\n- Loaded for `architect`, `unity-dev`, `data-tool`\n- Contains: asmdef guidance, scene-contracts, project-scout summary\n\n### Layer 3 — Domain Skills (lazy loaded by routing rules below)\nPath pattern: `@.claude\u002Fskills\u002Funity-skills\u002Fskills\u002F\u003Cmodule>\u002FSKILL.md`\n- Loaded only when task keywords match\n- Maximum 2 per agent\n\n### Layer 4 — Investigation Skills (loaded for investigation agents)\nFile: `@.claude\u002Fskills\u002Finvestigation\u002FSKILL.md`\n- Loaded for: `system-mapper`, `code-tracer`, `bug-investigation`\n- Contains: debug, console, perception usage guidance\n\n## Routing Decision Table\n\nFor each task, the orchestrator scores keyword matches and selects top-2 domain modules.\n\n### Domain Keyword → Module Mapping\n\n| Keywords (case-insensitive) | Domain Module | Advisory Module | DOTS Flag |\n|----------------------------|---------------|-----------------|-----------|\n| UI, button, panel, canvas, HUD, popup, screen, menu | `ui` | — | MonoBehaviour-first — route to view layer |\n| UI Toolkit, UXML, USS, UIDocument, VisualElement | `uitoolkit` | — | ECS-compatible |\n| animation, animator, blend tree, state machine, clip | `animator` | — | MonoBehaviour-first — flag DOTS Animation alternative |\n| shader, ShaderGraph, node graph, blackboard, HLSL | `shadergraph` | `shadergraph-design` | ECS-safe |\n| timeline, cutscene, playable, sequence, signal track | `timeline` | — | ECS-compatible |\n| camera, Cinemachine, vcam, dolly, follow camera | `cinemachine` | — | ECS-compatible |\n| physics, Rigidbody, collider, raycast, physics mat | `physics` | — | ECS-compatible |\n| navmesh, pathfinding, navigation, NavMeshAgent | `navmesh` | — | MonoBehaviour-first — no DOTS navmesh |\n| netcode, multiplayer, NetworkVariable, host, client, server, RPC | `netcode` | `netcode-design` | ECS-compatible |\n| Addressables, remote asset, bundle, streaming | — | `addressables-design` | ECS-safe |\n| YooAsset, YOO, hot update, AB build | `yooasset` | `yooasset-design` | ECS-safe |\n| DOTween, tween, Sequence, ease, DOMove | `dotween` | `dotween-design` | MonoBehaviour-first — NOT ECS-native |\n| URP, HDRP, render pipeline, volume, post process | `urp` | — | ECS-safe |\n| optimize, texture, mesh, LOD, overdraw, asset size | `optimization` | `performance` | ECS-safe |\n| profil, frame time, memory usage, GC, allocation | `profiler` | `performance` | ECS-safe |\n| prefab, baker input, authoring component | `prefab` | — | ECS-safe |\n| ScriptableObject, SO, config asset, authored data | `scriptableobject` | — | ECS-safe |\n| XR, VR, AR, headset, OpenXR, hand tracking | `xr` | — | ECS-compatible |\n| pattern, singleton, factory, observer, event bus | — | `patterns` | Medium |\n| async, UniTask, coroutine, await, async\u002Fawait | — | `async` | Medium — Jobs preferred in ECS hot paths |\n| architecture, system boundary, module design | — | `architecture` | Medium — DOTS precedence applies |\n| asmdef, assembly, compile time, dependency graph | — | `asmdef` | High |\n\n### Investigation Keyword → Module Mapping\n\n| Keywords | Module | Notes |\n|----------|--------|-------|\n| bug, error, exception, crash, NullReference | `debug` | Call `unity_diagnose` first |\n| log, warning, compile error | `console` | Read-only log capture |\n| scene, hierarchy, explore scene | `perception` | Scene reading |\n| slow, performance, frame time | `profiler` | Read-only snapshot |\n| broken reference, missing script, validate | `validation` | Project health |\n\n## Routing Examples\n\n### Task: \"Enemy stops chasing after teleport\" → `--bug`\n```\nInvestigation agent loads: debug, console (investigation layer)\nunity-dev loads: (none — bug fix, no domain skills needed unless physics or navmesh)\ntester loads: testability (foundation)\n```\n\n### Task: \"Add shop UI popup\" → `--feature`\n```\nsystem-mapper loads: perception (investigation layer)\narchitect loads: architecture (advisory), scene-contracts (foundation)\nunity-dev loads: ui (domain), uitoolkit (domain if UI Toolkit project)\ntester loads: validation (foundation)\ndata-tool (if --with-tooling): uitoolkit\n```\n\n### Task: \"Add multiplayer lobby\" → `--feature`\n```\nsystem-mapper loads: perception\narchitect loads: architecture, netcode-design (advisory)\nunity-dev loads: netcode (domain), netcode-design (advisory)\ntester loads: testability\n```\n\n### Task: \"Addressables memory leak\" → `--bug`\n```\nbug-investigation loads: debug, console\nunity-dev loads: addressables-design (advisory) — no REST skills for Addressables\ntester loads: testability, profiler\n```\n\n### Task: \"Replace transform animation with DOTween\" → `--feature`\n```\nWARNING — DOTS FLAG: DOTween is MonoBehaviour-first. Confirm this is for the view\u002Fpresentation layer.\nsystem-mapper loads: perception\narchitect loads: architecture (with DOTS boundary flag)\nunity-dev loads: dotween (domain), dotween-design (advisory)\ntester loads: testability\n```\n\n### Task: \"ECS combat system rewrite\" → `--refactor`\n```\nNo domain skills loaded — pure DOTS task\nrefactor-agent: CRG only + performance (advisory)\narchitect: asmdef (advisory), architecture (advisory)\nunity-dev: (none beyond Layer 1 ECS)\ntester: testability\n```\n\n### Task: \"Optimize texture memory\" → general\n```\ndata-tool loads: optimization (domain), profiler (domain), performance (advisory)\n```\n\n## DOTS Precedence Rule (MANDATORY)\n\nWhen any Unity-Skills module gives advice that conflicts with DOTS-first policy:\n\n1. **ISystem.OnUpdate() wins over MonoBehaviour Update()**\n2. **Entity + IComponentData wins over GameObject + MonoBehaviour state**\n3. **Jobs + Dependency wins over async\u002Fawait in hot paths**\n4. **ECB structural changes win over direct EntityManager in jobs**\n5. **ECS singleton component wins over ScriptableObject for runtime state**\n\nWhen a module is flagged MonoBehaviour-first: load it ONLY if the task is explicitly at the view\u002Fpresentation\u002Fauthoring boundary. State this boundary explicitly in the agent prompt.\n","# Unity Skill Router\n\n## Status\n\nUnity-Skills routing layer **vendored** at `.claude\u002Fskills\u002Funity-skills\u002F`\n(upstream `Besty0728\u002FUnity-Skills` v1.9.2 — see\n`.claude\u002Fskills\u002Funity-skills\u002FVERSION`). 69 module SKILL.md files are\navailable locally; the orchestrator can resolve every `@.claude\u002Fskills\u002F\nunity-skills\u002Fskills\u002F\u003Cmodule>\u002FSKILL.md` reference without a missing-file\nfallback. The Unity Editor package (`com.besty.unity-skills`) must still\nbe installed into the consuming Unity project for REST calls to\n`http:\u002F\u002Flocalhost:8090` to succeed.\n\n## Purpose\n\nSelect the minimum set of Unity-Skills modules to load for a given task.\nPrevent prompt bloat. Maximize relevance. Preserve DOTS-first policy.\n\n## Domain Gating (MANDATORY — applies before keyword routing)\n\nThe classifier from `.claude\u002Fdocs\u002Frules\u002Fdual-stack-domain-system.md` runs first.\nIts output decides which side of the catalog the router is even allowed to\ndraw from:\n\n| Triage domain | Layer 1 (DOTS) | Layer 2 (Unity Foundation) | Layer 3 (unity-skills modules) |\n|---|---|---|---|\n| **DOTS** (Domain 1) | Heavy — always | Light — always | **Skip by default.** Load only if a unity-skills module is explicitly required by a hybrid touchpoint (e.g. Baker authoring, presentation bridge). MonoBehaviour-first modules are forbidden in this domain. |\n| **Unity** (Domain 2) | Light — advisory only | Heavy — always | **Primary source.** Use the keyword table below. Max 2 domain + 2 advisory. |\n| **Hybrid** (Domain 3) | Heavy — DOTS owns runtime truth | Heavy — Unity owns presentation | **Both sides loaded.** Pick one DOTS-side concern and one Unity-side concern; `verification-contract.md` requires the bridge contract be documented in `workspace\u002Fdesign.md`. |\n| **Ambiguous** | Layer 1 + 2 only | Layer 1 + 2 only | None — escalate to architect per `escalation-rules-domain.md`. |\n\nHard scoping rules:\n\n- **DOTS domain → never load** `ui`, `animator`, `navmesh`, `dotween`,\n  `event`, `gameobject`, `component` (all MonoBehaviour-first; see\n  `unity-skills-conflicts.md`). The ecs-penalty modifier in\n  `skill-confidence-routing.md` already drops these below threshold; the\n  router must respect that and not bypass it.\n- **Unity domain → never load** burst, scheduling, native-container, ECS\n  job pattern advisory unless DOTS APIs are detected in touched code.\n- **Hybrid domain → BOTH allowed**, but the bridge direction is one-way\n  (DOTS writes state, Unity reads). Verify this in `ownership-boundaries.md`.\n- **Loaded module budget** (any domain): max 2 domain + 2 advisory per agent\n  per task. The confidence threshold ≥ 0.70 from\n  `skill-confidence-routing.md` still applies.\n\n## Hard Limits\n\n- Maximum 2 domain skill modules per agent per task\n- Maximum 2 advisory modules per agent per task\n- NEVER load `workflow` or `smart` modules — they conflict with orchestration\n- NEVER load DOTween modules for ECS simulation layer tasks\n- NEVER load `gameobject` or `component` modules for runtime ECS entity tasks\n\n## Unity-DOTS Skill Pack (ECS_DEFAULT — auto-loaded when triage classifies DOTS or Hybrid)\n\nThe `unity-dots\u002F*` sub-skills (vendored under `.claude\u002Fskills\u002Funity-dots\u002F`) are loaded **in addition to** Layer 1 \u002F Layer 2 when the triage domain classification is DOTS or Hybrid. They are NOT loaded for Unity-only tasks.\n\n| Keywords (case-insensitive) | unity-dots skill | Confidence floor |\n|---|---|---|\n| baking, baker, authoring, TransformUsageFlags, BlobAsset, prefab reference, DependsOn | `dots-baking-patterns` | 0.80 |\n| ECB, EntityCommandBuffer, structural change, ParallelWriter, ChunkIndexInQuery, playback phase, BeginSimulation, EndSimulation | `dots-ecb-orchestration` | 0.80 |\n| enableable, IEnableableComponent, EnabledRefRW, SetComponentEnabled, state flip, hot toggle, archetype churn | `dots-enableable-components` | 0.78 |\n| DestroyEntity, lifecycle, ICleanupComponentData, orphan entity, two-phase teardown, subscene unload | `dots-entity-lifecycle` | 0.78 |\n| spawn, Instantiate, batched spawn, Random.CreateFromIndex, RequireForUpdate, ECB.Instantiate | `dots-spawning-patterns` | 0.78 |\n\nLoading rules:\n- Apply on top of the existing per-domain budget (max 2 unity-skills domain + 2 advisory). Unity-dots skills count **separately** as ECS_DEFAULT — they are not gated by the 2+2 budget.\n- Hard-cap unity-dots skills per agent: **2** for a tiny\u002Fsmall task, **3** for medium, **all** for large\u002Fcritical or refactor-agent runs.\n- For ambiguous classification: do NOT load unity-dots skills. Architect must classify first.\n\n## Boot Requirement\n\nBefore calling any REST skill, the orchestrator MUST call:\n```\nGET http:\u002F\u002Flocalhost:8090\u002Fhealth\n```\nCheck `currentMode`: `approval` \u002F `auto` \u002F `bypass`.\nAgents must respect this mode — do not call SemiAuto or NeverInSemi skills without user confirmation in Approval mode.\n\n## Layer Definitions\n\n### Layer 1 — Core ECS (always loaded, no routing needed)\nFile: `@.claude\u002Fskills\u002Funity-dots-best-practices\u002FSKILL.md`\n- Loaded for every agent in every task\n- DOTS > OOP Unity — this layer's rules take precedence over all Unity-Skills advice\n\n### Layer 2 — Unity Foundation (always loaded lightweight)\nFile: `@.claude\u002Fskills\u002Funity-foundation\u002FSKILL.md`\n- Loaded for `architect`, `unity-dev`, `data-tool`\n- Contains: asmdef guidance, scene-contracts, project-scout summary\n\n### Layer 3 — Domain Skills (lazy loaded by routing rules below)\nPath pattern: `@.claude\u002Fskills\u002Funity-skills\u002Fskills\u002F\u003Cmodule>\u002FSKILL.md`\n- Loaded only when task keywords match\n- Maximum 2 per agent\n\n### Layer 4 — Investigation Skills (loaded for investigation agents)\nFile: `@.claude\u002Fskills\u002Finvestigation\u002FSKILL.md`\n- Loaded for: `system-mapper`, `code-tracer`, `bug-investigation`\n- Contains: debug, console, perception usage guidance\n\n## Routing Decision Table\n\nFor each task, the orchestrator scores keyword matches and selects top-2 domain modules.\n\n### Domain Keyword → Module Mapping\n\n| Keywords (case-insensitive) | Domain Module | Advisory Module | DOTS Flag |\n|----------------------------|---------------|-----------------|-----------|\n| UI, button, panel, canvas, HUD, popup, screen, menu | `ui` | — | MonoBehaviour-first — route to view layer |\n| UI Toolkit, UXML, USS, UIDocument, VisualElement | `uitoolkit` | — | ECS-compatible |\n| animation, animator, blend tree, state machine, clip | `animator` | — | MonoBehaviour-first — flag DOTS Animation alternative |\n| shader, ShaderGraph, node graph, blackboard, HLSL | `shadergraph` | `shadergraph-design` | ECS-safe |\n| timeline, cutscene, playable, sequence, signal track | `timeline` | — | ECS-compatible |\n| camera, Cinemachine, vcam, dolly, follow camera | `cinemachine` | — | ECS-compatible |\n| physics, Rigidbody, collider, raycast, physics mat | `physics` | — | ECS-compatible |\n| navmesh, pathfinding, navigation, NavMeshAgent | `navmesh` | — | MonoBehaviour-first — no DOTS navmesh |\n| netcode, multiplayer, NetworkVariable, host, client, server, RPC | `netcode` | `netcode-design` | ECS-compatible |\n| Addressables, remote asset, bundle, streaming | — | `addressables-design` | ECS-safe |\n| YooAsset, YOO, hot update, AB build | `yooasset` | `yooasset-design` | ECS-safe |\n| DOTween, tween, Sequence, ease, DOMove | `dotween` | `dotween-design` | MonoBehaviour-first — NOT ECS-native |\n| URP, HDRP, render pipeline, volume, post process | `urp` | — | ECS-safe |\n| optimize, texture, mesh, LOD, overdraw, asset size | `optimization` | `performance` | ECS-safe |\n| profil, frame time, memory usage, GC, allocation | `profiler` | `performance` | ECS-safe |\n| prefab, baker input, authoring component | `prefab` | — | ECS-safe |\n| ScriptableObject, SO, config asset, authored data | `scriptableobject` | — | ECS-safe |\n| XR, VR, AR, headset, OpenXR, hand tracking | `xr` | — | ECS-compatible |\n| pattern, singleton, factory, observer, event bus | — | `patterns` | Medium |\n| async, UniTask, coroutine, await, async\u002Fawait | — | `async` | Medium — Jobs preferred in ECS hot paths |\n| architecture, system boundary, module design | — | `architecture` | Medium — DOTS precedence applies |\n| asmdef, assembly, compile time, dependency graph | — | `asmdef` | High |\n\n### Investigation Keyword → Module Mapping\n\n| Keywords | Module | Notes |\n|----------|--------|-------|\n| bug, error, exception, crash, NullReference | `debug` | Call `unity_diagnose` first |\n| log, warning, compile error | `console` | Read-only log capture |\n| scene, hierarchy, explore scene | `perception` | Scene reading |\n| slow, performance, frame time | `profiler` | Read-only snapshot |\n| broken reference, missing script, validate | `validation` | Project health |\n\n## Routing Examples\n\n### Task: \"Enemy stops chasing after teleport\" → `--bug`\n```\nInvestigation agent loads: debug, console (investigation layer)\nunity-dev loads: (none — bug fix, no domain skills needed unless physics or navmesh)\ntester loads: testability (foundation)\n```\n\n### Task: \"Add shop UI popup\" → `--feature`\n```\nsystem-mapper loads: perception (investigation layer)\narchitect loads: architecture (advisory), scene-contracts (foundation)\nunity-dev loads: ui (domain), uitoolkit (domain if UI Toolkit project)\ntester loads: validation (foundation)\ndata-tool (if --with-tooling): uitoolkit\n```\n\n### Task: \"Add multiplayer lobby\" → `--feature`\n```\nsystem-mapper loads: perception\narchitect loads: architecture, netcode-design (advisory)\nunity-dev loads: netcode (domain), netcode-design (advisory)\ntester loads: testability\n```\n\n### Task: \"Addressables memory leak\" → `--bug`\n```\nbug-investigation loads: debug, console\nunity-dev loads: addressables-design (advisory) — no REST skills for Addressables\ntester loads: testability, profiler\n```\n\n### Task: \"Replace transform animation with DOTween\" → `--feature`\n```\nWARNING — DOTS FLAG: DOTween is MonoBehaviour-first. Confirm this is for the view\u002Fpresentation layer.\nsystem-mapper loads: perception\narchitect loads: architecture (with DOTS boundary flag)\nunity-dev loads: dotween (domain), dotween-design (advisory)\ntester loads: testability\n```\n\n### Task: \"ECS combat system rewrite\" → `--refactor`\n```\nNo domain skills loaded — pure DOTS task\nrefactor-agent: CRG only + performance (advisory)\narchitect: asmdef (advisory), architecture (advisory)\nunity-dev: (none beyond Layer 1 ECS)\ntester: testability\n```\n\n### Task: \"Optimize texture memory\" → general\n```\ndata-tool loads: optimization (domain), profiler (domain), performance (advisory)\n```\n\n## DOTS Precedence Rule (MANDATORY)\n\nWhen any Unity-Skills module gives advice that conflicts with DOTS-first policy:\n\n1. **ISystem.OnUpdate() wins over MonoBehaviour Update()**\n2. **Entity + IComponentData wins over GameObject + MonoBehaviour state**\n3. **Jobs + Dependency wins over async\u002Fawait in hot paths**\n4. **ECB structural changes win over direct EntityManager in jobs**\n5. **ECS singleton component wins over ScriptableObject for runtime state**\n\nWhen a module is flagged MonoBehaviour-first: load it ONLY if the task is explicitly at the view\u002Fpresentation\u002Fauthoring boundary. State this boundary explicitly in the agent prompt.\n",{"name":5,"metadata":48,"use-when":52,"platforms":53,"description":7,"do-not-use-when":55,"task-categories":56},{"tier":49,"source":50,"version":51},1,"internal","1.0.0","Load when the orchestrator needs to select which Unity-Skills modules to include for an agent prompt. Load when determining Layer 1\u002F2\u002F3 skill loading strategy before spawning any agent.",[54],"claude-code","Do not load as a runtime skill inside any agent role. Internal orchestration helper only — never loaded by triage, unity-dev, architect, or tester.",[57,25],"meta","main","fe4746b9f07e6c7c2b6d3932002183af9b9f6fa2",".claude\u002Fskills\u002Frouting",0,"https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team","https:\u002F\u002Fgithub.com\u002FdyCuong03","Game developer","2026-07-25 22:22:25",{"source":8,"skillName":5,"commands":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add dyCuong03\u002Funity-agent-team --skill routing",{"tool":72,"command":73},"bunx","bunx skills add dyCuong03\u002Funity-agent-team --skill routing",{"tool":75,"command":76},"pnpm","pnpm dlx skills add dyCuong03\u002Funity-agent-team --skill routing","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frouting\u002FSKILL.md",true,[],[81,105,129,153,172,193],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":43},"01M6KH55FFS00ET877QSMRYGX4","dots-update-groups","How to choose the right ECS system group and ordering so per-frame and per-fixed-step work is deterministic and never races its own readers. Covers InitializationSystemGroup \u002F SimulationSystemGroup \u002F PresentationSystemGroup \u002F FixedStepSimulationSystemGroup \u002F VariableRateSimulationSystemGroup, UpdateBefore \u002F UpdateAfter peer ordering, OrderFirst \u002F OrderLast group-boundary placement, RateManager, and the cross-group ordering trap. Use when adding an ISystem, fixing \"value visible one frame late\" bugs, or coupling simulation to a fixed timestep.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-update-groups\u002FSKILL.md",[],[88,89,90,91,92,93,94,95,96,35,97,98,99,100,101,102,103,104],"update","dots update groups","boundary","simulation","how","system","choose","work","use","peer","deterministic","how to","coupling","ecs","bugs","frame","value",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":43},"01M6KH50PWYEFQDCGYBZ0326F1","dots-transform-patterns","The Entities 1.x transform model — LocalTransform (writable input) vs LocalToWorld (system-owned matrix), Parent\u002FChild hierarchy, reparenting cost, uniform vs non-uniform scale (PostTransformMatrix), and when to opt out with custom transform systems. Use when designing parent\u002Fchild hierarchies, runtime reparenting (mount\u002Fdismount\u002Fsocket), or choosing transform components at the Baker boundary.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-transform-patterns\u002FSKILL.md",[],[112,113,114,115,90,93,116,117,96,118,119,120,121,122,123,124,125,126,127,128],"patterns","transform","dots transform patterns","components","mount","model","cost","runtime","systems","input","with","matrix","socket","at","child","custom","hierarchy",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":140,"publishedAt":43},"01M6KH4VW4MA14DQW4KQYPFT0S","dots-singleton-patterns","Model cross-system shared configuration and game state as a single-entity component with a strict single-writer contract. Covers RequireForUpdate gating, SystemAPI.GetSingleton \u002F GetSingletonRW \u002F HasSingleton \u002F TryGetSingleton, bake-time vs runtime-created vs ECB-system singletons, the \"exactly one entity\" runtime invariant, and the single-writer rule. Use when designing frame-stable global config, shared mutable state, or any component intended to exist on exactly one entity.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-singleton-patterns\u002FSKILL.md",[135],{"categoryNo":136,"categoryName":137,"taxonomyType":138,"taxonomyTypeDesc":139},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[112,141,142,143,144,145,146,93,117,96,147,148,149,119,150,30,122,103,151,152],"singleton","dots singleton patterns","component","config","state","game","writer","time","shared","contract","ecb","gating",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":43},"01M6KH4PR076AYNDZHD63HHWX6","dots-hybrid-bridge","The one-way bridge between DOTS-owned runtime state and Unity-owned presentation. Covers UnityObjectRef for managed asset refs in components, the DOTS-writes \u002F Unity-reads ownership rule, when to use managed IComponentData vs UnityObjectRef vs CompanionComponent, baker-bridge vs runtime-bridge, and SubScene boundary rules. Use when an entity must reference Unity assets (Mesh, Material, AudioClip, ScriptableObject), a MonoBehaviour view must read entity state, or input\u002FUI must trigger ECS work.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-hybrid-bridge\u002FSKILL.md",[],[160,161,162,163,115,145,90,164,165,95,166,167,96,119,168,29,121,169,170,171],"bridge","hybrid","dots hybrid bridge","mesh","assets","Rules","read","view","trigger","material","for","managed",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":178,"publishedAt":43},"01M6KH4FGRQ9AP2ND5H5HX4D83","dots-event-driven-ecs","Model one-frame events and external requests in ECS without dual ownership, polling, or persistent state leaks. Covers request-tag pattern with ECB, enableable command components (no structural change), event buffers (IBufferElementData), explicit consumer ownership, one-frame latency rules, and the banned C# event \u002F UnityEvent \u002F static bus anti-patterns. Use when input\u002FUI\u002Fnetwork must trigger ECS work, when a one-frame signal fans out to N consumers (damage, hit, collision), or when state changes must be processed exactly once.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-event-driven-ecs\u002FSKILL.md",[],[179,180,101,181,182,115,183,184,185,117,95,186,187,112,188,189,121,190,191,192],"event driven","driven","event","dots event driven ecs","change","ui","network","command","anti-patterns","pattern","structural","events","static","request",{"skillNo":194,"name":195,"nameZh":6,"description":196,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":197,"categories":198,"keywords":206,"publishedAt":43},"01M6KH4BWRGCEBJ8PKCKCSGT33","valid_skill","A complete, well-formed test fixture skill for SkillHub validation testing. Covers basic task routing and code review for Unity projects.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fvalid_skill\u002FSKILL.md",[199,202,205],{"categoryNo":200,"categoryName":201,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":203,"categoryName":204,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[207,208,209,210,211,212,5,42,213,214,215,216,217,218,29,219,170],"valid skill","valid","code review","testing","review","test","validation","projects","fixture skill","task","fixture","basic","complete"]