From vp-beads
Manage the beads backlog for this project. Use when the user wants to review or triage open issues, reprioritize the backlog, identify obsolete issues to close, investigate a topic to inform future work, create new issues from research findings, or enrich an existing issue with external context. Trigger phrases: 'groom', 'triage', 'backlog review', 'reprioritize', 'stale issues', 'what should we close', 'too many issues', 'backlog health', 'investigate for backlog', 'research and create issues', 'add context to issue', 'enrich issue', 'plan the work for', 'break down into issues', 'start the sprint', 'plan the sprint', 'plan next sprint', 'what should we work on', 'find duplicates', 'dedup backlog', 'near-duplicates', or any request to audit, prune, or research work tracked in beads.
How this skill is triggered — by the user, by Claude, or both
Slash command
/vp-beads:backlog-groomer [topic][topic].beads/**RETRO-*.mdUPSTREAM-*.mdSYNERGY-*.mdThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Triage, prioritize, and research work tracked in the beads issue tracker. This
Triage, prioritize, and research work tracked in the beads issue tracker. This
skill operates on the bd CLI — all mutations (create, close, update) require
explicit user approval before execution.
Determine which workflow the user needs based on their request. If ambiguous, default to workflow 1 (review and triage) for grooming requests, or workflow 4 (Investigate topic as spike) for research requests.
Beads v1.0+ defines nine core issue types. Pick the type that matches the
shape of the work, not just its size. The validation.on-create=error gate
enforces required markdown sections per type — a bd create will fail if the
required sections are missing.
| Type | Required markdown sections | When to use |
|---|---|---|
task | none | General work item (default) |
bug | ## Steps to Reproduce, ## Acceptance Criteria | Defect — behavior diverges from intended |
feature | ## Acceptance Criteria | New system capability (system-centric framing) |
chore | none | Maintenance / housekeeping with no user-visible behavior change |
epic | ## Success Criteria | Large body of work that decomposes into child issues |
decision | ## Decision, ## Rationale, ## Alternatives Considered | Architecture decision record (ADR) — outcome of deliberation |
spike | ## Goal, ## Findings | Timeboxed investigation that reduces uncertainty before a story |
story | ## Acceptance Criteria | User-centric framing of a feature ("As a X, I want Y...") |
milestone | none | Structural marker; contains no work itself |
Authoritative source: the ### Issue Types (Core Vocabulary) section of
the Basic Memory note brew/brew-beads. The required-sections table was
discovered empirically per the
engineering/agents/cli-validation-discovery-via-json-error-probing Basic
Memory note (probe each type with bd create --json and parse the error).
Type-pair conventions worth knowing: spike → story and spike → decision
(investigation precedes commitment); epic ⊃ stories ⊃ tasks (containment
hierarchy); milestone ⊐ {epics, stories, tasks} (set marker for release
boundaries).
Scan the open backlog for issues that need attention: stale items, potential duplicates, blocked chains, and missing context.
Steps:
Run bd list --status open and bd list --status in_progress to get the
full picture. Run bd stats for summary counts.
Run bd stale --days 60 to flag aging issues. Separately flag in_progress
issues stale >30 days as "stalled."
Run bd duplicates to detect content-hash matches (if available; if not,
use bd search with keywords from suspicious titles for near-matches).
Run bd find-duplicates (alias find-dups) to surface near-duplicates that
bd duplicates misses. Two-stage similarity architecture:
--method=mechanical, threshold 0.5). Free, fast, pre-filters AI calls.
Drop to --threshold=0.4 for more recall when the backlog is small.--method=ai). Requires
ai.api_key config and bills per call (mechanical pre-filter limits
spend). Only invoke when the user explicitly requests it or
BD_AI_DUPES=1 is set in the environment.bd duplicates (which catches only exact content matches).bd supersede <loser> <winner> (preserves history) or
bd duplicate <loser> <winner> (marks duplicate without closing).
Apply only with explicit per-pair user approval.Run bd blocked to identify issues stuck on unresolved dependencies.
Cross-reference with UPSTREAM-*.md and SYNERGY-*.md files if they exist
(use Glob to find them). Note any UPSTREAM friction or SYNERGY extraction
candidates that should have a corresponding beads issue.
If Basic Memory MCP tools are available, call
mcp__basic-memory__search_notes for key dependencies from package.json
to surface known friction not yet in the backlog. Skip silently if
unavailable.
Present a structured triage table:
| ID | Title | Age | Priority | Flags |
|----|-------|-----|----------|-------|
| vp-beads-xxx | ... | 45d | P3 | stale, missing description |
Suggest per-issue actions: close, reprioritize, merge with duplicate, refine scope, or leave as-is. No mutations without explicit per-item approval.
Propose a priority reordering based on current sprint goals and blocking relationships.
Steps:
bd list --status in_progress if
the user does not state goals explicitly.bd list --status open to get all open issues with current priorities.bd blocked to identify blocked chains. If bd dep tree is available,
use it to visualize blocking power — issues that unblock the most downstream
work should rank higher.bd update <id> --priority N per approved change.Identify issues that are likely obsolete and propose closing them.
Steps:
bd list --status open, focusing on P3/P4 items and issues older than
60 days.git log --oneline -50 with issue titles — use Grep to
match issue keywords against commit messages. Find issues already addressed
by commits but never formally closed.bd list --status closed for issues that supersede open ones.bd stale --days 90 for deeply stale items.bd close <id> --reason "..." per approved closure.See references/backlog-health-heuristics.md for closure criteria and
staleness thresholds.
(formerly: investigate-topic)
Research a topic to inform future work — a timeboxed investigation that
reduces uncertainty before committing to a story or decision. When the
investigation is itself worth tracking in beads (e.g. multi-session research),
the result is a spike issue with ## Goal + ## Findings sections. When the
investigation immediately produces actionable items, hand off to workflow 5
(Create issues from findings) which will create the appropriate downstream
types (story, feature, task, decision, etc.).
Takes a topic from the user's request or the argument-hint.
Steps:
mcp__basic-memory__search_notes for the topic and related terms. For
relevant matches, call mcp__basic-memory__read_note to get full content —
surface existing engineering notes, package notes, or upstream friction
entries. If Basic Memory is unavailable, note the gap and proceed.bd search <keywords> to find overlap with
already-tracked work.mcp__raindrop__find_bookmarks with topic
keywords to surface previously bookmarked articles and resources. If
relevant bookmarks are found, use mcp__raindrop__fetch_bookmark_content
to extract key insights. Skip silently if unavailable.mcp__deepwiki__ask_question for package/framework architecture questionsmcp__tavily__tavily_search for broader implementation patternsmcp__tavily__tavily_extract for deep-diving specific URLs found in search
If external tools are unavailable, proceed with what is available.Turn research findings into structured beads issues. Takes output from workflow 4 (Investigate topic as spike) or user-provided findings.
Steps:
bd search <keywords> for each proposed title against
existing issues. Surface near-matches for the user to review.[Area] Action verb + subject conventiontask, bug, feature,
chore, epic, decision, spike, story, milestone. See the
Issue Types Reference above for the full table; consult
references/backlog-health-heuristics.md for assignment logicbug
needs ## Steps to Reproduce + ## Acceptance Criteria; spike needs
## Goal + ## Findings; decision needs ## Decision +
## Rationale + ## Alternatives Considered). The
validation.on-create=error gate will reject creates that miss these
headings. Beyond required sections, follow the problem + why it matters
bd create -t epic) as a group container, with child issues linked.
Use milestone instead of epic if the parent represents a release
boundary or set of work with no decomposition of its own.spike capturing
## Goal and ## Findings rather than forcing premature story or
feature issues.bd create
command runs. Present the full list first, then confirm.bd create "title" -t <type> -p <priority> --description "..." per
approved issue. The description string must include the literal required
markdown headings for the chosen type.bd dep add <child> <parent>.
Common type-pair patterns: spike → story, spike → decision,
story → task, epic ⊃ stories.See references/backlog-health-heuristics.md for title conventions, description
templates, and creation limits.
Add research context to an existing issue that needs more information before work can begin.
Steps:
bd show <id> to read the
current state (title, description, status, priority, dependencies).## Research Context section with findings, relevant links, and suggested
approach.bd update <id> --description "..." with the enriched description after
approval.bd create,
bd close, bd update) must be explicitly approved per item. Present
candidates first, confirm, then execute. Never auto-mutate..beads/ directory
exists and command -v bd succeeds; this component is Tier B per
CLAUDE.md ### Beads-availability convention. Backlog grooming operates on
the beads backlog — with no beads there is no backlog to groom. Stop cleanly,
naming the missing predicate, and redirect to a beadless alternative: for the
planning / sprint triggers in this skill's description ("plan the sprint",
"what should we work on", "break down into issues"), use /swarm-wave — it
plans waves from a ROADMAP.md or a manual list — or edit ROADMAP.md
directly. Do not attempt to groom a ROADMAP.md here.npx claudepluginhub voxpelli/vp-claude --plugin vp-beadsGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.