| description | allowed-tools |
|---|---|
execute a set of bd issues |
Bash(bd:*) |
Execute a bd plan by working through issues with proper status tracking, commenting, and git workflow integration. Do not ask which one to start with. Start with any ready task by priority, if there is a tie, choose the first one. Please continue implementing until all ready tasks are complete, or you hit a critical question that demands a human answer.
- Identify the epic or starting issue based on $ARGUMENTS (can be issue ID or search term)
- Use
bd show [issue-id]to view the issue details - Use
bd dep tree [epic-id]to visualize the full plan structure - Use
bd readyto find the next unblocked issue to work on - Ensure you understand the complete scope before beginning execution
-
Find Ready Work:
bd ready
This shows all issues with status 'open' and no blocking dependencies
-
Claim the Issue:
bd update [issue-id] --status in_progress
⚠️ CRITICAL: Always mark issue as in_progress IMMEDIATELY when starting work -
Review Issue Details:
bd show [issue-id]
Read description, acceptance criteria, and any comments
-
Commit Early and Often:
- Commit after each meaningful feature or fix is complete and working
- Each commit should represent a single logical unit of work
- Avoid bundling multiple unrelated changes in one commit
- Never commit broken or failing code (unless intentionally adding failing tests before implementation)
- Avoid mentioning Claude in commit messages
-
Add Comments to Track Progress:
bd comment [issue-id] # Opens editor to add commentOr inline:
bd comments add [issue-id] "Completed database schema migration" -
Update After Each Commit: After making a git commit, document it in the issue:
git add [files] git commit -m "Clear, descriptive message" bd comment [issue-id] # Add note: "Commit: [commit-hash] - [what was done]"
-
Progress Notes: Use comments to track:
- What's been completed
- Current blockers or challenges
- Design decisions made
- References to commits
- Questions or uncertainties
-
Verify Acceptance Criteria:
- Check all criteria in the issue description are met
- Ensure tests pass
- Verify functionality works as expected
-
Final Commit:
git add . git commit -m "Descriptive message for final piece"
-
Close the Issue:
bd close [issue-id]
Or with a closing comment:
bd close [issue-id] --reason "All acceptance criteria met. Tests passing." -
Find Next Work:
bd ready
This automatically accounts for the just-closed issue and shows newly unblocked work
- Early and Often: Commit small, working increments
- Logical Units: Each commit is one coherent change
- Working Code: Never commit broken code (except failing tests before TDD implementation)
- Clear Messages: Descriptive commit messages that explain why, not just what
- No Claude References: Keep commit messages professional and implementation-focused
- Focus on light-touch unit and integration testing initially
- Prioritize having passing tests over exhaustive coverage
- Ensure basic functionality works before expanding test coverage
- Run tests before closing issues
Issue status should always reflect reality:
- open: Not started, waiting for dependencies or to be claimed
- in_progress: Actively being worked on RIGHT NOW
- closed: Completed and verified
-
Plan Review:
bd show [epic-id] # Understand the plan bd dep tree [epic-id] # See structure bd ready # Find starting point
-
Start Issue:
bd update [issue-id] --status in_progress # IMMEDIATELY bd show [issue-id] # Review details
-
Implement:
- Write code
- Test functionality
- Commit when working
- Add comment with commit reference
- Repeat
-
Complete Issue:
bd close [issue-id] # Mark complete bd ready # Find next work
-
Repeat until plan is complete
BD auto-syncs with git, so your workflow is:
# Start work
bd update proj-5 --status in_progress
# Do work, commit
git add src/auth.ts
git commit -m "Implement JWT token generation"
bd comment proj-5 "Commit abc123: Added JWT generation utility"
# More work, more commits
git add tests/auth.test.ts
git commit -m "Add tests for JWT token generation"
bd comment proj-5 "Commit def456: Tests passing, token validation working"
# Complete
bd close proj-5
git push # BD changes auto-sync via JSONL exportBD maintains full audit trail:
bd show [issue-id] # See all comments and history
bd comments list [issue-id] # List all comments
bd list --status in_progress # What's being worked on
bd list --status closed # What's been completed
bd stats # Overall progressIf you discover a blocker while working:
# Create blocker issue
bd create "Fix: [blocker description]" \
--priority 0 \
--description "Discovered while working on [original-issue]"
# Link the dependency
bd dep add [original-issue] [blocker-issue] --type blocks
# Update original issue
bd comment [original-issue] "Blocked by [blocker-issue]"
# Optionally reopen original if needed
bd update [original-issue] --status open
# Work on blocker instead
bd update [blocker-issue] --status in_progressIf you discover additional work needed during execution:
# Create new issue
bd create "[New task description]" \
--description "Discovered during [original-issue]: [context]"
# Link to plan
bd dep add [epic-id] [new-issue] --type parent-child
# Add dependencies if needed
bd dep add [dependent-issue] [new-issue] --type blocks
# Comment on discovery
bd comment [original-issue] "Created [new-issue] for [reason]"When working through multiple issues in one session:
bd ready # Find first issue
bd update proj-5 --status in_progress
# Work, commit, comment...
bd close proj-5 # Complete first
bd ready # Find next
bd update proj-7 --status in_progress
# Continue...Important: Only have ONE issue in_progress at a time (the one you're actively working on)
When all issues in the plan are closed:
bd list --status open # Verify nothing remaining
bd close [epic-id] # Close the epic
git push # Sync everything-
Status Hygiene:
- Update to in_progress when you start
- Close when truly complete
- Don't leave stale in_progress issues
-
Comment Richness:
- Reference commit hashes
- Document decisions
- Note blockers immediately
- Link related issues
-
Commit Quality:
- Small, focused commits
- Clear messages
- Working code only
- Test before committing
-
Dependency Awareness:
- Use
bd readyto find unblocked work - Create blockers when discovered
- Link new issues to plan structure
- Use
-
Full Git Commits Before Closing:
- Ensure all changes are committed
- Push to remote if working in a team
- BD auto-exports to JSONL (syncs via git)
- Never close an issue with uncommitted changes
# Start
bd ready
# Output: proj-12 "Implement user registration endpoint"
bd update proj-12 --status in_progress
bd show proj-12
# Read requirements...
# First increment
# ... write registration route ...
git add src/routes/auth.ts
git commit -m "Add registration endpoint structure"
bd comment proj-12 "Commit a1b2c3d: Basic route structure in place"
# Second increment
# ... add validation ...
git add src/routes/auth.ts src/validation/user.ts
git commit -m "Add input validation for registration"
bd comment proj-12 "Commit e4f5g6h: Validation working, email/password checks"
# Tests
# ... write tests ...
git add tests/auth/registration.test.ts
git commit -m "Add registration endpoint tests"
bd comment proj-12 "Commit i7j8k9l: Tests passing, all acceptance criteria met"
# Complete
bd close proj-12
bd ready
# Output: proj-13 "Implement password hashing with bcrypt"
bd update proj-13 --status in_progress
# Continue...bd ready- Show unblocked issues ready to workbd show [id]- View issue detailsbd dep tree [id]- Visualize plan structurebd list --status [status]- List by statusbd blocked- Show blocked issues
bd update [id] --status in_progress- Start workbd update [id] --status open- Reopen if neededbd close [id]- Mark complete
bd comment [id]- Add progress note (opens editor)bd comments add [id] "message"- Quick inline commentbd comments list [id]- View all comments
bd dep add [depends-on] [blocker] --type blocks- Add blockerbd create "new task"- Create discovered workbd dep add [epic] [task] --type parent-child- Link to plan
From your CLAUDE.md:
- ✅ Call
bdcommands unadorned (bd is in PATH) - ✅ Mark tasks as in_progress immediately when starting
- ✅ Ensure fully git committed before closing issues
- ✅ Include enough detail in issues for fresh LLM sessions
$ARGUMENTS