mirror of
https://github.com/Donchitos/Claude-Code-Game-Studios.git
synced 2026-10-16 10:17:06 +00:00
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
17 KiB
17 KiB
Skill Test Spec: /team-audio
Skill Summary
Orchestrates the audio team through a four-step pipeline: audio direction (audio-director) → sound design + accessibility review in parallel (sound-designer
- accessibility-specialist) → technical implementation + engine validation in
parallel (technical-artist + primary engine specialist) → code integration
(gameplay-programmer). Phase 0 resolves
review_mode,automationandteam.size, and the skill announces the active agent set in one line before Step 1 — at the defaultteam.size: individualonly sound-designer is spawned and every other agent is consulted through it. Reads relevant GDDs, the sound bible (if present), and existing audio asset lists before spawning agents. Sub-agents write their working artifacts to paths the orchestrator names, under the bounded write exception; the orchestrator compiles the audio design document itself and writes it todesign/audio/audio-[feature].mdonly after asking viaAskUserQuestion. UsesAskUserQuestionat each step transition. Verdict is COMPLETE when the audio design document is produced, BLOCKED when an unresolved dependency stops the pipeline. Skips the engine specialist when no engine is configured and recordsEngine validation: NOT ASSESSED.
Static Assertions (Structural)
- Has required frontmatter fields:
name,description,argument-hint,user-invocable,allowed-tools - Has ≥2 step/phase headings
- Contains verdict keywords: COMPLETE, BLOCKED
- Contains "File Write Protocol" section
- Sub-agent writes are limited to the bounded exception — a path the orchestrator named, a new artifact under
production/,docs/ortests/, in a step gated byAskUserQuestion; no per-write prompt inside those bounds, a "May I write" ask outside them; 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/audio/[feature]/:direction.md(audio-director),sfx-spec.md(sound-designer),accessibility.md(accessibility-specialist),integration-plan.md(technical-artist),engine-notes.md(engine specialist) - Defines a phase gate as a decision point the pipeline itself lists, whatever the
automationmode, and claims no director spawn at phase gates - The compiled audio design document is written by the orchestrator only after it asks via
AskUserQuestion"May I write the audio design todesign/audio/audio-[feature].md?" (design/is outside the bounded exception) - Every agent prompt ends with the return contract: path written, ≤5-bullet summary, BLOCKED/CONCERNS items one line each
- Has a next-step handoff at the end (references
/dev-story,/asset-audit) - 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 in
.claude/docs/error-recovery-protocol.md AskUserQuestionis used at step transitions before proceeding (collaborativemode)- Phase 0 resolves
review_mode,automationandteam.size, and requires a one-line active-set announcement before Step 1 - Step 2 explicitly spawns sound-designer and accessibility-specialist in parallel, and How to Delegate lists
accessibility-specialist - Step 2 labels a gameplay-critical audio event with no visual cue or subtitle BLOCKING, and Step 3 waits for the user to resolve or accept it
- Step 3 explicitly spawns technical-artist and engine specialist in parallel (when engine is configured)
- Skill reads the sound bible at
design/audio/sound-bible.mdduring context gathering if it exists; a sound bible still atdesign/gdd/sound-bible.md(the earlier location) is read, with a recommendation to move it - Output document is saved to
design/audio/audio-[feature].md
Test Cases
Case 1: Happy Path — All steps complete, audio design document saved
Fixture:
- Resolved config block:
team.size: studio,automation: collaborative engine.nameinproject.yamlis Godot- GDD for the target feature exists at
design/gdd/combat.md - Sound bible exists at
design/audio/sound-bible.md - Existing audio assets are listed in
assets/audio/ - No accessibility gaps exist in the planned audio event list
Input: /team-audio combat
Expected behavior:
- Before any spawn, one line announces the active set for
team.size: studio - Context gathering: orchestrator reads
design/gdd/combat.md,design/audio/sound-bible.md, andassets/audio/asset list before spawning any agent - Step 1: audio-director is spawned; defines sonic identity, emotional tone, adaptive music direction, mix targets, and adaptive audio rules for combat
AskUserQuestionpresents audio direction; user approves before Step 2 begins- Step 2: sound-designer and accessibility-specialist are spawned in parallel; sound-designer produces SFX specifications, audio event list with trigger conditions, and mixing groups; accessibility-specialist identifies critical gameplay audio events and specifies visual fallback and subtitle requirements
AskUserQuestionpresents SFX spec and accessibility requirements; user approves before Step 3 begins- Step 3: technical-artist and
godot-specialist(derived fromengine.name) are spawned in parallel; technical-artist designs bus structure, middleware integration, memory budgets, and streaming strategy; engine specialist validates that the integration approach is idiomatic for the pinned engine AskUserQuestionpresents technical plan; user approves before Step 4 begins- Step 4: gameplay-programmer is spawned; first returns the code and test files it will create or change, the orchestrator asks once for that set, and only after the yes it wires up audio events to gameplay triggers, implements adaptive music, sets up occlusion zones and writes unit tests for audio event triggers
- For every step, the orchestrator checks that the path named in the agent's return contract exists before treating the step as done
- Orchestrator compiles all outputs into a single audio design document itself (no sub-agent is re-spawned to write it)
- Orchestrator asks via
AskUserQuestion: "May I write the audio design todesign/audio/audio-combat.md?" and writes it only on approval - Summary output lists: audio event count, estimated asset count, implementation tasks, and any open questions
- Verdict: COMPLETE
Assertions:
- Active-set line naming
team.size: studioappears before the first agent is spawned - Sound bible is read during context gathering (before Step 1) when it exists
- audio-director is spawned before sound-designer or accessibility-specialist
AskUserQuestionappears after Step 1 output and before Step 2 launch- sound-designer and accessibility-specialist Agent calls are issued simultaneously in Step 2
- technical-artist and
godot-specialistAgent calls are issued simultaneously in Step 3 - gameplay-programmer is not launched until Step 3
AskUserQuestionis approved - gameplay-programmer writes no code or test file before the one ask for its implementation set is answered yes
- Audio design document is written to
design/audio/audio-combat.md(not another path), by the orchestrator, only after itsAskUserQuestionapproval - Summary includes audio event count and estimated asset count
- Verdict is COMPLETE after document delivery
Case 2: Accessibility Gap — Critical gameplay audio event has no visual fallback
Fixture:
- Resolved config block:
team.size: studio,automation: collaborative - GDD for the target feature exists
- Step 1 and Step 2 are in progress
- sound-designer's audio event list includes "EnemyNearbyAlert" — a spatial audio cue that warns the player an enemy is approaching from off-screen
- accessibility-specialist reviews the event list and finds "EnemyNearbyAlert" has no visual fallback (no on-screen indicator, no subtitle, no controller rumble specified)
Input: /team-audio stealth (Step 2 scenario)
Expected behavior:
- Steps 1–2 proceed; accessibility-specialist and sound-designer are spawned in parallel
- accessibility-specialist returns its review with a BLOCKING concern: "
EnemyNearbyAlertis a critical gameplay audio event (warns player of off-screen threat) with no visual fallback — hearing-impaired players cannot detect this threat." - Orchestrator writes the concern in conversation before presenting
AskUserQuestion AskUserQuestionpresents the accessibility concern as a BLOCKING issue with options such as:- Add a visual indicator for EnemyNearbyAlert (e.g., directional arrow on HUD) and continue
- Add controller haptic feedback as the fallback and continue
- Stop here and resolve all accessibility gaps before proceeding to Step 3
- Step 3 (technical-artist + engine specialist) is not launched until the user resolves or explicitly accepts the gap
- If the user stops: a partial report of the Step 1–2 outputs is produced and the verdict is
BLOCKED — [reason]naming the unresolved EnemyNearbyAlert gap - If the user accepts the gap and continues: the gap is listed among the open questions in the final summary
Assertions:
- Accessibility gap is labeled BLOCKING (not advisory) in the report
- The specific event name ("EnemyNearbyAlert") and the nature of the gap are stated
AskUserQuestionsurfaces the gap before Step 3 is launched- At least one resolution option is offered (add visual fallback, add haptic fallback)
- Step 3 is not launched while the gap is unresolved without explicit user authorization
- If the user stops, the verdict is
BLOCKED — [reason]naming the gap and the Step 1–2 outputs are kept in a partial report; if the user carries it forward, the final summary lists it as an open question
Case 3: No Argument — Usage guidance or design doc inference
Fixture:
- Any project state
Input: /team-audio (no argument)
Expected behavior:
- Skill detects no argument is provided
- Outputs usage guidance: e.g., "Usage:
/team-audio [feature or area to design audio for] [--review full|lean|solo]— specify the feature or area to design audio for (e.g.,combat,main menu,forest biome,boss encounter)" - Skill exits without spawning any agents
Assertions:
- Skill does NOT spawn any agents when no argument is provided
- Usage message shows the full argument-hint —
/team-audio [feature or area to design audio for] [--review full|lean|solo]— and argument examples - Skill does NOT attempt to infer a feature from existing design docs without user direction
- No
AskUserQuestionis used — output is direct guidance
Case 4: Missing Sound Bible — Skill notes the gap and proceeds without it
Fixture:
- Resolved config block:
team.size: small,automation: collaborative - GDD for the target feature exists at
design/gdd/main-menu.md - No sound bible exists at
design/audio/sound-bible.mdordesign/gdd/sound-bible.md - Engine is configured; other context files are present
Input: /team-audio main menu
Expected behavior:
- Context gathering: orchestrator reads
design/gdd/main-menu.mdand checks fordesign/audio/sound-bible.md - Sound bible is not found; orchestrator notes the gap in one line: "No sound bible at
design/audio/sound-bible.md; audio direction starts from the GDDs alone" - Pipeline proceeds normally through all four steps without the sound bible as input
- audio-director in Step 1 is informed that no sound bible exists and must establish sonic identity from the feature GDD alone
- Next Steps recommends creating the sound bible and says who writes it: the
audio-directoragent draftsdesign/audio/sound-bible.mdfrom.claude/docs/templates/sound-bible.md, starting from this run's Step 1 direction, and asks before writing
Assertions:
- Orchestrator checks for the sound bible during context gathering (before Step 1)
- Missing sound bible is noted explicitly in conversation — not silently ignored
- Pipeline does NOT halt due to the missing sound bible
- audio-director is notified that no sound bible exists in its prompt context
- Next Steps recommends creating a sound bible and names its author — the
audio-director, drafting from.claude/docs/templates/sound-bible.md - The skill does not write
design/audio/sound-bible.mditself in this run - Verdict is still COMPLETE if all other steps succeed
Case 5: Engine Not Configured — Engine specialist step skipped and recorded
Fixture:
- Resolved config block:
team.size: studio,automation: collaborative engine.nameis unset inproject.yaml, and.claude/docs/technical-preferences.mdhas no Primary engine specialist (shows[TO BE CONFIGURED])- GDD for the target feature exists
- Sound bible may or may not exist
Input: /team-audio boss encounter
Expected behavior:
- Steps 1–2 proceed normally (audio-director, sound-designer, accessibility-specialist)
- Step 3: technical-artist is spawned normally; engine specialist spawn is SKIPPED
- The run output records:
Engine validation: NOT ASSESSED — no engine configured (engine.name unset in project.yaml) - Step 4: gameplay-programmer still runs — the missing engine is not treated as a blocker
- Verdict:
COMPLETE — engine validation NOT ASSESSED (no engine configured)— the skip is graceful, not a blocker, and never a plain COMPLETE
Assertions:
- Engine specialist is NOT spawned when no engine is configured
- Skill does NOT error out due to the missing engine configuration
- The run output contains
Engine validation: NOT ASSESSED — no engine configuredwith theengine.namereason — the skip is not silently omitted - Engine integration is never described as validated or passed in this run
- technical-artist is still spawned in Step 3 (skip applies only to the engine specialist)
- gameplay-programmer still runs in Step 4
- Verdict is
COMPLETE — engine validation NOT ASSESSED (…), never a plain COMPLETE (engine not configured is a graceful case, not a blocker)
Protocol Compliance
- At the default
team.size: individual, the run opens withActive set (team.size: individual): sound-designer.and aNot spawned this run:line naming audio-director, accessibility-specialist, technical-artist, the engine specialist and gameplay-programmer, consulted through sound-designer — before any agent is spawned - Context gathering (GDDs, sound bible, asset list) runs before any agent is spawned
- In
collaborativemode,AskUserQuestionis used after every step output before the next step launches - Parallel spawning: Step 2 (sound-designer + accessibility-specialist) and Step 3 (technical-artist + engine specialist) issue all Agent calls before waiting for results
- Sub-agents write only to paths the orchestrator named; they skip the per-write prompt only inside the bounded exception (
production/,docs/,tests/) - The orchestrator writes the compiled audio design document only after an explicit
AskUserQuestionapproval - A step whose named artifact is missing on disk is treated as failed and the agent is resumed — not reported as done
- BLOCKED status from any agent is surfaced immediately as "[AgentName]: BLOCKED — [reason]" — not silently skipped
- A partial report is always produced when some agents complete and others block
- Audio design document path follows the pattern
design/audio/audio-[feature].md - Verdict is exactly COMPLETE (qualified
— engine validation NOT ASSESSED ([reason])when that step was skipped) or BLOCKED — no other verdict values used - Next Steps handoff references
/dev-storyand/asset-audit
Coverage Notes
- The "Retry with narrower scope" and "Skip this agent" resolution paths from the Error
Recovery Protocol are not separately tested — they follow the same
AskUserQuestion- partial-report pattern validated in Cases 2 and 5.
- Step 4 (gameplay-programmer) happy-path behavior is validated implicitly by Case 1. Failure modes for this step follow the standard Error Recovery Protocol.
- The accessibility-specialist's subtitle and caption requirements (beyond visual fallbacks) are validated implicitly by Case 1. Case 2 focuses on the more severe case where a critical gameplay event has no fallback at all.
- Engine specialist validation logic (idiomatic integration, version-specific changes) is tested only for the configured and unconfigured states. The specific content of the engine specialist's output is out of scope for this behavioral spec.
guidedandautonomousautomation modes (auto-advance,log_decision) are not given dedicated cases; the individual-size collapse is covered by the Protocol Compliance announcement check rather than a full run.