| name | use-beads |
| description | Full reference for the beads task management workflow. Use when working with beads issues, planning multi-step work, or managing task lifecycle. |
| allowed-tools | ["Bash"] |
| model | haiku |
| effort | low |
Quick Reference
bd ready
bd list --status=in_progress
bd show <id>
bd create --title "..." --type task --priority P1 --design "..."
bd update <id> --claim
bd update <id> --notes "..."
bd update <id> --design "..."
bd close <id> -r "summary of work"
bd create --title "..." --type epic --priority P2 --design "..."
bd create --title "..." --type task --parent <epic-id> --design "..."
bd dep add <child-2> <child-1>
bd children <epic-id>
bd epic status
Warning: Never use bd edit — it opens $EDITOR (vim/nano) which blocks agents. Use bd update --field "value" instead.
Before Implementing: Always Create a Beads Task
When the user approves work, run bd create BEFORE reading any files or writing code. Auto-compact or disconnection can happen anytime — the beads task is the handoff for the next Claude.
bd create --title "Fix Pushover notifications" \
--type task --priority P1 \
--design "What's broken: X. Approved approach: Y. Success: Z."
bd update <id> --claim
Tip: bd update and bd close with no ID act on the last touched issue — useful right after bd create.
Creating Epics
When approved work has multiple distinct pieces, create an epic with children — never a single monolithic item. The epic holds the why and shape; each child is a self-contained task a fresh agent can pick up without reading the parent.
Epic design — keep it to: goal, constraints, key decisions, and implementation order. No code snippets, directory layouts, or per-step instructions. The epic design is a summary — it explains why the work exists and how the pieces fit together, not what to do.
All actionable work must be a child task. If something needs to be implemented, tested, fixed, or validated, it's a task — not a bullet point in the epic design. The epic is complete when all its children are complete. If the epic design contains work items that aren't represented by children, the epic is malformed.
Child designs — each child gets its own "what's broken / approach / success criteria" even if derived from the parent. A fresh agent running bd show <child-id> must have enough context to start working without reading the parent.
bd create --title "Generalize loop engine" \
--type epic --priority P2 \
--design "Goal: ... Key decisions: ... Implementation order: 1, 2, 3."
bd create --title "Extract WorkSpec dataclass" \
--type task --priority P2 --parent <epic-id> \
--design "What: ... Approach: ... Success: ..."
bd create --title "Add RalphStrategy" \
--type task --priority P2 --parent <epic-id> \
--design "What: ... Approach: ... Success: ..."
bd dep add <child-2> <child-1>
Never create an epic without children in the same step. Never leave actionable work described only in the epic — if it's worth mentioning, it's worth tracking as a child task.
When children must be sequential, use bd dep add so bd ready naturally surfaces only the next unblocked child. Independent children need no dependencies — they'll all appear in bd ready immediately.
When to Use Beads vs TodoWrite
ALWAYS use beads for:
- Work involving decisions about what to do/skip (PR reviews, optimization)
- Multi-item work where you need to record WHY you're addressing/skipping each item
- Any work that must survive auto-compact
- Assessments with categories (must fix, should fix, won't fix)
TodoWrite only for:
- Simple step tracking within a single beads issue
- Ephemeral notes that don't need to persist
Assessing Multiple Items (PR feedback, bug lists, optimizations)
Create the beads task FIRST with a full assessment, before implementing anything:
bd create --title "Address PR review feedback" \
--type task --priority P1 \
--design "Assessment:
MUST FIX:
- Item 1 (reason)
SHOULD FIX:
- Item 2 (reason)
WON'T FIX:
- Item 3 (reason we're skipping)"
Then work through items, updating notes as you go:
bd update <id> --notes "Item 1: Discovered X during implementation"
Task Lifecycle
Single task
- Claim work →
bd update <id> --claim
- Implement in small themes (one stop per commit)
- After each theme: STOP, report, wait for "committed"
- When all themes done →
bd close <id> -r "summary"
Epic child
- Find ready work →
bd ready --parent <epic-id>
- Claim →
bd update <child-id> --claim
- Implement + commit (same stop-and-report cycle as single tasks)
- Close child →
bd close <child-id> -r "summary"
- Next child unblocks automatically (if deps were set)
- Repeat until all children closed
- Close epic →
bd epic close-eligible or bd close <epic-id> -r "all children complete"
After closing, present next options:
Task complete! What's next?
1. Continue with [area] tasks:
- META-xyz: [description]
2. Switch areas: bd ready
3. Something else?
Starting a New Session
bd ready
bd list --status=in_progress
bd show <id>
bd children <id>