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
8.0 KiB
Skill Test Spec: /bug-triage
Skill Summary
/bug-triage turns the open bug backlog into a prioritised, sprint-assigned
action list and writes it to production/qa/bug-triage-[date].md after a
"May I write" ask. It runs on the Sonnet model. Modes: sprint (assign fixable
bugs to the current sprint, defer the rest), full (P1 → current sprint, P2 →
next sprint, P3+ → backlog), trend (trend analysis only, no assignment, from
header fields alone); no argument runs sprint if a sprint file exists, else full.
Bugs are discovered in production/qa/bugs/*.md, falling back to
production/qa/bugs.md, then a production/qa/qa-plan-*.md "Bugs Found" table.
Each bug gets a severity (S1 Critical – S4 Low, impact) and a priority
(P1 Fix this sprint – P4 Won't fix / Deferred, urgency) — two separate axes, so
the report groups bugs by priority, not severity. A deviation check flags
systemic problems (3+ bugs in one system in a sprint; 2+ S1/S2 in one story; a
bug filed against a Complete story). The verdict is COMPLETE when the report is
written, COMPLETE with no report when there are no bug files to triage, and
BLOCKED when the user declines the write. No director gates apply.
Static Assertions (Structural)
Checked against the SKILL.md by /skill-test spec — no fixture needed.
- Has required frontmatter fields:
name,description,argument-hint,user-invocable,allowed-tools - Has ≥2 phase headings
- Contains verdict keywords: COMPLETE, BLOCKED
- Contains "May I write" language before writing
production/qa/bug-triage-[date].md - Has a next-step handoff (
/sprint-statusfor unassigned S1s;/smoke-checkafter regressions)
Director Gate Checks
None. /bug-triage is an operational triage skill. No director gates apply.
Test Cases
Case 1: Happy Path — Sprint mode, 5 bugs grouped by priority
Fixture:
production/sprints/sprint-004.mdis the newest sprint file and notes spare capacityproduction/qa/bugs/contains 5 bug files:BUG-0001.md— S1, P1, AudioBUG-0002.md— S2, P1, CombatBUG-0003.md— S3, P2, UIBUG-0004.md— S2, P2, VFXBUG-0005.md— S4, P3, Tutorial
Input: /bug-triage
Expected behavior:
- No argument and a sprint file exists →
sprintmode - Reads the 5 bug files and the newest sprint file
- Classifies severity and priority separately; P1 bugs are assigned to sprint 4
- Report has the Triage Summary table (P1: 2, P2: 2, P3: 1, P4: 0), "Critical (S1/S2) unfixed count: 3", and separate P1, P2 and P3/P4 tables
- Presents the report and asks "May I write this triage report to
production/qa/bug-triage-[date].md?" - Writes only after approval
Assertions:
- Mode reported as
sprint - BUG-0001 and BUG-0002 are in the "P1 Bugs — Fix This Sprint" table, assigned to the current sprint
- BUG-0003 and BUG-0004 are in the P2 table; BUG-0005 is in the P3/P4 table
- Triage Summary counts and the S1/S2 unfixed count (3) are correct
- "May I write" names
production/qa/bug-triage-[date].md, and nothing is written before approval
Case 2: No Bug Files Found — Stops without a report
Fixture:
production/qa/bugs/does not exist- No
production/qa/bugs.mdand noproduction/qa/qa-plan-*.md
Input: /bug-triage
Expected behavior:
- Step 2a finds no bug source in any of its three locations
- Skill says: "No bug files found in
production/qa/bugs/. If bugs are tracked in a different location, adjust the glob pattern. If no bugs exist yet, there is nothing to triage." - Skill stops — no classification, no triage report, no write — and ends
Verdict: COMPLETE — no bug files in production/qa/bugs/; nothing to triage.
Assertions:
- Output states that no bug files were found in
production/qa/bugs/ - Skill stops gracefully rather than erroring
- No triage tables are produced
- No "May I write" ask and no file written
- The stop still ends with a verdict: Verdict: COMPLETE — no bug files, nothing to triage
Case 3: Systemic Issues — Deviation check flags a hot spot and a regression
Fixture:
production/sprints/sprint-004.mdexistsproduction/qa/bugs/holds 4 bugs: 3 in the Inventory system filed this sprint, and 1 filed againstproduction/epics/core/story-003.md, whoseStatus: Complete- The user approves the write when asked
Input: /bug-triage sprint
Expected behavior:
- Classifies all 4 bugs
- "Systemic Issues Flagged" lists "Potential design or implementation quality issue in Inventory"
- It also flags "Regression in completed story — story should be re-opened in sprint tracking"
- Trend Analysis names Inventory as the hot spot and counts 1 regression
- Asks "May I write this triage report to
production/qa/bug-triage-[date].md?"; the user approves and the report is written - After writing, the skill adds: "Regressions found — consider re-opening the affected
stories in sprint tracking and running
/smoke-checkto re-gate." Verdict: COMPLETE
Assertions:
- Inventory is flagged as a potential quality issue (3+ bugs in one system)
- The bug against the Complete story is flagged as a regression
- Trend Analysis shows Inventory as the hot spot and "Regressions: 1"
- The report is written only after the "May I write" ask is approved
- The post-write message recommends
/smoke-check, and the verdict is COMPLETE
Case 4: Sprint at Capacity — Overflow flagged, Won't Fix asked, write declined
Fixture:
production/sprints/sprint-004.mdnotes the sprint is at full capacityproduction/qa/bugs/holds one S2/P1 bug and one S4 bug judged P4 (cosmetic, out of scope)
Input: /bug-triage sprint
Expected behavior:
- The P1 bug is not auto-assigned to the full sprint; it is flagged
Priority overflow — consider pulling from sprint - The S4 bug is surfaced as a P4 candidate with "Are these acceptable as Won't Fix?" — it is not marked Won't Fix without the user's answer
- User declines the report write
- Verdict is BLOCKED — user declined write; no file is created
Assertions:
- P1 bug carries the
Priority overflowflag instead of a sprint assignment - The Won't Fix question is asked before any bug is dispositioned P4
- Verdict is BLOCKED when the write is declined
production/qa/bug-triage-[date].mdis not written
Case 5: Director Gate Check — Full mode, no P1 bugs
Fixture:
- No sprint file in
production/sprints/ production/qa/bugs/holds two bugs, S3/P3 and S4/P3
Input: /bug-triage full
Expected behavior:
- Notes "No sprint plan found — assigning to backlog only."
- Both bugs go to the backlog (P3+)
- Report is written after "May I write" approval
- With no P1 bugs: "No P1 bugs — build is in good shape for QA hand-off." Verdict: COMPLETE
- No director agents are spawned; no gate IDs appear
Assertions:
- "No sprint plan found — assigning to backlog only." is stated
- Both bugs are dispositioned Backlog
- "No P1 bugs — build is in good shape for QA hand-off." appears with Verdict COMPLETE
- No director gate is invoked and no gate skip messages appear
Protocol Compliance
- Discovers bugs in
production/qa/bugs/*.mdbefore the fallbacks - Keeps severity (S1–S4) and priority (P1–P4) as separate classifications
- Never auto-assigns to a sprint at capacity
- Never marks a bug Won't Fix without asking the user
- Asks "May I write" before writing the triage report
- Verdict is COMPLETE when written (or when there are no bug files to triage), BLOCKED when the write is declined
Coverage Notes
trendmode (header-field Grep only, no bug-body reads, no assignment) is not separately tested.- The consolidated
production/qa/bugs.mdandqa-plan-*.mdfallbacks are not separately tested. - The "2+ S1/S2 bugs in the same story" deviation flag and the aged-bug warning (>2 sprints) are not separately tested.