Fix release for 1.1.1: the minimal path end to end, engine commands that run on Godot, Unity and Unreal, hook warnings you can see, and verdicts that say when they could not check. Details in CHANGELOG.md; upgrade steps in UPGRADING.md (v1.1.1 → v1.1.2). Fixes #67 Fixes #131 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuJn2FdynEybfL5KC697nJ
16 KiB
Skill Test Spec: /team-ui
Skill Summary
Orchestrates the UI team through the full UX pipeline for a single UI feature.
Coordinates ux-designer, ui-programmer, art-director, the engine UI specialist,
and accessibility-specialist through five structured phases: Context Gathering +
UX Spec (Phase 1a/1b) → UX Review Gate (Phase 1c) → Visual Design (Phase 2) →
Implementation (Phase 3) → Review in parallel (Phase 4) → Polish (Phase 5).
Phase 0 resolves review_mode, automation and team.size and the skill announces
the active set before any spawn — the default individual spawns ui-programmer +
ux-designer, small adds accessibility-specialist + art-director, studio adds the
engine UI specialist and an adversarial Phase 4 review. Phase 1a reports each of its five inputs as present or ABSENT,
and a missing design/accessibility-requirements.md is carried forward as
Accessibility: NOT ASSESSED. Uses AskUserQuestion at each phase transition.
Delegates all file writes to sub-agents and sub-skills (/ux-design,
ui-programmer). Produces a summary report with verdict COMPLETE / BLOCKED and
handoffs to /ux-review, /code-review, /team-polish.
Static Assertions (Structural)
- Has required frontmatter fields:
name,description,argument-hint,user-invocable,allowed-tools - Has ≥2 phase headings (Phase 1a through Phase 5 are all present)
- Contains verdict keywords: COMPLETE, BLOCKED
- File Write Protocol: sub-agents write under the bounded exception (named path, new artifact under
production/,docs/ortests/, gated phase) and ask outside it; sub-skills (/ux-design) ask before writing; the orchestrator does not write files directly; implementation files (code, shaders, audio, assets) are outside it — each agent lists the files it will create or change, and the skill asks once for the set before any is written - Names a destination per agent under
production/ui/[feature-name]/:visual-design.md(art-director, Phase 2),engine-notes.md(engine UI specialist),review-[agent].md(each Phase 4 reviewer, one file each) - Defines a phase gate as a decision point the pipeline itself lists, whatever the
automationmode, and claims no director spawn at phase gates - Has a next-step handoff at the end (references
/ux-review,/code-review,/team-polish) - Error Recovery Protocol section is present: verify a named artifact is on disk, surface BLOCKED immediately, always produce a partial report, full procedure (surface → assess → options → partial report) in
.claude/docs/error-recovery-protocol.md - Uses
AskUserQuestionat phase transitions for user approval before proceeding (collaborativemode) - Phase 0 resolves
team.size, and the skill requires a one-line active-set announcement before any spawn - Phase 4 is explicitly marked as parallel (ux-designer, art-director, accessibility-specialist)
- UX Review Gate (Phase 1c) is defined as a blocking gate — skill must not proceed to Phase 2 without APPROVED verdict, except by an explicit user override of NEEDS REVISION or NOT ASSESSED, which the final report records
- Team Composition lists all five roles (ux-designer, ui-programmer, art-director, engine UI specialist, accessibility-specialist)
- Engine UI specialist is read from
specialists.uiinproject.yaml(falling back to.claude/docs/technical-preferences.md), andspecialists.ui: nullis treated as unset - References the interaction pattern library (
design/ux/interaction-patterns.md) — ui-programmer must use existing patterns - Phase 1a reads
design/accessibility-requirements.mdbefore design begins
Test Cases
Case 1: Happy Path — Full pipeline from UX spec through polish succeeds
Fixture:
- Resolved config block:
review_mode: full,team.size: studio,automation: collaborative design/gdd/game-concept.mdexists with platform targets and intended audiencedesign/player-journey.mdexistsdesign/ux/interaction-patterns.mdexists with relevant patternsdesign/accessibility-requirements.mdexists with committed tier (e.g., Standard)engine.nameinproject.yamlis Godot andspecialists.uiisgodot-specialist
Input: /team-ui inventory screen
Expected behavior:
- Before any spawn, one line announces the active set for
team.size: studio - Phase 1a — orchestrator reads game-concept.md, player-journey.md, relevant GDD UI sections, interaction-patterns.md, accessibility-requirements.md; reports each input as present or ABSENT; summarizes a brief for the ux-designer
- Phase 1b —
/ux-design inventory-screeninvoked (or ux-designer spawned directly); producesdesign/ux/inventory-screen.mdusingux-spec.mdtemplate;AskUserQuestionconfirms spec before review - Phase 1c —
/ux-review design/ux/inventory-screen.mdinvoked; returns APPROVED; gate passed, proceed to Phase 2 - Phase 2 — art-director spawned; reviews full UX spec (not only wireframes); applies visual treatment; verifies color contrast; produces visual design spec with asset manifest;
AskUserQuestionconfirms before Phase 3 - Phase 3 —
godot-specialist(fromspecialists.ui) spawned first; produces implementation notes for ui-programmer; ui-programmer spawned with UX spec + visual spec + engine notes; implementation produced; interaction-patterns.md updated if new patterns introduced - Phase 4 — ux-designer, art-director, accessibility-specialist spawned in parallel, each told to find where the implementation fails its spec rather than confirm it matches (the
studioadversarial pass); all three return results before Phase 5 - Phase 5 — review feedback addressed; animations verified skippable; UI sounds confirmed through audio event system; interaction-patterns.md final check
- Summary report: UX spec status, UX review verdict, visual design status, implementation status, accessibility compliance, input method support, pattern library status; verdict: COMPLETE
Assertions:
- Active-set line naming
team.size: studioappears before the first agent is spawned - Phase 1a reads all five sources and lists each as present or ABSENT before briefing ux-designer
- UX Review Gate checked before Phase 2 — Phase 2 does NOT begin until APPROVED
- Art-director in Phase 2 reviews full spec, not just wireframe images
- Engine UI specialist is taken from
specialists.uiand spawned before ui-programmer in Phase 3 - ui-programmer lists the files it will create or change, and writes none before the one ask for that set is answered yes
- Phase 4 agents launched simultaneously (ux-designer, art-director, accessibility-specialist)
- At
team.size: studio, Phase 4's prompts are adversarial and the summary report says the adversarial pass ran - All file writes delegated to sub-agents and sub-skills
- Verdict COMPLETE in final summary report
- Next steps include
/ux-review,/code-review,/team-polish
Case 2: UX Review Gate — Spec fails review; skill halts before implementation
Fixture:
- Resolved config block:
automation: collaborative(anyteam.size— ux-designer is active at every size) design/ux/inventory-screen.mdproduced by Phase 1b/ux-reviewreturns verdict NEEDS REVISION with specific concerns flagged (e.g., gamepad navigation flow incomplete, contrast ratio below minimum)
Input: /team-ui inventory screen
Expected behavior:
- Phase 1a + 1b complete — UX spec produced
- Phase 1c —
/ux-review design/ux/inventory-screen.mdreturns NEEDS REVISION - Skill does NOT advance to Phase 2
AskUserQuestionpresented with the specific flagged concerns and options:- (a) Return to ux-designer to address the issues and re-review
- (b) Accept the risk and proceed to Phase 2 anyway (conscious decision)
- If user chooses (a): ux-designer revises spec,
/ux-reviewre-run; loop continues until APPROVED or user overrides - If user chooses (b): skill proceeds with an explicit NEEDS REVISION note in the final report
- Skill does NOT silently proceed past the gate
Assertions:
- Phase 2 does NOT begin while UX review verdict is NEEDS REVISION
AskUserQuestionpresents the specific flagged concerns before offering options- User must make a conscious choice to override — skill does not assume override
- If user accepts risk, the final report records the override: the NEEDS REVISION verdict, the concerns left open, and that the user chose to proceed
- Revision-and-re-review loop is offered (not just a one-shot failure)
- Skill does NOT discard the produced UX spec on review failure
Variant B — /ux-review returns NOT ASSESSED:
- Fixture as above, except
design/accessibility-requirements.mdis absent and the other review dimensions find no gaps, so/ux-reviewreturns NOT ASSESSED (accessibility: no committed tier) - Expected: Phase 2 does not begin;
AskUserQuestionnames the unassessed dimension and its missing input (/ux-design accessibility), with options to produce that input and re-run the review, or to proceed consciously; if the user proceeds, the final report records the NOT ASSESSED override and Phase 4 still reportsAccessibility: NOT ASSESSED — no committed tier (design/accessibility-requirements.md absent)
Assertions (variant B):
- Phase 2 does NOT begin on NOT ASSESSED without an explicit user decision — it blocks like NEEDS REVISION
- The prompt names the dimension
/ux-reviewcould not assess and the input that would make it checkable, not spec revisions - The skill does not re-run
/ux-reviewagainst the same missing input and treat the result as new - An override is recorded in the final report with the NOT ASSESSED verdict and the unassessed dimension
Case 3: No Argument — Usage guidance shown
Fixture:
- Any project state
Input: /team-ui (no argument)
Expected behavior:
- Skill detects no argument provided
- Outputs usage message explaining the required argument (UI feature description)
- Shows the invocation format
/team-ui [UI feature description] [--review full|lean|solo]with examples (inventory screen,main menu,combat HUD) - Skill exits without spawning any subagents or reading any project files
Assertions:
- Skill does NOT spawn any subagents when no argument is given
- Usage message shows the full argument-hint:
/team-ui [UI feature description] [--review full|lean|solo] - At least one example of a valid invocation is shown
- No UX spec files or GDDs read before failing
- Verdict is NOT shown (pipeline never starts)
Case 4: Accessibility Parallel Review — Phase 4 runs three streams simultaneously
Fixture:
- Resolved config block:
review_mode: full,team.size: small,automation: collaborative design/ux/inventory-screen.mdexists (APPROVED)- Visual design spec complete
- Implementation complete
design/accessibility-requirements.mdcommitted tier: Standard
Input: /team-ui inventory screen (resuming from Phase 3 complete)
Expected behavior:
- Phase 4 begins after implementation is confirmed complete
- Three Agent calls issued simultaneously: ux-designer, art-director, accessibility-specialist
- Each stream operates independently:
- ux-designer: verifies implementation matches wireframes, tests keyboard-only and gamepad-only navigation, checks accessibility features function
- art-director: verifies visual consistency with art bible at minimum and maximum supported resolutions
- accessibility-specialist: audits against the Standard accessibility tier in
design/accessibility-requirements.md; any violation flagged as a blocker
- Skill waits for all three results before proceeding to Phase 5
AskUserQuestionpresents all three review results before Phase 5 begins
Assertions:
- All three Agent calls issued before any result is awaited (parallel, not sequential)
- Phase 5 does NOT begin until all three Phase 4 agents have returned
- Accessibility-specialist explicitly reads
design/accessibility-requirements.mdfor the committed tier - Accessibility violations flagged as BLOCKING (not merely advisory)
AskUserQuestionshows all three review streams' results together before Phase 5 approval- No Phase 4 agent's output is used as input for another Phase 4 agent
Case 5: Missing Interaction Pattern Library — Skill notes the gap rather than inventing patterns
Fixture:
- Resolved config block:
automation: collaborative(anyteam.size) design/ux/interaction-patterns.mddoes NOT exist- All other required files present
Input: /team-ui settings menu
Expected behavior:
- Phase 1a — orchestrator attempts to read
design/ux/interaction-patterns.md; file not found - Skill surfaces the gap: "interaction-patterns.md does not exist — no existing patterns to reuse"
AskUserQuestionpresented with options:- (a) Run
/ux-design patternsfirst to establish the pattern library, then continue - (b) Proceed without the pattern library — ui-programmer will treat all patterns created as new and add each to a new
design/ux/interaction-patterns.mdat completion
- (a) Run
- Skill does NOT invent or assume patterns from other sources
- If user chooses (b): ui-programmer is explicitly instructed to treat all patterns created as new and to add each to a new
design/ux/interaction-patterns.mdat completion - Final report notes that interaction-patterns.md was created (or is still absent if user skipped)
Assertions:
- Skill does NOT silently ignore the missing pattern library
- Skill does NOT invent patterns by guessing from the feature name or GDD alone
AskUserQuestionoffers a "create pattern library first" option (referencing/ux-design patterns)- If user proceeds without the library, ui-programmer is told to treat all patterns as new
- Final report documents pattern library status (created / absent / updated)
- Skill does NOT fail entirely — the gap is noted and user is given a choice
Protocol Compliance
- At the default
team.size: individual, the run opens with anActive set (team.size: individual): ui-programmer + ux-designerline and aNot spawned this run:line naming art-director, accessibility-specialist and the engine UI specialist — before any agent is spawned - In
collaborativemode,AskUserQuestionused at each phase transition — user approves before pipeline advances - UX Review Gate (Phase 1c) is blocking — Phase 2 cannot begin without APPROVED, or an explicit user override of a NEEDS REVISION or NOT ASSESSED verdict that the final report records
- When
design/accessibility-requirements.mdis absent, Phase 4 reportsAccessibility: NOT ASSESSED — no committed tier (design/accessibility-requirements.md absent)and never reports the accessibility gate as passed - When no engine is configured, the engine UI specialist is skipped and the run output records
Engine validation: NOT ASSESSED — no engine configured - When the accessibility gate or the engine validation was NOT ASSESSED, the verdict names each (
COMPLETE — [accessibility | engine validation] NOT ASSESSED ([reason])) — never a plain COMPLETE - All file writes delegated to sub-agents and sub-skills — orchestrator does not call Write or Edit directly
- Phase 4 agents launched in parallel per skill spec
- Error Recovery Protocol followed: surface → assess → offer options → partial report
- Partial report always produced even when agents are BLOCKED
- Verdict is one of COMPLETE / BLOCKED
- Next steps present at end:
/ux-review,/code-review,/team-polish
Coverage Notes
- The HUD-specific path (
/ux-design hud+hud-design.mdtemplate + visual budget check in Phase 5) is not separately tested here; it shares the same phase structure but uses different templates. - The "Update in place" path for interaction-patterns.md (new pattern added during implementation) is exercised implicitly in Case 1 Phase 3 — a dedicated fixture with a known new pattern would strengthen coverage.
- Engine UI specialist unavailable (no engine configured) is asserted in Protocol Compliance but not given a dedicated fixture; a missing accessibility-requirements file is exercised at the Phase 1c gate by Case 2 variant B.
- The NEEDS REVISION and NOT ASSESSED overrides (Case 2, both variants) must be recorded in the final report; this is asserted but not further tested for downstream effects.
- A MAJOR REVISION NEEDED verdict from
/ux-reviewis not given a case.