.config/claude/skills/bdplan/SKILL.md
plan a set of bd issues
npx skillsauth add jm96441n/dotfiles .config/claude/skills/bdplanInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create a structured implementation plan as a series of linked bd issues with dependency management. Uses bd's native issue tracking and dependency chains to represent a complete project plan.
.beads/ directory existsUse bd's dependency system to create project structure:
bd dep add to chain tasks in execution orderblocks: For sequential tasks (Task B must complete before Task A)parent-child: For epic/subtask relationshipsrelated: For tasks that share context but don't block🔑 Best Practice: Use --parent and --blocks flags during creation
Instead of creating all issues first and then adding dependencies separately, set dependencies during issue creation for maximum efficiency:
# ✅ EFFICIENT: Dependencies set during creation
bd create "Task name" \
--parent [epic-id] \
--blocks [blocking-task-id] \
--blocks [another-blocker]
# ❌ INEFFICIENT: Separate dep add commands
bd create "Task name"
bd dep add [epic-id] [task-id] --type parent-child
bd dep add [task-id] [blocker] --type blocks
Benefits:
bd create "Plan: [Feature Name]" \
--priority 0 \
--type epic \
--description "Executive summary and technical approach"
For each implementation step, use --parent and --blocks flags to set dependencies during creation:
# Create task with parent and blocking relationships in one command
bd create "[Task Description]" \
--priority [0-4] \
--type [feature|bug|task] \
--description "Detailed implementation notes" \
--parent [epic-id] \
--blocks [blocking-task-id] \
--assignee [optional]
Using --parent flag:
parent-child dependencybd dep add commandUsing --blocks flag:
blocks dependency--blocks flags can be used for multiple blockersAlternative: Manual Dependency Management If you need to add dependencies after creation:
# Task B blocks Task A (A depends on B)
bd dep add [prefix]-[A] [prefix]-[B] --type blocks
# Create parent-child for epic relationship
bd dep add [epic-id] [task-id] --type parent-child
⚠️ CRITICAL: Parent-Child Dependency Direction
The parent-child dependency type uses the format: parent depends_on child
# ✅ CORRECT: Parent epic depends on child task
bd dep add [parent-epic-id] [child-task-id] --type parent-child
# ❌ WRONG: Child depends on parent (backwards, won't show in tree)
bd dep add [child-task-id] [parent-epic-id] --type parent-child
Why this matters:
depends_on_id fieldbd dep treeVerification:
# After adding dependencies, always verify:
bd dep tree [epic-id]
# You should see child tasks indented under the epic
# If children don't appear, dependencies are backwards
bd dep tree [epic-id] # Visualize the full plan
bd ready # Verify what's ready to start
Each issue should include:
Title: Clear, action-oriented description (e.g., "Implement JWT token generation")
Description:
## Context
[Why this task is needed]
## Implementation Details
[Technical approach and key considerations]
## Acceptance Criteria
- [ ] Criterion 1
- [ ] Criterion 2
- [ ] Criterion 3
## Testing
[How to verify this works]
## Notes
[Additional context, links, references]
Use bd ready to find next available work.
bd list --type epic # See all epics
bd show [epic-id] # Epic details
bd dep tree [epic-id] # Full plan structure
bd ready # What can be worked on now
bd blocked # What's waiting on dependencies
bd ready # Find next task
bd update [issue-id] --status in_progress # Start work
bd comment [issue-id] # Add progress notes
bd close [issue-id] # Complete task
bd ready # Find next task
bd stats # Overall progress
bd list --status open # Remaining work
bd list --status closed # Completed work
bd stale # Issues not recently updated
When user provides requirements:
Parse Requirements:
Create Epic:
Break Down Tasks:
Map Dependencies:
Set Priorities:
Output Summary:
Given requirements: "Build user authentication with email/password and JWT tokens"
Efficient approach using --parent and --blocks:
# Step 1: Create epic (assuming it gets ID proj-100)
EPIC=$(bd create "Plan: User Authentication System" \
--type epic \
--priority 0 \
--description "Complete user auth with email/password and JWT" \
--json | jq -r '.issues[0].id')
# Step 2: Create tasks with dependencies in one command each
# First task (no blockers)
SCHEMA=$(bd create "Design database schema for users table" \
--parent $EPIC \
--json | jq -r '.issues[0].id')
# Tasks that depend on schema
REG=$(bd create "Implement user registration endpoint" \
--parent $EPIC \
--blocks $SCHEMA \
--json | jq -r '.issues[0].id')
HASH=$(bd create "Implement password hashing with bcrypt" \
--parent $EPIC \
--blocks $SCHEMA \
--json | jq -r '.issues[0].id')
# JWT utility (no dependencies)
JWT=$(bd create "Create JWT token generation utility" \
--parent $EPIC \
--json | jq -r '.issues[0].id')
# Login needs JWT utility and registration
bd create "Implement login endpoint with token issuance" \
--parent $EPIC \
--blocks $JWT \
--blocks $REG
# Middleware needs login (get login ID from previous command if needed)
bd create "Add authentication middleware" \
--parent $EPIC \
--blocks proj-105 # Login endpoint ID
# Tests need everything (use final --blocks for last critical task)
bd create "Write integration tests for auth flow" \
--parent $EPIC \
--blocks proj-106 # Middleware ID
# Step 3: View the plan
bd dep tree $EPIC
bd ready
Alternative: Old approach (less efficient but works)
# Create all issues first
bd create "Plan: User Authentication System" --type epic -p 0
bd create "Design database schema for users table"
bd create "Implement user registration endpoint"
# ... create all tasks
# Then add dependencies manually (20+ commands)
bd dep add proj-100 proj-101 --type parent-child
bd dep add proj-100 proj-102 --type parent-child
# ... repeat for all parent-child relationships
bd dep add proj-102 proj-101 --type blocks
bd dep add proj-103 proj-101 --type blocks
# ... repeat for all blocking relationships
$ARGUMENTS
bd auto-syncs with git:
.beads/*.jsonl automaticallyFor plans spanning multiple repos:
bd init --prefix api # In api repo
bd init --prefix web # In web repo
# Reference across repos in descriptions
bd create "Integrate with API" \
--description "Depends on api-15 being deployed"
When plan is complete:
bd cleanup --age 30d # Archive old closed issues
bd compact # Compress issue history
Create issue templates for common task types:
bd template create feature-task
# Opens editor with template
bd comment [issue-id]
# Add detailed progress notes, blockers, decisions
Organize by component:
bd label add [issue-id] "backend"
bd label add [issue-id] "database"
bd list --label backend
bd ready always shows unblocked work--json flags for agent integrationbd dep tree shows complete structuretools
Protocol for properly ending a coding session - ensures all work is committed, pushed, and handed off correctly.
tools
Prefer Jujutsu (jj) over git for version control. Use squash workflow pattern where commits are described first, then changes are made in a scratch child commit and squashed into the parent.
development
# Jira Skill Guidelines for creating and managing Jira issues for HashiCorp projects. ## InfraGraph Project (IG) ### Project Information - **Project Key**: `IG` - **Team Field**: `customfield_10001` - **Default Team Value**: `"InfraGraph-Graph Engine"` ### Creating Issues When creating Jira issues for the InfraGraph project, always include the team field: ```python jira_create_issue( project_key="IG", summary="Task summary", issue_type="Task", description="Task description
development
Write Gremlin graph traversal queries for Neptune using the gremlin-go driver patterns in this codebase