Files
holocron/plugins/bin/skills/triage
Defame1297 4011d149bc fix(bin): put five skills' boundaries where the router can read them
grill-me, grill-with-docs, improve-codebase-architecture, tdd and triage each had
their routing boundary written into README.md, which nothing loads at runtime,
while the gate still reported all five descriptions as boundary-less. The
boundaries move into the descriptions; write-docs' clause, which said 'those have
dedicated skills' without naming one, now names them.

research had moved its body out and then read both references unconditionally --
the anti-goal ADR-0020 names, where the word count moves and the per-run context
does not. Both loads are genuinely conditional now, with the topic list and the
four literal sources.md field names inlined, since the provenance validator
matches those literally.

Also restores the promote-the-prototype anti-pattern to prototype's ui.md, which
the gate does not measure, so deleting it bought nothing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EJJrm5YmacbwMdzZpXcoti
2026-08-31 19:47:00 +00:00
..

triage

Move issues on the project issue tracker through a small state machine of triage roles.

What it does

Gives issue triage an explicit state model and a fixed set of moves. Every issue carries exactly one category role (bug, enhancement) and one state role (needs-triage, needs-info, ready-for-agent, ready-for-human, wontfix); conflicting state roles are flagged to the maintainer before anything else happens. Unlabeled issues normally enter at needs-triage; needs-info returns there once the reporter replies. The maintainer can override at any point, and unusual transitions are questioned rather than executed silently.

A run does one of three things depending on what the maintainer asks for:

  • Show what needs attention — three buckets, oldest first: unlabeled, needs-triage, and needs-info with reporter activity since the last triage notes.
  • Triage a specific issue — gather context (including prior triage notes, so resolved questions are not re-asked, and .out-of-scope/ records that resemble the issue), recommend a category and state with reasoning, attempt reproduction for bugs before any grilling, run a grill-with-docs session if the issue needs fleshing out, then apply the outcome.
  • Quick state override — "move #42 to ready-for-agent" is trusted and applied directly, skipping grilling, after confirming the exact changes.

Two hard rules: every comment or issue the skill posts during triage must open with the AI-generated disclaimer, and the canonical role names above are not necessarily the label strings in the tracker — the mapping has to be supplied to the run.

Composition

grill-with-docs is invoked at step 4 when an issue needs fleshing out; whatever that session establishes is carried into the triage notes so the work is not lost. The reverse direction also exists: diagnose names this skill as the place to send a reported bug that needs filing rather than debugging.

Usage

/triage

Then describe what you want in natural language — "show me anything that needs my attention", "let's look at #42", "move #42 to ready-for-agent", "what's ready for agents to pick up?".

Files

File Purpose
SKILL.md The roles and state machine, the three invocation modes, the needs-info template, and how to resume a prior session
AGENT-BRIEF.md Skill-root document, cited when an issue moves to ready-for-agent (and reused for ready-for-human): how to write a brief that stays durable for weeks while the codebase moves under it — describe interfaces and behavioural contracts, not line numbers
OUT-OF-SCOPE.md Skill-root document, cited when an enhancement is closed wontfix and when checking for prior rejections: how the .out-of-scope/ knowledge base is laid out and what it is for — institutional memory, and deduplication against re-litigated requests