Install
openclaw skills install lb-bmad-skillClawHub Security found sensitive or high-impact capabilities. Review the scan results before using.
Use BMad (Breakthrough Method of Agile AI Driven Development) framework for AI-driven development. Use for: architecture analysis, sprint planning, story generation, PRD creation, and full development workflows. Requires coding-agent skill with Claude Code.
openclaw skills install lb-bmad-skillUse BMad framework for AI-driven development with autonomous agent workflows.
For detailed reference, see:
This skill requires coding-agent skill with Claude Code installed.
~/.local/bin/claude)bash pty:true for all Claude Code invocationsBMad (Breakthrough Method of Agile AI Driven Development) is a 4-phase framework:
Each phase produces documents that become context for the next phase.
To use BMad in a project:
⚠️ Security Note:
npx bmad-method installfetches code from npm. Only run this if you trust the BMad package. Review the package before installing.
cd ~/project && npx bmad-method install
Select Claude Code when prompted.
⚠️ npx bmad-method install asks questions!
For installation:
| Prompt in Log | Expected Answer | Notes |
|---|---|---|
| "Where should BMad be installed?" | . or ~path/to/project | Current directory |
| "Which AI tool are you using?" | Claude Code or number | Select Claude |
| "Select modules to install" | a or enter | Select all/default |
| "Install BMad in current directory?" | y or enter | Confirm |
# Installation must be interactive!
bash pty:true workdir:~/project command:"cd ~/project && npx bmad-method install"
# Stay present, answer each prompt:
# - Monitor log for prompts
# - Submit answer via: process action:submit sessionId:XXX data:"y"
Before running any /bmad- command, verify BMad is installed:
ls -la ~/project/_bmad/ # or _bmad-output/
If not found → run installation first:
bash pty:true workdir:~/project command:"cd ~/project && npx bmad-method install"
Strategic model selection for efficiency:
| Model | Best Use Cases |
|---|---|
| Sonnet | Architecture, Solutioning, Quick-dev (complex tasks) |
| Haiku | Brainstorming, Story generation, Code review (repetitive/structured) |
| Opus | Large refactoring, complex architecture decisions |
# Examples
claude --model sonnet "Create the architecture"
claude --model haiku "Generate stories from the epic"
| Command | Purpose | Output |
|---|---|---|
/bmad-help | Interactive guide | - |
/bmad-brainstorming | Brainstorm project ideas (use sparingly - see Notes) | brainstorming-report.md |
/bmad-bmm-create-prd | Define requirements | PRD.md |
/bmad-bmm-create-ux-design | Design UX | ux-spec.md |
/bmad-bmm-create-architecture | Technical decisions | architecture.md + ADRs |
/bmad-bmm-create-epics-and-stories | Break into stories | Epic files in _bmad-output/ |
/bmad-bmm-check-implementation-readiness | Gate check | PASS/CONCERNS/FAIL |
/bmad-bmm-sprint-planning | Initialize sprint | sprint-status.yaml |
/bmad-bmm-create-story | Prepare next story | story-[slug].md |
/bmad-bmm-dev-story | Implement story | Working code + tests |
/bmad-bmm-code-review | Validate quality | Approved/changes requested |
/bmad-bmm-quick-spec | Quick spec (skip phases 1-3) | tech-spec.md |
/bmad-bmm-quick-dev | Quick implementation | Working code |
For commands that don't need real-time interaction:
# Non-interactive (recommended for most BMad workflows)
claude -p --dangerously-skip-permissions "Your prompt"
Use background:true only when:
Always monitor with process action:log every 10-30 seconds to detect if Claude Code is waiting for input.
To avoid Claude Code blocking on permission requests:
⚠️ Security Note: Using
--dangerously-skip-permissionsor--permission-mode bypassPermissionssuppresses permission checks. Use with caution - only for trusted code execution. For production workflows, prefer default permissions or validate the code first.
# Skip all permission prompts (use with caution!)
claude --dangerously-skip-permissions "prompt"
# Or use specific permission mode
claude --permission-mode bypassPermissions "prompt"
If Claude Code waits for confirmation (Y/n, Commit, etc.):
process action:log sessionId:XXXHow to know Claude Code is really done:
ps aux | grep claude
process action:log sessionId:XXX
⚠️ Only consider task complete when you see explicit success message or prompt is back.
For workflows lasting 5+ minutes (/bmad-bmm-dev-story, large refactoring):
Every 60 seconds with no new log output:
# Check if process is still alive
ps aux | grep claude
# If stalled but alive → check if waiting for input
process action:log sessionId:XXX
# If process died → trigger recovery (see below)
User says: "Analyze the current architecture and generate the product brief for project X"
Agent should:
ls _bmad/)bash pty:true workdir:~/path/to/project background:true command:"claude --dangerously-skip-permissions '/bmad-bmm-create-architecture'"
process action:log (check every 10-30s)ls _bmad-output/ to confirm files generatedgrep -i "error" _bmad-output/architecture.md || head -20 _bmad-output/architecture.mdarchitecture.md to verify coherence with user's request/bmad-bmm-create-product-briefUser says: "Prepare sprint 1 and add tasks to OCM (OpenClaw Mission Center)"
Agent should:
bash pty:true workdir:~/path/to/project background:true command:"claude --dangerously-skip-permissions '/bmad-bmm-sprint-planning && /bmad-bmm-create-epics-and-stories'"
_bmad-output/epics/ls -R _bmad-output/ to confirm files existWhen creating OCM tasks, ALWAYS include the BMad story reference:
Task: Implement login form validation
Description: [full story content]
---
Ref: _bmad-output/epics/auth/stories/story-login-validation.md
Epic: auth
Created from: BMad Sprint 1
Why: This links the OCM task back to the source story for traceability.
User says: "Implement feature X using quick-dev"
Agent should:
bash pty:true workdir:~/path/to/project command:"claude --dangerously-skip-permissions '/bmad-bmm-quick-dev [feature description]'"
Quick-dev is faster but lacks safeguards. Use wisely.
| ✅ OK with Quick-Dev | ❌ NEVER with Quick-Dev |
|---|---|
| UI tweaks | Authentication changes |
| Bug fixes | Encryption/Security |
| New endpoints | Database migrations |
| Simple features | Payment logic |
| Breaking schema changes |
Rule: If the change touches security, auth, encryption, or database migrations → Use full BMad cycle (Analysis → Solutioning → Implementation)
BMad relies on project-context.md as the project's "brain". It's the persistent context that guides all decisions.
Always check:
ls ~/project/project-context.md
Generate or update it:
# Option 1: Generate from codebase
bash pty:true workdir:~/project command:"claude '/bmad-bmm-generate-project-context'"
# Option 2: Update manually with user's latest direction
# Ask user: "What's the current vision for this project?"
# Then create/update project-context.md with that info
If user pivots mid-project (new features, different direction):
project-context.md with new intentionsarchitecture.md if architecture is affectedDon't dump all stories at once! Follow this process:
List first:
ls _bmad-output/epics/*/stories/
Check each story header before reading full:
head -10 _bmad-output/epics/*/stories/story-*.md
Read one at a time for task creation:
For batch operations, group by epic:
for f in _bmad-output/epics/*/stories/*.md; do head -20 "$f"; done | head -100
claude "/bmad-cmd1 && /bmad-cmd2" # If cmd1 fails, cmd2 still runs
# Step 1: Run cmd1
bash pty:true background:true command:"claude '/bmad-cmd1'"
# Step 2: Verify output exists
ls _bmad-output/required-file.md
grep -q "expected content" _bmad-output/required-file.md || { echo "FAILED"; exit 1; }
# Step 3: Run cmd2 only if cmd1 succeeded
bash pty:true command:"claude '/bmad-cmd2'"
Rule: Verify each step before proceeding to the next.
Scenario: Claude Code crashes (API error 500, timeout, killed process)
⚠️ Always check for stale processes first:
# Check if Claude is still running
ps aux | grep claude
# Kill any zombie processes for this project
pkill -f "claude.*projects/roundvision" || echo "No zombie processes"
# Also kill any hanging node processes
pkill -f "npx.*bmad" || echo "No zombie npx"
Check what was generated:
ls -lt _bmad-output/*.md | head -10
Find the last valid file:
# Read the most recently modified output
ls -t _bmad-output/*.md | head -1 | xargs head -30
Resume from where it stopped:
architecture.md exists but stories/ missing → run story generationstories/ exist but no OCM tasks → create tasks from existing storiesNever restart from zero if partial output exists
When Claude Code asks questions during execution:
process action:log sessionId:XXX to see what it askedprocess action:submitExample:
# Claude asks: "What's your preferred authentication provider?"
# If you don't know → ask user: "Claude needs to know auth provider - Auth0, Firebase, or Supabase?"
# Then provide the answer:
process action:submit sessionId:XXX data:"Auth0"
Rule of thumb: If it needs a story breakdown and sprint planning → BMad. If it's a simple edit → coding-agent directly.
After BMad workflows complete, documents are in:
project/
├── _bmad/
│ └── config.yaml
├── _bmad-output/
│ ├── brainstorming-report.md
│ ├── product-brief.md
│ ├── PRD.md
│ ├── ux-spec.md
│ ├── architecture.md
│ ├── epics/
│ │ └── epic-[name]/
│ │ └── stories/
│ │ └── story-[slug].md
│ └── sprint-status.yaml
└── project-context.md
⚠️ Always verify files exist by running ls _bmad-output/ or ls -R _bmad-output/ after each workflow.
Verify output validity before reading:
# Quick check
ls -la _bmad-output/architecture.md
# Validate content
head -20 _bmad-output/architecture.md
# Check for errors
grep -i "error\|fail" _bmad-output/architecture.md
⚠️ After Claude Code modifies source files, your cached view is stale!
Rule: After each successful Claude Code intervention on source code:
# Bad: Assuming old read is still valid
read path:"~/project/src/auth.js" # ❌ May be outdated
# Good: Read fresh after Claude modified it
exec command:"cat ~/project/src/auth.js" # ✅ Fresh content
Before moving to Implementation phase:
architecture.md (or tech-spec.md for quick-dev)| Error | Solution |
|---|---|
Command not found | Check PATH: echo $PATH and which claude |
npx: command not found | Install Node.js 20+ |
_bmad/ not found | Run npx bmad-method install first |
| Claude stuck on permission | Use --dangerously-skip-permissions |
| API 500 error | Trigger recovery (see "Recovery After Crash") |
| Session timeout | Check if process still running, resume if possible |
rm -rf via Claude Code without explicit human validationClaude Code often asks: "Do you want to commit these changes? [y/N]"
# When Claude asks to commit, default to "n"
process action:submit sessionId:XXX data:"n"
User: "On project PingRoot, analyze the current architecture and generate the product brief"
Agent does:
# 1. Pre-flight check
ls ~/projects/pingroot/_bmad/ || echo "Need to install BMad"
# 2. Check/update project-context.md
ls ~/projects/pingroot/project-context.md || echo "Need to create project-context.md"
# 3. Launch architecture workflow
bash pty:true workdir:~/projects/pingroot background:true command:"claude --dangerously-skip-permissions '/bmad-bmm-create-architecture'"
# 4. Monitor, wait for completion
process action:poll sessionId:XXX
# 5. Verify output
ls _bmad-output/architecture.md
head -20 _bmad-output/architecture.md
grep -i "error" _bmad-output/architecture.md || echo "OK"
# 6. If OK, verify coherence with user request
# 7. If coherent, launch product brief
bash pty:true workdir:~/projects/pingroot command:"claude --dangerously-skip-permissions '/bmad-bmm-create-product-brief'"
# 8. Deliver outputs
User: "Prepare sprint 1 for RoundVision and add tasks to OCM"
Agent does:
# 1. Pre-flight check
ls ~/projects/roundvision/_bmad/ || npx bmad-method install
# 2. Check project-context.md
ls ~/projects/roundvision/project-context.md || echo "Update this first!"
# 3. Launch sprint planning + story creation
bash pty:true workdir:~/projects/roundvision background:true command:"claude --dangerously-skip-permissions '/bmad-bmm-sprint-planning && /bmad-bmm-create-epics-and-stories'"
# 4. Monitor and wait for completion
process action:poll sessionId:XXX # repeat until done
# 5. Refresh context - verify files exist
ls -R ~/projects/roundvision/_bmad-output/epics/
# 6. List stories first (don't dump all at once!)
ls ~/projects/roundvision/_bmad-output/epics/*/stories/
# 7. Read and process stories one by one
for story in ~/projects/roundvision/_bmad-output/epics/*/stories/*.md; do
echo "=== $(basename $story) ==="
head -20 "$story"
# Create OCM task from this story
done
# 8. Report: "Created X tasks in OCM for Sprint 1"
# IMPORTANT: Each OCM task must include story path as reference!
User: "Fix the typo in the login page"
Agent does:
# Direct coding-agent, no BMad workflow needed
bash pty:true workdir:~/projects/login command:"claude 'Fix the typo on line 42: \"Passowrd\" → \"Password\"'"
Scenario: Claude Code crashes during story generation
Agent does:
# 0. Cleanup zombies FIRST!
ps aux | grep claude
pkill -f "claude.*projects/roundvision" || echo "Clean"
# 1. Check what was generated
ls -lt ~/project/_bmad-output/ | head -10
# 2. Find last valid file
ls -t ~/project/_bmad-output/epics/*/stories/ | head -1
# 3. Check if partial stories exist
ls ~/project/_bmad-output/epics/*/stories/*.md | wc -l
# 4. If partial → resume from last point
# If 3 stories out of 5 → generate remaining 2
# If 0 stories → restart story generation
# 5. Continue without restarting from zero
The minion does NOT automatically have access to project files! sub-agent to implement
When spawning a a task, you MUST provide:
# Minion needs workdir to access project files
sessions_spawn workdir:"~/projects/roundvision" ...
⚠️ NEVER give only the story to a minion!
The story says "Add a login button" but doesn't say:
You MUST provide:
# Step 1: Read all three
cat ~/projects/roundvision/project-context.md
cat ~/projects/roundvision/_bmad-output/architecture.md
cat ~/projects/roundvision/_bmad-output/epics/auth.md
# Step/stories/story-login 2: Combine into a comprehensive prompt
sessions_spawn task:"You are implementing this story: [STORY].
Project context: [CONTEXT].
Architecture: [ARCHITECTURE].
Follow the patterns defined in architecture.md."
{
"title": "Implement login form validation",
"description": "Full story content...",
"source": "_bmad-output/epics/auth/stories/story-login.md"
}
⚠️ Without workdir + story content + context + architecture, the minion is blind and cannot implement anything!
_bmad-output/project-context.md is the project's brain - keep it updated/bmad-help provides interactive guidancepty:true with Claude Code--model <sonnet|haiku|opus>