vt-d-triage-bugs¶
Triage pending bug reports — promote to bugs/, defer, or mark as duplicate
Plugin: vt-product-dev
Category: Other
Command: /vt-d-triage-bugs
/vt-d-triage-bugs — Bug Triage Skill¶
Process pending bug reports in intake/pending/bugs/. For each non-deferred bug, decide: promote to the tracked bugs backlog, defer for later, or close as duplicate.
Invocation¶
Execution¶
Step 1: Scan Pending Bugs¶
Glob intake/pending/bugs/BUG-*.md.
For each file, read YAML frontmatter. Skip files where status: deferred.
If no pending (non-deferred) bugs found:
Exit.Step 2: Process Each Bug¶
For each pending bug (sorted by filename):
Display summary:
───────────────────────────────────────────────────────
BUG-NNN: [title]
Severity: [severity]
Reported: [reported_at]
───────────────────────────────────────────────────────
Steps: [steps to reproduce, truncated to 3 lines]
Expected: [expected behavior]
Actual: [actual behavior]
───────────────────────────────────────────────────────
Ask via AskUserQuestion: "What should we do with BUG-NNN?" Options: - Promote — move to bugs/ backlog for investigation - Defer — keep in intake, mark deferred (skip in future triage) - Duplicate — close as duplicate of an existing bug
If Promote:¶
- Build slug from title: lowercase, spaces → hyphens, max 30 chars, strip special chars
Example: "Login fails on Safari" →
login-fails-on-safari - Run
mkdir -p bugs/NNN-slug/(NNN = zero-padded fromid:field) - Copy intake file content →
bugs/NNN-slug/report.md - Resolve the bug's domain (SPEC-122):
- Read
domain:from the source frontmatter - If present, preserve as-is in
bugs/NNN-slug/report.md(the copy in step 3 already carries it; no edit needed) - If absent (legacy bug authored before SPEC-122), prompt the user via
AskUserQuestion. Build the option list dynamically from
intake/projects.yaml(uniquedomain:values acrossprojects:entries), and appendcross-cuttingas a fixed final choice - Write the chosen value into the
domain:frontmatter field ofbugs/NNN-slug/report.md(and into the intake copy at step 7 below so the archived record stays consistent) - Write
bugs/NNN-slug/state.yaml: - Update
.design-state.yaml: add entry underbugchen_status::Ifbugchen_status: BUG-NNN: dir: bugs/NNN-slug/ title: [title] severity: [severity] status: triaged domain: [domain from step 4] reported_at: [reported_at from source frontmatter]bugchen_status:key does not exist in.design-state.yaml, add it. Thestatus:,domain:, andreported_at:fields are required by SPEC-122parse_bugchen_statusfor dashboard filtering and rendering (matches data-model.md Entity 3 schema). - Update intake file frontmatter: set
status: triaged(so the archived copy reflects final disposition). Also write the resolveddomain:value from step 4 if the intake file lacked it. - Ensure
intake/processed/bugs/directory exists (runmkdir -p intake/processed/bugs/if needed) - Run
git mv intake/pending/bugs/BUG-NNN.md intake/processed/bugs/BUG-NNN.md - Report:
✓ BUG-NNN promoted to bugs/NNN-slug/
If Defer:¶
- Edit
intake/pending/bugs/BUG-NNN.mdfrontmatter: setstatus: deferred - Report:
→ BUG-NNN deferred
If Duplicate:¶
- Ask via AskUserQuestion: "Duplicate of which bug? (e.g. BUG-005)"
- Edit intake file frontmatter: set
status: duplicate, addduplicate_of: [answer] - Ensure
intake/processed/bugs/directory exists (runmkdir -p intake/processed/bugs/if needed) - Run
git mv intake/pending/bugs/BUG-NNN.md intake/processed/bugs/BUG-NNN.md - Report:
✗ BUG-NNN closed as duplicate of [answer]
Step 3: Summary¶
After all bugs are processed, display:
Triage complete
───────────────────────────────────────────────────────
Promoted: N (ready for /vt-d-investigate-bug)
Deferred: N (will skip on next triage)
Duplicate: N (moved to intake/processed/bugs/)
───────────────────────────────────────────────────────
Promoted bugs ready for investigation:
BUG-NNN [title] → bugs/NNN-slug/
...
Next: /vt-d-investigate-bug BUG-NNN to investigate a promoted bug