triage
Evaluate untriaged beads and decide each one — agent-ready under a parent, owner's work, questions for the owner, deferred, or a wontfix close. Use to review what needs attention or to triage a specif
Files2
View on GitHubSKILL.md.claude/skills/triage/SKILL.md
GitHubTriage
Moves filed-but-unevaluated beads to a decided outcome. The outcomes and the
agent-ready gate are defined in the beads skill (references/usage.md §10);
this skill decides when a bead moves, not what the outcomes mean. There are
no intake labels: a bead's parent, status, acceptance criteria and the
human label carry the decision.
Show what needs attention
Present four buckets, oldest first, with counts and a one-line summary per item:
- Untriaged: open beads with no parent that are not epics —
bd list --no-parent -s open --json | jq '[.[] | select(.issue_type != "epic")]' - Ideas:
bd list -t spike --status deferred --no-parent— worth promoting or dropping - Waiting on the owner:
bd human list— questions to answer or work to do; were any answered since? - Missing acceptance criteria among open work:
bd lint
Use the supplied bead or authorized batch. Ask for selection only when the request did not establish a scope.
Triage one bead
Gather.
bd show <id>including notes. Do not re-ask anything a priorEstablished:note already records.Redundancy check. Search the codebase for an existing implementation by domain concept, not the bead's wording — and report where you looked. If it already exists, that is a wontfix close (step 6).
Prior-rejection check.
bd search "<terms>"(closed beads included) for earlierwontfix:closes that resemble this. Surface any match before proceeding.Verify the claim. For bugs: reproduce it, or record exactly why you could not. An unreproduced bug does not pass the gate.
Decide within authority. Recommend an outcome with evidence. Apply it when the user already authorized that decision or bulk triage; otherwise obtain the missing approval. An unreproduced bug gets questions for the owner, not an automatic wontfix.
Apply the outcome (all writes with
--actor):Outcome Commands Agent-executable verify the gate below, add acceptance if missing ( bd update <id> --acceptance …), give it a parent (bd update <id> --parent <epic-or-feature>), andbd undefer <id>if deferredOwner's work bd label add <id> humanQuestions for the owner a humantask holding the questions, which the bead needs:bd create -t task "Questions: <title>" -d "<questions>" -l human --actor …, thenbd dep add <id> <questions-id>Real, not now bd defer <id>(--until <date>for a real date)Idea for later bd update <id> -t spike, thenbd defer <id>Not doing it bd close <id> --reason "wontfix: <why>"Duplicate bd duplicate <id> --of <canonical>Record what was settled with
bd note <id> "Established: …", so the next session resumes instead of re-asking.
Agent-executable gate
All three must hold: acceptance criteria populated, the description states current and desired behaviour, and out-of-scope is noted where the request is ambiguous.
Rules
- Never make a bead agent-executable past a failing gate: an open bead with acceptance criteria is what autonomous claiming trusts.
- Do not create labels other than
human. - Analysis-only requests remain read-only. Carry existing triage authority through clear items; escalate material ambiguities separately.