Move issues through the project's issue tracker via a small state machine composed of triage roles.
Move issues on the project issue tracker through a small state machine of triage roles.
Every comment or issue posted to the issue tracker during triage mustbegin with the following disclaimer:
Every comment or issue posted to the issue tracker during triage must start with this disclaimer:
> *This was generated by AI during triage.*
Reference docs
- AGENT-BRIEF.md — how to write a durable agent brief
How to write durable agent briefs
- OUT-OF-SCOPE.md —
.out-of-scope/how the knowledge base worksHow the
.out-of-scope/knowledge base works
Roles
Twocategoriesof roles:
Two category roles:
bug— something is brokenSomething is broken
enhancement— new feature or improvementNew feature or improvement
Fivestateroles:
Five state roles:
needs-triage— maintainer needs to evaluateMaintainer needs to evaluate
needs-info— waiting on reporter for more informationWaiting on reporter for more information
ready-for-agent— fully specified, ready to be claimed by an AFK agentFully specified, ready for an AFK agent
ready-for-human— needs human implementationNeeds human implementation
wontfix— will not be worked onWill not be actioned
Every triaged issue should carry exactly one category role and one state role. If state roles conflict, flag it and ask the maintainer before doing anything else.
Every triaged issue should carry exactly one category role and one state role. If state roles conflict, flag it and ask the maintainer before doing anything else.
These are the canonical role names — the actual label strings used in the issue tracker may differ. The mapping should have been provided to you — if not, run /setup-matt-pocock-skills。
These are canonical role names — the actual label strings used in the issue tracker may differ. The mapping should have been provided to you - run
/setup-matt-pocock-skillsif not.
State transitions: unlabeled issues typically first enter needs-triage; from there move to needs-info、ready-for-agent、ready-for-human or wontfix。needs-info return to needs-triageafter the reporter replies. Maintainers can override at any time — flag transitions that look unusual and ask before proceeding.
State transitions: an unlabeled issue normally goes to
needs-triagefirst; from there it moves toneeds-info,ready-for-agent,ready-for-human, orwontfix.needs-inforeturns toneeds-triageonce the reporter replies. The maintainer can override at any time — flag transitions that look unusual and ask before proceeding.
Invocation
The maintainer invokes /triage and describes what they want in natural language. Interpret the request and execute it. Examples:
The maintainer invokes
/triageand describes what they want in natural language. Interpret the request and act. Examples:
- "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?"
Show what needs attention
Query the issue tracker and present three buckets, oldest first:
Query the issue tracker and present three buckets, oldest first:
- Unlabeled — never triaged.
Never triaged.
needs-triage— evaluation in progress.Evaluation in progress.
needs-infoand the reporter has activity since the last triage record — needs re-evaluation.needs-infowith reporter activity since the last triage notes — needs re-evaluation.
Show counts and a one-line summary for each issue. Let the maintainer choose.
Show counts and a one-line summary per issue. Let the maintainer pick.
Triage a specific issue
-
Gather context. Read the full issue (body, comments, labels, reporter, dates). Parse any prior triage records to avoid re-asking questions that have already been resolved. Explore the codebase using the project's domain glossary, respecting the ADRs of the relevant areas. Read
.out-of-scope/*.mdand present any prior rejection records similar to this issue.Read the full issue (body, comments, labels, reporter, dates). Parse any prior triage notes so you don't re-ask resolved questions. Explore the codebase using the project's domain glossary, respecting ADRs in the area. Read
.out-of-scope/*.mdand surface any prior rejection that resembles this issue. -
Recommend. Tell the maintainer your category and state recommendation with reasoning, plus a brief summary of the codebase relevant to the issue. Wait for instructions.
Tell the maintainer your category and state recommendation with reasoning, plus a brief codebase summary relevant to the issue. Wait for direction.
-
Reproduce (bugs only). Before any in-depth analysis, attempt to reproduce: read the reporter's steps, trace the relevant code, run tests or commands. Report the result — successfully reproduced and found the code path, reproduction failed, or insufficient detail (a strong
needs-infosignal). A confirmed reproduction makes the agent brief more powerful.Before any grilling, attempt reproduction: read the reporter's steps, trace the relevant code, run tests or commands. Report what happened — successful repro with code path, failed repro, or insufficient detail (a strong
needs-infosignal). A confirmed repro makes a much stronger agent brief. -
Grill (if needed). If the issue needs fleshing out, run
/grill-with-docssession.If the issue needs fleshing out, run a
/grill-with-docssession. -
Apply the outcome:
Apply the outcome:
ready-for-agent— post an agent brief comment (AGENT-BRIEF.md)。Post an agent brief comment (AGENT-BRIEF.md).
ready-for-human— same structure as an agent brief, but note why it cannot be delegated (judgment calls, external access, design decisions, manual testing).Same structure as an agent brief, but note why it can't be delegated (judgment calls, external access, design decisions, manual testing).
needs-info— post a triage record (template below).Post triage notes (template below).
wontfix(bug) — politely explain, then close.Polite explanation, then close.
wontfix(enhancement) — write to.out-of-scope/, link to it from the comment, then close (OUT-OF-SCOPE.md)。Write to
.out-of-scope/, link to it from a comment, then close (OUT-OF-SCOPE.md).needs-triage— apply the role. If there is partial progress, optionally add a comment.Apply the role. Optional comment if there's partial progress.
Quick state override
If the maintainer says "move #42 to ready-for-agent", trust them and apply the role directly. Confirm what you are about to do (role change, comment, close), then execute. Skip the deep analysis. If moving to ready-for-agentwithout a deep analysis session, ask whether they want to write an agent brief.
If the maintainer says "move #42 to ready-for-agent", trust them and apply the role directly. Confirm what you're about to do (role changes, comment, close), then act. Skip grilling. If moving to
ready-for-agentwithout a grilling session, ask whether they want to write an agent brief.
Needs-info template
## Triage Notes
**What we've established so far:**
- point 1
- point 2
**What we still need from you (@reporter):**
- question 1
- question 2
Record everything resolved during the deep analysis in the "Confirmed" section so the work is not lost. Questions must be specific and actionable, not "please provide more information".
Capture everything resolved during grilling under "established so far" so the work isn't lost. Questions must be specific and actionable, not "please provide more info".
Resuming a previous session
If previous triage records exist on the issue, read them, check whether the reporter has answered any open questions, and present the updated situation before continuing. Do not ask again about already-resolved questions.
If prior triage notes exist on the issue, read them, check whether the reporter has answered any outstanding questions, and present an updated picture before continuing. Don't re-ask resolved questions.