backlog-triage

Installation
SKILL.md

Backlog Triage

Real job: read open GitHub Issues, write one advisory report, and apply only human-accepted mutations through anchor comments. GitHub-only: the resolved task authority must be exactly github (no .dev-backlog/.tracker, or one that says github); otherwise — another authority, or an empty, unknown, or unreadable file — stop, this skill does not apply. GitHub Issues stay the source of truth; the report is a derived file under .dev-backlog/triage/; nothing mutates GitHub until Apply.

Report

Goal: .dev-backlog/triage/YYYY-MM-DD-report.md that a human can accept line by line. Rail: gh issue list --state open --limit 500 --json number,title,body,labels,milestone,assignees,updatedAt,createdAt,url (raise --limit until the count stops growing; add gh issue view N --json comments,closedByPullRequestsReferences when a judgment needs comment history or a merged closing PR). Read spec/charter.md (else root CHARTER.md), optional spec/capabilities.md / spec/system-map.md, and any status: active sprint under .dev-backlog/sprints/. Write the report with these sections in this order: ## Classification (by theme, label, age), ## Relationships (one edge per fact, direction as the evidence phrase states: A blocks B = B waits for A; A depends-on B = A waits for B; plain #N mentions outside code fences and URLs, never self-mentions, and merged closing PRs count as evidence), ## Obsolete Candidates (inactive past stale_days in .dev-backlog/triage-config.yml, default 60, with no milestone; wontfix / invalid labels; merged closing PR; duplicates of open or recently closed issues), ## Priority Proposals, ## Milestone Suggestions (never into an active or wait-gated milestone), ## Alignment (every open issue → ≥1 charter Objective or named as an orphan; when no charter exists, write "skipped because no charter"), ## Decision Review (every open issue in Do Now / Shape First / Defer / Drop-Close; name any absent spec tier), ## Apply Checklist (every anchored action repeated once). Every proposal is an anchor comment followed by a checkbox line:

<!-- triage:close #42 reason="merged PR #87 already exists" -->
- [ ] close #42 - merged PR #87 already exists

Verbs: close, revisit, close-duplicate (target=#N), set-priority (value=high|medium|low), assign-milestone (milestone="Name"). Args are key="value" or key=value; the first #N after the verb is the target. Boundary: never propose closing an issue named in an active sprint's Plan or Running Context. Never mutate GitHub or spec/* in this mode. Done when the report exists with every section present, every proposal anchored, and no close targets an in-flight issue.

Installs
18
First Seen
Apr 18, 2026
backlog-triage — sungjunlee/dev-backlog