| name | workflow-beads-dependency-management |
| description | bd dep add bd-15 bd-10 --type blocks |
Beads Dependency Management
Use this skill when: Creating relationships between issues, managing blockers, or organizing work hierarchies
Overview
Beads supports four dependency types that create a directed graph of issue relationships. Understanding when to use each type is critical for effective issue tracking.
Dependency Types
1. blocks - Hard Blocker
Purpose: Prevents an issue from being "ready" until the blocker is closed
Use when: Implementation of X literally cannot proceed without Y being done first
bd dep add bd-15 bd-10 --type blocks
Example Use Cases:
- Database schema must exist before migration
- Authentication system before protected endpoints
- Core library before dependent features
- Design approval before implementation
Graph Representation:
bd-10 --> bd-15 (bd-10 blocks bd-15)
2. related - Soft Association
Purpose: Creates context link without blocking
Use when: Two issues share context but don't block each other
bd dep add bd-20 bd-18 --type related
Example Use Cases:
- Frontend and backend for same feature
- Documentation for related modules
- Related bug fixes in same area
- Alternative implementation approaches
Graph Representation:
bd-18 <--> bd-20 (bidirectional soft link)
3. parent-child - Hierarchy
Purpose: Creates epic/subtask relationships
Use when: Organizing work into epics and subtasks
bd dep add bd-25 bd-22 --type parent-child
Example Use Cases:
- Feature epic with implementation subtasks
- Large refactoring broken into steps
- Release milestone with constituent tasks
- Research spike with exploration tasks
Graph Representation:
bd-22 (epic)
├─ bd-25 (subtask)
├─ bd-26 (subtask)
└─ bd-27 (subtask)
4. discovered-from - Discovery Trail
Purpose: Tracks issues discovered during work on another issue
Use when: You find new work during execution and want to maintain the discovery chain
bd dep add bd-30 bd-28 --type discovered-from
Example Use Cases:
- Bug found during feature implementation
- Edge case discovered during testing
- Technical debt identified during refactoring
- Missing documentation found during review
Graph Representation:
bd-28 (working on) --> bd-30 (discovered)
Dependency Commands
Add Dependency
bd dep add <target-issue> <source-issue> --type <type>
bd dep add bd-5 bd-3 --type blocks
bd dep add bd-10 bd-8 --type related
bd dep add bd-15 bd-12 --type parent-child
bd dep add bd-20 bd-18 --type discovered-from
Remove Dependency
bd dep remove bd-5 bd-3 --type blocks
View Dependency Tree
bd dep tree bd-42
bd dep tree bd-42 --type blocks
Check for Cycles
bd dep cycles
Practical Patterns
Pattern 1: Epic with Ordered Subtasks
Create a feature epic with dependencies between subtasks:
bd create "Implement user authentication" -t epic -p 0 --json
bd create "Design auth schema" -t task -p 0 --json
bd create "Implement JWT tokens" -t task -p 1 --json
bd create "Add login endpoints" -t task -p 1 --json
bd create "Add auth middleware" -t task -p 2 --json
bd dep add bd-101 bd-100 --type parent-child
bd dep add bd-102 bd-100 --type parent-child
bd dep add bd-103 bd-100 --type parent-child
bd dep add bd-104 bd-100 --type parent-child
bd dep add bd-102 bd-101 --type blocks
bd dep add bd-103 bd-102 --type blocks
bd dep add bd-104 bd-103 --type blocks
Pattern 2: Discovery-Driven Development
Track discovered work during execution:
bd update bd-50 --status in_progress --json
bd create "Fix user validation bug" -t bug -p 0 --json
bd dep add bd-51 bd-50 --type discovered-from
bd create "Add missing user tests" -t task -p 2 --json
bd dep add bd-52 bd-50 --type discovered-from
bd create "Update user documentation" -t task -p 3 --json
bd dep add bd-53 bd-50 --type discovered-from
Pattern 3: Parallel Features with Shared Dependency
Multiple features depend on same foundation:
bd create "Build base API client" -t task -p 0 --json
bd create "User profile feature" -t feature -p 1 --json
bd create "Settings feature" -t feature -p 1 --json
bd create "Dashboard feature" -t feature -p 1 --json
bd dep add bd-201 bd-200 --type blocks
bd dep add bd-202 bd-200 --type blocks
bd dep add bd-203 bd-200 --type blocks
Pattern 4: Related Work Clusters
Group related issues without blocking:
bd create "Frontend: User profile UI" -t task -p 1 --json
bd create "Backend: User profile API" -t task -p 1 --json
bd create "Docs: User profile guide" -t task -p 3 --json
bd dep add bd-300 bd-301 --type related
bd dep add bd-300 bd-302 --type related
bd dep add bd-301 bd-302 --type related
Dependency Queries
Find Blocked Issues
bd list --status blocked --json
bd dep tree bd-50 | grep "blocks"
Find Ready Work
bd ready --json --limit 10
bd ready --priority 0 --json
Trace Discovery Chain
bd dep tree bd-50 --type discovered-from
View Epic Progress
bd dep tree bd-100 --type parent-child
bd list --json | jq '.[] | select(.parent == "bd-100")'
Best Practices
Choosing Dependency Types
SITUATION → DEPENDENCY TYPE
─────────────────────────────────────────────────────────────
X must complete before Y can start → blocks
X and Y are related but independent → related
Y is subtask of epic X → parent-child
Y was discovered while working on X → discovered-from
Avoiding Cycles
Beads prevents cycles in blocks dependencies, but be mindful:
bd dep add bd-10 bd-5 --type blocks
bd dep add bd-5 bd-10 --type blocks
bd dep add bd-10 bd-5 --type related
bd dep add bd-5 bd-10 --type related
Dependency Hygiene
- Be specific: Use
blocks only when truly necessary
- Avoid over-linking: Don't create dependencies "just in case"
- Update dependencies: Remove obsolete blockers
- Document reasoning: Use issue descriptions to explain dependencies
- Review regularly: Check
bd dep cycles periodically
Common Pitfalls
Overusing blocks
Problem: Everything blocks everything, nothing is ready
Solution: Reserve blocks for hard dependencies. Use related for soft associations.
Missing Discovery Links
Problem: Lose context of why work was created
Solution: Always link discovered work with discovered-from
Orphaned Subtasks
Problem: Subtasks not linked to parent epic
Solution: Always create parent-child link when breaking down epics
Related Skills
beads-workflow.md - Core bd CLI commands
beads-multi-session-patterns.md - Using dependencies in long-horizon tasks
beads-context-strategies.md - Preserving dependency context
References
- See
beads-context/references/beads_cli_reference.md for full bd dep command reference