6.5 KiB
Skill Test Spec: /soak-test
Skill Summary
/soak-test generates a structured soak test protocol — an extended runtime
test plan designed to surface memory leaks, performance drift, and stability
issues that only appear under sustained gameplay. The skill produces a document
specifying the test duration, system under test, monitoring checkpoints (e.g.,
memory sample every 30 minutes), pass/fail thresholds, and conditions for early
termination.
The skill asks "May I write to production/qa/soak-[slug]-[date].md?" before
persisting. If a previous soak test for the same system exists, the skill offers
to extend the duration or add new conditions. No director gates apply. The verdict
is COMPLETE when the soak test protocol is written.
Static Assertions (Structural)
Verified automatically by /skill-test static — no fixture needed.
- Has required frontmatter fields:
name,description,argument-hint,user-invocable,allowed-tools - Has ≥2 phase headings
- Contains verdict keyword: COMPLETE
- Contains "May I write" collaborative protocol language before writing the protocol
- Has a next-step handoff (e.g.,
/regression-suiteor/release-checklist)
Director Gate Checks
None. /soak-test is a QA planning utility. No director gates apply.
Test Cases
Case 1: Happy Path — Online gameplay feature, 2-hour soak protocol
Fixture:
- User specifies: system = "online multiplayer lobby", duration = "2 hours"
technical-preferences.mdhas engine configured
Input: /soak-test online-lobby 2h
Expected behavior:
- Skill generates a 2-hour soak test protocol for the online lobby system
- Protocol includes: monitoring checkpoints every 30 minutes, metrics to track (memory usage, connection count, packet loss), pass thresholds, early termination conditions (crash or >20% memory growth)
- Networking-specific checks are included (session drop rate, reconnect handling)
- Skill asks "May I write to
production/qa/soak-online-lobby-2026-04-06.md?" - File is written on approval; verdict is COMPLETE
Assertions:
- Protocol duration matches the requested 2 hours
- Monitoring checkpoints are at reasonable intervals (e.g., every 30 minutes)
- Network-specific checks are included (not just generic memory checks)
- "May I write" is asked with the correct file path
- Verdict is COMPLETE
Case 2: No Target Defined — Prompts for system, duration, and conditions
Fixture:
- No arguments provided
- No soak test config in session state
Input: /soak-test
Expected behavior:
- Skill detects no target system or duration specified
- Skill asks: "What system or feature should be soak-tested?"
- After user responds with system: Skill asks: "What duration? (e.g., 1h, 4h, 8h)"
- After user responds with duration: Skill asks for specific conditions or uses defaults (normal gameplay loop, default player count)
- Skill generates protocol from collected inputs and asks "May I write"
Assertions:
- At minimum 2 follow-up questions are asked (system + duration)
- Default conditions are applied when user doesn't specify custom ones
- Protocol is not generated until system and duration are known
- Verdict is COMPLETE after file is written
Case 3: Previous Soak Test Exists — Offers to extend or add conditions
Fixture:
production/qa/soak-online-lobby-2026-03-15.mdexists with a 1-hour protocol- User wants to extend to 4 hours with new memory threshold conditions
Input: /soak-test online-lobby 4h
Expected behavior:
- Skill finds existing soak test for online-lobby
- Skill reports: "Previous soak test found: soak-online-lobby-2026-03-15.md (1h)"
- Skill presents options: create new protocol (4h standalone), or extend the existing protocol to 4h and add new conditions
- User selects extend; existing checkpoints are preserved, new ones added
- Skill asks "May I write to
production/qa/soak-online-lobby-2026-04-06.md?" (new file, not overwriting old one)
Assertions:
- Existing soak test is surfaced and referenced
- User is offered extend vs. new options
- New file is created (old file is not overwritten)
- Extended protocol includes both old and new checkpoints
- Verdict is COMPLETE
Case 4: Mobile Target Platform — Memory-specific checkpoints added
Fixture:
technical-preferences.mdspecifies target platform: Mobile- User requests soak test for "gameplay session" at 30 minutes
Input: /soak-test gameplay 30m
Expected behavior:
- Skill reads
technical-preferences.mdand detects mobile target platform - Soak test protocol includes mobile-specific memory checkpoints:
- Check heap memory growth vs. device baseline
- Check texture memory at checkpoint intervals
- Add warning threshold at 300MB (mobile ceiling)
- Protocol also includes thermal/battery drain advisory notes
- Skill asks "May I write?" and writes on approval; verdict is COMPLETE
Assertions:
- Mobile platform is detected from technical-preferences.md
- Memory checkpoints include mobile-appropriate thresholds (not desktop)
- Thermal/battery notes are present in the protocol
- Verdict is COMPLETE
Case 5: Director Gate Check — No gate; soak-test is a planning utility
Fixture:
- Valid system and duration provided
Input: /soak-test combat 1h
Expected behavior:
- Skill generates and writes the soak test protocol
- No director agents are spawned
- No gate IDs appear in output
Assertions:
- No director gate is invoked
- No gate skip messages appear
- Skill reaches COMPLETE without any gate check
Protocol Compliance
- Collects system, duration, and conditions before generating protocol
- Includes monitoring checkpoints at regular intervals
- Includes pass/fail thresholds and early termination conditions
- Adapts checkpoints to target platform (mobile vs. desktop)
- Asks "May I write" before creating the protocol file
- Verdict is COMPLETE when file is written
Coverage Notes
- Soak tests for specific engine subsystems (rendering pipeline, physics simulation) follow the same protocol structure and are not separately tested.
- The case where the user provides a duration shorter than the minimum useful soak period (e.g., 5 minutes) is not tested; the skill would note this is too short for meaningful results.
- Automated execution of the soak test protocol is outside this skill's scope — this skill generates the plan, not the runner.