Use backlog-triage
Triage a whole backlog export from Jira, Linear or GitHub Projects (CSV, JSON or an MCP tool)
Triage a whole backlog export from Jira, Linear or GitHub Projects (CSV, JSON or an MCP tool) — duplicate and near-duplicate pairs with the reason, items missing acceptance criteria or an owner, stale items, oversized items to split, priority conflicts, and a proposed ordering with a reason per item — ending in a change list the user can apply. A stdlib script computes the mechanical checks.
Reach for it when the user wants to clean up, groom or refine a backlog, find duplicate tickets, or says "triage our backlog", "what should we pull next?".
Install it
npx skilldrop-cli install backlog-triage # Claude Code, your user folder
npx skilldrop-cli install backlog-triage --project # Claude Code, this repo
npx skilldrop-cli install backlog-triage --ide cursor # or kiro, codex, antigravity, copilot
It is part of the Trackers pack: --pack trackers installs it with its neighbours.
It ships scripts, so it needs Python 3 (standard library only, nothing to install). What they may touch is declared in its manifest.
Ask for it
Say it the way you would to a colleague. Requests like these route to it:
- "Triage our Jira backlog export and find the duplicates"
- "We have 200 tickets in Linear, half of them stale. Which should we close and what should we pull next?"
- "Groom this backlog CSV before sprint planning: missing owners, missing acceptance criteria, things too big to schedule"
- "Find near-duplicate issues in our GitHub project and propose a priority order"
Requests like these belong to a different skill, so it shouldn't answer them:
- "A customer says checkout is broken on mobile sometimes. Turn this into a proper bug ticket"
- "Break this guest-checkout epic into user stories with acceptance criteria"
- "Write the weekly status report for the checkout team from this Jira export"
If another skill answers instead, ask for this one by name: "use backlog-triage".
Check what you get
A good result:
- Numbers come from the data. Counts, ages and estimates are the script's output or a stated count from the export, never an estimate.
- Every duplicate names the pair and why. Which two keys, what makes them the same work, and which one survives.
- Readiness is explicit. Each item in the ordering says whether it can be pulled today, and if not, what's missing.
- Each position in the ordering has a reason tied to the ordering method, not "feels important".
- Priority changes are proposals, each with the facts behind it, addressed to whoever owns priority.
- The change list can be applied as written: key, change, reason, one row per action.
- Nothing is invented. No owner, date, estimate or customer count that isn't in the export or the user's message.
See a worked example
Use something else when
- One bug report to turn into a ticket; use
bug-triage - Splitting one epic or large item into stories; use
user-story-splitter(this skill hands oversized items to it) - A weekly status update for stakeholders; use
team-status-report - Creating issues from a PRD, or checking the tracker against the doc; use
tracker-brief-sync
Next
- SKILL.md, the instructions the agent reads
- Its page on the site
- Related: bug-triage, team-status-report, tracker-brief-sync, user-story-splitter