Claude-Code-Game-Studios/CCGS Skill Testing Framework/agents/engine/unity/unity-ui-specialist.md
Donchitos a73ff759c9 Add v0.5.0: CCGS Skill Testing Framework, skill-improve, 4 new skills, director gate path fixes
- Add CCGS Skill Testing Framework: self-contained QA layer with 72 skill specs,
  49 agent specs, catalog.yaml, quality-rubric.md, templates, README, CLAUDE.md
- Add /skill-improve: test-fix-retest loop covering static + category checks
- Add 4 missing skills: /art-bible, /asset-spec, /day-one-patch, /security-audit
- Add /skill-test category mode (Phase 2D) with quality rubric evaluation
- Extend /skill-test audit to cover agent specs alongside skill specs
- Update all skill-test and skill-improve path refs to CCGS Skill Testing Framework/
- Remove stale tests/skills/ directory (superseded by CCGS Skill Testing Framework)
- Add director gate intensity modes (full/lean/solo) to gate-check and related skills

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 17:42:32 +10:00

4.2 KiB

Agent Test Spec: unity-ui-specialist

Agent Summary

Domain: Unity UI Toolkit (UXML/USS), UGUI (Canvas), data binding, runtime UI performance, and UI input event handling. Does NOT own: UX flow design (ux-designer), visual art style (art-director). Model tier: Sonnet (default). No gate IDs assigned.


Static Assertions (Structural)

  • description: field is present and domain-specific (references UI Toolkit / UGUI / Canvas / data binding)
  • allowed-tools: list includes Read, Write, Edit, Bash, Glob, Grep
  • Model tier is Sonnet (default for specialists)
  • Agent definition does not claim authority over UX flow design or visual art direction

Test Cases

Case 1: In-domain request — appropriate output

Input: "Implement an inventory UI screen using Unity UI Toolkit." Expected behavior:

  • Produces a UXML document defining the inventory panel structure (ListView, item templates, detail panel)
  • Produces USS styles for the inventory layout and item states (default, hover, selected)
  • Provides C# code binding the inventory data model to the UI via INotifyValueChanged or IBindable
  • Uses ListView with makeItem / bindItem callbacks for the scrollable item list
  • Does NOT produce the UX flow design — implements from a provided spec

Case 2: Out-of-domain redirect

Input: "Design the UX flow for the inventory — what happens when the player equips vs. drops an item." Expected behavior:

  • Does NOT produce UX flow design
  • Explicitly states that interaction flow design belongs to ux-designer
  • Redirects the request to ux-designer
  • Notes it will implement whatever flow the ux-designer specifies

Case 3: UI Toolkit data binding for dynamic list

Input: "The inventory list needs to update in real time as items are added or removed from the player's bag." Expected behavior:

  • Produces the ListView pattern with a bound ObservableList<T> or event-driven refresh approach
  • Uses ListView.Rebuild() or ListView.RefreshItems() on the backing collection change event
  • Notes the performance considerations for large lists (virtualization via makeItem/bindItem pattern)
  • Does NOT use QuerySelector loops to update individual elements as a list refresh strategy — flags that as a performance antipattern

Case 4: Canvas performance — overdraw

Input: "The main menu canvas is causing GPU overdraw warnings; there are many overlapping panels." Expected behavior:

  • Identifies overdraw causes: multiple stacked canvases, full-screen overlay panels not culled when inactive
  • Recommends:
    • Separate canvases for world-space, screen-space-overlay, and screen-space-camera layers
    • Disable/deactivate panels instead of setting alpha to 0 (invisible alpha-0 panels still draw)
    • Canvas Group + alpha for fade effects, not individual Image alpha
  • Notes UI Toolkit alternative if the project is in a migration position

Case 5: Context pass — Unity version

Input: Project context: Unity 2022.3 LTS. Request: "Implement the settings panel with data binding." Expected behavior:

  • Uses UI Toolkit with the 2022.3 LTS version of the runtime binding system
  • Notes that Unity 2022.3 introduced runtime data binding (as opposed to editor-only binding in earlier versions)
  • Does NOT use the Unity 6 enhanced binding API features if they are not available in 2022.3
  • Produces code compatible with the stated Unity version, with version-specific API notes

Protocol Compliance

  • Stays within declared domain (UI Toolkit, UGUI, data binding, UI performance)
  • Redirects UX flow design to ux-designer
  • Returns structured output (UXML, USS, C# binding code)
  • Uses the correct Unity UI framework version for the project's Unity version
  • Flags Canvas overdraw as a performance antipattern and provides specific remediation
  • Does not use alpha-0 as a hide/show pattern — uses SetActive() or VisualElement.style.display

Coverage Notes

  • Inventory UI (Case 1) should have a manual walkthrough doc in production/qa/evidence/
  • Dynamic list binding (Case 3) should have an integration test or automated interaction test
  • Canvas overdraw (Case 4) verifies the agent knows the correct Unity UI performance patterns