Beads
Use Beads as the shared project task system. Local plans, scratch files, and personal memories are useful, but they are not the durable source of truth for project work.
First Step
Run:
bd prime
If that prints nothing, check whether the repository has an active Beads workspace:
bd where
Preferred Route
Use the bd CLI when shell access is available. It is the most compact and direct Beads interface.
Core CLI Workflow
- Find work:
bd ready
bd ready --claim
bd list --status=open
bd list --status=in_progress
- Inspect before editing:
bd show <id>
- Claim work atomically:
bd update <id> --claim
- Create durable follow-up work when implementation reveals new tasks:
bd create "Short title" --description="Why this exists and what needs to be done" --type=task --priority=2
- Close completed work:
bd close <id> --reason="Completed"
For multiline completion notes, use a file instead of shell-escaping a long reason:
bd close <id> --reason-file <path>
Use bd -C <path> ... for scripts and cross-worktree checks when changing
directories would obscure which Git checkout is being edited. After running
setup commands, inspect the printed target paths and git status in the
intended worktree before committing.
What Belongs In Beads
Use Beads for:
- shared project tasks
- blockers and dependencies
- discovered follow-up work
- work that must survive thread reset, compaction, or handoff
- status that another person or agent should be able to resume
Use agent-local planning tools only for the current turn's execution checklist. Do not treat them as shared project state.
Rules
- Do not create markdown TODO files as the source of truth when Beads is available.
- Do not use
bd edit; it opens an interactive editor. Usebd updateflags instead. - Prefer
--jsonwhen parsingbdoutput programmatically. - Prefer
bd ready --claim --jsononly when the ready-work filters make the selected task unambiguous. Otherwise inspect withbd ready --json, then claim the specific task withbd update <id> --claim --json. - If hooks are installed,
bd primemay already be injected. Run it manually when context is missing. - Do not auto-close or mutate tasks unless the work is actually complete.