6.2 KiB
Skill Test Spec: /bug-report
Skill Summary
/bug-report creates a structured bug report document from a user description.
It produces a report with the following required fields: Title, Repro Steps,
Expected Behavior, Actual Behavior, Severity (CRITICAL/HIGH/MEDIUM/LOW), Affected
System(s), and Build/Version. If the user's initial description is missing any
required field, the skill asks follow-up questions to fill the gaps before
producing the draft.
The skill checks for possibly duplicate reports (by comparing to existing files
in production/bugs/) and offers to link rather than create a new report. Each
report is written to production/bugs/bug-[date]-[slug].md after a "May I write"
ask. No director gates are used — bug reporting is an operational utility.
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 report
- Has a next-step handoff (e.g.,
/bug-triageto reprioritize,/hotfixfor critical)
Director Gate Checks
None. /bug-report is an operational documentation skill. No director gates apply.
Test Cases
Case 1: Happy Path — User describes a crash, full report produced
Fixture:
production/bugs/directory exists and is empty- No similar existing reports
Input: /bug-report (user describes: "Game crashes when player enters the boss arena")
Expected behavior:
- Skill extracts: Title = "Game crashes when entering boss arena"
- Skill recognizes crash reports as CRITICAL severity
- Skill confirms repro steps, expected (no crash), actual (crash), affected system (arena/boss), and build version with the user
- Skill drafts the full structured report
- Skill asks "May I write to
production/bugs/bug-2026-04-06-game-crashes-boss-arena.md?" - File is written on approval; verdict is COMPLETE
Assertions:
- All 7 required fields are present in the report
- Severity is CRITICAL for a crash report
- Filename follows the
bug-[date]-[slug].mdconvention - "May I write" is asked with the full file path
- Verdict is COMPLETE
Case 2: Minimal Input — Skill asks follow-up questions for missing fields
Fixture:
- User provides: "Sometimes the audio cuts out"
- No existing reports
Input: /bug-report
Expected behavior:
- Skill identifies missing required fields: repro steps, expected vs. actual, severity, affected system, build
- Skill asks targeted follow-up questions for each missing field (one at a time or in a structured prompt)
- User provides answers
- Skill compiles complete report from answers
- Skill asks "May I write?" and writes on approval
Assertions:
- At least 3 follow-up questions are asked to fill missing fields
- Each required field is filled before the report is finalized
- Report is not written until all required fields are present
- Verdict is COMPLETE after all fields are filled and file is written
Case 3: Possible Duplicate — Offers to link rather than create new
Fixture:
production/bugs/bug-2026-03-20-audio-cut-out.mdalready exists with similar title and MEDIUM severity
Input: /bug-report (user describes: "Audio randomly stops working")
Expected behavior:
- Skill scans existing reports and finds the similar audio bug
- Skill reports: "A similar bug report exists: bug-2026-03-20-audio-cut-out.md"
- Skill presents options: link as duplicate (add note to existing), create new anyway
- If user chooses link: skill adds a cross-reference note to the existing file (asks "May I update the existing report?")
- If user chooses create new: normal report creation proceeds
Assertions:
- Existing similar report is surfaced before creating a new one
- User is given the choice (not forced to link or create)
- If linking: "May I update" is asked before modifying the existing file
- Verdict is COMPLETE in either path
Case 4: Multi-System Bug — Report created with multiple system tags
Fixture:
- No existing reports
Input: /bug-report (user describes: "After finishing a level, the save system
freezes and the UI doesn't show the completion screen")
Expected behavior:
- Skill identifies 2 affected systems from the description: Save System and UI
- Report is drafted with both systems listed under Affected System(s)
- Severity is assessed (likely HIGH — data loss risk from save freeze)
- Skill asks "May I write" with the appropriate filename
- Report is written with both systems tagged; verdict is COMPLETE
Assertions:
- Both affected systems are listed in the report
- Single report is created (not one per system)
- Severity reflects the most impactful component (save freeze → HIGH or CRITICAL)
- Verdict is COMPLETE
Case 5: Director Gate Check — No gate; bug reporting is operational
Fixture:
- Any bug description provided
Input: /bug-report
Expected behavior:
- Skill creates and writes the bug report
- 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 all 7 required fields before drafting the report
- Asks follow-up questions for any missing required fields
- Checks for similar existing reports before creating a new one
- Asks "May I write to
production/bugs/bug-[date]-[slug].md?" before writing - Verdict is COMPLETE when the report file is written
Coverage Notes
- The case where the user provides a severity that seems too low for the described impact (e.g., LOW for a crash) is not tested; the skill may suggest a higher severity but ultimately respects user input.
- Build/version field is required but may be "unknown" if the user doesn't know — this is accepted as a valid value and not tested separately.
- Report slug generation (sanitizing the title into a filename) is an implementation detail not assertion-tested here.