/groom
Keep backlog.d/ true and make the project more ambitious. Normal strategic
/groom is a mega-sweep, not triage: boil the ocean on purpose, then distill
it into a world-class plan and backlog diff. A groom that only lists, lightly
prioritizes, or emits a tiny handful of issues is incomplete unless the user
explicitly scoped the run down.
The backlog diff is the artifact. Prose exists to justify it.
Groom is a conversation at the seams where the operator's judgment is the scarce
input. At intake, interrogate the operator on ambition, vision deltas, and
hidden priors so the sweep aims true — the grill-me-style posture in
harnesses/shared/references/interrogate-first.md is the default here, not a
fallback gated on whether they arrived with a backlog item. The investigation
sweep itself stays autonomous — explore the codebase for what it can answer;
reserve interrogation for the operator's judgment, not for facts you can read. If the groom produces a giant synthesis, use julius-caveman
compression for interim summaries, not for the committed backlog text.
Project Vision
Every strategic groom creates, refreshes, or explicitly validates a durable
project vision before ranking work. Vision is the north star that makes
brainstorming and backlog movement coherent; without it, grooming collapses
into local cleanup.
- If a project already has a canonical vision or strategy artifact, read it
early and use it to judge every theme, deletion, emission, and next pickup.
- If none exists, draft the smallest durable vision artifact the repo can own.
Prefer root
VISION.md as a first-class repository artifact; use
docs/product.md, a roadmap doc, or a clearly named backlog epic only when
repo evidence says root vision is the wrong fit. Treat creating it as a
first-class groom emission.
- Use
/vision when creating or materially revising root VISION.md; groom
consumes the north star instead of hand-rolling a parallel strategy doc.
- Keep the vision concrete: audience, job-to-be-done, category, standards,
non-goals, strategic bets, and what excellent looks like in 6-12 months.
- Revise the vision when live evidence contradicts it. Do not bury direction
changes in chat, issue comments, or the final report only.
- Use the vision to backchain: themes and tickets should say which part of the
vision they advance, de-risk, simplify, or deliberately reject.
- A vision or moonshot artifact can carry a one-glance system map when the
relationships, scope, or sequencing are too complex for prose alone. Generate
it only when it earns that role:
harnesses/shared/references/image-generation.md.
Tidy (mandatory, mechanical)
Tooling owns closure; consume it, don't hand-roll it:
default="$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')"
cargo run --locked -p harness-kit-checks -- backlog ids-from-range "origin/${default:-main}..${default:-main}"
cargo run --locked -p harness-kit-checks -- backlog archive "$id" # idempotent
- Archive every ticket closed by
Closes-backlog:/Ships-backlog: trailers
or marked done/shipped in frontmatter. Commit as
chore(backlog): archive shipped tickets swept by /groom.
- Flag stale
in-progress (merged/deleted branch, or 30+ days untouched).
- Surface duplicates with a proposed consolidation — never merge silently.
- Backlog size is telemetry, not policy. If the active queue looks too
broad, report the evidence: count, age, duplicates, stale owners, orphaned
themes, and unfocused small items. Consolidate only when tickets genuinely
share one outcome. Never veto an evidenced emission because of an arbitrary
item count.
Trailer canon lives in meta/CONTRACTS.md. Emit trailers only via
git interpret-trailers; hand-formatted variants are invisible to tooling.
Delegation Judgment
Delegate on judgment per the shared Roster contract: native subagents by
default; add cross-model critics, roster providers, or sprite lanes
(/sprites) only when they answer a distinct question. See
harnesses/shared/AGENTS.md (Roster).
Local lane guidance: strategic grooming uses swarms by default. Launch
independent lanes for product/value, operator experience, runtime reliability,
architecture, simplification/deletion, security/privacy, docs/onboarding,
ops/infra, testing/verification, agent readiness, and external exemplars.
The lead keeps final prioritization.
Mega Sweep
For any strategic groom, load references/mega-groom.md. It is the contract
for swarm size, coverage map, source matrix, output shape, and the
"world-class plan" bar. Use references/investigation-bench.md only for lane
prompt shapes; it is a template library, not the whole run.
Ambition Floor
Calibrate scope to what frontier agents can execute, not what a human team
can staff. Execution is cheap; vision is the scarce input. Strategic grooming
must describe the best version of the whole project, then backchain from that
standard into epics, deletions, sequencing, and first pickups.
- Brainstorm deep, from perspectives composed for this repo. There is
no canonical list of layers to sweep. Pick the obvious axes this codebase
demands, then add lenses no stock list would hand you — invert a premise,
borrow from an adjacent domain, ask what a competitor, operator, or
first-time user would notice. Fan the perspectives out as parallel
fresh-context lanes; pull in
/research when outside knowledge would
change a verdict. When the sweep keeps returning the obvious (the mundane
harvest failure), route the divergence through nous-creative-ideation — a
routed library of named methods (lateral provocations, analogy/biomimicry,
premortem-and-inversion) that manufactures non-obvious lenses on purpose. The
bar is genuine diversity and depth of exploration, judged fresh each session.
- Describe the best version of this software, not the next safe
increment: elegant, easy to change, personalizable, delightful,
operationally boring, and valuable enough to matter. The distance between
that vision and the live repo is backlog material; close it with epics.
- Epic-scoped by default. Strategic emissions are epics — a product
outcome with an ordered child sequence — never pre-shredded tasks. Small
items exist as children of an epic or as genuine isolated fixes.
- Ambition is not slop. Every epic's premise survives the same vetting
as any finding: open the file, run the command. A perspective that comes
back with "all fine here" is making a claim — vet it like one. The floor
raises scope, not tolerance for unevidenced claims.
Judgment (the actual grooming)
Investigate before opining. A tidy-only pass exists, but only when the user
asks for one; any other session owes the references/mega-groom.md sweep,
with genuinely independent perspectives run in parallel and /research when
outside context would change a verdict. Fresh-context lanes exist to
decorrelate judgment, not to fill a roster.
- Read the live code, not just ticket text. Hotspots, debt
concentrations, the oldest stuck ticket. Every codebase has findings;
"everything is fine" means the investigation was shallow.
- Challenge premises of the top items. Symptom or root cause? A ticket's
framing is a first draft. Reframe before re-ranking.
- Propose deletions. The best groom shrinks the backlog. Every deletion
is a proposal with rationale — humans ratify removals.
- Audit the repo's own harness. Agent readiness is backlog work, not a
separate ceremony: does this repo have a verification skill with its real
routes/commands (the highest-impact skill category)? Verified build/test/
lint commands and conventions an agent can discover cold? Runbooks for
its deployed surfaces? A CI gate that would catch the likely failure?
A meaningful, enforced quality floor that gates the diff and ratchets legacy
debt, or only advisory, arbitrary gates
(
harnesses/shared/references/quality-gates.md)? Security gates that catch
secret leaks in files and Git/PR metadata before publication? Stale
AGENTS/CLAUDE prose? Product context a cold agent would need? Each gap is a
ticket like any other.
- Vet findings before presenting them. Re-check each claim against the
live repo — open the file, run the command. A plausible finding that
doesn't survive a second look is noise that erodes trust in the whole
groom.
- Theme, then recommend. Group findings by shared root cause, rank by
impact discounted by confidence — effort barely discounts now that agents
execute — and argue for one concrete action per theme. Synthesis stays on
the lead; when the plan is contestable, land it with the operator the same
grill-me way — walk the decision tree (sequencing, deletions, the next
pickup) one branch at a time, recommending each — instead of dropping the
full plan for a rubber-stamp.
Ticket Standard
backlog.d/<nnn>-<kebab-slug>.md, bare numeric IDs.
# <Title as imperative sentence>
Priority: P0–P3 · Status: pending|ready|blocked|in-progress|done|shipped|abandoned · Estimate: S–XL
## Goal
<one sentence — outcome, not mechanism>
## Oracle
- [ ] <mechanically verifiable; rough oracles are still oracles>
## Verification System
- Claim:
- Falsifier:
- Driver:
- Grader:
- Evidence packet:
- Cadence:
## Notes
<constraints, prior art, open questions>
Epics are the default shape for strategic emissions: same file, plus a
## Children section — ordered child outcomes that stay inline until
picked up, then graduate to their own tickets. An epic still needs a Goal
and an Oracle for the whole arc; "umbrella" files with no done criteria are
storage, not epics.
Every active ticket has Goal + Oracle; fix or demote anything that doesn't.
For M+ work or anything promoted to Status: ready, add the verification
system from harnesses/shared/references/verification-system-first.md.
M+ tickets promoted to Status: ready follow /shape's
references/prd-ticket-quality.md; otherwise they stay raw ideas. When
grooming Harness Kit itself, apply the product lens in
references/backlog-doctrine.md.
Output
- Tidy diff — archived, flipped, flagged; by ID, no padding.
- Source matrix — swarm lanes, local commands, external research,
skipped/failed lanes, and what each contributed.
- World-class plan — project vision, gaps, themes, sequencing,
deletion/consolidation candidates, and the one best next pickup.
- Emissions — epic/ticket edits with
**Why:** naming the evidence lane.
Strategic emissions should show breadth across the domain map, not just
the easiest implementation slice.
- Residual — open questions, blocked dependencies, unverified areas,
and what would make the sweep stronger.
Apply non-destructive backlog edits when the user asked for grooming.
Deletions, abandonments, and silent merges stay proposals unless explicitly
approved.
Audit Mode
/groom audit is a read-only harness-health report, not a grooming run:
cargo run --locked -p harness-kit-checks -- telemetry --repo .
It summarizes skill/prompt usage from hook logs (and staleness vs last
edit). Read it with judgment: low usage with high value-when-used is fine —
say so; low usage with no story is a deletion candidate. Present findings
ordered by severity; do not auto-fix.
Refuse
- Never auto-delete or silently merge tickets.
- Never archive a ticket whose trailer points at an unmerged branch.
- Never let backlog size alone veto an evidenced ticket or epic.
- Never call a strategic groom complete after a tiny issue set unless the user
explicitly asked for a narrow pass.
- Never skip the swarm when subagent, peer CLI, or sprite lanes are available;
if all delegation is blocked, report degraded mode and do the local matrix.
Gotchas
- Menu, not grooming. Themes without a defended recommendation are a
report. Pick one action per theme and argue it.
- Mundane harvest. A strategic session that only finds small, safe work is
not done. Widen the swarm, add external research, invert the premise, and
inspect neglected surfaces before concluding the repo has no ambitious,
evidence-backed moves.
- Stock-lens grooming. Running the same investigator roster in every
repo is process, not thought. The revealing perspectives are the ones
composed for this codebase, this session.
- Over-decomposing. An agent-hour of work is one ticket, not three; a
coherent multi-ticket ambition is one epic, not ten orphan tasks.
- Backlog as graveyard. Age is a stale signal, not an automatic verdict.
Inspect branch, owner, and live relevance before flipping, archiving, or
proposing deletion.
- Accepting the ticket's framing. Five-whys the top items before
re-ranking them.
Verification
/groom audit (above) scores skill quality; backlog mechanics are enforced
by harness-kit-checks backlog subcommands. A groom run ends with a clean
tree: archives committed, emissions written, deletions awaiting ratification.
1---2name: groom3description: Always-on backlog grooming. Tidy, brainstorm, interrogate, investigate, research, and simplify in a single loop. Tidy is not a mode — it happens every time. Strategic-layer work is a mega-sweep: swarm investigation, external research, critique, synthesis, and backlog shaping across product, codebase, docs, infrastructure, ops, architecture, system design, value prop, and agent readiness. Use when: "groom", "what should we build", "rethink this", "biggest opportunity", "backlog", "prioritize", "backlog session", "audit skills", "skill quality audit". Trigger: /groom, /groom audit, /backlog, /rethink, /moonshot, /scaffold.4---56# /groom78Keep `backlog.d/` true and make the project more ambitious. Normal strategic9`/groom` is a mega-sweep, not triage: boil the ocean on purpose, then distill10it into a world-class plan and backlog diff. A groom that only lists, lightly11prioritizes, or emits a tiny handful of issues is incomplete unless the user12explicitly scoped the run down.1314The backlog diff is the artifact. Prose exists to justify it.15Groom is a conversation at the seams where the operator's judgment is the scarce16input. At intake, interrogate the operator on ambition, vision deltas, and17hidden priors so the sweep aims true — the `grill-me`-style posture in18`harnesses/shared/references/interrogate-first.md` is the default here, not a19fallback gated on whether they arrived with a backlog item. The investigation20sweep itself stays autonomous — explore the codebase for what it can answer;21reserve interrogation for the operator's judgment, not for facts you can read. If the groom produces a giant synthesis, use `julius-caveman`22compression for interim summaries, not for the committed backlog text.2324## Project Vision2526Every strategic groom creates, refreshes, or explicitly validates a durable27project vision before ranking work. Vision is the north star that makes28brainstorming and backlog movement coherent; without it, grooming collapses29into local cleanup.3031- If a project already has a canonical vision or strategy artifact, read it32 early and use it to judge every theme, deletion, emission, and next pickup.33- If none exists, draft the smallest durable vision artifact the repo can own.34 Prefer root `VISION.md` as a first-class repository artifact; use35 `docs/product.md`, a roadmap doc, or a clearly named backlog epic only when36 repo evidence says root vision is the wrong fit. Treat creating it as a37 first-class groom emission.38- Use `/vision` when creating or materially revising root `VISION.md`; groom39 consumes the north star instead of hand-rolling a parallel strategy doc.40- Keep the vision concrete: audience, job-to-be-done, category, standards,41 non-goals, strategic bets, and what excellent looks like in 6-12 months.42- Revise the vision when live evidence contradicts it. Do not bury direction43 changes in chat, issue comments, or the final report only.44- Use the vision to backchain: themes and tickets should say which part of the45 vision they advance, de-risk, simplify, or deliberately reject.46- A vision or moonshot artifact can carry a one-glance **system map** when the47 relationships, scope, or sequencing are too complex for prose alone. Generate48 it only when it earns that role: `harnesses/shared/references/image-generation.md`.4950## Tidy (mandatory, mechanical)5152Tooling owns closure; consume it, don't hand-roll it:5354```sh55default="$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')"56cargo run --locked -p harness-kit-checks -- backlog ids-from-range "origin/${default:-main}..${default:-main}"57cargo run --locked -p harness-kit-checks -- backlog archive "$id" # idempotent58```5960- Archive every ticket closed by `Closes-backlog:`/`Ships-backlog:` trailers61 or marked done/shipped in frontmatter. Commit as62 `chore(backlog): archive shipped tickets swept by /groom`.63- Flag stale `in-progress` (merged/deleted branch, or 30+ days untouched).64- Surface duplicates with a proposed consolidation — never merge silently.65- **Backlog size is telemetry, not policy.** If the active queue looks too66 broad, report the evidence: count, age, duplicates, stale owners, orphaned67 themes, and unfocused small items. Consolidate only when tickets genuinely68 share one outcome. Never veto an evidenced emission because of an arbitrary69 item count.7071Trailer canon lives in `meta/CONTRACTS.md`. Emit trailers only via72`git interpret-trailers`; hand-formatted variants are invisible to tooling.7374## Delegation Judgment7576Delegate on judgment per the shared Roster contract: native subagents by77default; add cross-model critics, roster providers, or sprite lanes78(`/sprites`) only when they answer a distinct question. See79`harnesses/shared/AGENTS.md` (Roster).8081Local lane guidance: strategic grooming uses swarms by default. Launch82independent lanes for product/value, operator experience, runtime reliability,83architecture, simplification/deletion, security/privacy, docs/onboarding,84ops/infra, testing/verification, agent readiness, and external exemplars.85The lead keeps final prioritization.8687## Mega Sweep8889For any strategic groom, load `references/mega-groom.md`. It is the contract90for swarm size, coverage map, source matrix, output shape, and the91"world-class plan" bar. Use `references/investigation-bench.md` only for lane92prompt shapes; it is a template library, not the whole run.9394## Ambition Floor9596Calibrate scope to what frontier agents can execute, not what a human team97can staff. Execution is cheap; vision is the scarce input. Strategic grooming98must describe the best version of the whole project, then backchain from that99standard into epics, deletions, sequencing, and first pickups.100101- **Brainstorm deep, from perspectives composed for this repo.** There is102 no canonical list of layers to sweep. Pick the obvious axes this codebase103 demands, then add lenses no stock list would hand you — invert a premise,104 borrow from an adjacent domain, ask what a competitor, operator, or105 first-time user would notice. Fan the perspectives out as parallel106 fresh-context lanes; pull in `/research` when outside knowledge would107 change a verdict. When the sweep keeps returning the obvious (the *mundane108 harvest* failure), route the divergence through `nous-creative-ideation` — a109 routed library of named methods (lateral provocations, analogy/biomimicry,110 premortem-and-inversion) that manufactures non-obvious lenses on purpose. The111 bar is genuine diversity and depth of exploration, judged fresh each session.112- **Describe the best version of this software,** not the next safe113 increment: elegant, easy to change, personalizable, delightful,114 operationally boring, and valuable enough to matter. The distance between115 that vision and the live repo is backlog material; close it with epics.116- **Epic-scoped by default.** Strategic emissions are epics — a product117 outcome with an ordered child sequence — never pre-shredded tasks. Small118 items exist as children of an epic or as genuine isolated fixes.119- **Ambition is not slop.** Every epic's premise survives the same vetting120 as any finding: open the file, run the command. A perspective that comes121 back with "all fine here" is making a claim — vet it like one. The floor122 raises scope, not tolerance for unevidenced claims.123124## Judgment (the actual grooming)125126Investigate before opining. A tidy-only pass exists, but only when the user127asks for one; any other session owes the `references/mega-groom.md` sweep,128with genuinely independent perspectives run in parallel and `/research` when129outside context would change a verdict. Fresh-context lanes exist to130decorrelate judgment, not to fill a roster.131132- **Read the live code, not just ticket text.** Hotspots, debt133 concentrations, the oldest stuck ticket. Every codebase has findings;134 "everything is fine" means the investigation was shallow.135- **Challenge premises of the top items.** Symptom or root cause? A ticket's136 framing is a first draft. Reframe before re-ranking.137- **Propose deletions.** The best groom shrinks the backlog. Every deletion138 is a proposal with rationale — humans ratify removals.139- **Audit the repo's own harness.** Agent readiness is backlog work, not a140 separate ceremony: does this repo have a verification skill with its real141 routes/commands (the highest-impact skill category)? Verified build/test/142 lint commands and conventions an agent can discover cold? Runbooks for143 its deployed surfaces? A CI gate that would catch the likely failure?144 A meaningful, enforced quality floor that gates the diff and ratchets legacy145 debt, or only advisory, arbitrary gates146 (`harnesses/shared/references/quality-gates.md`)? Security gates that catch147 secret leaks in files and Git/PR metadata before publication? Stale148 AGENTS/CLAUDE prose? Product context a cold agent would need? Each gap is a149 ticket like any other.150- **Vet findings before presenting them.** Re-check each claim against the151 live repo — open the file, run the command. A plausible finding that152 doesn't survive a second look is noise that erodes trust in the whole153 groom.154- **Theme, then recommend.** Group findings by shared root cause, rank by155 impact discounted by confidence — effort barely discounts now that agents156 execute — and argue for one concrete action per theme. Synthesis stays on157 the lead; when the plan is contestable, land it with the operator the same158 `grill-me` way — walk the decision tree (sequencing, deletions, the next159 pickup) one branch at a time, recommending each — instead of dropping the160 full plan for a rubber-stamp.161162## Ticket Standard163164`backlog.d/<nnn>-<kebab-slug>.md`, bare numeric IDs.165166```markdown167# <Title as imperative sentence>168169Priority: P0–P3 · Status: pending|ready|blocked|in-progress|done|shipped|abandoned · Estimate: S–XL170171## Goal172<one sentence — outcome, not mechanism>173174## Oracle175- [ ] <mechanically verifiable; rough oracles are still oracles>176177## Verification System178- Claim:179- Falsifier:180- Driver:181- Grader:182- Evidence packet:183- Cadence:184185## Notes186<constraints, prior art, open questions>187```188189Epics are the default shape for strategic emissions: same file, plus a190`## Children` section — ordered child outcomes that stay inline until191picked up, then graduate to their own tickets. An epic still needs a Goal192and an Oracle for the whole arc; "umbrella" files with no done criteria are193storage, not epics.194195Every active ticket has Goal + Oracle; fix or demote anything that doesn't.196For M+ work or anything promoted to `Status: ready`, add the verification197system from `harnesses/shared/references/verification-system-first.md`.198M+ tickets promoted to `Status: ready` follow `/shape`'s199`references/prd-ticket-quality.md`; otherwise they stay raw ideas. When200grooming Harness Kit itself, apply the product lens in201`references/backlog-doctrine.md`.202203## Output2042051. **Tidy diff** — archived, flipped, flagged; by ID, no padding.2062. **Source matrix** — swarm lanes, local commands, external research,207 skipped/failed lanes, and what each contributed.2083. **World-class plan** — project vision, gaps, themes, sequencing,209 deletion/consolidation candidates, and the one best next pickup.2104. **Emissions** — epic/ticket edits with `**Why:**` naming the evidence lane.211 Strategic emissions should show breadth across the domain map, not just212 the easiest implementation slice.2135. **Residual** — open questions, blocked dependencies, unverified areas,214 and what would make the sweep stronger.215216Apply non-destructive backlog edits when the user asked for grooming.217Deletions, abandonments, and silent merges stay proposals unless explicitly218approved.219220## Audit Mode221222`/groom audit` is a read-only harness-health report, not a grooming run:223224```sh225cargo run --locked -p harness-kit-checks -- telemetry --repo .226```227228It summarizes skill/prompt usage from hook logs (and staleness vs last229edit). Read it with judgment: low usage with high value-when-used is fine —230say so; low usage with no story is a deletion candidate. Present findings231ordered by severity; do not auto-fix.232233## Refuse234235- Never auto-delete or silently merge tickets.236- Never archive a ticket whose trailer points at an unmerged branch.237- Never let backlog size alone veto an evidenced ticket or epic.238- Never call a strategic groom complete after a tiny issue set unless the user239 explicitly asked for a narrow pass.240- Never skip the swarm when subagent, peer CLI, or sprite lanes are available;241 if all delegation is blocked, report degraded mode and do the local matrix.242243## Gotchas244245- **Menu, not grooming.** Themes without a defended recommendation are a246 report. Pick one action per theme and argue it.247- **Mundane harvest.** A strategic session that only finds small, safe work is248 not done. Widen the swarm, add external research, invert the premise, and249 inspect neglected surfaces before concluding the repo has no ambitious,250 evidence-backed moves.251- **Stock-lens grooming.** Running the same investigator roster in every252 repo is process, not thought. The revealing perspectives are the ones253 composed for this codebase, this session.254- **Over-decomposing.** An agent-hour of work is one ticket, not three; a255 coherent multi-ticket ambition is one epic, not ten orphan tasks.256- **Backlog as graveyard.** Age is a stale signal, not an automatic verdict.257 Inspect branch, owner, and live relevance before flipping, archiving, or258 proposing deletion.259- **Accepting the ticket's framing.** Five-whys the top items before260 re-ranking them.261262## Verification263264`/groom audit` (above) scores skill quality; backlog mechanics are enforced265by `harness-kit-checks backlog` subcommands. A groom run ends with a clean266tree: archives committed, emissions written, deletions awaiting ratification.