skillmake
← marketplace
engineersconceptsha:2be7bee13314289dmanual

mp-triage

Use when moving issues through a small state machine (bug/enhancement × needs-triage / needs-info / ready-for-agent / ready-for-human / wontfix), prepping briefs that AFK agents can pick up cleanly.

Tutorials · creator-attached
One-line install
curl --create-dirs -fsSL https://skillmake.xyz/i/mp-triage -o ~/.claude/skills/mp-triage/SKILL.md

The hash above pins this exact content. The file we serve at /api/marketplace/mp-triage-2be7bee1/raw always matches sha:2be7bee13314289d.

6,410 chars · ~1,603 tokens
---
name: mp-triage
description: Use when moving issues through a small state machine (bug/enhancement × needs-triage / needs-info / ready-for-agent / ready-for-human / wontfix), prepping briefs that AFK agents can pick up cleanly.
source: https://github.com/mattpocock/skills/blob/main/skills/engineering/triage/SKILL.md
generated: 2026-05-12T18:05:25.940Z
category: concept
audience: engineers
---

## Tutorials

- https://skillmake.xyz/v/mp-triage.mp4

## When to use

- Reviewing the inbox of unlabeled and needs-triage issues for maintainer attention
- Triaging a specific issue (reproduce bug, recommend category and state, post agent brief or triage notes)
- Promoting a fully specified issue to ready-for-agent so an AFK agent can grab it
- Closing an enhancement as wontfix by writing to .out-of-scope/ so the same idea doesn't keep re-surfacing

## Key concepts

### category × state state machine

Every triaged issue carries exactly ONE category role (bug or enhancement) and ONE state role (needs-triage, needs-info, ready-for-agent, ready-for-human, wontfix). Conflicting state roles get flagged to the maintainer before any action — don't pick one and move on.

### state transitions

Unlabeled → needs-triage → (needs-info | ready-for-agent | ready-for-human | wontfix). needs-info returns to needs-triage once the reporter replies. The maintainer can override at any time. Flag transitions that look unusual and ask before proceeding.

### AI disclaimer on every comment

Every comment or issue posted during triage MUST start with the disclaimer block: `> *This was generated by AI during triage.*` Non-negotiable — readers need to know what they're looking at.

### three-bucket attention view

When asked 'what needs my attention', query the tracker and present three buckets, oldest first: 1) Unlabeled — never triaged. 2) needs-triage — evaluation in progress. 3) needs-info with reporter activity since last triage notes. Show counts and a one-line summary; let the maintainer pick.

### reproduce bugs before grilling

For bug-category issues, attempt reproduction BEFORE any grilling — read the reporter's steps, trace the code, run tests or commands. Report what happened: successful repro with code path, failed repro, or insufficient detail (a strong needs-info signal). A confirmed repro makes a much stronger agent brief.

### .out-of-scope/ knowledge base

When closing an enhancement as wontfix, write the reason to .out-of-scope/<slug>.md, link to it from a closing comment, then close. Future triage reads .out-of-scope/*.md to surface prior rejections that resemble new issues — prevents the same idea from being re-litigated every quarter.

### agent brief vs ready-for-human

ready-for-agent gets an AGENT-BRIEF-formatted comment so an AFK agent can pick it up cleanly. ready-for-human uses the same structure but notes WHY it can't be delegated — judgment calls, external access, design decisions, manual testing. Same shape, different audience.

## API reference

```
Mandatory AI disclaimer (every comment)
```

Prepended to every triage-generated comment or issue body. The labels and role mappings are project-specific; this disclaimer is not.

```
> *This was generated by AI during triage.*
```

```
Triage-a-specific-issue procedure
```

The numbered loop for working a single issue. Steps 3 and 4 are bugs-only and grilling-only respectively.

```
1. Gather context — full issue, comments, labels, reporter, dates, prior triage notes. Explore the codebase using CONTEXT.md. Read .out-of-scope/*.md for prior rejections.
2. Recommend — tell the maintainer your category + state recommendation with reasoning, plus a brief codebase summary. Wait for direction.
3. Reproduce (bugs only) — attempt before any grilling.
4. Grill (if needed) — run a /grill-with-docs session to flesh it out.
5. Apply the outcome:
   - ready-for-agent → post an AGENT-BRIEF comment
   - ready-for-human → same brief, with reason it can't be delegated
   - needs-info → post the triage-notes template
   - wontfix (bug) → polite explanation, then close
   - wontfix (enhancement) → write to .out-of-scope/, link from a comment, then close
   - needs-triage → apply the role; optional comment if there's partial progress
```

```
needs-info template
```

Post this format on a needs-info issue. 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'.

```
## Triage Notes

**What we've established so far:**

- point 1
- point 2

**What we still need from you (@reporter):**

- question 1
- question 2
```

```
Quick state override
```

When the maintainer says 'move #42 to ready-for-agent', trust them. Confirm what you're about to do (role changes, comment, close), then act. Skip grilling.

```
Maintainer: "Move #42 to ready-for-agent."

You: "Confirming: I'll add the ready-for-agent label and remove needs-triage. Do you want me to write an agent brief, or is the issue body self-sufficient?"

(then apply on confirmation)
```

## Gotchas

- Every triage comment MUST start with `> *This was generated by AI during triage.*` — non-negotiable.
- Exactly one category role AND one state role per issue. Conflicting state roles must be flagged to the maintainer before any action.
- Reproduce bugs BEFORE grilling. A confirmed repro changes the recommendation and the brief.
- Read .out-of-scope/*.md during context gathering — surface prior rejections that resemble the new issue.
- When moving to wontfix on an enhancement, WRITE the reason to .out-of-scope/<slug>.md — the knowledge base is how repeat ideas stop costing time.
- Resuming a previous session: read prior triage notes, check whether the reporter has answered, and present an updated picture before continuing. Don't re-ask resolved questions.
- Role label strings are project-specific — the canonical names in this skill (bug/enhancement, needs-triage, etc.) may map to different label strings in the tracker. The mapping is provided by /setup-matt-pocock-skills.
- Flag unusual state transitions (e.g. skipping needs-triage) and ask before proceeding. The maintainer can override, but should do so explicitly.

---
Generated by SkillMake from https://github.com/mattpocock/skills/blob/main/skills/engineering/triage/SKILL.md on 2026-05-12T18:05:25.940Z.
Verify against source before relying on details.

File: ~/.claude/skills/mp-triage/SKILL.md