Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install leoyeai-openclaw-master-skills-skills-lb-bmad-skillgit clone https://github.com/LeoYeAI/openclaw-master-skills.gitcp openclaw-master-skills/SKILL.MD ~/.claude/skills/leoyeai-openclaw-master-skills-skills-lb-bmad-skill/SKILL.md---
name: bmad-method
description: "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."
---
# BMad Method Skill
> Use BMad framework for AI-driven development with autonomous agent workflows.
**For detailed reference, see:**
- [docs/reference/commands.md](docs/reference/commands.md) - Complete command reference
- [docs/reference/agents.md](docs/reference/agents.md) - Available agents
- [docs/how-to/install-bmad.md](docs/how-to/install-bmad.md) - Detailed installation guide
- [docs/tutorials/getting-started.md](docs/tutorials/getting-started.md) - Quick start
## DEPENDENCY
**This skill requires coding-agent skill with Claude Code installed.**
- Claude Code must be installed (`~/.local/bin/claude`)
- Use `bash pty:true` for all Claude Code invocations
## Description
BMad (Breakthrough Method of Agile AI Driven Development) is a 4-phase framework:
1. **Analysis** — Explore the problem space
2. **Planning** — Define what to build
3. **Solutioning** — Decide how to build it
4. **Implementation** — Build it
Each phase produces documents that become context for the next phase.
---
## Installation
To use BMad in a project:
> ⚠️ **Security Note:** `npx bmad-method install` fetches code from npm. Only run this if you trust the BMad package. Review the package before installing.
```bash
cd ~/project && npx bmad-method install
```
Select Claude Code when prompted.
### ⚠️ Installation is Interactive
**⚠️ npx bmad-method install asks questions!**
For installation:
- **DO NOT use background:true** - you need to respond to prompts
- **Stay in the session** and answer each question
- **Monitor the log** for these common prompts:
| 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 |
```bash
# 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"
```
### ⚠️ Pre-Flight Check
**Before running any /bmad- command, verify BMad is installed:**
```bash
ls -la ~/project/_bmad/ # or _bmad-output/
```
If not found → run installation first:
```bash
bash pty:true workdir:~/project command:"cd ~/project && npx bmad-method install"
```
---
## Model Selection
**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 |
```bash
# Examples
claude --model sonnet "Create the architecture"
claude --model haiku "Generate stories from the epic"
```
---
## Available Commands (via /bmad-)
| 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 |
---
## ⚠️ Important: Claude Code Execution
### Use Non-Interactive Mode When Possible
For commands that don't need real-time interaction:
```bash
# Non-interactive (recommended for most BMad workflows)
claude -p --dangerously-skip-permissions "Your prompt"
```
### When to Use Background Mode
Use `background:true` only when:
- Running multiple BMad workflows in sequence
- The workflow is expected to take a long time
**Always monitor with `process action:log` every 10-30 seconds** to detect if Claude Code is waiting for input.
### Permission Configuration
To avoid Claude Code blocking on permission requests:
> ⚠️ **Security Note:** Using `--dangerously-skip-permissions` or `--permission-mode bypassPermissions` suppresses permission checks. Use with caution - only for trusted code execution. For production workflows, prefer default permissions or validate the code first.
```bash
# Skip all permission prompts (use with caution!)
claude --dangerously-skip-permissions "prompt"
# Or use specific permission mode
claude --permission-mode bypassPermissions "prompt"
```
### Permission Loop Detection
**If Claude Code waits for confirmation (Y/n, Commit, etc.):**
1. Check the log: `process action:log sessionId:XXX`
2. Identify the type of prompt:
- **Shell command (Y/n):** → submit "y"
- **Git commit proposal:** → submit "n" (see below)
- **Other:** → evaluate if you know the answer, otherwise ask user
### Task Completion Detection (Background Mode)
**How to know Claude Code is really done:**
1. **Success message in log:** Look for "Task completed", "Done!", "All tasks finished"
2. **Prompt available:** The command prompt is back
3. **Timeout:** If log is silent for **2+ minutes** without completion message → check process:
```bash
ps aux | grep claude
process action:log sessionId:XXX
```
**⚠️ Only consider task complete when you see explicit success message or prompt is back.**
### Session Heartbeat (Long Running Tasks)
For workflows lasting 5+ minutes (/bmad-bmm-dev-story, large refactoring):
**Every 60 seconds with no new log output:**
```bash
# 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)
```
---
## Autonomous Workflow Patterns
### Pattern 1: Full Analysis + Planning Request
**User says:** "Analyze the current architecture and generate the product brief for project X"
**Agent should:**
1. **Pre-flight check:** Verify BMad installed (`ls _bmad/`)
2. **Check project-context.md:** If absent or outdated, generate it first (see below)
3. Launch Claude Code in the project directory:
```bash
bash pty:true workdir:~/path/to/project background:true command:"claude --dangerously-skip-permissions '/bmad-bmm-create-architecture'"
```
4. Monitor progress with `process action:log` (check every 10-30s)
5. If Claude Code needs information → ask the user directly
6. When complete → run: `ls _bmad-output/` to confirm files generated
7. **Verify output:** `grep -i "error" _bmad-output/architecture.md || head -20 _bmad-output/architecture.md`
8. Read `architecture.md` to verify coherence with user's request
9. Then launch product brief: `/bmad-bmm-create-product-brief`
### Pattern 2: Sprint Preparation with Story Generation
**User says:** "Prepare sprint 1 and add tasks to OCM (OpenClaw Mission Center)"
**Agent should:**
1. **Pre-flight check:** Verify BMad installed
2. Launch Claude Code:
```bash
bash pty:true workdir:~/path/to/project background:true command:"claude --dangerously-skip-permissions '/bmad-bmm-sprint-planning && /bmad-bmm-create-epics-and-stories'"
```
3. Wait for stories to be generated in `_bmad-output/epics/`
4. **Refresh context**: run `ls -R _bmad-output/` to confirm files exist
5. **Read stories efficiently** (see "Reading Stories Safely" below)
6. **Create OCM tasks from each story** (use task-manager skill)
7. Report completion with task list
#### OCM Task Traceability
**When 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.
### Pattern 3: Quick Feature Implementation
**User says:** "Implement feature X using quick-dev"
**Agent should:**
1. Launch Claude Code with quick-dev:
```bash
bash pty:true workdir:~/path/to/project command:"claude --dangerously-skip-permissions '/bmad-bmm-quick-dev [feature description]'"
```
---
## ⚠️ Quick-Dev vs Standard: The Red Line
**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)
---
## project-context.md Management
BMad relies on `project-context.md` as the project's "brain". It's the persistent context that guides all decisions.
### Before /bmad-bmm-create-prd
**Always check:**
```bash
ls ~/project/project-context.md
```
### If Missing or Outdated
**Generate or update it:**
```bash
# 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
```
### When User Changes Direction
If user pivots mid-project (new features, different direction):
1. Update `project-context.md` with new intentions
2. Regenerate `architecture.md` if architecture is affected
3. Proceed with updated context
---
## Reading Stories Safely (Avoid Context Overflow)
**Don't dump all stories at once!** Follow this process:
1. **List first:**
```bash
ls _bmad-output/epics/*/stories/
```
2. **Check each story header** before reading full:
```bash
head -10 _bmad-output/epics/*/stories/story-*.md
```
3. **Read one at a time** for task creation:
- Read story 1 → create OCM task
- Read story 2 → create OCM task
- etc.
4. **For batch operations**, group by epic:
```bash
for f in _bmad-output/epics/*/stories/*.md; do head -20 "$f"; done | head -100
```
---
## Command Chain Safety
### ❌ Avoid This (Silent Failures)
```bash
claude "/bmad-cmd1 && /bmad-cmd2" # If cmd1 fails, cmd2 still runs
```
### ✅ Prefer Sequential Execution
```bash
# 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.
---
## Recovery After Crash
**Scenario:** Claude Code crashes (API error 500, timeout, killed process)
### Step 0: Kill Zombie Processes (BEFORE Restart!)
**⚠️ Always check for stale processes first:**
```bash
# 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"
```
### Step 1: Check what was generated
1. **Check what was generated:**
```bash
ls -lt _bmad-output/*.md | head -10
```
2. **Find the last valid file:**
```bash
# Read the most recently modified output
ls -t _bmad-output/*.md | head -1 | xargs head -30
```
3. **Resume from where it stopped:**
- If `architecture.md` exists but `stories/` missing → run story generation
- If `stories/` exist but no OCM tasks → create tasks from existing stories
- If partial output → check coherence, regenerate only what's missing
4. **Never restart from zero** if partial output exists
---
## Handling Claude Code Questions
When Claude Code asks questions during execution:
1. **Check the log first** with `process action:log sessionId:XXX` to see what it asked
2. **If you know the answer** → provide it via `process action:submit`
3. **If you need to ask the user** → pause and get clarification first
4. **If Claude Code is blocked** → tell it to ask for what it needs, then come back to you
Example:
```bash
# 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"
```
---
## When to Use BMad vs Direct Coding-Agent
### Use BMad for:
- New features or epics
- Architecture changes or refactoring
- Sprint planning with story generation
- Technical documentation (PRD, architecture)
- Anything security-sensitive
### Use coding-agent directly (without BMad) for:
- Quick fixes and small corrections
- Simple code reviews
- One-file changes
- Experiments/prototyping
**Rule of thumb:** If it needs a story breakdown and sprint planning → BMad. If it's a simple edit → coding-agent directly.
---
## Reading BMad Outputs
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:
```bash
# 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
```
### Cache Refresh (Perception Reset)
**⚠️ After Claude Code modifies source files, your cached view is stale!**
**Rule:** After each successful Claude Code intervention on source code:
1. **Don't assume** your previous read of a file is still valid
2. **Re-read** the file if you need to work on it further
3. **Clear mental cache** - explicitly read the file again
```bash
# 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
```
---
## Validation Step
Before moving to Implementation phase:
1. Read the generated `architecture.md` (or `tech-spec.md` for quick-dev)
2. Verify it aligns with user's original request
3. If misaligned → regenerate or clarify with user
---
## Error Handling
| 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 |
### ⚠️ Safety Rules
- **Never run `rm -rf` via Claude Code without explicit human validation**
- **Never use quick-dev for security-sensitive changes**
- **Default Git answer: "n" (let OpenClaw handle commits)**
---
## Git Commit Handling
Claude Code often asks: "Do you want to commit these changes? [y/N]"
- **Reply "n"** to keep Git control with OpenClaw
- **Reply "y"** ONLY if user explicitly requested full Git autonomy
```bash
# When Claude asks to commit, default to "n"
process action:submit sessionId:XXX data:"n"
```
---
## Examples
### Example 1: Architecture Analysis + Product Brief (Sequential)
**User:** "On project PingRoot, analyze the current architecture and generate the product brief"
**Agent does:**
```bash
# 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
```
### Example 2: Sprint Preparation + OCM Tasks (with safety checks)
**User:** "Prepare sprint 1 for RoundVision and add tasks to OCM"
**Agent does:**
```bash
# 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!
```
### Example 3: Quick Fix (No BMad Needed)
**User:** "Fix the typo in the login page"
**Agent does:**
```bash
# Direct coding-agent, no BMad workflow needed
bash pty:true workdir:~/projects/login command:"claude 'Fix the typo on line 42: \"Passowrd\" → \"Password\"'"
```
### Example 4: Recovery After Crash
**Scenario:** Claude Code crashes during story generation
**Agent does:**
```bash
# 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
```
---
## ⚠️ CRITICAL: Sub-Agent (Minion) Access
**The minion does NOT automatically have access to project files! sub-agent to implement**
When spawning a a task, you MUST provide:
### 1. Project Directory Access
```bash
# Minion needs workdir to access project files
sessions_spawn workdir:"~/projects/roundvision" ...
```
### 2. Story + Context + Architecture
**⚠️ NEVER give only the story to a minion!**
The story says "Add a login button" but doesn't say:
- Is this React, Vue, or vanilla JS?
- Does it use Tailwind or Bootstrap?
- What's the existing auth pattern?
**You MUST provide:**
1. **Story** (what to build)
2. **project-context.md** (project rules, tech stack)
3. **architecture.md** (technical decisions)
```bash
# 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."
```
### 3. OCM Task Should Include Story Path
```json
{
"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!**
---
## Notes
- **BMad brainstorming**: Use sparingly. OpenClaw itself is a brainstorming agent. Use BMad for technical structuring, keep high-level strategy with OpenClaw.
- BMad generates files in `_bmad-output/`
- `project-context.md` is the project's brain - keep it updated
- `/bmad-help` provides interactive guidance
- Always use `pty:true` with Claude Code
- For model restrictions, use `--model <sonnet|haiku|opus>`
- **Token efficiency**: Use direct coding-agent for small tasks, reserve BMad for complex workflows
- **Sequential over chained**: Verify each step before proceeding
---
## Related Skills
- **coding-agent** — Required for launching Claude Code
- **task-manager** — For creating OCM tasks from BMad stories