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-level
Skill Summary
Orchestrates the full level design team for a single level or area. Coordinates
narrative-director, world-builder, level-designer, systems-designer, art-director,
accessibility-specialist, and qa-tester through five steps: narrative + visual
direction in parallel (Step 1), layout (Step 2), systems (Step 3), production
concepts + accessibility in parallel (Step 4), and QA planning (Step 5). Phase 0
resolves review_mode, automation and team.size and the skill announces the
active set before Step 1 — individual spawns level-designer alone, small adds
systems-designer + art-director + qa-tester, studio adds narrative-director,
world-builder and accessibility-specialist. The orchestrator compiles all team
outputs itself and writes design/levels/[level-name].md only after asking "May I
write…?" via AskUserQuestion; per-agent artifacts are written by sub-agents under
the bounded write exception. Uses AskUserQuestion at each step gate. Produces a
summary report with verdict COMPLETE / BLOCKED and handoffs to /design-review,
/dev-story, /qa-plan.
Static Assertions (Structural)
- Has required frontmatter fields:
name,description,argument-hint,user-invocable,allowed-tools - Has ≥2 phase/step headings (Step 1 through Step 5 are all present)
- Contains verdict keywords: COMPLETE, BLOCKED
- File Write Protocol: per-agent artifacts are written by sub-agents under the bounded exception (named path, new artifact under
production/,docs/ortests/, gated step); the one exception is the compiled level doc, which the orchestrator writes itself after its own "May I write …?" prompt - Names a destination per agent under
production/levels/[level-name]/—narrative.md,lore.md,visual-direction.md,layout.md,systems.md,production-concepts.md,accessibility.md— and qa-tester's atproduction/qa/test-cases/[level-name]-cases.md - 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
/design-review,/dev-story,/qa-plan) - Error Recovery Protocol section is present: verify a named artifact is on disk before treating a step as done, surface BLOCKED immediately, always produce a partial report, full procedure (surface → assess → options → partial report) in
.claude/docs/error-recovery-protocol.md - Uses
AskUserQuestionat step transitions for user approval before proceeding (collaborativemode) - Phase 0 resolves
team.size, and the skill requires a one-line active-set announcement before Step 1 - Step 1 explicitly spawns narrative-director, world-builder and art-director in parallel
- Step 4 is explicitly marked as parallel (art-director and accessibility-specialist run simultaneously) and waits for both
- Context gathering reads:
design/gdd/game-concept.md(ordesign/game-brief.md),design/gdd/game-pillars.md,design/levels/,design/narrative/, and relevant world-building docs ## How to Delegatelists all seven roles (narrative-director, world-builder, level-designer, systems-designer, art-director, accessibility-specialist, qa-tester)- accessibility-specialist output includes severity ratings (BLOCKING / RECOMMENDED / NICE TO HAVE)
- Final level design document saved to
design/levels/[level-name].md, where[level-name]is the argument slugged — lowercase, spaces → hyphens — and adjacent-area paths use the same rule
Test Cases
Case 1: Happy Path — All team members produce outputs, document compiled and saved
Fixture:
- Resolved config block:
team.size: studio,automation: collaborative design/gdd/game-concept.mdexists and is populateddesign/gdd/game-pillars.mdexistsdesign/levels/directory exists (may contain other level docs)design/narrative/directory exists with relevant narrative docs- World-building docs for the forest region exist
Input: /team-level forest dungeon
Expected behavior:
- Before any spawn, one line announces the active set for
team.size: studio - Context gathering — orchestrator reads game-concept.md, game-pillars.md, existing level docs in
design/levels/, narrative docs indesign/narrative/, and world-building docs for the forest region - Step 1 — narrative-director, world-builder and art-director are spawned together (all three Agent calls issued before any result is awaited): narrative purpose and emotional arc; lore context and world rules; visual theme targets, lighting mood, shape language and landmarks;
AskUserQuestionpresents all three outputs before Step 2 - Step 2 — level-designer spawned with the Step 1 outputs, including the art-director's visual targets as explicit constraints; designs spatial layout, pacing curve, encounters, puzzles, entry/exit points; orchestrator checks
design/levels/for every adjacent area referenced;AskUserQuestionconfirms layout before Step 3 - Step 3 — systems-designer spawned: enemy compositions, loot tables, difficulty balance, area-specific mechanics, resource distribution;
AskUserQuestionconfirms systems before Step 4 - Step 4 — art-director (location-specific production concepts) and accessibility-specialist spawned in parallel; each accessibility concern rated BLOCKING / RECOMMENDED / NICE TO HAVE; orchestrator waits for both;
AskUserQuestionpresents both outputs before Step 5 - Step 5 — qa-tester spawned: test cases for critical path, boundary/edge cases (sequence breaks, softlocks), playtest checklist, acceptance criteria
- Orchestrator compiles all team outputs into the level design template itself — it does not re-spawn level-designer to do it — then asks via
AskUserQuestion: "May I write the compiled level design todesign/levels/forest-dungeon.md?" and writes on approval - Summary report: area overview, encounter count, estimated asset list, narrative beats, cross-team dependencies, open cross-level dependencies, accessibility concerns with resolution status; verdict: COMPLETE
- Next steps listed:
/design-review design/levels/forest-dungeon.md,/dev-story,/qa-plan
Assertions:
- Active-set line naming
team.size: studioappears before the first agent is spawned - All five sources read during context gathering before any agent is spawned
- narrative-director, world-builder and art-director Agent calls are issued in parallel in Step 1, and all three complete before Step 2
- The level-designer brief carries the art-director's Step 1 visual targets as constraints
AskUserQuestioncalled at each step gate (minimum: after Step 1, Step 2, Step 3, Step 4)- Step 4 agents (art-director, accessibility-specialist) launched simultaneously
- The compiled level doc is written by the orchestrator, not a re-spawned agent, and only after its own "May I write" approval
- Level doc saved to
design/levels/forest-dungeon.md(slugified from argument) - Verdict COMPLETE in final summary report
- Next steps include
/design-review,/dev-story,/qa-plan - Summary report includes: area overview, encounter count, estimated asset list, narrative beats
Case 2: Blocked Agent (world-builder) — Partial report produced with gap noted
Fixture:
- Resolved config block:
team.size: studio,automation: collaborative design/gdd/game-concept.mdexists- World-building docs for the forest region do NOT exist
- world-builder agent returns BLOCKED: "No world-building docs found for the forest region — cannot provide lore context"
Input: /team-level forest dungeon
Expected behavior:
- Context gathering completes
- Step 1 — narrative-director and art-director complete successfully; world-builder returns BLOCKED
- Error Recovery Protocol triggered: "world-builder: BLOCKED — no world-building docs for forest region"
AskUserQuestionpresented with options:- (a) Skip world-builder and note the gap in the final report
- (b) Retry with narrower scope (world-builder focuses only on what can be inferred from game-concept.md)
- (c) Stop here and create world-building docs first
- If user chooses (a): pipeline continues with Steps 2–5 without a lore foundation; the missing world-building context is listed as a gap in the final report
- If the world-builder remains unresolved, the final report marks the world-builder section BLOCKED and the overall verdict is BLOCKED
Assertions:
- BLOCKED surface message appears immediately when world-builder fails — before Step 2 begins without user input
AskUserQuestionoffers at minimum three options (skip / retry / stop)- Partial report produced — narrative-director's and art-director's completed work is not discarded
- The missing world-building context is named as a gap in the final report
- Overall verdict is BLOCKED (not COMPLETE) when world-builder remains unresolved
- Nothing is written in world-builder's place — the protocol's option is "skip this agent and note the gap" (
.claude/docs/error-recovery-protocol.md), not substitute lore
Case 3: No Argument — Usage guidance shown
Fixture:
- Any project state
Input: /team-level (no argument)
Expected behavior:
- Skill detects no argument provided
- Outputs usage message explaining the required argument (level name or area to design)
- Shows the invocation format
/team-level [level name or area to design] [--review full|lean|solo]with examples (forest temple,tutorial village,final boss arena) - Skill exits without reading any project files or spawning any subagents
Assertions:
- Skill does NOT spawn any subagents when no argument is given
- Usage message shows the full argument-hint:
/team-level [level name or area to design] [--review full|lean|solo] - At least one example of a valid invocation is shown
- No GDD or level files read before failing
- Verdict is NOT shown (pipeline never starts)
Case 4: Accessibility Review Gate — Blocking concern surfaces before sign-off
Fixture:
- Resolved config block:
team.size: studio,automation: collaborative - Steps 1–3 complete successfully
design/accessibility-requirements.mdcommitted tier: Standard- accessibility-specialist (Step 4, parallel) flags a BLOCKING concern: the critical path through the forest dungeon requires players to distinguish between two environmental hazards (toxic pools vs. shallow water) using color alone — no shape, icon, or audio cue differentiates them
Input: /team-level forest dungeon
Expected behavior:
- Steps 1–3 complete; Step 4 parallel phase begins
- accessibility-specialist returns: BLOCKING concern — "Critical path hazard distinction relies on color only (toxic pools vs. shallow water). Shape, icon, or audio cue required per Standard accessibility tier."
- art-director returns Step 4 output (complete)
- Skill presents both Step 4 results via
AskUserQuestion— BLOCKING concern highlighted prominently AskUserQuestionoffers:- (a) Return to level-designer + art-director to redesign the flagged elements before Step 5
- (b) Document as a known accessibility gap and proceed to Step 5 with the concern explicitly logged in the final report
- Skill does NOT proceed to Step 5 until the user acknowledges the BLOCKING concern
- Final summary lists the accessibility concern and its resolution status regardless of user choice
Assertions:
- BLOCKING accessibility concern is not treated as advisory — it is surfaced as a blocker
AskUserQuestionpresents the specific concern text (not just "accessibility issue found")- Step 5 (qa-tester) does NOT begin without user acknowledging the BLOCKING concern
- Revision path offered: level-designer + art-director can be sent back before proceeding
- Final report includes the accessibility concern and its resolution status
- art-director's completed output is NOT discarded when accessibility-specialist blocks
Case 5: Circular Level Reference — Adjacent area dependency flagged
Fixture:
- Resolved config block:
automation: collaborative(anyteam.size— level-designer is active at every size) - Steps 1–3 in progress
- level-designer (Step 2) produces a layout that specifies entry/exit points connecting to "the crystal caves" (an adjacent area)
design/levels/crystal-caves.mddoes NOT exist — the crystal caves area has not been designed yet
Input: /team-level forest dungeon
Expected behavior:
- Step 2 — level-designer produces layout including: "West exit connects to crystal-caves entry point A"
- Orchestrator checks
design/levels/forcrystal-caves.md; file not found - Dependency gap surfaced: "Level references crystal-caves as an adjacent area but
design/levels/crystal-caves.mddoes not exist" AskUserQuestionpresented with options:- (a) Proceed with a placeholder reference — note the dependency in the level doc as UNRESOLVED
- (b) Pause and run
/team-level crystal cavesfirst to establish that area
- Skill does NOT invent crystal caves content to satisfy the reference
- If user chooses (a): level doc compiled with the west exit marked UNRESOLVED; flagged in the open cross-level dependencies section of the summary report
- Final report includes open cross-level dependencies section
Assertions:
- Skill detects the missing adjacent area by checking
design/levels/— does not assume it will be created later - Skill does NOT fabricate crystal caves content (lore, layout, connections) to resolve the reference
AskUserQuestionoffers a "design crystal caves first" option referencing/team-level- If user proceeds with placeholder, level doc explicitly marks the west exit as UNRESOLVED
- Summary report includes an open cross-level dependencies section listing unresolved references
- Circular or forward references do not cause the skill to loop or crash
Protocol Compliance
- At the default
team.size: individual, the run opens with anActive set (team.size: individual): level-designerline and aNot spawned this run:line naming every other agent the pipeline names — before any agent is spawned - In
collaborativemode,AskUserQuestionused at each step transition — user approves before pipeline advances - Per-agent artifacts are written by sub-agents to paths the orchestrator named; only the compiled level doc is written by the orchestrator, after its own
AskUserQuestionapproval - A step whose named artifact is missing on disk is treated as failed, not done
- Error Recovery Protocol followed: surface → assess → offer options → partial report
- Step 1 (narrative-director, world-builder, art-director) and Step 4 (art-director, accessibility-specialist) launched in parallel per skill spec
- Partial report always produced even when agents are BLOCKED
- Accessibility BLOCKING concerns surface before Step 5 and require explicit user acknowledgment
- Verdict is one of COMPLETE / BLOCKED
- Next steps present at end:
/design-review,/dev-story,/qa-plan
Coverage Notes
- The "Retry with narrower scope" option in the blocked world-builder case (Case 2) — the retry behavior itself is not tested in depth; its full path is analogous to the blocked agent pattern covered in Case 2 and in other team-* specs.
- systems-designer (Step 3) block scenarios are not separately tested; the same Error Recovery Protocol applies and the pattern is validated by Case 2.
- Step 4 parallel ordering (art-director completing before or after accessibility-specialist) does not affect outcomes — both must return before Step 5 regardless of order.
- The level doc slug rule (lowercase, spaces → hyphens) is exercised by Case 1
(
forest dungeon→forest-dungeon.md) and Case 5 (crystal caves→crystal-caves.md); special characters and very long names are not covered. - The
smallactive set (systems-designer + art-director added) is not given its own case.