4.2 KiB
Agent Test Spec: sound-designer
Agent Summary
Domain: SFX specs, audio events, mixing parameters, and sound category definitions. Does NOT own: music composition direction (audio-director), code implementation of audio systems. Model tier: Sonnet (default). No gate IDs assigned.
Static Assertions (Structural)
description:field is present and domain-specific (references SFX / audio events / mixing)allowed-tools:list includes Read, Write, Edit, Glob, Grep — does NOT include engine code execution tools- Model tier is Sonnet (default for specialists)
- Agent definition does not claim authority over music direction or audio code implementation
Test Cases
Case 1: In-domain request — appropriate output
Input: "Create an SFX spec for a sword swing attack." Expected behavior:
- Produces a complete audio event spec including:
- Event name (e.g.,
sfx_combat_sword_swing) - Variation count (minimum 3 to avoid repetition fatigue)
- Pitch range (e.g., ±8% randomization)
- Volume range and normalization target (e.g., -12 dBFS)
- Sound category (e.g.,
combat_sfx) - Suggested layering notes (whoosh layer + impact transient)
- Event name (e.g.,
- Output follows the project audio naming convention if one is established
Case 2: Out-of-domain request — redirects correctly
Input: "Compose a looping ambient music track for the forest level." Expected behavior:
- Does NOT produce music composition direction or a music brief
- Explicitly states that music direction belongs to
audio-director - Redirects the request to
audio-director - May note it can provide an SFX ambience layer spec (wind, wildlife) to complement the music once the music direction is set
Case 3: Dynamic parameter — falloff curve spec
Input: "The sword swing SFX needs distance falloff so it sounds different across the arena." Expected behavior:
- Produces a spec for the dynamic parameter including:
- Parameter name (e.g.,
distanceorlistener_distance) - Falloff curve type (e.g., logarithmic, linear, custom)
- Near/far distance thresholds with corresponding volume and high-frequency attenuation values
- Occlusion override behavior if applicable
- Parameter name (e.g.,
- Does NOT write the audio engine integration code (defers to the appropriate programmer)
Case 4: Naming convention conflict
Input: "Add a new SFX event called SWORD_HIT_1 for the melee system."
Expected behavior:
- Identifies that
SWORD_HIT_1conflicts with the established event naming convention (snake_case with category prefix, e.g.,sfx_combat_sword_hit) - Does NOT silently register the non-conforming name
- Flags the conflict to
audio-directorwith the proposed compliant alternative - Will proceed with the corrected name once confirmed by audio-director
Case 5: Context pass — uses audio style guide
Input: Audio style guide provided in context specifying: "gritty, grounded, no reverb tails over 1.5s, reference: The Witcher 3 combat audio." Request: "Create SFX specs for the full melee combat suite." Expected behavior:
- References the "gritty, grounded" tone descriptor in the spec rationale
- Caps all reverb tail specifications at 1.5 seconds as stated
- Notes the reference material (The Witcher 3) as a benchmark for mix levels and transient design
- Does NOT produce specs that contradict the style guide (e.g., no ethereal or heavily reverb-processed specs)
Protocol Compliance
- Stays within declared domain (SFX specs, event definitions, mixing parameters)
- Redirects music direction requests to audio-director
- Returns structured audio event specs (event name, variations, pitch, volume, category)
- Does not produce code for audio system implementation
- Flags naming convention violations rather than silently accepting non-conforming names
- References provided style guides and constraints in all spec output
Coverage Notes
- SFX spec format (Case 1) should match whatever event schema the audio middleware (Wwise/FMOD/built-in) requires
- Falloff curve (Case 3) verifies the agent produces implementation-ready parameter specs
- Style guide compliance (Case 5) confirms the agent reads provided context and constrains output accordingly