Skip to content

vt-c-triage-bugs

Triage pending bug reports — promote to bugs/, defer, or mark as duplicate

Plugin: core-standards
Category: Other
Command: /vt-c-triage-bugs


/vt-c-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

/vt-c-triage-bugs

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:

No pending bugs to triage.
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:

  1. Build slug from title: lowercase, spaces → hyphens, max 30 chars, strip special chars Example: "Login fails on Safari" → login-fails-on-safari
  2. Run mkdir -p bugs/NNN-slug/ (NNN = zero-padded from id: field)
  3. Copy intake file content → bugs/NNN-slug/report.md
  4. Write bugs/NNN-slug/state.yaml:
    status: triaged
    id: BUG-NNN
    promoted_at: "[ISO-8601 now]"
    
  5. Update .design-state.yaml: add entry under bugchen_status::
    bugchen_status:
      BUG-NNN:
        dir: bugs/NNN-slug/
        title: [title]
        severity: [severity]
    
    If bugchen_status: key does not exist in .design-state.yaml, add it.
  6. Update intake file frontmatter: set status: triaged (so the archived copy reflects final disposition)
  7. Ensure intake/processed/bugs/ directory exists (run mkdir -p intake/processed/bugs/ if needed)
  8. Run git mv intake/pending/bugs/BUG-NNN.md intake/processed/bugs/BUG-NNN.md
  9. Report: ✓ BUG-NNN promoted to bugs/NNN-slug/

If Defer:

  1. Edit intake/pending/bugs/BUG-NNN.md frontmatter: set status: deferred
  2. Report: → BUG-NNN deferred

If Duplicate:

  1. Ask via AskUserQuestion: "Duplicate of which bug? (e.g. BUG-005)"
  2. Edit intake file frontmatter: set status: duplicate, add duplicate_of: [answer]
  3. Ensure intake/processed/bugs/ directory exists (run mkdir -p intake/processed/bugs/ if needed)
  4. Run git mv intake/pending/bugs/BUG-NNN.md intake/processed/bugs/BUG-NNN.md
  5. Report: ✗ BUG-NNN closed as duplicate of [answer]

Step 3: Summary

After all bugs are processed, display:

Triage complete
───────────────────────────────────────────────────────
Promoted:  N  (ready for /vt-c-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-c-investigate-bug BUG-NNN  to investigate a promoted bug