
Bmad Orchestrator
- 21 installs
- 40 repo stars
- Updated August 4, 2026
- akillness/skills-template
bmad-orchestrator is a skill that orchestrates BMAD development workflows across phases using structured TEA cycles.
About
This skill orchestrates BMAD workflows for structured AI-driven development. A developer uses it to route work across Analysis, Planning, Solutioning, and Implementation phases, running TEA (Task-Execute-Architect) cycles within each phase. It adds automated architect validation and cross-phase traceability before opening a human review gate.
- Routes work across Analysis, Planning, Solutioning, and Implementation phases
- Runs TEA (Task-Execute-Architect) cycles with automated architect validation
- Tracks cross-phase traceability and gated human review via plannotator
Bmad Orchestrator by the numbers
- 21 all-time installs (skills.sh)
- Ranked #1,284 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
bmad-orchestrator capabilities & compatibility
- Capabilities
- workflow orchestration · phase routing · task decomposition · multi agent execution
- Use cases
- orchestration · planning · project management
- Pricing
- Free
What bmad-orchestrator says it does
Orchestrates BMAD workflows for structured AI-driven development.
Routes work across Analysis, Planning, Solutioning, and Implementation phases with TEA (Task-Execute-Architect) cycles
npx skills add https://github.com/akillness/skills-template --skill bmad-orchestratorAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 21 |
|---|---|
| repo stars | ★ 40 |
| Last updated | August 4, 2026 |
| Repository | akillness/skills-template ↗ |
What it does
Orchestrate structured AI-driven development across Analysis, Planning, Solutioning, and Implementation phases with TEA cycles.
Who is it for?
Running structured multi-phase development workflows with TEA cycles and traceability
Skip if: Early ideation before a project framing exists (use bmad-idea)
When should I use this skill?
You need to initialize or run structured BMAD phases with task decomposition and validation
What you get
A structured phase workflow where each phase runs a TEA cycle and passes architect validation before human review.
- BMAD phase routing
- TEA cycle execution
- architect validation verdicts
By the numbers
- 4 BMAD phases (Analysis, Planning, Solutioning, Implementation)
- 3-step TEA cycle (Task, Execute, Architect)
- 4 architect verdicts
Files
bmad-orchestrator — BMAD Workflow Orchestration with SSD
When to use this skill
- Initializing BMAD in a new project (with or without SSD)
- Running structured TEA cycles within each BMAD phase
- Checking and resuming BMAD/SSD workflow status
- Routing work across Analysis, Planning, Solutioning, and Implementation
- Managing structured handoff and cross-phase traceability between phases
---
What is SSD (Structured System Design)?
SSD is a meta-framework that embeds TEA cycles within each BMAD phase, transforming phase execution from "produce a document" into a structured loop:
T → Task: Decompose the phase into concrete tasks with assigned agents
E → Execute: Run tasks in parallel via multi-agent team execution
A → Architect: Validate outputs for coherence, completeness, and cross-phase traceabilityEach BMAD phase becomes an independent TEA cycle. The architect validation step produces a PASS, PASS_WITH_WARNINGS, REVISE, or FAIL verdict. Only after PASS (or PASS_WITH_WARNINGS) does the human review gate (plannotator) open. This ensures automated structural correctness before human review.
SSD vs. Standard BMAD
| Aspect | Standard BMAD | BMAD + SSD |
|---|---|---|
| Phase execution | Document production (opaque) | TEA cycle: Decompose → Execute → Validate |
| Task decomposition | None | Explicit per-phase task lists with agent assignments |
| Execution surface | Manual / single-agent | Multi-agent Team execution (/team) |
| Validation | Human plannotator review | Automated architect review → then plannotator |
| Cross-phase traceability | None | Requirement coverage matrix per phase transition |
| State tracking | bmm-workflow-status.yaml | + .omc/state/ssd-state.json with task-level granularity |
---
Installation
npx skills add https://github.com/akillness/oh-my-skills --skill bmad-orchestratorNotes for Codex Usage
bmad-orchestrator's default execution path is Claude Code. To run the same flow directly in Codex, we recommend operating BMAD stages via a higher-level orchestration path such as omx/ohmg.
---
Control Model
BMAD phase routing uses the same three-layer abstraction as JEO:
settings: platform-specific runtime configuration such as Claude hooks, Codex/Gemini instructions, and MCP setuprules: phase constraints such as "do not advance before the current phase document is approved" and "do not reopen the same unchanged phase document for review"hooks: platform callbacks such as ClaudeExitPlanMode, Codexnotify, or GeminiAfterAgent
For BMAD phase gates, the intended rule is strict:
- Review the current phase document before moving forward
- If the document hash has not changed since the last terminal review result, do not relaunch plannotator
- Only a revised document resets the gate and permits another review cycle
- With SSD: plannotator gate requires
architect_verdict: "PASS"or"PASS_WITH_WARNINGS"inssd-state.jsonbefore opening
---
Platform Support Status
| Platform | Current support mode | Requirements |
|---|---|---|
| Gemini CLI | Native (recommended) | Register the bmad keyword, then run /workflow-init |
| Claude Code | Native (recommended) | Install skill + remember pattern |
| OpenCode | Orchestration integration | Use an omx/ohmg-style bridge |
| Codex | Orchestration integration | Use an omx/ohmg-style bridge |
---
Standard BMAD Commands
/workflow-init [--ssd]
/workflow-statusTypical flow:
1. Run /workflow-init to bootstrap BMAD config (add --ssd to also initialize SSD state). 2. Move through phases: Analysis → Planning → Solutioning → Implementation. 3. Run /workflow-status any time to inspect current phase and progress.
| Action | Command |
|---|---|
| Initialize BMAD | /workflow-init |
| Initialize BMAD + SSD | /workflow-init --ssd |
| Check BMAD/SSD status | /workflow-status |
---
SSD Commands (TEA Integration)
Use these commands to run structured TEA cycles within each BMAD phase:
| Command | TEA Step | Purpose |
|---|---|---|
/ssd-init | Setup | Initialize .omc/state/ssd-state.json alongside BMAD (called automatically by /workflow-init --ssd) |
/ssd-decompose | Task | Decompose current phase into concrete tasks with agent assignments |
/ssd-execute | Execute | Dispatch decomposed tasks to agents via /team (multi-agent parallel execution) |
/ssd-validate | Architect | Validate phase outputs for coherence, completeness, and cross-phase traceability |
/ssd-cycle | T+E+A | Run the full TEA cycle for the current phase (decompose → execute → validate) |
/ssd-advance | Transition | Advance to next phase after TEA cycle passes architect validation |
/ssd-status | Status | Show SSD-enriched status: phase + TEA step + task progress + validation verdict |
SSD Full Flow
/workflow-init --ssd
|
v
┌─────────────────────────────────────────────────────┐
│ PHASE N TEA CYCLE │
│ │
│ /ssd-decompose (or /ssd-cycle for full auto) │
│ | │
│ v │
│ [T] Task decomposition │
│ planner/analyst produces task list │
│ → ssd-state.json phases[N].tasks updated │
│ | │
│ v │
│ /ssd-execute │
│ | │
│ v │
│ [E] Multi-agent execution via /team │
│ TeamCreate → TaskCreate per subtask │
│ Agents: executor, analyst, designer, │
│ test-engineer, security-reviewer… │
│ → docs/ssd/phase-N/ artifacts produced │
│ → Phase document assembled from artifacts │
│ | │
│ v │
│ /ssd-validate │
│ | │
│ v │
│ [A] Architect validation │
│ fabric -p bmad_ssd_phase_review │
│ (fallback: architect agent via TaskCreate) │
│ | │
│ ├── PASS ──────────→ plannotator review │
│ │ | │
│ │ ┌────┴────┐ │
│ │ │ Approve │ Req Changes │
│ │ └────┬────┘ | │
│ │ | Loop to [E] │
│ │ v with feedback │
│ │ /ssd-advance │
│ │ → phase N+1 │
│ │ │
│ ├── PASS_WITH_WARNINGS → plannotator (warned) │
│ │ │
│ ├── REVISE → targeted re-execute specific │
│ │ tasks, then re-validate │
│ │ │
│ └── FAIL → full re-execute with changes, │
│ then re-validate │
│ (max 3 cycles, then escalate) │
└─────────────────────────────────────────────────────┘---
TEA Per-Phase Mapping
Phase 1: Analysis
| TEA Step | Action | Agents | Output |
|---|---|---|---|
| Task | Decompose into: market research, user persona definition, competitive landscape, value proposition, constraint identification | explore (haiku) + analyst (opus) | Task list in ssd-state.json |
| Execute | Run tasks in parallel: research, persona, competitive data | document-specialist, analyst, scientist via Team | docs/ssd/phase-1/*.md |
| Architect | Validate: personas match value prop? Constraints conflict? Competitive gap real? | architect (opus) + fabric bmad_ssd_phase_review | Coherence report + PASS/FAIL/REVISE |
Phase 2: Planning
| TEA Step | Action | Agents | Output |
|---|---|---|---|
| Task | Decompose into: functional requirements, non-functional requirements, user stories, acceptance criteria, UX specification | planner (opus) | Task list |
| Execute | Write functional/non-functional reqs from product brief; produce UX flows; draft acceptance criteria | analyst, designer, test-engineer via Team | PRD sections |
| Architect | Validate: requirements trace to product brief? Acceptance criteria testable? UX covers all user stories? | architect (opus) + fabric bmad_ssd_phase_review | Traceability matrix + verdict |
Phase 3: Solutioning
| TEA Step | Action | Agents | Output |
|---|---|---|---|
| Task | Decompose into: component design, API contracts, data model, integration design, security design, performance design, technology selection | architect (opus) | Task list |
| Execute | Component/integration design; security design; performance design; technology evaluation | architect, security-reviewer, quality-reviewer, document-specialist via Team | Architecture sections |
| Architect | Validate: architecture fulfills PRD? API contracts consistent with user stories? Security design matches threat model? Run cross-phase traceability. | architect (opus) + critic (opus) + fabric bmad_ssd_phase_review | Architecture review + requirement coverage matrix |
Phase 4: Implementation
| TEA Step | Action | Agents | Output |
|---|---|---|---|
| Task | Decompose sprint: epics → stories → implementation tasks (code, test, docs) | planner (opus) | Sprint plan with task breakdown |
| Execute | Implement code; write tests; update docs; resolve build issues | executor, test-engineer, writer, build-fixer via Team | Code, tests, docs per story |
| Architect | Validate: implementation matches architecture? Tests cover acceptance criteria? API contract honored? | verifier (sonnet) + code-reviewer (opus) + fabric bmad_ssd_phase_review | Implementation coherence report |
---
Fabric Pattern: bmad_ssd_phase_review
Install this custom pattern for automated architect validation:
mkdir -p ~/.config/fabric/patterns/bmad_ssd_phase_review
cat > ~/.config/fabric/patterns/bmad_ssd_phase_review/system.md << 'EOF'
# IDENTITY AND PURPOSE
You are an expert system architect performing a structured phase review for the BMAD Structured System Design (SSD) framework. Your job is to validate that a phase document is internally coherent, externally consistent with prior phase artifacts, and complete enough to advance to the next phase.
Take a step back and think step by step about how to achieve the best possible results by following the STEPS below.
# STEPS
1. IDENTIFY the current BMAD phase (Analysis, Planning, Solutioning, Implementation) from the input metadata.
2. PARSE the phase document and extract all claims, requirements, design decisions, and deliverables.
3. INTERNAL COHERENCE CHECK:
- Are there contradictory statements within the document?
- Are all sections complete (no TODOs, placeholders, or TBDs)?
- Do quantitative claims have justification?
4. CROSS-PHASE TRACEABILITY CHECK (if prior phase artifacts are provided):
- Phase 2 (Planning): Does every PRD requirement trace to a product brief goal?
- Phase 3 (Solutioning): Does the architecture address every PRD functional requirement?
- Phase 4 (Implementation): Does every story map to an architecture component?
- Flag any orphaned items.
5. COMPLETENESS CHECK against BMAD level expectations:
- Level 0-1: Minimal viable coverage
- Level 2: Full requirement coverage with acceptance criteria
- Level 3: Comprehensive with integration points and risk analysis
- Level 4: Enterprise-grade with security, performance, and infrastructure coverage
6. RISK ASSESSMENT:
- Identify assumptions that could invalidate the phase output
- Flag unresolved dependencies
- Note scope creep relative to prior phase boundaries
7. PRODUCE a structured verdict.
# OUTPUT INSTRUCTIONS
- Output valid Markdown only.
- Begin with a `## Verdict` section: one of `PASS`, `PASS_WITH_WARNINGS`, `FAIL`, or `REVISE`.
- Follow with `## Internal Coherence` (findings with line references).
- Follow with `## Cross-Phase Traceability` (coverage matrix if applicable).
- Follow with `## Completeness` (missing sections or underspecified areas).
- Follow with `## Risks` (ranked by severity: critical, high, medium, low).
- Follow with `## Required Changes` (concrete, actionable items if verdict is FAIL or REVISE).
- Do not include warnings, disclaimers, or caveats outside the structured sections.
# INPUT
INPUT:
EOFUsage in /ssd-validate:
# Pipe current phase doc + prior artifacts for cross-phase validation
{
echo "--- CURRENT PHASE DOCUMENT ---"
cat "$CURRENT_DOC"
echo "--- PRIOR PHASE ARTIFACTS ---"
for prior in "${PRIOR_DOCS[@]}"; do
echo "--- $(basename "$prior") ---"
cat "$prior"
done
} | fabric -p bmad_ssd_phase_review --stream > docs/ssd/phase-N/architect-review.md
# Phase 3 example: validate architecture against PRD
cat docs/architecture-myapp-2026-03-16.md | \
fabric -p bmad_ssd_phase_review \
--context "$(cat docs/prd-myapp-2026-03-16.md)" \
--streamIf fabric is not installed, /ssd-validate falls back to an architect agent:
# In Claude Code session:
ssd validate — run architect review on the current phase document before advancing---
SSD State File Schema
Location: .omc/state/ssd-state.json
{
"version": "1.0.0",
"project_name": "myapp",
"project_level": 2,
"active": true,
"current_phase": 2,
"created_at": "2026-03-16T10:00:00Z",
"updated_at": "2026-03-16T14:30:00Z",
"phases": {
"1": {
"name": "analysis",
"tea_step": "complete",
"tasks": {
"decomposed_at": "2026-03-16T10:05:00Z",
"items": [
{
"id": "p1-t1",
"name": "Market research",
"agent": "document-specialist",
"model": "sonnet",
"status": "completed",
"output_path": "docs/ssd/phase-1/market-research.md"
}
]
},
"architect_review": {
"verdict": "PASS",
"method": "fabric",
"pattern": "bmad_ssd_phase_review",
"report_path": "docs/ssd/phase-1/architect-review.md",
"reviewed_at": "2026-03-16T11:00:00Z"
},
"plannotator_review": {
"status": "approved",
"reviewed_at": "2026-03-16T11:30:00Z",
"document_hash": "abc123"
}
},
"2": {
"name": "planning",
"tea_step": "execute",
"tasks": {
"items": [
{
"id": "p2-t1",
"name": "Functional requirements extraction",
"agent": "analyst",
"model": "opus",
"status": "in_progress"
}
]
},
"architect_review": null,
"plannotator_review": null
}
},
"cross_phase_traceability": {
"phase_1_to_2": { "validated": true, "coverage": 1.0, "orphaned_items": [] },
"phase_2_to_3": { "validated": false },
"phase_3_to_4": { "validated": false }
}
}`tea_step` values: null → decompose → execute → validate → complete
---
plannotator Integration (Phase Review Gate)
Each BMAD phase produces a key document (PRD, Tech Spec, Architecture). Before transitioning to the next phase, review that document with plannotator.
With SSD enabled, plannotator only opens after /ssd-validate produces architect_verdict: "PASS" or "PASS_WITH_WARNINGS". This ensures automated structural correctness before human review.
Phase Review Pattern
# After /prd → docs/prd-myapp-2026-03-16.md is created
# With SSD: run /ssd-validate first, then phase-gate-review.sh
bash scripts/phase-gate-review.sh docs/prd-myapp-2026-03-16.md "PRD Review: myapp"
# After /architecture → docs/architecture-myapp-2026-03-16.md is created
bash scripts/phase-gate-review.sh docs/architecture-myapp-2026-03-16.md "Architecture Review: myapp"Or submit the plan directly from your AI session:
# In Claude Code after /prd completes:
planno — review the PRD before we proceed to Phase 3Phase Gate Flow (with SSD)
/prd completes → docs/prd-myapp.md created
↓
/ssd-validate runs (automated architect review)
↓ fabric -p bmad_ssd_phase_review
↓
PASS/PASS_WITH_WARNINGS?
↓ yes
phase-gate-review.sh opens plannotator UI
↓
[Approve] [Request Changes]
↓ ↓
Obsidian saved Agent revises doc
ssd-state updated /ssd-execute (targeted)
then /ssd-validate again
↓
/ssd-advance → Phase 3Quick Reference
| Phase | Document | Gate |
|---|---|---|
| Phase 1 → 2 | Product Brief | bash scripts/phase-gate-review.sh docs/product-brief-*.md |
| Phase 2 → 3 | PRD / Tech Spec | bash scripts/phase-gate-review.sh docs/prd-*.md |
| Phase 3 → 4 | Architecture | bash scripts/phase-gate-review.sh docs/architecture-*.md |
| Phase 4 done | Sprint Plan | bash scripts/phase-gate-review.sh docs/sprint-status.yaml |
---
Integration with /team (OMC)
/ssd-execute maps directly to OMC's Team staged pipeline. When you run /ssd-execute:
1. Reads ssd-state.json for the current phase's task list 2. Calls TeamCreate with team name ssd-phase-{N}-{project} 3. Creates tasks via TaskCreate with agent routing from the TEA per-phase table 4. Monitors via TaskList until all tasks reach terminal state 5. Writes outputs to docs/ssd/phase-{N}/ 6. Updates ssd-state.json with execution results
# Trigger SSD execution for current phase (Claude Code)
ssd execute — run phase 2 planning tasks with multi-agent teamOr use directly with Team:
/team 4:analyst "Execute BMAD Phase 2 planning: functional requirements, non-functional requirements, user stories, acceptance criteria based on product brief at docs/product-brief-myapp.md"---
Quick Start with SSD
# 1. Initialize BMAD with SSD enabled
/workflow-init --ssd
# 2. Run full TEA cycle for Phase 1 (Analysis)
/ssd-cycle
# 3. Check status after cycle
/ssd-status
# 4. When architect validates PASS, human review opens automatically
# (plannotator UI launches)
# 5. After approval, advance to Phase 2
/ssd-advance
# 6. Repeat for each phase
/ssd-cycle # Phase 2: Planning
/ssd-cycle # Phase 3: Solutioning
/ssd-cycle # Phase 4: Implementation---
Obsidian Save Format
Approved phase documents are saved to your Obsidian vault:
---
created: 2026-03-16T10:00:00Z
source: plannotator
tags: [bmad, ssd, phase-2, prd, myapp]
ssd_architect_verdict: PASS
ssd_tea_cycle: 1
---
[[BMAD Plans]]
# PRD: myapp
...---
TOON Format Hook
If ~/.claude/hooks/toon-inject.mjs is installed, the skill catalog is automatically injected into every prompt. See [bmad-orchestrator SKILL.md — TOON Format Integration] for details.
IDENTITY AND PURPOSE
You are an expert system architect performing a structured phase review for the BMAD Structured System Design (SSD) framework. Your job is to validate that a phase document is internally coherent, externally consistent with prior phase artifacts, and complete enough to advance to the next phase.
Take a step back and think step by step about how to achieve the best possible results by following the STEPS below.
STEPS
1. IDENTIFY the current BMAD phase (Analysis, Planning, Solutioning, Implementation) from the input metadata.
2. PARSE the phase document and extract all claims, requirements, design decisions, and deliverables.
3. INTERNAL COHERENCE CHECK:
- Are there contradictory statements within the document?
- Are all sections complete (no TODOs, placeholders, or TBDs)?
- Do quantitative claims (performance targets, story points, timelines) have justification?
4. CROSS-PHASE TRACEABILITY CHECK (if prior phase artifacts are provided):
- Phase 2 (Planning): Does every PRD requirement trace to a product brief goal?
- Phase 3 (Solutioning): Does the architecture address every PRD functional requirement?
- Phase 4 (Implementation): Does every story map to an architecture component?
- Flag any orphaned items (requirements without upstream justification or downstream coverage).
5. COMPLETENESS CHECK against the BMAD level expectations:
- Level 0-1: Minimal viable coverage
- Level 2: Full requirement coverage with acceptance criteria
- Level 3: Comprehensive with integration points and risk analysis
- Level 4: Enterprise-grade with security, performance, and infrastructure coverage
6. RISK ASSESSMENT:
- Identify assumptions that could invalidate the phase output
- Flag dependencies that are unresolved
- Note any scope creep relative to prior phase boundaries
7. PRODUCE a structured verdict.
OUTPUT INSTRUCTIONS
- Output valid Markdown only.
- Begin with a
## Verdictsection: one ofPASS,PASS_WITH_WARNINGS,FAIL, orREVISE. - Follow with
## Internal Coherence(findings with line references). - Follow with
## Cross-Phase Traceability(coverage matrix if applicable). - Follow with
## Completeness(missing sections or underspecified areas). - Follow with
## Risks(ranked by severity: critical, high, medium, low). - Follow with
## Required Changes(concrete, actionable items if verdict is FAIL or REVISE). - Do not include warnings, disclaimers, or caveats outside the structured sections.
INPUT
INPUT:
BMAD Orchestrator Reference
This document provides detailed reference information for the BMAD Orchestrator skill.
Table of Contents
- Workflow Routing Logic
- Project Level Guidelines
- Status File Structure
- Configuration Details
- File Operations
- Variable Substitution
Workflow Routing Logic
Determination Algorithm
Input: workflow_status array from docs/bmm-workflow-status.yaml
Output: recommended next workflow command
Step 1: Identify current phase
- Scan workflow_status array
- Find last completed workflow (status = file path)
- Determine phase number of last completion
Step 2: Check for required workflows in current/next phase
- If in Phase 1 (Analysis):
* If no product-brief: Recommend /product-brief
* If product-brief complete: Move to Phase 2
- If in Phase 2 (Planning):
* Level 0-1:
- If no tech-spec: Recommend /tech-spec (required)
- If PRD desired: Suggest /prd (optional)
* Level 2+:
- If no PRD: Recommend /prd (required)
- If tech-spec desired: Suggest /tech-spec (optional)
- If in Phase 3 (Solutioning):
* Level 2+:
- If no architecture: Recommend /architecture (required)
* Level 0-1:
- Skip to Phase 4
- If in Phase 4 (Implementation):
* If no sprint-status.yaml: Recommend /sprint-planning
* If sprint active: Recommend /create-story
* If stories exist: Recommend /dev-story
Step 3: Return recommendation with explanationPhase Transition Rules
Phase 1 → Phase 2:
- Transition when: Product brief complete OR user explicitly skips analysis
- Required before transition: None (Analysis is optional)
Phase 2 → Phase 3:
- Transition when: PRD or Tech Spec complete
- Required before transition:
- Level 0-1: Tech Spec complete
- Level 2+: PRD complete
- Gate rule: if the current phase document already has a terminal plannotator result for the same document hash, do not relaunch review until the document changes
Phase 3 → Phase 4:
- Transition when: Architecture complete (if required)
- Required before transition:
- Level 0-1: None (skip Phase 3)
- Level 2+: Architecture complete
- Gate rule: phase advancement still requires a reviewed artifact; unchanged reviewed architecture should not be re-opened
Phase 4 completion:
- All stories in sprint-status.yaml marked as "done"
- Final review/retrospective complete
Project Level Guidelines
Level 0: Single Atomic Change (1 story)
Characteristics:
- Bug fix
- Small configuration change
- Single file modification
- No breaking changes
Required workflows:
- Tech Spec (brief, 1-2 pages)
- Single story
- Direct implementation
Skip:
- Product brief (unless complex bug)
- PRD
- Architecture
- Sprint planning
Typical timeline: Hours to 1 day
Level 1: Small Feature (1-10 stories)
Characteristics:
- New small feature
- Limited scope
- 1-3 files affected
- Minimal dependencies
Required workflows:
- Tech Spec
- Sprint planning (simple)
Optional but recommended:
- Product brief (if feature requires context)
- PRD (if stakeholder alignment needed)
Skip:
- Architecture (unless significant design needed)
Typical timeline: 1-5 days
Level 2: Medium Feature Set (5-15 stories)
Characteristics:
- Multiple related features
- 5-20 files affected
- Some dependencies
- Database changes likely
Required workflows:
- PRD
- Architecture
- Sprint planning
Optional:
- Product brief (recommended)
- Tech spec (for complex components)
Typical timeline: 1-3 weeks
Level 3: Complex Integration (12-40 stories)
Characteristics:
- System integration
- Multiple subsystems
- 20-50 files affected
- API contracts
- Third-party integrations
Required workflows:
- Product brief (strongly recommended)
- PRD (detailed)
- Architecture (comprehensive)
- Sprint planning (multiple sprints)
Typical timeline: 3-8 weeks
Level 4: Enterprise Expansion (40+ stories)
Characteristics:
- Major system overhaul
- 50+ files affected
- Multiple teams
- Platform changes
- Infrastructure updates
Required workflows:
- Product brief (required)
- PRD (extensive)
- Architecture (system-wide)
- Sprint planning (multiple sprints)
- Gate checks
Typical timeline: 2-6 months
Status File Structure
Workflow Status Schema
# docs/bmm-workflow-status.yaml
project_name: "string"
project_type: "web-app|mobile-app|api|game|library|other"
project_level: 0-4
communication_language: "string"
output_language: "string"
last_updated: "ISO-8601 timestamp"
workflow_status:
- name: "workflow-name"
phase: 1-4
status: "optional|recommended|required|{file-path}|skipped"
description: "Brief description"
# Added by phase-gate-review.sh when plannotator approves the document:
plannotator_review: "approved" # set on plannotator Approve click
reviewed_at: "ISO-8601 timestamp" # timestamp of approvalStatus Values
- "optional" - Workflow can be skipped without impact
- "recommended" - Strongly suggested but not blocking
- "required" - Must be completed to proceed
- "conditional" - Required based on project level (replaced during init)
- "{file-path}" - Completed, shows output file location
- "skipped" - User explicitly chose to skip
plannotator Review Fields
Written by scripts/phase-gate-review.sh when a phase document is approved via plannotator:
- `plannotator_review` -
"approved"when the document passed plannotator gate review - `reviewed_at` - ISO-8601 timestamp of when the review was approved
These fields are optional — they are only present on workflow entries that have been reviewed. Use them to audit which phase documents were human-reviewed before phase transition. If you persist a document hash alongside them, the recommended policy is "same hash, same decision, no re-entry".
Updating Status
When a workflow completes: 1. Read docs/bmm-workflow-status.yaml 2. Find workflow by name 3. Update status to file path: "docs/prd-myapp-2025-01-11.md" 4. Update last_updated timestamp 5. Write updated file
Example Edit operation:
# Before
- name: prd
phase: 2
status: "required"
description: "Product Requirements Document"
# After
- name: prd
phase: 2
status: "docs/prd-myapp-2025-01-11.md"
description: "Product Requirements Document"Configuration Details
Project Config (bmad/config.yaml)
Complete schema:
# Project identification
project_name: "string"
project_type: "web-app|mobile-app|api|game|library|other"
project_level: 0-4
# Output settings
output_folder: "docs" # relative to project root
stories_folder: "docs/stories"
# Language settings
communication_language: "English|Spanish|French|etc"
document_output_language: "English|Spanish|French|etc"
# BMAD version
bmad_version: "6.0.0"
# Optional: Custom overrides
agent_overrides_folder: "bmad/agent-overrides"Global Config (~/.claude/config/bmad/config.yaml)
version: "6.0.0"
ide: "claude-code"
# User defaults
user_name: "string"
user_skill_level: "beginner|intermediate|expert"
# Communication defaults
communication_language: "English"
document_output_language: "English"
# Default paths
default_output_folder: "docs"
# Enabled modules
modules_enabled:
- core
- bmm
# - bmb (optional)
# - cis (optional)
# Advanced settings
auto_update_status: true
verbose_mode: falseConfig Priority
1. Project config (bmad/config.yaml) - highest priority 2. Global config (~/.claude/config/bmad/config.yaml) - default values 3. Built-in defaults - fallback
File Operations
Reading Config Files
Load project config:
Tool: Read
Path: {project-root}/bmad/config.yaml
Parse: YAML
Extract: project_name, project_type, project_level, output_folderLoad global config:
Tool: Read
Path: ~/.claude/config/bmad/config.yaml
Parse: YAML
Extract: user_name, communication_language, default_output_folderMerge configs:
Result = Global config + Project config (project overrides global)Writing Status Files
Create workflow status:
Tool: Write
Path: {project-root}/{output_folder}/bmm-workflow-status.yaml
Content: Processed template with variables substitutedUpdate workflow status:
Tool: Edit
Path: {project-root}/{output_folder}/bmm-workflow-status.yaml
Old: status: "required"
New: status: "docs/prd-myapp-2025-01-11.md"Directory Creation
Initialize project structure:
Tool: Bash
Commands:
mkdir -p bmad/agent-overrides
mkdir -p docs/stories
mkdir -p .claude/commands/bmadVariable Substitution
Standard Variables
Used in templates during initialization:
{{PROJECT_NAME}} → config: project_name
{{PROJECT_TYPE}} → config: project_type
{{PROJECT_LEVEL}} → config: project_level
{{USER_NAME}} → global config: user_name
{{DATE}} → current date (YYYY-MM-DD)
{{TIMESTAMP}} → current timestamp (ISO 8601)
{{OUTPUT_FOLDER}} → config: output_folderConditional Variables
Based on project level:
{{PRD_STATUS}} → "required" if level >= 2
→ "recommended" if level == 1
→ "optional" if level == 0
{{TECH_SPEC_STATUS}} → "required" if level <= 1
→ "optional" if level >= 2
{{ARCHITECTURE_STATUS}} → "required" if level >= 2
→ "optional" if level <= 1Substitution Process
1. Load template file 2. Collect variable values from:
- Project config
- Global config
- Current date/time
- User input
3. Replace all {{VARIABLE}} occurrences 4. Validate no unreplaced variables remain 5. Return processed content
Example:
# Template
project_name: "{{PROJECT_NAME}}"
project_level: {{PROJECT_LEVEL}}
# After substitution with project_name="MyApp", project_level=2
project_name: "MyApp"
project_level: 2File Path Standards
Standard Paths
Project root: {project-root}/
Config: {project-root}/bmad/config.yaml
Status: {project-root}/{output_folder}/bmm-workflow-status.yaml
Sprint: {project-root}/{output_folder}/sprint-status.yaml
Stories: {project-root}/{output_folder}/stories/
Templates: {project-root}/bmad/agent-overrides/ (optional)Output File Naming
Convention: {workflow-name}-{project-name}-{date}.md
Examples:
docs/product-brief-myapp-2025-01-11.md
docs/prd-myapp-2025-01-11.md
docs/architecture-myapp-2025-01-11.md
docs/tech-spec-myapp-2025-01-11.mdStory File Naming
Convention: story-{epic-id}-{story-id}.md
Examples:
docs/stories/story-E001-S001.md
docs/stories/story-E001-S002.md
docs/stories/story-E002-S001.mdError Handling Patterns
Missing Config File
Error: bmad/config.yaml not found
Response:
1. Inform user project not initialized
2. Display: "BMAD not detected in this project."
3. Ask: "Would you like to initialize BMAD with /workflow-init?"
4. Do NOT proceed with operationInvalid YAML
Error: YAML parsing failed
Response:
1. Show error message
2. Display file path
3. Show line number if available
4. Options:
a. "I can try to fix the YAML syntax"
b. "You can manually edit the file"
c. "I can reinitialize with /workflow-init (will overwrite)"Inconsistent Status
Error: Status file doesn't match project level
Example: Level 2 project but PRD marked as "optional"
Response:
1. Explain inconsistency
2. Show expected vs actual
3. Offer: "I can regenerate the status file to match your project level"Missing Template
Error: Template file not found
Response:
1. Log warning (if verbose mode)
2. Use inline fallback template
3. Continue operation
4. Note: "Using default template"Display Formatting
Status Display Format
Project: {project_name} ({project_type}, Level {level})
✓ Phase 1: Analysis
✓ product-brief (docs/product-brief-myapp-2025-01-11.md)
- research (optional)
→ Phase 2: Planning [CURRENT]
⚠ prd (required - NOT STARTED)
- tech-spec (optional)
Phase 3: Solutioning
- architecture (required)
Phase 4: Implementation
- sprint-planning (required)Symbols Used
✓- Completed⚠- Required but not started→- Current phase indicator-- Optional or not applicable
Color Coding (if supported)
- Green: Completed workflows
- Yellow: Required but incomplete
- Gray: Optional workflows
- Blue: Current phase
Best Practices
For Initialization
1. Always collect project info before creating files 2. Validate project level is 0-4 3. Create all directories before files 4. Use absolute paths for file operations 5. Confirm successful creation to user
For Status Checks
1. Load config first to get output_folder path 2. Check if status file exists before reading 3. Parse YAML carefully with error handling 4. Display in clear, hierarchical format 5. Always provide actionable next step
For Routing
1. Check current phase before recommending 2. Consider project level in recommendations 3. Explain why a workflow is recommended 4. Offer to execute recommended workflow 5. Allow user to choose different path
For Updates
1. Read current file before editing 2. Update timestamp when modifying 3. Validate YAML after changes 4. Confirm update to user 5. Update related files if needed (e.g., sprint-status)
---
SSD (Structured System Design) Reference
SSD embeds TEA (Task-Execute-Architect) cycles within each BMAD phase. This section documents the state schema, TEA transitions, and command reference.
SSD State File
Location: .omc/state/ssd-state.json
{
"version": "1.0.0",
"project_name": "string",
"project_level": 0,
"active": true,
"current_phase": 1,
"created_at": "ISO-8601",
"updated_at": "ISO-8601",
"phases": {
"1": {
"name": "analysis | planning | solutioning | implementation",
"tea_step": "null | decompose | execute | validate | complete",
"tasks": {
"decomposed_at": "ISO-8601 | null",
"items": [
{
"id": "p{N}-t{N}",
"name": "string",
"agent": "string",
"model": "haiku | sonnet | opus",
"status": "pending | in_progress | completed | failed",
"output_path": "string | null"
}
]
},
"architect_review": {
"verdict": "PASS | PASS_WITH_WARNINGS | REVISE | FAIL",
"method": "fabric | agent",
"pattern": "bmad_ssd_phase_review",
"report_path": "string",
"reviewed_at": "ISO-8601"
},
"plannotator_review": {
"status": "approved | changes_requested | pending",
"reviewed_at": "ISO-8601 | null",
"document_hash": "string"
}
}
},
"cross_phase_traceability": {
"phase_1_to_2": { "validated": false, "coverage": 0.0, "orphaned_items": [] },
"phase_2_to_3": { "validated": false },
"phase_3_to_4": { "validated": false }
}
}TEA Step Values and Transitions
tea_step progresses through the following states for each phase:
| Value | Meaning | Transition |
|---|---|---|
null | Phase not yet started | → decompose on /ssd-decompose |
decompose | Task list being produced | → execute after task list written to state |
execute | Multi-agent Team running tasks | → validate after all tasks reach terminal state |
validate | Architect review in progress | → complete on PASS or PASS_WITH_WARNINGS; → execute on REVISE; → execute on FAIL (full reset) |
complete | TEA cycle done, plannotator gate passed | → phase N+1 null on /ssd-advance |
Architect verdict values:
| Verdict | Meaning | Next action |
|---|---|---|
PASS | Document ready for human review | Open plannotator gate |
PASS_WITH_WARNINGS | Document ready with noted risks | Open plannotator gate (with warnings surfaced) |
REVISE | Specific tasks need re-execution | Re-run targeted tasks, then re-validate |
FAIL | Phase output does not meet minimum bar | Full re-execute, then re-validate (max 3 cycles) |
/ssd-* Command Reference
| Command | TEA Step | What it does |
|---|---|---|
/ssd-init | Setup | Creates .omc/state/ssd-state.json with all phases at tea_step: null. Called automatically by /workflow-init --ssd. |
/ssd-decompose | T | Invokes planner/analyst to produce a task list for the current phase. Writes phases[N].tasks.items to state. |
/ssd-execute | E | Reads task list from state, calls TeamCreate + TaskCreate per task, monitors until terminal, writes outputs to docs/ssd/phase-{N}/, updates task statuses. |
/ssd-validate | A | Pipes current phase document (+ prior artifacts) through fabric -p bmad_ssd_phase_review. Falls back to architect agent if fabric not installed. Writes verdict to phases[N].architect_review. |
/ssd-cycle | T+E+A | Runs /ssd-decompose → /ssd-execute → /ssd-validate in sequence for the current phase. Stops and surfaces issues if any step fails. |
/ssd-advance | Transition | Requires architect_review.verdict of PASS or PASS_WITH_WARNINGS AND plannotator_review.status of approved. Increments current_phase, sets new phase tea_step to null. |
/ssd-status | Status | Displays current phase, tea_step, task progress (N/M complete), architect verdict, and plannotator gate status. |
Agent Routing per Phase (TEA Execute Step)
| Phase | Primary agents | Support agents |
|---|---|---|
| 1: Analysis | document-specialist, analyst | scientist |
| 2: Planning | analyst, designer | test-engineer |
| 3: Solutioning | architect, security-reviewer | quality-reviewer, document-specialist, critic |
| 4: Implementation | executor, test-engineer | writer, build-fixer |
Architect validation agents:
- Phases 1–2:
architect(opus) - Phase 3:
architect(opus) +critic(opus) - Phase 4:
verifier(sonnet) +code-reviewer(opus)
Cross-Phase Traceability
The cross_phase_traceability object tracks coverage between adjacent phases:
phase_1_to_2: product brief goals → PRD requirements
phase_2_to_3: PRD requirements → architecture components
phase_3_to_4: architecture components → implementation storiescoverage is a float 0.0–1.0 representing the fraction of upstream items with a downstream mapping. orphaned_items lists upstream item IDs with no downstream reference. Populated and validated during /ssd-validate for phases 2, 3, and 4.
Fabric Pattern: bmad_ssd_phase_review
The pattern file is bundled at:
.agent-skills/bmad-orchestrator/patterns/bmad_ssd_phase_review/system.mdTo install globally for use with fabric:
mkdir -p ~/.config/fabric/patterns/bmad_ssd_phase_review
cp .agent-skills/bmad-orchestrator/patterns/bmad_ssd_phase_review/system.md \
~/.config/fabric/patterns/bmad_ssd_phase_review/system.mdIf fabric CLI is not available, /ssd-validate falls back to spawning an architect agent via TaskCreate with the phase document as context.
BMAD Workflow Phases Reference
Complete reference for all 4 BMAD phases, workflows, and project levels.
Phase 1: Analysis (Optional)
Purpose: Understand the problem space, research market/competitors, and define product vision.
When to use: Starting new products, major features, or when requirements are unclear.
When to skip: Bug fixes, well-defined features, or urgent implementations.
Phase 1 Workflows
Product Brief (/product-brief)
Purpose: Create comprehensive product vision and high-level requirements.
Output: Product brief document with:
- Problem statement
- Target users
- Value proposition
- Key features
- Success metrics
- Constraints
Duration: 1-2 hours
Recommended for: Level 1+ projects
Required for: Level 3+ projects
Brainstorm (/brainstorm)
Purpose: Structured ideation session for features and solutions.
Output: Brainstorming session notes with:
- Problem exploration
- Solution ideas
- Feature concepts
- Technical approaches
Duration: 30-60 minutes
Optional for: All levels
Research (/research)
Purpose: Market analysis, competitive research, technical investigation.
Output: Research report with:
- Market analysis
- Competitor comparison
- Technical feasibility
- Recommendations
Duration: 2-4 hours
Optional for: All levels (recommended for Level 2+)
---
Phase 2: Planning (Required)
Purpose: Define detailed requirements and technical specifications.
Critical: Every project must complete at least ONE planning workflow (PRD or Tech Spec).
Phase 2 Workflows
PRD - Product Requirements Document (/prd)
Purpose: Comprehensive product requirements for multi-feature projects.
Output: PRD document with:
- Executive summary
- User stories
- Functional requirements
- Non-functional requirements
- Success criteria
- Acceptance criteria
Duration: 2-4 hours
Required for: Level 2+ projects
Recommended for: Level 1 projects
Optional for: Level 0 projects
When to choose PRD over Tech Spec:
- Multiple features
- Stakeholder alignment needed
- Product perspective important
- Business requirements complex
Tech Spec - Technical Specification (/tech-spec)
Purpose: Technical design for single features or components.
Output: Tech spec document with:
- Technical overview
- Implementation approach
- API contracts
- Data models
- Testing strategy
Duration: 1-2 hours
Required for: Level 0-1 projects
Optional for: Level 2+ projects (supplement to PRD)
When to choose Tech Spec over PRD:
- Single feature
- Technical focus
- Limited scope
- Developer-centric work
UX Design (/create-ux-design)
Purpose: Design user interface and user experience.
Output: UX design document with:
- User flows
- Wireframes
- UI mockups
- Interaction patterns
- Design system references
Duration: 2-6 hours
Optional for: Projects with UI components
Recommended for: User-facing features
---
Phase 3: Solutioning (Conditional)
Purpose: Design system architecture for medium+ complexity projects.
Required for: Level 2+ projects
Skip for: Level 0-1 projects (unless significant architectural changes)
Phase 3 Workflows
Architecture (/architecture)
Purpose: Design system architecture, components, and integrations.
Output: Architecture document with:
- System overview
- Component design
- Data flow
- API contracts
- Integration points
- Technology decisions
- Security considerations
- Performance requirements
Duration: 2-6 hours
Required for: Level 2+ projects
Optional for: Level 0-1 with architectural impact
Content varies by level:
- Level 2: Component architecture, basic integrations
- Level 3: Comprehensive system design, multiple integrations
- Level 4: Enterprise architecture, platform design, infrastructure
Solutioning Gate Check (/solutioning-gate-check)
Purpose: Validate architecture against requirements before implementation.
Output: Gate check report with:
- Requirements coverage
- Risk assessment
- Technical debt analysis
- Readiness score
Duration: 30-60 minutes
Optional for: Level 2+ projects
Recommended for: Level 3+ projects
---
Phase 4: Implementation (Required)
Purpose: Execute development through sprints and stories.
Required for: All projects (even Level 0 creates at least 1 story)
Phase 4 Workflows
Sprint Planning (/sprint-planning)
Purpose: Break down requirements into epics and stories, plan sprints.
Output:
- Sprint plan with epics and stories
- sprint-status.yaml tracking file
- Story files in docs/stories/
Duration: 1-3 hours
Required for: Level 1+ projects
Simplified for: Level 0 (single story, no sprint)
Generates:
- Epics (Level 1+)
- User stories with acceptance criteria
- Story point estimates
- Sprint assignments
Create Story (/create-story)
Purpose: Create individual user story with details.
Output: Story file (docs/stories/story-{epic}-{id}.md) with:
- User story format
- Acceptance criteria
- Tasks breakdown
- Estimates
- Dependencies
Duration: 15-30 minutes per story
Required for: All projects
Used when: Adding stories to existing sprint
Dev Story (/dev-story)
Purpose: Implement a specific story with code generation.
Output:
- Code implementation
- Tests
- Documentation
- Story marked complete
Duration: 30 minutes - several hours
Required for: Story implementation
Process: 1. Read story file 2. Implement code 3. Write tests 4. Update documentation 5. Mark story complete
Code Review (/code-review)
Purpose: Review implemented code for quality and standards.
Output: Review findings and recommendations
Duration: 30-60 minutes
Optional for: All implementations
Recommended for: Level 2+ projects
---
Project Level Decision Matrix
Level 0: Single Atomic Change (1 story)
| Phase | Workflow | Status |
|---|---|---|
| 1 | Product Brief | Optional |
| 1 | Research | Optional |
| 2 | PRD | Optional |
| 2 | Tech Spec | Required |
| 3 | Architecture | Skip |
| 4 | Sprint Planning | Simplified (single story) |
| 4 | Dev Story | Required |
Typical flow: Tech Spec → Single Story → Implementation
Example projects:
- Bug fix
- Configuration change
- Small UI tweak
- Single function addition
---
Level 1: Small Feature (1-10 stories)
| Phase | Workflow | Status |
|---|---|---|
| 1 | Product Brief | Recommended |
| 1 | Research | Optional |
| 2 | PRD | Recommended |
| 2 | Tech Spec | Required |
| 2 | UX Design | Optional |
| 3 | Architecture | Optional |
| 4 | Sprint Planning | Required |
| 4 | Create Story | Required (multiple) |
| 4 | Dev Story | Required |
Typical flow: Product Brief → Tech Spec → Sprint Planning → Stories → Implementation
Example projects:
- New API endpoint
- User profile page
- Data export feature
- Email notifications
---
Level 2: Medium Feature Set (5-15 stories)
| Phase | Workflow | Status |
|---|---|---|
| 1 | Product Brief | Recommended |
| 1 | Research | Recommended |
| 2 | PRD | Required |
| 2 | Tech Spec | Optional |
| 2 | UX Design | Recommended |
| 3 | Architecture | Required |
| 3 | Gate Check | Optional |
| 4 | Sprint Planning | Required |
| 4 | Create Story | Required (multiple) |
| 4 | Dev Story | Required |
| 4 | Code Review | Recommended |
Typical flow: Product Brief → PRD → Architecture → Sprint Planning → Stories → Implementation
Example projects:
- User authentication system
- Payment integration
- Dashboard with multiple widgets
- Content management features
---
Level 3: Complex Integration (12-40 stories)
| Phase | Workflow | Status |
|---|---|---|
| 1 | Product Brief | Required |
| 1 | Research | Recommended |
| 2 | PRD | Required (detailed) |
| 2 | UX Design | Recommended |
| 3 | Architecture | Required (comprehensive) |
| 3 | Gate Check | Recommended |
| 4 | Sprint Planning | Required (multiple sprints) |
| 4 | Create Story | Required (many) |
| 4 | Dev Story | Required |
| 4 | Code Review | Required |
Typical flow: Product Brief → Research → PRD → Architecture → Gate Check → Multiple Sprints → Implementation
Example projects:
- Third-party API integration
- Multi-tenant system
- Real-time collaboration features
- Analytics platform
---
Level 4: Enterprise Expansion (40+ stories)
| Phase | Workflow | Status |
|---|---|---|
| 1 | Product Brief | Required (detailed) |
| 1 | Research | Required |
| 2 | PRD | Required (extensive) |
| 2 | UX Design | Required |
| 3 | Architecture | Required (system-wide) |
| 3 | Gate Check | Required |
| 4 | Sprint Planning | Required (many sprints) |
| 4 | Create Story | Required (extensive) |
| 4 | Dev Story | Required |
| 4 | Code Review | Required |
Typical flow: Product Brief → Research → PRD → UX Design → Architecture → Gate Check → Many Sprints → Implementation → Reviews
Example projects:
- Platform migration
- Microservices architecture
- Enterprise SaaS product
- Major system overhaul
---
Phase Transition Criteria
Phase 1 → Phase 2
Can transition when:
- Product brief completed (if created), OR
- User explicitly skips Phase 1
Blocking issues:
- None (Phase 1 is optional)
Recommendation: Complete product brief for Level 2+ projects
---
Phase 2 → Phase 3
Can transition when:
- PRD completed (Level 2+), OR
- Tech Spec completed (Level 0-1)
Blocking issues:
- No planning document created
- Planning document incomplete or invalid
Recommendation: Complete appropriate planning doc before proceeding
---
Phase 3 → Phase 4
Can transition when:
- Architecture completed (Level 2+), OR
- Project is Level 0-1 (skip Phase 3)
Blocking issues:
- Level 2+ project without architecture
- Architecture incomplete or not validated
Recommendation: Complete architecture for medium+ projects
---
Phase 4 Complete
Can transition when:
- All stories marked "done" in sprint-status.yaml
- Code reviewed (if required)
- Tests passing
Blocking issues:
- Incomplete stories
- Failing tests
- Unresolved blockers
Recommendation: Complete all stories before closing project
---
Workflow Dependencies
Must Complete Before
Product Brief → No dependencies (can be first)
Research → No dependencies (can be first)
Brainstorm → No dependencies (can be first)
PRD → Product Brief (recommended, not required)
Tech Spec → Product Brief (recommended, not required)
UX Design → Product Brief or PRD (recommended)
Architecture → PRD or Tech Spec (required)
Gate Check → Architecture (required)
Sprint Planning → PRD or Tech Spec (required), Architecture (if Level 2+)
Create Story → Sprint Planning (required)
Dev Story → Story created (required)
Code Review → Dev Story (required)Can Work in Parallel
Product Brief + Research
PRD + UX Design (with coordination)
Multiple Dev Stories (different epics)Sequential Requirements
Sprint Planning → Create Stories → Dev Stories → Code Review---
Common Workflow Paths
Fast Track (Level 0-1)
Tech Spec → Sprint Planning → Story → Implementation → DoneDuration: Hours to days
Use when: Small, well-defined changes
---
Standard Feature (Level 1-2)
Product Brief → PRD or Tech Spec → Architecture (if Level 2) →
Sprint Planning → Stories → Implementation → Review → DoneDuration: Days to weeks
Use when: Normal feature development
---
Enterprise Project (Level 3-4)
Product Brief → Research → PRD → UX Design → Architecture →
Gate Check → Sprint Planning → Stories → Implementation →
Code Review → Iteration → DoneDuration: Weeks to months
Use when: Complex, multi-team projects
---
Selection Guidance
When unclear about level, ask:
1. How many files will change?
- 1-3 files: Level 0-1
- 3-20 files: Level 1-2
- 20-50 files: Level 2-3
- 50+ files: Level 3-4
2. How many stories estimated?
- 1 story: Level 0
- 1-10 stories: Level 1
- 5-15 stories: Level 2
- 12-40 stories: Level 3
- 40+ stories: Level 4
3. Is architecture design needed?
- No: Level 0-1
- Some: Level 2
- Significant: Level 3
- Extensive: Level 4
4. How long will development take?
- Hours-1 day: Level 0
- 1-5 days: Level 1
- 1-3 weeks: Level 2
- 3-8 weeks: Level 3
- 2+ months: Level 4
When unclear about workflow, ask:
1. Is this a new project or existing codebase?
- New: Start with Product Brief
- Existing: Start with Tech Spec or PRD
2. Do you need stakeholder approval?
- Yes: Use PRD
- No: Use Tech Spec
3. Is this primarily product or technical?
- Product: Use PRD
- Technical: Use Tech Spec
4. Do you have clear requirements?
- Yes: Skip to Planning
- No: Start with Analysis
---
Quick Reference Table
| Project Type | Level | Required Workflows | Duration |
|---|---|---|---|
| Bug fix | 0 | Tech Spec, Story | Hours |
| Small feature | 1 | Tech Spec, Sprint, Stories | 1-5 days |
| Feature set | 2 | PRD, Architecture, Sprint, Stories | 1-3 weeks |
| Integration | 3 | Brief, PRD, Architecture, Sprints | 3-8 weeks |
| Platform | 4 | Brief, Research, PRD, UX, Architecture, Sprints | 2+ months |
#!/bin/bash
# BMAD Workflow Status Checker
# Reads and displays current workflow status from YAML file
set -e # Exit on error
# Color output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
GRAY='\033[0;37m'
NC='\033[0m' # No Color
# Default paths
CONFIG_FILE="bmad/config.yaml"
STATUS_FILE="docs/bmm-workflow-status.yaml"
# Check if project is initialized
if [ ! -f "$CONFIG_FILE" ]; then
echo -e "${RED}Error: BMAD not initialized in this project${NC}"
echo -e "${YELLOW}Run /workflow-init to initialize BMAD${NC}"
exit 1
fi
# Read output folder from config if available
if command -v yq &> /dev/null; then
OUTPUT_FOLDER=$(yq eval '.output_folder' "$CONFIG_FILE" 2>/dev/null || echo "docs")
STATUS_FILE="${OUTPUT_FOLDER}/bmm-workflow-status.yaml"
elif grep -q "output_folder:" "$CONFIG_FILE"; then
OUTPUT_FOLDER=$(grep "output_folder:" "$CONFIG_FILE" | sed 's/.*: *"\?\([^"]*\)"\?/\1/' | tr -d '"')
STATUS_FILE="${OUTPUT_FOLDER}/bmm-workflow-status.yaml"
fi
# Check if status file exists
if [ ! -f "$STATUS_FILE" ]; then
echo -e "${RED}Error: Workflow status file not found: ${STATUS_FILE}${NC}"
echo -e "${YELLOW}Run /workflow-init to create status file${NC}"
exit 1
fi
# Parse config for project info
PROJECT_NAME="Unknown"
PROJECT_TYPE="Unknown"
PROJECT_LEVEL="Unknown"
if command -v yq &> /dev/null; then
# Use yq if available for proper YAML parsing
PROJECT_NAME=$(yq eval '.project_name' "$STATUS_FILE" 2>/dev/null || echo "Unknown")
PROJECT_TYPE=$(yq eval '.project_type' "$STATUS_FILE" 2>/dev/null || echo "Unknown")
PROJECT_LEVEL=$(yq eval '.project_level' "$STATUS_FILE" 2>/dev/null || echo "Unknown")
else
# Fallback to grep/sed
if grep -q "project_name:" "$STATUS_FILE"; then
PROJECT_NAME=$(grep "project_name:" "$STATUS_FILE" | head -1 | sed 's/.*: *"\?\([^"]*\)"\?/\1/' | tr -d '"')
fi
if grep -q "project_type:" "$STATUS_FILE"; then
PROJECT_TYPE=$(grep "project_type:" "$STATUS_FILE" | head -1 | sed 's/.*: *"\?\([^"]*\)"\?/\1/' | tr -d '"')
fi
if grep -q "project_level:" "$STATUS_FILE"; then
PROJECT_LEVEL=$(grep "project_level:" "$STATUS_FILE" | head -1 | sed 's/.*: *//;s/ *#.*//')
fi
fi
# Display header
echo ""
echo -e "${BLUE}╔════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║ BMAD Workflow Status Report ║${NC}"
echo -e "${BLUE}╚════════════════════════════════════════════════╝${NC}"
echo ""
echo -e "${BLUE}Project:${NC} ${PROJECT_NAME}"
echo -e "${BLUE}Type:${NC} ${PROJECT_TYPE}"
echo -e "${BLUE}Level:${NC} ${PROJECT_LEVEL}"
echo ""
# Function to parse workflow status
parse_workflows() {
local current_phase=0
local phase_complete=true
local recommended_workflow=""
local phase_1_complete=true
local phase_2_complete=false
local phase_3_complete=false
local phase_4_started=false
# Headers
echo -e "${GREEN}Phase 1: Analysis${NC} (Optional)"
# Parse workflows using python3 to avoid nested while loop stdin consumption bug
while IFS='|' read -r name phase status command; do
# Print phase headers
if [ "$phase" != "$current_phase" ]; then
current_phase=$phase
echo ""
case $phase in
2)
echo -e "${GREEN}Phase 2: Planning${NC} (Required)"
;;
3)
echo -e "${GREEN}Phase 3: Solutioning${NC} (Conditional)"
;;
4)
echo -e "${GREEN}Phase 4: Implementation${NC} (Required)"
;;
esac
fi
# Determine status icon and color
if [[ $status == /* ]] || [[ $status == docs/* ]]; then
# Completed - has file path
echo -e " ${GREEN}✓${NC} ${name} ${GRAY}(${status})${NC}"
# Track phase completion
case $phase in
2) phase_2_complete=true ;;
3) phase_3_complete=true ;;
4) phase_4_started=true ;;
esac
elif [[ $status == "required" ]]; then
echo -e " ${YELLOW}⚠${NC} ${name} ${YELLOW}(required - NOT STARTED)${NC}"
if [ -z "$recommended_workflow" ]; then
recommended_workflow="$command"
fi
phase_complete=false
elif [[ $status == "recommended" ]]; then
echo -e " ${BLUE}→${NC} ${name} ${BLUE}(recommended)${NC}"
if [ -z "$recommended_workflow" ]; then
recommended_workflow="$command"
fi
elif [[ $status == "skipped" ]]; then
echo -e " ${GRAY}-${NC} ${name} ${GRAY}(skipped)${NC}"
else
echo -e " ${GRAY}-${NC} ${name} ${GRAY}(${status})${NC}"
fi
done < <(python3 -c "
import sys
with open(sys.argv[1]) as f:
content = f.read()
workflows = []
current = {}
in_workflows = False
for line in content.split('\n'):
stripped = line.strip()
if stripped == 'workflow_status:':
in_workflows = True
continue
if not in_workflows:
continue
if stripped.startswith('- name:'):
if current:
workflows.append(current)
current = {'name': stripped[7:].strip().strip('\"')}
elif current and stripped.startswith('phase:'):
current['phase'] = stripped[6:].strip().strip('\"')
elif current and stripped.startswith('status:'):
current['status'] = stripped[7:].strip().strip('\"')
elif current and stripped.startswith('command:'):
current['command'] = stripped[8:].strip().strip('\"')
elif current and stripped.startswith('description:'):
current['description'] = stripped[12:].strip().strip('\"')
if current:
workflows.append(current)
for wf in workflows:
name = wf.get('name', '')
phase = wf.get('phase', '')
status = wf.get('status', '')
command = wf.get('command', '')
print(f'{name}|{phase}|{status}|{command}')
" "$STATUS_FILE" 2>/dev/null)
# Recommendations
echo ""
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
if [ -n "$recommended_workflow" ]; then
echo ""
echo -e "${YELLOW}Recommended next step:${NC}"
echo -e " Run ${GREEN}${recommended_workflow}${NC} to continue"
else
echo ""
echo -e "${GREEN}All required workflows complete!${NC}"
if [ "$phase_4_started" = true ]; then
echo -e "Continue with ${GREEN}/dev-story${NC} to implement stories"
else
echo -e "Start implementation with ${GREEN}/sprint-planning${NC}"
fi
fi
echo ""
}
# Parse and display workflows
parse_workflows
# Display legend
echo -e "${GRAY}Legend:${NC}"
echo -e " ${GREEN}✓${NC} Completed ${YELLOW}⚠${NC} Required ${BLUE}→${NC} Recommended ${GRAY}-${NC} Optional"
echo ""
#!/bin/bash
# BMAD Project Initialization Script
# Creates BMAD directory structure and configuration files
set -e # Exit on error
# Color output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Default values
PROJECT_NAME=""
PROJECT_TYPE=""
PROJECT_LEVEL=""
OUTPUT_FOLDER="docs"
SKILL_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
# Parse command line arguments
while [[ $# -gt 0 ]]; do
case $1 in
--name)
PROJECT_NAME="$2"
shift 2
;;
--type)
PROJECT_TYPE="$2"
shift 2
;;
--level)
PROJECT_LEVEL="$2"
shift 2
;;
--output)
OUTPUT_FOLDER="$2"
shift 2
;;
-h|--help)
echo "Usage: $0 --name <project-name> --type <project-type> --level <0-4> [--output <folder>]"
echo ""
echo "Options:"
echo " --name Project name (required)"
echo " --type Project type: web-app, mobile-app, api, game, library, other (required)"
echo " --level Project level: 0-4 (required)"
echo " --output Output folder for documents (default: docs)"
echo " -h, --help Show this help message"
echo ""
echo "Example:"
echo " $0 --name MyApp --type web-app --level 2"
exit 0
;;
*)
echo -e "${RED}Error: Unknown option $1${NC}"
exit 1
;;
esac
done
# Interactive mode if parameters not provided
if [ -z "$PROJECT_NAME" ]; then
echo -e "${BLUE}Enter project name:${NC}"
read -r PROJECT_NAME
fi
if [ -z "$PROJECT_TYPE" ]; then
echo -e "${BLUE}Enter project type (web-app, mobile-app, api, game, library, other):${NC}"
read -r PROJECT_TYPE
fi
if [ -z "$PROJECT_LEVEL" ]; then
echo -e "${BLUE}Enter project level (0-4):${NC}"
echo " 0 - Single atomic change (1 story)"
echo " 1 - Small feature (1-10 stories)"
echo " 2 - Medium feature set (5-15 stories)"
echo " 3 - Complex integration (12-40 stories)"
echo " 4 - Enterprise expansion (40+ stories)"
read -r PROJECT_LEVEL
fi
# Validate inputs
if [ -z "$PROJECT_NAME" ] || [ -z "$PROJECT_TYPE" ] || [ -z "$PROJECT_LEVEL" ]; then
echo -e "${RED}Error: Project name, type, and level are required${NC}"
exit 1
fi
# Validate project level
if ! [[ "$PROJECT_LEVEL" =~ ^[0-4]$ ]]; then
echo -e "${RED}Error: Project level must be 0-4${NC}"
exit 1
fi
# Validate project type
valid_types=("web-app" "mobile-app" "api" "game" "library" "other")
if [[ ! " ${valid_types[@]} " =~ " ${PROJECT_TYPE} " ]]; then
echo -e "${YELLOW}Warning: Unknown project type '${PROJECT_TYPE}'. Valid types: ${valid_types[*]}${NC}"
echo -e "${YELLOW}Continuing anyway...${NC}"
fi
echo -e "${GREEN}Initializing BMAD for project: ${PROJECT_NAME}${NC}"
echo ""
# Create directory structure
echo -e "${BLUE}Creating directory structure...${NC}"
mkdir -p bmad/agent-overrides
mkdir -p "${OUTPUT_FOLDER}/stories"
mkdir -p .claude/commands/bmad
echo -e "${GREEN}✓ Directories created${NC}"
# Determine conditional workflow statuses based on project level
if [ "$PROJECT_LEVEL" -ge 2 ]; then
PRD_STATUS="required"
else
if [ "$PROJECT_LEVEL" -eq 1 ]; then
PRD_STATUS="recommended"
else
PRD_STATUS="optional"
fi
fi
if [ "$PROJECT_LEVEL" -le 1 ]; then
TECH_SPEC_STATUS="required"
else
TECH_SPEC_STATUS="optional"
fi
if [ "$PROJECT_LEVEL" -ge 2 ]; then
ARCHITECTURE_STATUS="required"
else
ARCHITECTURE_STATUS="optional"
fi
# Generate timestamp
TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
# Create project config from template
echo -e "${BLUE}Creating project configuration...${NC}"
CONFIG_TEMPLATE="${SKILL_PATH}/templates/config.template.yaml"
CONFIG_OUTPUT="bmad/config.yaml"
if [ -f "$CONFIG_TEMPLATE" ]; then
# Use template if available
sed -e "s/{{PROJECT_NAME}}/${PROJECT_NAME}/g" \
-e "s/{{PROJECT_TYPE}}/${PROJECT_TYPE}/g" \
-e "s/{{PROJECT_LEVEL}}/${PROJECT_LEVEL}/g" \
-e "s/{{TIMESTAMP}}/${TIMESTAMP}/g" \
"$CONFIG_TEMPLATE" > "$CONFIG_OUTPUT"
else
# Fallback: create minimal config
cat > "$CONFIG_OUTPUT" <<EOF
# BMAD Method v6 - Project Configuration
# Generated: ${TIMESTAMP}
bmad_version: "6.0.0"
project_name: "${PROJECT_NAME}"
project_type: "${PROJECT_TYPE}"
project_level: ${PROJECT_LEVEL}
output_folder: "${OUTPUT_FOLDER}"
stories_folder: "${OUTPUT_FOLDER}/stories"
communication_language: "English"
document_output_language: "English"
EOF
fi
echo -e "${GREEN}✓ Created: ${CONFIG_OUTPUT}${NC}"
# Create workflow status from template
echo -e "${BLUE}Creating workflow status file...${NC}"
STATUS_TEMPLATE="${SKILL_PATH}/templates/workflow-status.template.yaml"
STATUS_OUTPUT="${OUTPUT_FOLDER}/bmm-workflow-status.yaml"
if [ -f "$STATUS_TEMPLATE" ]; then
# Use template if available
sed -e "s/{{PROJECT_NAME}}/${PROJECT_NAME}/g" \
-e "s/{{PROJECT_TYPE}}/${PROJECT_TYPE}/g" \
-e "s/{{PROJECT_LEVEL}}/${PROJECT_LEVEL}/g" \
-e "s/{{TIMESTAMP}}/${TIMESTAMP}/g" \
-e "s/{{PRD_STATUS}}/${PRD_STATUS}/g" \
-e "s/{{TECH_SPEC_STATUS}}/${TECH_SPEC_STATUS}/g" \
-e "s/{{ARCHITECTURE_STATUS}}/${ARCHITECTURE_STATUS}/g" \
"$STATUS_TEMPLATE" > "$STATUS_OUTPUT"
else
# Fallback: create minimal status file
cat > "$STATUS_OUTPUT" <<EOF
# BMAD Method Workflow Status
# Generated: ${TIMESTAMP}
project_name: "${PROJECT_NAME}"
project_type: "${PROJECT_TYPE}"
project_level: ${PROJECT_LEVEL}
last_updated: "${TIMESTAMP}"
workflow_status:
- name: prd
phase: 2
status: "${PRD_STATUS}"
description: "Product Requirements Document"
- name: tech-spec
phase: 2
status: "${TECH_SPEC_STATUS}"
description: "Technical Specification"
- name: architecture
phase: 3
status: "${ARCHITECTURE_STATUS}"
description: "System architecture design"
- name: sprint-planning
phase: 4
status: "required"
description: "Sprint planning and story creation"
EOF
fi
echo -e "${GREEN}✓ Created: ${STATUS_OUTPUT}${NC}"
# Summary
echo ""
echo -e "${GREEN}╔════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ BMAD Method Initialized Successfully! ║${NC}"
echo -e "${GREEN}╔════════════════════════════════════════════════╗${NC}"
echo ""
echo -e "${BLUE}Project:${NC} ${PROJECT_NAME}"
echo -e "${BLUE}Type:${NC} ${PROJECT_TYPE}"
echo -e "${BLUE}Level:${NC} ${PROJECT_LEVEL}"
echo ""
echo -e "${BLUE}Configuration:${NC} ${CONFIG_OUTPUT}"
echo -e "${BLUE}Status tracking:${NC} ${STATUS_OUTPUT}"
echo ""
# Recommend next step based on project level
echo -e "${YELLOW}Recommended next step:${NC}"
if [ "$PROJECT_LEVEL" -ge 2 ]; then
echo -e " Start with ${GREEN}/product-brief${NC} to define your product vision"
echo -e " Then create ${GREEN}/prd${NC} for detailed requirements"
else
if [ "$PROJECT_LEVEL" -eq 1 ]; then
echo -e " Start with ${GREEN}/product-brief${NC} (recommended) or ${GREEN}/tech-spec${NC}"
else
echo -e " Start with ${GREEN}/tech-spec${NC} to define your implementation"
fi
fi
echo ""
echo -e "${BLUE}Check status anytime with:${NC} /workflow-status"
echo ""
#!/bin/bash
# BMAD Orchestrator — One-Command Setup
# Installs plannotator CLI and configures BMAD + plannotator integration.
#
# Usage:
# bash scripts/install.sh # Interactive setup
# bash scripts/install.sh --skip-plannotator # BMAD only (no plannotator)
# bash scripts/install.sh --init-project # Also initialize BMAD in current project
# bash scripts/install.sh --dry-run # Preview what would happen
set -e
# ── Colors ────────────────────────────────────────────────────────────────────
BLUE='\033[0;34m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
GRAY='\033[0;37m'
BOLD='\033[1m'
NC='\033[0m'
# ── Flags ─────────────────────────────────────────────────────────────────────
SKIP_PLANNOTATOR=false
INIT_PROJECT=false
DRY_RUN=false
for arg in "$@"; do
case $arg in
--skip-plannotator) SKIP_PLANNOTATOR=true ;;
--init-project) INIT_PROJECT=true ;;
--dry-run) DRY_RUN=true ;;
-h|--help)
echo "Usage: bash scripts/install.sh [options]"
echo ""
echo "Options:"
echo " --skip-plannotator Set up BMAD only, skip plannotator install"
echo " --init-project Also initialize BMAD in the current project"
echo " --dry-run Preview steps without making changes"
echo " -h, --help Show this help"
exit 0
;;
esac
done
# ── Header ────────────────────────────────────────────────────────────────────
echo ""
echo -e "${BLUE}${BOLD}╔══════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}${BOLD}║ BMAD Orchestrator — Setup ║${NC}"
echo -e "${BLUE}${BOLD}║ BMAD Method v6 + plannotator integration ║${NC}"
echo -e "${BLUE}${BOLD}╚══════════════════════════════════════════════════╝${NC}"
echo ""
if [ "$DRY_RUN" = true ]; then
echo -e "${YELLOW}[DRY RUN] No changes will be made.${NC}"
echo ""
fi
# ── Step 1: Check plannotator ─────────────────────────────────────────────────
echo -e "${BOLD}Step 1: plannotator CLI${NC}"
echo ""
if [ "$SKIP_PLANNOTATOR" = true ]; then
echo -e " ${GRAY}Skipping plannotator (--skip-plannotator)${NC}"
PLANNOTATOR_OK=false
elif command -v plannotator &>/dev/null; then
PLANNOTATOR_VERSION=$(plannotator --version 2>/dev/null || echo "installed")
echo -e " ${GREEN}✓ plannotator already installed${NC} (${PLANNOTATOR_VERSION})"
PLANNOTATOR_OK=true
else
echo -e " ${YELLOW}plannotator not found. Installing...${NC}"
echo ""
if [ "$DRY_RUN" = true ]; then
echo -e " ${GRAY}[DRY RUN] Would run: curl -sSfL https://plannotator.ai/install.sh | sh${NC}"
PLANNOTATOR_OK=false
else
# Install plannotator
if curl -sSfL https://plannotator.ai/install.sh | sh; then
echo ""
echo -e " ${GREEN}✓ plannotator installed${NC}"
PLANNOTATOR_OK=true
# Reload PATH so plannotator is found immediately
export PATH="$HOME/.local/bin:$HOME/bin:$PATH"
else
echo ""
echo -e " ${RED}✗ plannotator install failed.${NC}"
echo -e " ${GRAY} Manual install: https://plannotator.ai${NC}"
PLANNOTATOR_OK=false
fi
fi
fi
echo ""
# ── Resolve skill directory (used in Steps 2 and 3) ──────────────────────────
SKILL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
# ── Step 2: Set up Claude Code hook ──────────────────────────────────────────
echo -e "${BOLD}Step 2: plannotator Hook (Claude Code)${NC}"
echo ""
HOOK_SCRIPT="${SKILL_DIR}/../plannotator/scripts/setup-hook.sh"
if [ "$PLANNOTATOR_OK" = false ]; then
echo -e " ${GRAY}Skipping hook setup (plannotator not installed)${NC}"
elif [ ! -f "$HOOK_SCRIPT" ]; then
echo -e " ${YELLOW}plannotator skill not found at expected path.${NC}"
echo -e " ${GRAY} Install plannotator skill first:${NC}"
echo -e " ${GRAY} npx skills add https://github.com/akillness/oh-my-skills --skill plannotator${NC}"
echo ""
echo -e " ${GRAY} Then run hook setup manually:${NC}"
echo -e " ${GRAY} bash .agent-skills/plannotator/scripts/setup-hook.sh${NC}"
else
if [ "$DRY_RUN" = true ]; then
echo -e " ${GRAY}[DRY RUN] Would run: bash $HOOK_SCRIPT${NC}"
else
echo -e " ${BLUE}Configuring Claude Code ExitPlanMode hook...${NC}"
bash "$HOOK_SCRIPT" && echo -e " ${GREEN}✓ Hook configured${NC}" || \
echo -e " ${YELLOW}⚠ Hook setup skipped (may already be configured)${NC}"
fi
fi
echo ""
# ── Step 3: Verify BMAD scripts are executable ────────────────────────────────
echo -e "${BOLD}Step 3: BMAD Scripts${NC}"
echo ""
SCRIPTS=(
"scripts/install.sh"
"scripts/init-project.sh"
"scripts/check-status.sh"
"scripts/phase-gate-review.sh"
"scripts/validate-config.sh"
)
for script in "${SCRIPTS[@]}"; do
SCRIPT_PATH="${SKILL_DIR}/${script}"
if [ -f "$SCRIPT_PATH" ]; then
if [ "$DRY_RUN" = false ]; then
chmod +x "$SCRIPT_PATH"
fi
echo -e " ${GREEN}✓${NC} ${script}"
else
echo -e " ${GRAY}-${NC} ${script} ${GRAY}(not found)${NC}"
fi
done
echo ""
# ── Step 4: Optional project initialization ───────────────────────────────────
if [ "$INIT_PROJECT" = true ]; then
echo -e "${BOLD}Step 4: Initialize BMAD in Current Project${NC}"
echo ""
INIT_SCRIPT="${SKILL_DIR}/scripts/init-project.sh"
if [ -f "$INIT_SCRIPT" ]; then
if [ "$DRY_RUN" = true ]; then
echo -e " ${GRAY}[DRY RUN] Would run: bash $INIT_SCRIPT${NC}"
else
bash "$INIT_SCRIPT"
fi
else
echo -e " ${RED}✗ init-project.sh not found${NC}"
fi
echo ""
fi
# ── Summary ───────────────────────────────────────────────────────────────────
echo -e "${GREEN}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${GREEN}${BOLD} Setup complete!${NC}"
echo ""
echo -e "${BOLD}What's configured:${NC}"
if [ "$PLANNOTATOR_OK" = true ]; then
echo -e " ${GREEN}✓${NC} plannotator CLI — visual plan review"
echo -e " ${GREEN}✓${NC} Claude Code hook — auto-review on ExitPlanMode"
fi
echo -e " ${GREEN}✓${NC} BMAD scripts — workflow orchestration"
echo ""
echo -e "${BOLD}Next steps:${NC}"
echo ""
if [ "$INIT_PROJECT" = false ]; then
echo -e " ${BLUE}1. Initialize BMAD in your project:${NC}"
echo -e " ${YELLOW}/workflow-init${NC} ← run this in your AI session"
echo ""
fi
echo -e " ${BLUE}$([ "$INIT_PROJECT" = true ] && echo 1 || echo 2). Start your first phase:${NC}"
echo -e " ${YELLOW}/workflow-status${NC} ← see what's recommended next"
echo ""
echo -e " ${BLUE}$([ "$INIT_PROJECT" = true ] && echo 2 || echo 3). Review each phase document before advancing:${NC}"
echo -e " ${GRAY}bash scripts/phase-gate-review.sh docs/prd-*.md${NC}"
echo ""
if [ "$PLANNOTATOR_OK" = true ]; then
echo -e " ${BLUE}$([ "$INIT_PROJECT" = true ] && echo 3 || echo 4). Restart Claude Code${NC} so the hook takes effect."
echo ""
fi
echo -e "${GRAY}Full guide: cat .agent-skills/bmad-orchestrator/SETUP.md${NC}"
echo ""
#!/bin/bash
# BMAD Phase Gate Review
# Submits a phase document to plannotator for review before phase transition.
# On approval, updates bmm-workflow-status.yaml and records Obsidian save path.
#
# Usage:
# bash scripts/phase-gate-review.sh <doc-file> [title]
#
# Examples:
# bash scripts/phase-gate-review.sh docs/prd-myapp-2026-02-22.md "PRD Review: myapp"
# bash scripts/phase-gate-review.sh docs/architecture-myapp-2026-02-22.md
set -e
# ── Args ──────────────────────────────────────────────────────────────────────
DOC_FILE="${1:-}"
TITLE="${2:-}"
if [ -z "$DOC_FILE" ]; then
echo "Usage: bash scripts/phase-gate-review.sh <doc-file> [title]"
echo ""
echo "Examples:"
echo " bash scripts/phase-gate-review.sh docs/prd-myapp-2026-02-22.md \"PRD Review: myapp\""
echo " bash scripts/phase-gate-review.sh docs/architecture-myapp-2026-02-22.md"
exit 1
fi
if [ ! -f "$DOC_FILE" ]; then
echo "Error: Document not found: $DOC_FILE"
exit 1
fi
# ── Defaults ──────────────────────────────────────────────────────────────────
BASENAME=$(basename "$DOC_FILE" .md)
TITLE="${TITLE:-Phase Review: $BASENAME}"
# Detect project name from config or dirname
PROJECT_NAME="project"
if [ -f "bmad/config.yaml" ]; then
if command -v yq &>/dev/null; then
PROJECT_NAME=$(yq eval '.project_name' bmad/config.yaml 2>/dev/null || echo "project")
else
PROJECT_NAME=$(grep "project_name:" bmad/config.yaml 2>/dev/null | head -1 | sed 's/.*: *"\?\([^"]*\)"\?/\1/' | tr -d '"' || echo "project")
fi
fi
# Detect phase from filename
PHASE_TAG="bmad"
if echo "$DOC_FILE" | grep -qi "product-brief\|brainstorm\|research"; then
PHASE_TAG="bmad,phase-1"
elif echo "$DOC_FILE" | grep -qi "prd\|tech-spec\|ux-design"; then
PHASE_TAG="bmad,phase-2"
elif echo "$DOC_FILE" | grep -qi "architecture\|solutioning"; then
PHASE_TAG="bmad,phase-3"
elif echo "$DOC_FILE" | grep -qi "sprint\|story\|dev"; then
PHASE_TAG="bmad,phase-4"
fi
# ── Colors ────────────────────────────────────────────────────────────────────
BLUE='\033[0;34m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'
echo ""
echo -e "${BLUE}╔════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║ BMAD Phase Gate Review ║${NC}"
echo -e "${BLUE}╚════════════════════════════════════════════╝${NC}"
echo ""
echo -e "${BLUE}Document:${NC} $DOC_FILE"
echo -e "${BLUE}Title:${NC} $TITLE"
echo -e "${BLUE}Project:${NC} $PROJECT_NAME"
echo -e "${BLUE}Tags:${NC} $PHASE_TAG,$PROJECT_NAME"
echo ""
# ── Check plannotator ─────────────────────────────────────────────────────────
if ! command -v plannotator &>/dev/null; then
echo -e "${YELLOW}Warning: plannotator CLI not found.${NC}"
echo "Install: bash scripts/install.sh (from plannotator skill)"
echo ""
echo -e "${YELLOW}Manual review fallback:${NC}"
echo " Open the document and review manually, then update bmm-workflow-status.yaml"
echo ""
echo " Skipping plannotator gate — proceeding without review."
exit 0
fi
# ── Submit to plannotator ─────────────────────────────────────────────────────
echo -e "${BLUE}Submitting to plannotator...${NC}"
DOC_CONTENT=$(cat "$DOC_FILE")
# Submit via plannotator CLI (opens browser UI)
echo "$DOC_CONTENT" | plannotator submit \
--title "$TITLE" \
--stdin 2>/dev/null || {
# Fallback: use python3 to pipe content
python3 -c "
import sys, subprocess
content = open('$DOC_FILE').read()
proc = subprocess.run(
['plannotator', 'submit', '--title', '$TITLE', '--stdin'],
input=content.encode(),
capture_output=True
)
sys.exit(proc.returncode)
" 2>/dev/null || {
echo -e "${YELLOW}Could not auto-submit. Open plannotator manually:${NC}"
echo " plannotator"
echo " Then paste the content of: $DOC_FILE"
exit 0
}
}
# ── Update workflow status ─────────────────────────────────────────────────────
STATUS_FILE="docs/bmm-workflow-status.yaml"
WORKFLOW_NAME="$BASENAME"
# Extract workflow name by matching filename against bmm-workflow-status.yaml
# Handles hyphenated names like product-brief, tech-spec, ux-design
find_workflow_name() {
local doc_basename
doc_basename=$(basename "$DOC_FILE" .md)
local status_yaml="$STATUS_FILE"
if [ ! -f "$status_yaml" ]; then
echo ""
return
fi
if command -v yq &>/dev/null; then
# yq: find the name whose entry matches any leading segment of the filename
yq eval '.workflow_status[].name' "$status_yaml" 2>/dev/null | while IFS= read -r name; do
if [[ "$doc_basename" == "$name"* ]]; then
echo "$name"
return
fi
done | head -1
else
# python3 fallback: parse YAML names with grep/sed, no external modules needed
python3 - <<PYEOF 2>/dev/null
import os, re
status_yaml = "$status_yaml"
doc_basename = "$doc_basename"
try:
with open(status_yaml) as f:
content = f.read()
names = re.findall(r"""^\s*-\s+name:\s*["']?([^"'\n]+)["']?""", content, re.MULTILINE)
for name in names:
name = name.strip()
if doc_basename.startswith(name):
print(name)
break
except Exception:
pass
PYEOF
fi
}
WORKFLOW_NAME=$(find_workflow_name)
# Fallback: strip trailing date/project suffix (e.g., product-brief-myapp-2026 -> product-brief)
if [[ -z "$WORKFLOW_NAME" ]]; then
WORKFLOW_NAME=$(echo "$BASENAME" | sed 's/-[0-9]\{4\}[^-]*$//' | sed 's/-[a-zA-Z0-9]*$//')
fi
# Final fallback: original single-field cut
if [[ -z "$WORKFLOW_NAME" ]]; then
WORKFLOW_NAME=$(echo "$BASENAME" | cut -d'-' -f1)
fi
if [ -f "$STATUS_FILE" ]; then
echo ""
echo -e "${GREEN}Updating workflow status...${NC}"
TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
# Update last_updated timestamp
if command -v yq &>/dev/null; then
yq eval ".last_updated = \"$TIMESTAMP\"" -i "$STATUS_FILE" 2>/dev/null || true
yq eval "(.workflow_status[] | select(.name == \"$WORKFLOW_NAME\") | .plannotator_review) = \"approved\"" \
-i "$STATUS_FILE" 2>/dev/null || true
yq eval "(.workflow_status[] | select(.name == \"$WORKFLOW_NAME\") | .reviewed_at) = \"$TIMESTAMP\"" \
-i "$STATUS_FILE" 2>/dev/null || true
else
echo -e "${YELLOW}Note: Install yq for automatic status update${NC}"
echo " brew install yq"
echo ""
echo " Manually update $STATUS_FILE:"
echo " plannotator_review: \"approved\""
echo " reviewed_at: \"$TIMESTAMP\""
fi
fi
echo ""
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${GREEN}Phase gate review submitted.${NC}"
echo ""
echo "Next steps:"
echo " 1. Review and annotate in the plannotator UI"
echo " 2. Click Approve (saves to your enabled destination: Obsidian or Bear)"
echo " 3. Proceed to next BMAD phase"
echo ""
#!/bin/bash
# BMAD Configuration Validator
# Validates YAML configuration files for syntax and required fields
set -e # Exit on error
# Color output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Default file to validate
CONFIG_FILE="${1:-bmad/config.yaml}"
# Check if file exists
if [ ! -f "$CONFIG_FILE" ]; then
echo -e "${RED}Error: File not found: ${CONFIG_FILE}${NC}"
exit 1
fi
echo -e "${BLUE}Validating YAML configuration: ${CONFIG_FILE}${NC}"
echo ""
# Track validation status
ERRORS=0
WARNINGS=0
# Function to report error
error() {
echo -e "${RED}✗ ERROR:${NC} $1"
((ERRORS++))
}
# Function to report warning
warning() {
echo -e "${YELLOW}⚠ WARNING:${NC} $1"
((WARNINGS++))
}
# Function to report success
success() {
echo -e "${GREEN}✓${NC} $1"
}
# Check if yq is available for proper YAML parsing
HAS_YQ=false
if command -v yq &> /dev/null; then
HAS_YQ=true
echo -e "${GREEN}✓ yq found - using proper YAML parser${NC}"
else
echo -e "${YELLOW}⚠ yq not found - using basic validation${NC}"
echo -e "${GRAY} Install yq for better validation: https://github.com/mikefarah/yq${NC}"
fi
echo ""
# Test 1: YAML Syntax
echo -e "${BLUE}Test 1: YAML Syntax${NC}"
if [ "$HAS_YQ" = true ]; then
if yq eval '.' "$CONFIG_FILE" > /dev/null 2>&1; then
success "Valid YAML syntax"
else
error "Invalid YAML syntax"
yq eval '.' "$CONFIG_FILE" 2>&1 | head -5
fi
else
# Basic syntax check
if grep -q "^[^#]" "$CONFIG_FILE"; then
success "File contains content"
else
error "File appears empty or only contains comments"
fi
fi
echo ""
# Determine config type
CONFIG_TYPE="unknown"
if grep -q "project_name:" "$CONFIG_FILE"; then
CONFIG_TYPE="project"
elif grep -q "user_name:" "$CONFIG_FILE"; then
CONFIG_TYPE="global"
fi
echo -e "${BLUE}Configuration type: ${CONFIG_TYPE}${NC}"
echo ""
# Test 2: Required Fields (Project Config)
if [ "$CONFIG_TYPE" = "project" ]; then
echo -e "${BLUE}Test 2: Required Fields (Project Config)${NC}"
# Check project_name
if grep -q "^project_name:" "$CONFIG_FILE"; then
PROJECT_NAME=$(grep "^project_name:" "$CONFIG_FILE" | sed 's/.*: *"\?\([^"]*\)"\?/\1/' | tr -d '"')
if [ -n "$PROJECT_NAME" ]; then
success "project_name: ${PROJECT_NAME}"
else
error "project_name is empty"
fi
else
error "Missing required field: project_name"
fi
# Check project_type
if grep -q "^project_type:" "$CONFIG_FILE"; then
PROJECT_TYPE=$(grep "^project_type:" "$CONFIG_FILE" | sed 's/.*: *"\?\([^"]*\)"\?/\1/' | tr -d '"')
if [ -n "$PROJECT_TYPE" ]; then
success "project_type: ${PROJECT_TYPE}"
# Validate project type
valid_types=("web-app" "mobile-app" "api" "game" "library" "other")
if [[ ! " ${valid_types[@]} " =~ " ${PROJECT_TYPE} " ]]; then
warning "Unknown project_type '${PROJECT_TYPE}'. Valid: ${valid_types[*]}"
fi
else
error "project_type is empty"
fi
else
error "Missing required field: project_type"
fi
# Check project_level
if grep -q "^project_level:" "$CONFIG_FILE"; then
PROJECT_LEVEL=$(grep "^project_level:" "$CONFIG_FILE" | sed 's/.*: *//;s/ *#.*//')
if [ -n "$PROJECT_LEVEL" ]; then
success "project_level: ${PROJECT_LEVEL}"
# Validate level is 0-4
if ! [[ "$PROJECT_LEVEL" =~ ^[0-4]$ ]]; then
error "project_level must be 0-4, got: ${PROJECT_LEVEL}"
fi
else
error "project_level is empty"
fi
else
error "Missing required field: project_level"
fi
echo ""
fi
# Test 3: Optional but Recommended Fields
echo -e "${BLUE}Test 3: Optional Fields${NC}"
# Check output_folder
if grep -q "^output_folder:" "$CONFIG_FILE"; then
OUTPUT_FOLDER=$(grep "^output_folder:" "$CONFIG_FILE" | sed 's/.*: *"\?\([^"]*\)"\?/\1/' | tr -d '"')
success "output_folder: ${OUTPUT_FOLDER}"
else
warning "output_folder not specified (will default to 'docs')"
fi
# Check communication_language
if grep -q "^communication_language:" "$CONFIG_FILE"; then
COMM_LANG=$(grep "^communication_language:" "$CONFIG_FILE" | sed 's/.*: *"\?\([^"]*\)"\?/\1/' | tr -d '"')
success "communication_language: ${COMM_LANG}"
else
warning "communication_language not specified (will default to 'English')"
fi
echo ""
# Test 4: BMAD Version
echo -e "${BLUE}Test 4: Version Check${NC}"
if grep -q "^bmad_version:" "$CONFIG_FILE" || grep -q "^version:" "$CONFIG_FILE"; then
VERSION=$(grep -E "^(bmad_version|version):" "$CONFIG_FILE" | head -1 | sed 's/.*: *"\?\([^"]*\)"\?/\1/' | tr -d '"')
success "BMAD version: ${VERSION}"
# Check if version is current
if [[ "$VERSION" == "6.0.0" ]]; then
success "Running latest BMAD version"
else
warning "BMAD version ${VERSION} detected. Current version is 6.0.0"
fi
else
warning "No version specified"
fi
echo ""
# Test 5: File Permissions
echo -e "${BLUE}Test 5: File Permissions${NC}"
if [ -r "$CONFIG_FILE" ]; then
success "File is readable"
else
error "File is not readable"
fi
if [ -w "$CONFIG_FILE" ]; then
success "File is writable"
else
warning "File is not writable (updates may fail)"
fi
echo ""
# Test 6: Referenced Folders (if project config)
if [ "$CONFIG_TYPE" = "project" ]; then
echo -e "${BLUE}Test 6: Referenced Folders${NC}"
# Check if output folder exists
if [ -n "$OUTPUT_FOLDER" ]; then
if [ -d "$OUTPUT_FOLDER" ]; then
success "Output folder exists: ${OUTPUT_FOLDER}"
else
warning "Output folder does not exist: ${OUTPUT_FOLDER}"
echo -e " ${GRAY}Run /workflow-init to create it${NC}"
fi
fi
# Check if bmad folder exists
if [ -d "bmad" ]; then
success "BMAD config folder exists: bmad/"
else
warning "BMAD config folder does not exist: bmad/"
fi
# Check for workflow status file
STATUS_FILE="${OUTPUT_FOLDER:-docs}/bmm-workflow-status.yaml"
if [ -f "$STATUS_FILE" ]; then
success "Workflow status file exists: ${STATUS_FILE}"
else
warning "Workflow status file not found: ${STATUS_FILE}"
echo -e " ${GRAY}Run /workflow-init to create it${NC}"
fi
echo ""
fi
# Summary
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo ""
if [ $ERRORS -eq 0 ] && [ $WARNINGS -eq 0 ]; then
echo -e "${GREEN}✓ Validation passed with no errors or warnings!${NC}"
exit 0
elif [ $ERRORS -eq 0 ]; then
echo -e "${YELLOW}⚠ Validation passed with ${WARNINGS} warning(s)${NC}"
echo -e "${GRAY} Configuration is valid but has recommendations${NC}"
exit 0
else
echo -e "${RED}✗ Validation failed with ${ERRORS} error(s) and ${WARNINGS} warning(s)${NC}"
echo -e "${GRAY} Please fix errors before proceeding${NC}"
exit 1
fi
BMAD Orchestrator — Setup Guide
BMAD Method v6 + plannotator integration
Structured AI-driven development with visual plan review at every phase gate.
---
What You Get
Your AI Agent
│
▼
/workflow-init ← bootstrap project
│
▼
Phase 1: Analysis ← /product-brief, /research
│
│ [plannotator review] ← approve before advancing
▼
Phase 2: Planning ← /prd or /tech-spec
│
│ [plannotator review]
▼
Phase 3: Solutioning ← /architecture (Level 2+ only)
│
│ [plannotator review]
▼
Phase 4: Implementation ← /sprint-planning → /dev-storyplannotator opens a visual browser UI after each phase document is created. You annotate, approve, or request changes — then your agent continues to the next phase. Use the same cross-platform control model as JEO: settings configure the platform, rules prevent invalid phase transitions, and hooks enforce them.
---
Quick Start (3 steps)
Step 1 — Install
bash scripts/install.shThis installs plannotator CLI and configures the Claude Code ExitPlanMode hook. Restart Claude Code after running this.
Options:
bash scripts/install.sh --init-project # Also initialize BMAD in current directory
bash scripts/install.sh --skip-plannotator # BMAD scripts only, no plannotator
bash scripts/install.sh --dry-run # Preview without making changesStep 2 — Initialize your project
Run this inside your AI session (Claude Code, Gemini CLI, etc.):
/workflow-initYour agent will ask three questions:
- Project name — e.g.
my-app - Project type —
web-app,mobile-app,api,game,library,other - Project level —
0to4(see level guide below)
This creates:
bmad/config.yaml ← project configuration
docs/bmm-workflow-status.yaml ← workflow tracking
docs/stories/ ← story files will go hereStep 3 — Start working
/workflow-statusYour agent shows your current phase, what's done, and exactly what to run next.
---
Project Level Guide
Choose the level that matches your project size:
| Level | Size | Required phases | Typical duration |
|---|---|---|---|
| 0 | Single fix / 1 story | Tech Spec → Story | Hours |
| 1 | Small feature / 1–10 stories | Tech Spec → Sprint | 1–5 days |
| 2 | Feature set / 5–15 stories | PRD → Architecture → Sprint | 1–3 weeks |
| 3 | Complex integration / 12–40 stories | Brief → PRD → Architecture → Sprints | 3–8 weeks |
| 4 | Enterprise / 40+ stories | Brief → Research → PRD → UX → Architecture → Sprints | 2+ months |
Quick decision:
- Bug fix or config change → Level 0
- New API endpoint or small UI feature → Level 1
- User auth system or payment integration → Level 2
- Third-party platform integration → Level 3
- Major system overhaul → Level 4
---
plannotator Phase Gate Review
After each phase document is created, submit it for review before moving on:
# After /prd creates docs/prd-myapp-2026-02-25.md
bash scripts/phase-gate-review.sh docs/prd-myapp-2026-02-25.md "PRD Review: myapp"
# After /architecture creates docs/architecture-myapp-2026-02-25.md
bash scripts/phase-gate-review.sh docs/architecture-myapp-2026-02-25.mdOr trigger it from inside your AI session:
planno — review the PRD before we proceed to Phase 3What happens in the review UI
1. plannotator opens in your browser automatically
- unless the same document hash already has a terminal review result, in which case the gate is skipped
2. Read through the document 3. Annotate specific sections:
delete— remove a risky or unnecessary elementinsert— add something missingreplace— correct an approachcomment— clarify constraints
4. Choose an outcome:
- Approve → your agent advances to the next phase; doc saved to your configured destination (Obsidian or Bear)
- Request Changes → annotations sent back; agent revises and re-submits
Phase gate reference
| Completing phase | Document type | Gate command |
|---|---|---|
| Phase 1 → 2 | Product Brief | bash scripts/phase-gate-review.sh docs/product-brief-*.md |
| Phase 2 → 3 | PRD or Tech Spec | bash scripts/phase-gate-review.sh docs/prd-*.md |
| Phase 3 → 4 | Architecture | bash scripts/phase-gate-review.sh docs/architecture-*.md |
| Phase 4 wrap-up | Sprint summary | bash scripts/phase-gate-review.sh docs/sprint-status.yaml |
---
Common Commands
Check status anytime
/workflow-statusOutput example:
Project: my-app (web-app, Level 2)
✓ Phase 1: Analysis
✓ product-brief (docs/product-brief-my-app-2026-02-25.md)
→ Phase 2: Planning [CURRENT]
⚠ prd (required - NOT STARTED)
Phase 3: Solutioning
- architecture (required)
Phase 4: Implementation
- sprint-planning (required)
Recommended next step: Run /prd to continueValidate your config
bash scripts/validate-config.shCheck BMAD + plannotator status
bash scripts/check-status.sh---
Workflow by Project Level
Level 0–1 (Fast Track)
/workflow-init → /tech-spec
↓
planno review
↓
/sprint-planning → /dev-storyLevel 2 (Standard Feature)
/workflow-init → /product-brief → /prd
↓
planno review (Phase 2 gate)
↓
/architecture
↓
planno review (Phase 3 gate)
↓
/sprint-planning → /dev-storyLevel 3–4 (Enterprise)
/workflow-init → /product-brief → /research
↓
/prd → /create-ux-design
↓
planno review (Phase 2 gate)
↓
/architecture → /solutioning-gate-check
↓
planno review (Phase 3 gate)
↓
/sprint-planning → /create-story → /dev-story
↓
/code-review (per sprint)---
Notes Auto-Save: Obsidian or Bear (Optional)
Approved phase documents can be auto-saved with YAML frontmatter and [[BMAD Plans]] backlinks.
Setup (choose one or both): 1. Open any plannotator review in your browser 2. Click ⚙️ Settings → Saving tab 3. Toggle ON Obsidian Integration and/or Bear Notes 4. For Obsidian: select your vault from the dropdown 5. For Bear: verify callback works first:
open "bear://x-callback-url/create?title=Test&text=OK"Each approved document saves as:
vault/plannotator/PRD Review myapp - Feb 25, 2026 10-30pm.mdWith frontmatter:
---
created: 2026-02-25T22:30:00.000Z
source: plannotator
tags: [bmad, phase-2, prd, my-app]
---
[[BMAD Plans]]
# PRD: my-app
...---
Scripts Reference
| Script | Purpose | Usage |
|---|---|---|
install.sh | Full setup: plannotator + hooks + scripts | bash scripts/install.sh |
init-project.sh | Initialize BMAD in a project | bash scripts/init-project.sh --name MyApp --type web-app --level 2 |
check-status.sh | Display current workflow status | bash scripts/check-status.sh |
phase-gate-review.sh | Submit doc to plannotator for review | bash scripts/phase-gate-review.sh docs/prd-*.md |
validate-config.sh | Validate YAML config files | bash scripts/validate-config.sh |
---
Troubleshooting
BMAD not detected:
# Check if config exists
ls bmad/config.yaml
# Re-initialize if missing
/workflow-initplannotator doesn't open:
# Check installation
plannotator --version
# Re-install
curl -sSfL https://plannotator.ai/install.sh | shHook not firing on plan exit:
# Re-run hook setup (from plannotator skill)
bash .agent-skills/plannotator/scripts/setup-hook.sh
# Restart Claude Code after thisStatus file out of sync:
# Validate config
bash scripts/validate-config.sh
# Manually edit status
# File: docs/bmm-workflow-status.yaml---
Related Skills
| Skill | Purpose | Install |
|---|---|---|
plannotator | Visual plan & diff review | npx skills add ... --skill plannotator |
ralph | Persistence loop until task completes | npx skills add ... --skill ralph |
vibe-kanban | Visual kanban for agent stories | npx skills add ... --skill vibe-kanban |
jeo | Full orchestration: plan → execute → track | npx skills add ... --skill jeo |
---
Source: BMAD Method · plannotator · skills-template
N:bmad-orchestrator
D:Orchestrates BMAD Method workflows (Analysis → Planning → Solutioning → Implementation). Detects project state, routes to the right phase command, and uses plannotator as a phase gate review tool to approve deliverables before phase transitions.
G:bmad orchestrator workflow planning phase-gate plannotator review implementation
U[4]:
Initialize BMAD workflow for a new or existing project
Check current phase status and get recommended next action
Review phase documents with plannotator before advancing to next phase
Resume interrupted workflows and track progress across all phases
S[6]{n,action,details}:
1,Detect,Check bmad/config.yaml — if missing offer /workflow-init to bootstrap
2,Init,Run /workflow-init → collect project name/type/level(0-4) → create bmad/config.yaml + docs/bmm-workflow-status.yaml
3,Status,Run /workflow-status → parse YAML → display phase progress with ✓/⚠/→ symbols + recommended next command
4,Route,Map project level + completed workflows → recommend /product-brief /prd /tech-spec /architecture /sprint-planning /dev-story
5,Gate,After phase doc created → bash scripts/phase-gate-review.sh <doc> → plannotator opens → Approve or Request Changes
6,Advance,On approval → update workflow_status YAML with file path + plannotator_review:approved → proceed to next phase
R[5]:
Always check project level (0-4) before recommending workflows — level determines required vs optional phases
Run phase gate review before EVERY phase transition — plannotator approval is the quality gate
When plannotator returns changes-requested — revise the document and re-submit before advancing
Keep docs/bmm-workflow-status.yaml updated with output file paths and plannotator_review fields
Levels 0-1 skip Phase 3 (Architecture); Levels 2+ require Architecture before Implementation
# BMAD Method v6 - Project Configuration
# Generated: {{TIMESTAMP}}
# Project: {{PROJECT_NAME}}
# BMAD Version
bmad_version: "6.0.0"
# Project Information
project_name: "{{PROJECT_NAME}}"
project_type: "{{PROJECT_TYPE}}" # web-app, mobile-app, api, game, library, other
project_level: {{PROJECT_LEVEL}} # 0-4 (see documentation for level definitions)
# Output Configuration
output_folder: "docs" # Where to store BMAD documents
stories_folder: "docs/stories" # Where to store user stories
# Language Settings
communication_language: "English" # Language for AI communication
document_output_language: "English" # Language for generated documents
# Optional: Override agent behaviors
# Uncomment and customize as needed
# agent_overrides_folder: "bmad/agent-overrides"
# Optional: Custom templates
# template_overrides:
# prd: "bmad/templates/custom-prd.md"
# tech_spec: "bmad/templates/custom-tech-spec.md"
# Optional: Project-specific settings
# auto_update_status: true
# verbose_mode: false
# git_integration: true
# issue_tracker: "github" # github, jira, linear, etc.
# Project Metadata (optional)
# project_description: "Brief description of your project"
# repository_url: "https://github.com/user/repo"
# team_size: 1
# tech_stack:
# - "technology1"
# - "technology2"
# Sprint Configuration (optional)
# sprint_duration_days: 14
# story_point_scale: "fibonacci" # fibonacci, linear, t-shirt
# velocity_target: 20 # target story points per sprint
# BMAD Method Workflow Status
# Generated: {{TIMESTAMP}}
# Project: {{PROJECT_NAME}}
# Project Information
project_name: "{{PROJECT_NAME}}"
project_type: "{{PROJECT_TYPE}}"
project_level: {{PROJECT_LEVEL}}
communication_language: "English"
output_language: "English"
last_updated: "{{TIMESTAMP}}"
# Workflow Status Tracking
# Status values:
# - "required" - Must be completed to proceed
# - "recommended" - Strongly suggested but not blocking
# - "optional" - Can be skipped without impact
# - "{file-path}" - Completed (path to output file)
# - "skipped" - Explicitly skipped by user
workflow_status:
# ============================================================
# Phase 1: Analysis (Optional but recommended)
# ============================================================
- name: product-brief
phase: 1
status: "optional"
description: "Create comprehensive product brief with vision and high-level requirements"
command: "/product-brief"
- name: brainstorm-project
phase: 1
status: "optional"
description: "Structured brainstorming session for features and solutions"
command: "/brainstorm"
- name: research
phase: 1
status: "optional"
description: "Market analysis, competitive research, and technical investigation"
command: "/research"
# ============================================================
# Phase 2: Planning (Required - choose based on project level)
# ============================================================
- name: prd
phase: 2
status: "{{PRD_STATUS}}" # required for level 2+, recommended for level 1, optional for level 0
description: "Product Requirements Document - comprehensive requirements for multi-feature projects"
command: "/prd"
notes: "Use for Level 2+ projects or when stakeholder alignment needed"
- name: tech-spec
phase: 2
status: "{{TECH_SPEC_STATUS}}" # required for level 0-1, optional for level 2+
description: "Technical Specification - detailed technical design for implementation"
command: "/tech-spec"
notes: "Use for Level 0-1 projects or as supplement to PRD"
- name: create-ux-design
phase: 2
status: "optional"
description: "UX/UI design workflow with wireframes and user flows"
command: "/create-ux-design"
notes: "Recommended for user-facing features"
# ============================================================
# Phase 3: Solutioning (Required for Level 2+)
# ============================================================
- name: architecture
phase: 3
status: "{{ARCHITECTURE_STATUS}}" # required for level 2+, optional for level 0-1
description: "System architecture design with components and integrations"
command: "/architecture"
notes: "Required for Level 2+ projects with architectural complexity"
- name: solutioning-gate-check
phase: 3
status: "optional"
description: "Validate architecture against requirements before implementation"
command: "/solutioning-gate-check"
notes: "Recommended for Level 3+ projects"
# ============================================================
# Phase 4: Implementation (Required)
# ============================================================
# Note: Implementation progress is tracked in sprint-status.yaml
# The workflows below are the entry points to Phase 4
- name: sprint-planning
phase: 4
status: "required"
description: "Break down requirements into epics and stories, create sprint plan"
command: "/sprint-planning"
notes: "Creates sprint-status.yaml and story files"
- name: create-story
phase: 4
status: "conditional"
description: "Create individual user story with acceptance criteria"
command: "/create-story"
notes: "Use to add stories to existing sprint"
- name: dev-story
phase: 4
status: "conditional"
description: "Implement specific user story with code generation"
command: "/dev-story"
notes: "Execute story implementation"
- name: code-review
phase: 4
status: "optional"
description: "Review implemented code for quality and standards"
command: "/code-review"
notes: "Recommended for Level 2+ projects"
# ============================================================
# Status Legend
# ============================================================
# required - Must be completed before proceeding to next phase
# recommended - Strongly suggested for project quality
# optional - Can be skipped based on project needs
# conditional - Required based on context (e.g., sprint active)
# {file-path} - Workflow completed, shows output document
# skipped - User explicitly chose to skip this workflow
#
# plannotator_review - "approved" | "pending" | "changes-requested"
# reviewed_at - ISO 8601 timestamp of last plannotator review
#
# Phase Gate Review (optional but recommended):
# After completing any phase document, run:
# bash scripts/phase-gate-review.sh <doc-file> "<title>"
# This opens plannotator for review before transitioning to next phase.
Related skills
FAQ
What is SSD?
Structured System Design, a meta-framework that embeds TEA (Task-Execute-Architect) cycles within each BMAD phase for automated structural validation.
What verdicts does architect validation produce?
PASS, PASS_WITH_WARNINGS, REVISE, or FAIL, and only PASS or PASS_WITH_WARNINGS opens the human review gate.