agentleFS
mik2winmik2win/foureyes/skills/triage/SKILL.md

triage

Skill2 starsChanged 3 months agoMITView on GitHub

Move local backlog issues through a triage state machine — read each open issue, sort it into the next canonical status (needs-triage → ready → blocked/done…), set its status frontmatter, and report the board. The triage roles/labels come from PROJECT.md. Operates on the local markdown issue tracker written by /to-issues. TRIGGER when: the user wants to triage the backlog, "what should I work on next", sort/label issues, groom the backlog, or move an issue to a new state. TRIGGER ALSO on the same request phrased as plain work, with this skill unnamed — "is this issue still blocked", "what's actually ready to grab", "the board is out of date" — when the target is the local issue tracker rather than one issue's implementation. DO NOT TRIGGER, above all, on close-out — "I implemented the plans, check everything is done, can I move the epic to done?" is /close-epic, not grooming. This skill looks FORWARD: it sorts work that has not happened yet. Also DO NOT TRIGGER when: the user wants to create issues from a plan (use /to-issues) or implement one (use /implement).

189 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use writing-beats, setup-matt-pocock-skills and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • LesaniSkill

    writing-beats

    Shape an article as a journey of beats, choose-your-own-adventure style. The user picks a starting beat from the raw material, you write only that beat, then offer options for where to pivot next, beat by beat, until the article reaches a natural end. Use when the user has raw material and wants to assemble it as a narrative rather than an argument.

    Also in 66 projects that use this

  • GoogleSkill

    setup-matt-pocock-skills

    Configure this repo for the engineering skills — set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.

    Also in 167 projects that use this

  • liufeng1976Skill

    setup-ts-deep-modules

    Wire dependency-cruiser into a TypeScript repo so each package is a deep module — implementation hidden in subfolders, reachable only through its entry-point files. User-invoked.

    Also in 42 projects that use this

  • SethGammonSkill

    ascii-diagram

    Generate perfectly aligned ASCII diagrams — architecture, flow, sequence, box-and-arrow. Uses a programmatic character-grid approach so alignment is guaranteed by math, not token prediction. Includes post-render verification.

    Also in 4 projects that use this

  • simo97Skill

    migrate-to-shoehorn

    Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace `as` in tests, or needs partial test data.

    Also in 68 projects that use this

  • LesaniSkill

    writing-shape

    Take a markdown file of raw material and shape it into an article through a conversational session — drafting candidate openings, growing the piece paragraph by paragraph, arguing about format (lists, tables, callouts, quotes) at each step. Use when the user has a pile of notes, fragments, or a rough draft and wants help turning it into something publishable.

    Also in 63 projects that use this

  • +1 more from Lesani

The file

We split this skill into the rules it gives an agent

7 rules. 0 are common, 2 are distinctive, and 5 are very specific to this project.

  • 0

    Common

    Most of the 176 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Routing check before anything else: If the request is about work the user says they have *already finished* ("реализовал/implemented the …

    line 33
  2. Very specific:

    Read .claude/PROJECT.md — the Issue tracker convention (local.

    line 43
  3. Very specific:

    If no triage labels are defined yet, propose a sensible default state machine and ask the user to confirm before using it: needs-triage → …

    line 48
  4. Very specific:

    If CONTEXT.md exists, read it so you reason about issues in the project's vocabulary.

    line 51
  5. Very specific:

    When the next status is a genuine judgement call (is this *really* ready?

    line 83
  6. Distinctive:

    Don't advance on vague acceptance: No path to "ready" for an issue whose done-condition isn't verifiable — send it back or split it.

    line 118
  7. Distinctive:

    Labels from PROJECT.md: Use the project's canonical statuses.

    line 121

“Common” is measured: kept by at least 6 in 10 of the 176 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Triage: $ARGUMENTS

Walk the local backlog and move each issue to its correct triage status, so the board reflects reality and "what's next" has an obvious answer. Triage is a small state machine: an issue carries one status at a time and moves forward as it gets clarified, unblocked, or finished.

$ARGUMENTS optionally narrows scope — one issue id, or a status to sweep (e.g. needs-triage). Empty = triage all open issues.

This skill carries only invariant logic. The issues directory and the triage labels (the canonical status vocabulary) come from .claude/PROJECT.md.

Routing check before anything else. If the request is about work the user says they have already finished ("реализовал/implemented the plans — check it's all done, can this go to done?"), that is /close-epic, not triage: closing verifies what happened, triage sorts what hasn't. This is the single most frequent misroute into this skill — 7 sessions, corpus 2026-07-31. Say which skill you are routing to and stop; do not groom the board instead.


Phase 0 — Load profile & the label set

  1. Read .claude/PROJECT.md — the Issue tracker convention (local; the issues directory) and the triage labels: the canonical statuses and their order (set during /bootstrap). If missing or TEMPLATE, fall back to the root CLAUDE.md (always in context) when it carries the issues directory and triage labels — note you're running without a kit profile; STOP → /bootstrap first only if neither has them.
    • If no triage labels are defined yet, propose a sensible default state machine and ask the user to confirm before using it: needs-triage → ready → in-progress → done, plus blocked (off to the side).
  2. If CONTEXT.md exists, read it so you reason about issues in the project's vocabulary.

Phase 1 — Read the board

Glob the issues directory and read each issue's frontmatter (id, title, status, blocked_by). Build the current board: count by status, and resolve blocked_by — an issue whose blockers are all done is unblocked and a candidate to advance.


Phase 2 — Triage each issue

Triage owns the grooming transitions — getting an issue ready to be worked. It does not start or finish work: in-progress and done track work, which the user marks as it happens; triage only reflects them on the board. Advance only when the entry condition holds:

FromToWhen (triage's job)
needs-triagereadyscope is clear, acceptance is verifiable, no unmet blockers
needs-triageblockeddepends on an unfinished issue or an external dependency
blockedreadyits blocked_by are now all done (or a blocker was removed → treat as unblocked)

Work states — triage reflects, doesn't drive: ready → in-progress and in-progress → done track work, not grooming — triage never starts or finishes work itself. Set in-progress when an issue is picked up and done once its work is verified; the user marks this and triage reconciles it onto the board (and the index) on the next pass. (/implement stamps the plan file's status, not the issue's — so nothing else advances an issue to these states.) Route-out (not a status): an issue that's too big or covers multiple capabilities goes back to /to-issues to be split — don't force it to ready.

When the next status is a genuine judgement call (is this really ready? is it one slice or three?), ask the user via AskUserQuestion — present the issue and the candidate move. Don't silently advance an issue whose acceptance is vague; send it back to needs-triage or /to-issues instead.


Phase 3 — Apply & report

  1. Set the status frontmatter on each moved issue (Edit, frontmatter only — never rewrite the body). Update the status column in the index (<issues-dir>/00-index.md) if it exists.
  2. Report the board:
## Triage — <scope>

| Status | Count | Issues |
|--------|-------|--------|
| ready  | 3 | 0002, 0004, 0007 |
| blocked| 1 | 0005 (waits on 0004) |
| needs-triage | 2 | 0008, 0009 |

### Moved
- 0004: needs-triage → ready (scope clear, acceptance verifiable)
- 0003: blocked → ready (0001 is done)

### Recommended next
- ⭐ 0002 — <title> (ready, unblocked, highest value) → /prepare 0002 or /implement 0002

Hard rules

  • One status at a time. Each issue carries exactly one triage label; moving forward replaces it.
  • Don't advance on vague acceptance. No path to "ready" for an issue whose done-condition isn't verifiable — send it back or split it.
  • Frontmatter only. Triage edits the status field, never the issue body.
  • Labels from PROJECT.md. Use the project's canonical statuses; don't invent ad-hoc ones.
  • Local files only. Operates on the markdown backlog — no external tracker.

See also

  • /to-issues — creates the issues this skill sorts (and where an over-large issue gets split).
  • /prepare / /implement — pick a ready issue and plan/build it; mark the issue done once the work is verified (triage reconciles it on the next pass — /implement only stamps the plan file).
  • /epic-status — progress over a wave-structured decomposition (one epic directory); triage grooms single issues, epic-status reads an epic's waves.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.