brainstorming
Structured design dialogue that validates ideas before implementation begins.
beads-plan
Transform project specifications into executable beads dependency graphs with proper decomposition, dependency mapping, and validation. Use when starting new projects, breaking down epics, planning multi-step work, or when asked to create a beads implementation plan.
Full skill instructions
This skill guides the transformation of project specifications into instantiated beads dependency graphs. A well-planned beads implementation creates an executable DAG (directed acyclic graph) where each bead (issue) has clear boundaries, explicit inputs/outputs, and testable success criteria.
Beads operates as the execution layer in a layered planning architecture:
┌─────────────────────────────────────────────┐
│ PLANNING LAYER (Org-mode) │
│ - Human-visible project state │
│ - Strategic decomposition │
└─────────────────────────────────────────────┘
│
[spawn-to-beads: Task Spawns Epic]
▼
┌─────────────────────────────────────────────┐
│ EXECUTION LAYER (Beads) ← YOU ARE HERE │
│ - Agent-executable decomposition │
│ - Swarm coordination and claiming │
└─────────────────────────────────────────────┘
│
[complete-to-org: Epic Completes]
▼
┌─────────────────────────────────────────────┐
│ PLANNING LAYER (Org-mode) - State Updated │
└─────────────────────────────────────────────┘
Key Integration Points:
spawn-to-beads skillsource_org_id reference in their descriptioncomplete-to-org skill updates the source org taskbd ready shows unblocked workbd CLI installed (npm install -g @beads/bd or brew install steveyegge/beads/bd)bd init (run once per project)iterative-planning-context skill)For a simple project, the workflow is:
# 1. Create the epic (top-level container)
bd create "My Project Epic" -t epic -p 1 -d "Description of the overall goal"
# 2. Create tasks as children of the epic (auto-generates hierarchical IDs)
bd create "First task" -t task -p 2 --parent bd-XXXX
bd create "Second task" -t task -p 2 --parent bd-XXXX
# 3. Add blocking dependencies between tasks
bd dep add bd-XXXX.2 bd-XXXX.1 # Task 2 depends on Task 1
# 4. Validate the plan
bd ready # Should show Task 1 as ready
bd dep tree bd-XXXX # Visualize the dependency graph
bd dep cycles # Should return empty (no cycles)
For complex projects, follow the five phases below. The phases are internal reasoning steps—work through them continuously and present the instantiated result. Only pause for user input when the specification has genuine ambiguity that blocks progress.
When an epic is created via the spawn-to-beads skill from an org-mode task, special handling applies:
Spawned epics include a source reference in their description:
# Epic created with source reference
bd create "Implement Authentication" -t epic -p 1 \
-d "[source_org_id: task-implement-auth] Full description here..."
The source_org_id marker links this epic back to the originating org-mode task.
When closing an epic that has a source_org_id:
Check for source reference in epic description:
bd show <epic-id> --json | jq -r '.description' | grep -o 'source_org_id: [^]]*'
Verify 100% completion (all child beads closed):
bd epic status <epic-id>
Trigger complete-to-org skill to update the org-mode task:
Then close the epic:
bd close <epic-id> -r "All tasks complete. Org task updated."
Important: Always trigger the org callback BEFORE closing the epic, so the source reference is still accessible.
Epics created directly (without org source) follow normal workflow with no callback required.
However, direct epic creation violates org-mode coherence. See "Org-Mode Coherence" section below.
Architectural Principle: Org-mode is the canonical planning layer. All work SHOULD originate from org-mode.
When epics are created without org source:
RECOMMENDED: Spawn from org-mode
Use spawn-to-beads skill to create epic from org task:
# 1. Have org task ready
# 2. Use spawn-to-beads skill (establishes bidirectional refs)
# 3. Result: epic has source_org_id, org task has DELEGATED_TO
TACTICAL EXCEPTION: Direct creation
Creating epics directly is permitted but produces a warning:
# Before: bd create "Epic Title" -t epic -p 1 -d "Description"
#
# Ask yourself:
# - Is this genuinely ad-hoc work?
# - Should an org task exist for this work?
# - Will I remember to update org-mode when complete?
#
# If creating without org source, acknowledge the deviation:
echo "WARNING: Creating epic without org source. Org-mode coherence violated."
During instantiation, before creating the epic:
spawn-to-beads skill instead of direct creationIf an epic was created without org source and should be tracked:
DELEGATED_TO property pointing to existing epic ID[source_org_id: <org-id>] markerThis restores bidirectional traceability but is more work than doing it right initially.
When planning changes to an existing codebase (vs greenfield), leverage Planning Context Snapshots for better decomposition.
Before starting Phase 1, check if a Planning Context Snapshot exists:
ls docs/planning/context-*.md 2>/dev/null
If found, read it first - it contains:
Phase 1 Enhancement - Use context to:
Phase 2 Enhancement - Use context for better beads:
Phase 3 Enhancement - Use context for dependencies:
When context exists, beads should reference it:
| Field | Context Enhancement |
|---|---|
| Title | Use naming conventions from context |
| Description | Reference location from structure map |
| Acceptance | Include pattern compliance from conventions |
Example with context:
# Context says: new commands go in commands/<name>.rs, follow init.rs pattern
bd create "Add export command" -t task -p 2 --parent bd-XXXX \
-d "Create commands/export.rs following init.rs pattern. See context-beadsmith.md §Structure Map." \
--acceptance "Command works, tests in #[cfg(test)] module, error handling uses anyhow::Result with .context()"
If no Planning Context Snapshot exists and the change is non-trivial:
iterative-planning-context skill first to generate contextdocs/planning/context-<project>.md for future usePlanning Context Snapshots include staleness warnings. If context is stale:
Goal: Fully understand the project scope before decomposing.
Before creating any beads, establish clarity on:
Look for natural decomposition points:
Identify non-obvious blockers:
A clear mental model of:
Goal: Break work into bounded units (beads) with clear definitions.
Every bead must have:
| Field | Description | Example |
|---|---|---|
| Title | Clear, action-oriented | "Implement user authentication API" |
| Type | epic, feature, task, bug, chore | -t task |
| Priority | P0 (critical) to P4 (backlog) | -p 1 |
| Description | What and why | -d "Create JWT-based auth..." |
| Acceptance criteria | Testable success conditions | --acceptance "Tests pass, docs updated" |
| Type | Use When | Typical Children |
|---|---|---|
| epic | Container for related work, multi-week effort | features, tasks |
| feature | User-visible capability, days to a week | tasks |
| task | Single unit of work, hours to a day | none or sub-tasks |
| bug | Defect fix | none |
| chore | Maintenance, refactoring, tooling | none |
| Priority | Meaning | Use When |
|---|---|---|
| P0 | Critical/Blocker | Must be done immediately, blocks everything |
| P1 | High | Core functionality, needed for MVP |
| P2 | Medium | Important but not blocking (default) |
| P3 | Low | Nice to have, polish |
| P4 | Backlog | Future consideration |
Too Large (split it):
Too Small (merge it):
Just Right:
The planning context window is precious. When you plan, you have full visibility into requirements, research, and design decisions. That knowledge must be encoded into the bead, not left implicit.
A poorly-specified bead forces the executing agent to re-discover domain knowledge, make assumptions about intent, and produce work that technically passes but misses the point.
See docs/bead-quality-criteria.md for the complete specification. Key requirements:
1. Description Encodes Domain Knowledge
Bad: "Create the vision-workshop skill for guided vision creation."
Good: "Create skills/vision-workshop/input.yaml implementing the Product Vision Board methodology (Roman Pichler) for co-creative vision document creation. Workflow phases: 1) North Star, 2) Target Users, 3) Core Problem, 4) Value Proposition, 5) Standout Capabilities, 6) Success Criteria, 7) Anti-Goals, 8) Synthesis. Reference: skills/org-planning/input.yaml for structure pattern."
Test: Could an agent with NO prior context execute this bead and produce the intended result?
2. Acceptance Criteria Are Behavioral, Not Mechanical
Acceptance criteria should verify that the bead achieves its purpose, not just that artifacts exist or code was written.
Common anti-pattern: Mechanism-vs-Purpose confusion
For a bead about "per-bead context isolation":
Bad (verifies mechanism):
1. Function get_next_ready_bead() exists
2. Session persistence code removed
3. CONTEXT.md file created before each bead
Good (verifies purpose):
1. Run harness on 2-bead epic: opencode session list shows 2 distinct sessions
2. Bead 2 cannot reference variables/decisions from Bead 1's context
3. CONTEXT.md timestamps differ between beads (stat shows different mtime)
The bad criteria verify that changes were made. The good criteria verify that isolation actually works.
More examples by bead type:
| Bead Type | Mechanical (bad) | Behavioral (good) |
|---|---|---|
| File migration | "Files moved to new location" | "grep shows all references use new paths" |
| New function | "Function exists in module" | "Calling function with X input produces Y output" |
| Refactor | "Code restructured per plan" | "All existing tests still pass + new behavior verified" |
| Config change | "Config file updated" | "System behavior changes as expected when config applied" |
Test: Do the acceptance criteria verify PURPOSE, not just EXISTENCE?
3. References Are Concrete
Bad: "Follow existing patterns in the codebase."
Good: "Follow the pattern in skills/org-planning/input.yaml: workflow section with phases/steps/outputs, patterns section, antipatterns section, checklist section, examples section."
4. Scope Is Bounded
Every bead should have implicit or explicit in-scope/out-of-scope. If scope is ambiguous, make it explicit in the description.
Quality Checklist (verify before finalizing each bead):
Top-Down: Start with epic, break into features, break into tasks
Epic: Build Authentication System
Feature: User Registration
Task: Create registration form
Task: Implement email validation
Task: Add password strength checker
Feature: Login Flow
Task: Create login form
Task: Implement JWT generation
Task: Add session management
Horizontal Layers: Decompose by system layer
Epic: Add Search Feature
Task: Design search API contract
Task: Implement search backend
Task: Create search UI component
Task: Add search result caching
Task: Write integration tests
Vertical Slices: End-to-end thin slices
Epic: User Dashboard
Task: Basic dashboard with user info (full stack)
Task: Add activity feed (full stack)
Task: Add settings panel (full stack)
When an epic has multiple features or components that must work together, you MUST add integration beads as leaf nodes in the DAG. These execute last (after all feature beads) and ensure the system works as a coherent whole.
Why Integration Beads Are Necessary:
Standard Integration Beads:
For any epic with 2+ features, add:
Feature: Integration & Documentation (P3 - depends on all other features)
Task: Documentation synthesis
- Generate unified README from spec + all component implementations
- Ensure docs tell the complete story, not just one piece
- Acceptance: README covers full system architecture, setup, and usage
Task: Cross-component verification
- Verify API contracts match between client and server
- Run end-to-end tests across component boundaries
- Acceptance: E2E test passes: data flows through entire system
Task: Deployment documentation
- Verify deployment docs cover full stack (not just one component)
- Acceptance: New developer can deploy entire system from docs
Dependency Pattern:
Integration beads use fan-in - they depend on ALL feature beads:
# Integration depends on all features
bd dep add bd-integration bd-feature1
bd dep add bd-integration bd-feature2
bd dep add bd-integration bd-feature3
This ensures integration beads naturally execute last, after all components are built.
Example: Multi-Component App
Epic: Oracy MVP
Feature: Server Core (P1)
└── [server tasks...]
Feature: Mobile Core (P1)
└── [mobile tasks...]
Feature: Integration & Documentation (P3)
├── Task: Write unified README from spec + implementations
├── Task: Verify mobile API client matches server OpenAPI spec
├── Task: E2E test: record audio → upload → transcript appears
└── Task: Verify deployment docs cover full stack
When to Skip Integration Beads:
Do NOT skip integration beads just because they're "P3" - they're P3 because they must run last, not because they're optional.
Goal: Establish relationships between beads.
| Type | Semantics | Use When | Command |
|---|---|---|---|
| blocks | A must complete before B starts | Sequential work, technical dependency | bd dep add B A |
| parent-child | Hierarchical containment | Epic contains features/tasks | --parent <epic-id> |
| related | Soft connection, informational | Related but independent work | bd dep add A B -t related |
| discovered-from | Work found during other work | Bug found while implementing feature | bd dep add B A -t discovered-from |
Is B inside A (containment)?
YES -> parent-child (use --parent on create)
NO -> Continue...
Must A complete before B can start?
YES -> blocks (bd dep add B A)
NO -> Continue...
Was B discovered while working on A?
YES -> discovered-from (bd dep add B A -t discovered-from)
NO -> Continue...
Are A and B related but independent?
YES -> related (bd dep add A B -t related)
NO -> No dependency needed
Sequential Chain:
# A -> B -> C (A blocks B, B blocks C)
bd dep add bd-B bd-A
bd dep add bd-C bd-B
Fan-Out (one blocks many):
# Setup blocks all implementation tasks
bd dep add bd-impl1 bd-setup
bd dep add bd-impl2 bd-setup
bd dep add bd-impl3 bd-setup
Fan-In (many block one):
# All features must complete before release
bd dep add bd-release bd-feature1
bd dep add bd-release bd-feature2
bd dep add bd-release bd-feature3
Diamond (convergent paths):
# A -> B, A -> C, B -> D, C -> D
bd dep add bd-B bd-A
bd dep add bd-C bd-A
bd dep add bd-D bd-B
bd dep add bd-D bd-C
Before adding dependencies, mentally trace the graph:
After instantiation, verify:
bd dep cycles # Should return empty
Goal: Create the beads in the correct order with proper relationships.
--parent pointing to epic)--parent pointing to epic or feature)Before creating the epic, verify org-mode coherence:
Does this work have an org task?
spawn-to-beads skill instead (see "Spawned Epics" section)If proceeding without org source:
# Acknowledge coherence violation (tactical exception)
echo "NOTE: Creating epic without org source - ensure org-mode is updated when complete"
With org source (RECOMMENDED):
# Use spawn-to-beads skill - it creates epic with source_org_id
# and updates org task with DELEGATED_TO property
Without org source (TACTICAL EXCEPTION):
bd create "Project Epic Title" \
-t epic \
-p 1 \
-d "High-level description of the project goal" \
--acceptance "All child features complete, tests passing, docs updated"
Capture the returned ID (e.g., bd-a3f8).
# Using --parent auto-generates hierarchical IDs: bd-a3f8.1, bd-a3f8.2, etc.
bd create "First task" -t task -p 2 --parent bd-a3f8 \
-d "Description of what this task accomplishes" \
--acceptance "Specific testable criteria"
bd create "Second task" -t task -p 2 --parent bd-a3f8 \
-d "Description" \
--acceptance "Criteria"
After all beads are created:
# Task 2 depends on Task 1 (Task 1 blocks Task 2)
bd dep add bd-a3f8.2 bd-a3f8.1
# Task 3 depends on Task 2
bd dep add bd-a3f8.3 bd-a3f8.2
# Final task depends on multiple tasks (fan-in)
bd dep add bd-a3f8.5 bd-a3f8.3
bd dep add bd-a3f8.5 bd-a3f8.4
For larger plans, create a markdown file:
# Project Plan
## Epic: Authentication System
- Type: epic
- Priority: 1
- Description: Implement complete auth system
### Task: Design API contract
- Type: task
- Priority: 1
- Blocks: Implement auth endpoints
### Task: Implement auth endpoints
- Type: task
- Priority: 2
Then: bd create -f plan.md
Goal: Verify the dependency graph is complete, correct, and executable.
Before structural validation, verify each bead meets quality criteria:
# Check description length (guards against thin beads)
bd list --parent $EPIC_ID --json | jq -e '
[.[] | select((.description | length) < 100)]
| if length > 0 then
"QUALITY FAIL: Thin descriptions on: \([.[].id] | join(", "))" | halt_error
else empty end
'
# Check acceptance criteria count (minimum 2 criteria per bead)
# Note: This guards against missing/thin criteria but cannot detect mechanical-vs-behavioral.
# The planner must self-audit for behavioral criteria using the test: "Does this verify PURPOSE?"
bd list --parent $EPIC_ID --json | jq -e '
[.[] | select(
.acceptance_criteria == null or
(.acceptance_criteria | split("\n") | map(select(length > 0)) | length) < 2
)]
| if length > 0 then
"QUALITY FAIL: Insufficient acceptance criteria on: \([.[].id] | join(", "))" | halt_error
else empty end
'
Quality Failures Are Hard Stops. Do not proceed to execution with thin beads.
Remediation: For each failing bead:
bd ready
Expected: At least one bead with status open and no blockers.
If empty: Check for cycles or missing root tasks.
bd dep cycles
Expected: Empty output (no cycles detected).
If cycles found: Remove one edge to break the cycle.
bd dep tree bd-EPIC-ID
Expected: All tasks appear in the tree, logical ordering.
Check for:
bd graph bd-EPIC-ID
Expected: ASCII visualization showing layers:
bd epic status bd-EPIC-ID
Expected: Shows completion percentage and blocked/ready counts.
List all beads and verify each is either:
--parent relationship, ORblocks or related dependencybd list --all --json | jq '.[] | select(.parent == null and .dependencies == [])'
Phase 5 is the END of the beads-plan skill's responsibility.
After validation passes, the planning agent outputs a handoff message and STOPS:
Planning complete.
Epic: <epic-id>
Branch: <branch-name>
Work Type: <type>
Beads: <count> tasks ready for execution
To execute:
beads-harness <epic-id>
The planning agent MUST NOT execute beads. Execution is a separate phase with a separate agent (the beads-harness). This separation ensures:
Beads are self-contained - If the planning agent could execute, beads might rely on conversational context that isn't encoded in the bead description.
Execution is scalable - The harness can parallelize across multiple agents. Manual execution cannot.
Recovery is possible - If execution fails, the plan remains intact for retry.
See docs/bead-quality-criteria.md § "Planning/Execution Boundary" for details.
Exception: The planning agent may execute only if the user explicitly requests it (e.g., "execute the first bead now").
Note: This section documents how the
beads-harnessand execution agents work. It is reference material, not actions for the planning agent to perform.
When multiple agents work on the same beads project, coordination is essential.
Find ready work:
bd ready --json
Claim a bead (atomic operation):
bd update bd-XXXX --claim
This atomically sets status=in_progress and assignee=<agent>. Fails if already claimed.
Work on the bead: Implement the task.
Complete the bead:
bd close bd-XXXX -r "Completed: brief summary"
Sync changes:
bd sync
Check for newly unblocked work:
bd ready --json
open -> in_progress (via --claim or --status in_progress)
in_progress -> closed (via bd close)
closed -> open (via bd reopen, if needed)
bd sync before and after work sessions--json flag for programmatic parsingbd show bd-XXXX --json | jq '.assignee'Round-Robin:
Each agent queries bd ready, claims the first unclaimed bead.
Specialized Agents:
Filter by label: bd ready --label backend vs bd ready --label frontend
Priority-Based:
Sort by priority: bd ready --sort priority
Build a CLI tool called
mytoolwith three subcommands:init,run, andstatus. It should be written in Go, have a config file, and include tests.
Scope: CLI tool with 3 commands, Go, config support, tests.
Success: mytool init, mytool run, mytool status all work, tests pass.
Constraints: Go 1.21+, Cobra for CLI framework.
Boundaries:
Epic: mytool CLI
Task: Project scaffolding (go mod, directory structure)
Task: Implement config loading
Task: Implement `init` subcommand
Task: Implement `run` subcommand
Task: Implement `status` subcommand
Task: Add unit tests
Task: Add integration tests
Task: Write README documentation
scaffolding <- config <- init
scaffolding <- config <- run
scaffolding <- config <- status
init, run, status <- unit tests
unit tests <- integration tests
integration tests <- documentation (docs describe tested behavior)
# Create epic
bd create "mytool CLI" -t epic -p 1 \
-d "CLI tool with init, run, and status subcommands" \
--acceptance "All commands work, tests pass, README complete"
# Returns: bd-m7k2
# Create tasks with hierarchical IDs
bd create "Project scaffolding" -t task -p 1 --parent bd-m7k2 \
-d "Set up go.mod, directory structure, Cobra root command" \
--acceptance "go build succeeds, mytool --help works"
# Returns: bd-m7k2.1
bd create "Implement config loading" -t task -p 1 --parent bd-m7k2 \
-d "Config file parsing with Viper, support YAML and env vars" \
--acceptance "Config loads from file and environment"
# Returns: bd-m7k2.2
bd create "Implement init subcommand" -t task -p 2 --parent bd-m7k2 \
-d "mytool init creates default config file" \
--acceptance "Running mytool init creates .mytool.yaml"
# Returns: bd-m7k2.3
bd create "Implement run subcommand" -t task -p 2 --parent bd-m7k2 \
-d "mytool run executes the main workflow" \
--acceptance "Running mytool run produces expected output"
# Returns: bd-m7k2.4
bd create "Implement status subcommand" -t task -p 2 --parent bd-m7k2 \
-d "mytool status shows current state" \
--acceptance "Running mytool status displays state information"
# Returns: bd-m7k2.5
bd create "Add unit tests" -t task -p 2 --parent bd-m7k2 \
-d "Unit tests for config, init, run, status packages" \
--acceptance "go test ./... passes with >70% coverage"
# Returns: bd-m7k2.6
bd create "Add integration tests" -t task -p 3 --parent bd-m7k2 \
-d "End-to-end tests running actual CLI commands" \
--acceptance "Integration test suite passes"
# Returns: bd-m7k2.7
bd create "Write README documentation" -t task -p 3 --parent bd-m7k2 \
-d "README with installation, usage, and examples" \
--acceptance "README covers all commands with examples"
# Returns: bd-m7k2.8
# Add dependencies
bd dep add bd-m7k2.2 bd-m7k2.1 # config depends on scaffolding
bd dep add bd-m7k2.3 bd-m7k2.2 # init depends on config
bd dep add bd-m7k2.4 bd-m7k2.2 # run depends on config
bd dep add bd-m7k2.5 bd-m7k2.2 # status depends on config
bd dep add bd-m7k2.6 bd-m7k2.3 # unit tests depend on init
bd dep add bd-m7k2.6 bd-m7k2.4 # unit tests depend on run
bd dep add bd-m7k2.6 bd-m7k2.5 # unit tests depend on status
bd dep add bd-m7k2.7 bd-m7k2.6 # integration tests depend on unit tests
bd dep add bd-m7k2.8 bd-m7k2.7 # docs depend on integration tests
$ bd ready
bd-m7k2.1 P1 task Project scaffolding
$ bd dep cycles
# (empty - no cycles)
$ bd graph bd-m7k2
┌─────────────────────────────────────────────────────────────┐
│ Layer 0 │
│ ○ bd-m7k2.1 Project scaffolding │
├─────────────────────────────────────────────────────────────┤
│ Layer 1 │
│ ○ bd-m7k2.2 Implement config loading │
├─────────────────────────────────────────────────────────────┤
│ Layer 2 │
│ ○ bd-m7k2.3 Implement init subcommand │
│ ○ bd-m7k2.4 Implement run subcommand │
│ ○ bd-m7k2.5 Implement status subcommand │
├─────────────────────────────────────────────────────────────┤
│ Layer 3 │
│ ○ bd-m7k2.6 Add unit tests │
├─────────────────────────────────────────────────────────────┤
│ Layer 4 │
│ ○ bd-m7k2.7 Add integration tests │
├─────────────────────────────────────────────────────────────┤
│ Layer 5 │
│ ○ bd-m7k2.8 Write README documentation │
└─────────────────────────────────────────────────────────────┘
$ bd epic status bd-m7k2
Epic: mytool CLI (bd-m7k2)
Progress: 0/8 complete (0%)
Ready: 1, Blocked: 7, In Progress: 0
Result: Valid dependency graph with one ready starting point, no cycles, clear execution layers.
bd init # Interactive initialization
bd init --quiet # Non-interactive (for agents)
bd init --prefix myproj # Custom ID prefix
bd create "Title" [flags]
Flags:
-t, --type string # epic|feature|task|bug|chore (default: task)
-p, --priority string # 0-4 or P0-P4 (default: 2)
-d, --description string # Issue description
--parent string # Parent issue ID for hierarchical child
--acceptance string # Acceptance criteria
-l, --labels strings # Labels (comma-separated)
-a, --assignee string # Assignee
--deps strings # Dependencies on create (type:id format)
--json # JSON output
bd dep add <issue> <depends-on> [-t type] # Add dependency
bd dep remove <issue> <depends-on> # Remove dependency
bd dep tree <issue> # Show dependency tree
bd dep tree <issue> --direction=up # Show what this blocks
bd dep cycles # Detect cycles
bd dep list <issue> # List dependencies
Dependency types: blocks (default), related, parent-child, discovered-from, tracks
bd ready # Show ready work (no blockers)
bd ready --json # JSON output for parsing
bd ready --limit 5 # Limit results
bd ready --assignee name # Filter by assignee
bd ready --label backend # Filter by label
bd list # List all open issues
bd list --all # Include closed
bd list --parent bd-XXX # Children of specific parent
bd list --status open # Filter by status
bd show <id> # Show issue details
bd show <id> --json # JSON output
bd blocked # Show blocked issues
bd graph <id> # ASCII dependency visualization
bd graph --all # All open issues
bd update <id> [flags]
Flags:
--status string # open|in_progress|closed
--claim # Atomically claim (set in_progress + assignee)
--title string # New title
-d, --description string # New description
-p, --priority string # New priority
--acceptance string # Acceptance criteria
--add-label strings # Add labels
--remove-label strings # Remove labels
bd close <id> # Close an issue
bd close <id> -r "reason" # Close with reason
bd close <id> --suggest-next # Show newly unblocked after close
bd epic status <id> # Show epic completion status
bd epic close-eligible # Close epics where all children complete
bd swarm validate <epic> # Validate epic structure for swarming
bd swarm create <epic> # Create swarm molecule from epic
bd swarm status # Show swarm status
bd sync # Sync with git (export + commit + pull + push)
bd export -o file.jsonl # Export to JSONL
bd import -i file.jsonl # Import from JSONL
Symptom: 50+ tiny tasks for a simple feature. Problem: Graph noise, overhead exceeds value. Fix: Merge related micro-tasks, aim for 30min-3hr tasks.
Symptom: One "Implement everything" task. Problem: No progress visibility, can't parallelize. Fix: Break into functional units with clear boundaries.
Symptom: bd ready shows tasks that actually can't start.
Problem: Implicit dependencies not captured.
Fix: Trace each task's true prerequisites, add blocking deps.
Symptom: bd dep cycles returns results.
Problem: Deadlock - nothing can complete.
Fix: Identify the spurious edge, remove it.
Symptom: Tasks not connected to any epic or dependency. Problem: Lost work, unclear ownership. Fix: Add parent or dependency relationships.
Symptom: "It works" as acceptance criteria. Problem: No way to verify completion. Fix: Specify testable conditions: "Tests pass", "API returns 200", "Config loads".
Symptom: Everything is P0. Problem: No way to triage, paralysis. Fix: Reserve P0 for true blockers, use P1-P2 for normal work.
Symptom: Closing spawned epic without updating source org task.
Problem: Org task remains in WAITING forever; planning layer out of sync with reality.
Fix: Before closing any epic with source_org_id, run complete-to-org skill to update the org task.
Symptom: Running bd close on spawned epic, THEN trying to find source_org_id.
Problem: Source reference may become harder to access after close.
Fix: Extract source_org_id and trigger callback BEFORE closing the epic.
Causes:
bd blockedbd dep cyclesbd list --status openFix: Add a task with no dependencies, or break the cycle.
Causes:
bd show <id>Fix: Verify IDs, reconsider dependency direction.
Cause: Missing --parent flag on create.
Fix: Use --parent bd-EPIC-ID when creating child tasks.
Cause: Multiple agents modified same JSONL.
Fix:
git pull --rebase
bd import -i .beads/issues.jsonl
bd sync
Cause: Another agent already claimed.
Fix: Query bd ready --unassigned to find unclaimed work.
| Skill | Relationship |
|---|---|
iterative-planning-context | Produces Planning Context Snapshots consumed during decomposition |
beads-execute | Executes the beads created by this skill |
spawn-to-beads | Spawns epics from org-mode tasks |
complete-to-org | Callbacks when spawned epics complete |
agents-md | Creates AGENTS.md files that inform codebase context |
Structured design dialogue that validates ideas before implementation begins.
Comprehensive design intelligence for web and mobile UI/UX across 10 technology stacks.
Comprehensive implementation plans for multi-step tasks, breaking down specs into bite-sized, testable steps.
Introduction to the obra skills system with mandatory skill invocation rules and best practices.
Execute a written implementation plan with critical review and task checkpoints.
Delegate independent tasks to specialized agents working concurrently with isolated context.
Isolated git worktrees with smart directory selection and safety verification.
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
Plan searchable and shareable content that drives traffic, builds authority, and generates leads.
README-first repository scanner that extracts commands and classifies reproduction candidates without executing them.
Brainstorm and prioritize marketing strategies tailored to your SaaS stage, budget, and goals.
Plan and optimize your website's page hierarchy, navigation, URL structure, and internal linking.
The world's fastest calendar for remote work
Capture, organize, and utilize your knowledge effortlessly.
Instant Summaries of Audio & Video Interviews with AnySummary
Transform PDFs into engaging mind maps.
Chat with any PDF instantly
Create an optimal daily plan using your voice
A productivity platform to centralize organizational knowledge and workflows with contextual AI assistance.
AskYourPDF Pricing Plans: Tailored to Your Needs