/groom-backlog
Walk the whole backlog, decide what’s ready for execution, and
populate the Ready column with the next 2–5 tickets — the
prioritization pass that keeps /work-ticket
fed.
When to use it
Run this in the morning before kicking off work, or whenever the
Ready column thins out below ~2 tickets. The command launches the
backlog-prioritizer agent, which reads the strategic context
(docs/PRODUCT-REQUIREMENTS.md, docs/PRODUCT-ROADMAP.md),
counts tickets by status, scores backlog items using
Cost-of-Delay ÷ Duration, checks the top candidates against
Definition of Ready (4 Power Sections + safety class + effort
estimate + priority), and promotes the top 2–5 to Ready.
It also enforces a scope check on every promotion: if a candidate ticket touches more than 3 unrelated files, has more than one major branch point in its happy path, or is XL-effort, the agent flags it for decomposition into child tickets rather than pushing it through as-is. This is the cheapest place to catch oversized tickets — much cheaper than discovering it mid-implementation.
Don’t use this for single-ticket triage on a brand-new request —
that’s /create-ticket territory. Grooming
operates on the existing backlog; it doesn’t create new tickets.
How it fits
Inputs are the existing backlog plus strategic context. Outputs are a populated Ready column and a decomposition pass on any oversized candidates.
What it does (quick)
- Counts tickets by status; flags bottlenecks (e.g., too many In Review, Ready column empty)
- Reads PRD and roadmap to align prioritization with current phase
- Scores backlog candidates with CD3 (Cost of Delay ÷ Duration)
- Verifies Definition of Ready on top candidates: 4 Power Sections,
effort estimate, priority, exactly one
safety:*label - Flags scope issues — promotes only single-PR-sized tickets; decomposes oversized ones into children
- Moves the top 2–5 well-defined tickets to Ready
Related commands
/create-ticket— upstream; this command grooms what/create-ticketproduced/sprint-status— the read-only sibling that observes board health without modifying anything/work-ticket— downstream; consumes the Ready column this command populated/drain— autonomous variant that runs/work-ticketagainst the whole Ready column overnight
Canonical spec: .claude/commands/groom-backlog.md