Configuration Guide

BMAD Skills uses a modern configuration system with skill registry, hooks, and project-level settings. This guide covers all configuration options.


Configuration Files

BMAD Skills uses three primary configuration files:

File Location Purpose
Skill Registry bmad-skills/settings.json Skill definitions and hooks
Project Config {project}/bmad/config.yaml Project-specific settings
Workflow Status {project}/docs/bmm-workflow-status.yaml Progress tracking

Project settings are created by the /workflow-init command and customize behavior for each project.


Skill Registry Configuration

The skill registry (bmad-skills/settings.json) defines all available skills and hooks. This file is managed by the BMAD Skills package.

Structure

{
  "description": "BMAD Skills Configuration for Claude Code",
  "hooks": {
    "SessionStart": [
      {
        "type": "command",
        "command": "bash $SKILL_DIR/hooks/bmad-session-start.sh"
      }
    ],
    "PreToolUse": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "bash $SKILL_DIR/hooks/bmad-pre-tool.sh"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "bash $SKILL_DIR/hooks/bmad-post-tool.sh"
          }
        ]
      }
    ]
  },
  "skills": {
    "bmad-orchestrator": {
      "path": "./bmad-orchestrator",
      "description": "Core BMAD workflow orchestrator"
    },
    "business-analyst": {...},
    "product-manager": {...},
    ...
  }
}

Available Skills

All skills are automatically registered and available:

Skill Phase Purpose
bmad-orchestrator Core Workflow initialization and status
business-analyst Phase 1 Product discovery and analysis
product-manager Phase 2 Requirements and planning
system-architect Phase 3 System architecture design
scrum-master Phase 4 Sprint planning
developer Phase 4 Story implementation
ux-designer Cross-phase UX design
creative-intelligence Cross-phase Brainstorming and research
builder Meta Create custom skills

SKILL.md Format (Anthropic Specification)

Each skill follows the Anthropic specification with YAML frontmatter:

---
name: skill-name           # lowercase, hyphens, max 64 chars
description: |             # max 1024 chars, include trigger words
  What it does AND when to use it. Include trigger
  phrases like "/command" or key actions.
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, TodoWrite
---

# Skill Name

[Markdown content under 5K tokens]

Key Requirements:


Hooks Configuration

BMAD Skills uses hooks to integrate with Claude Code’s lifecycle events. Hooks are defined in settings.json and executed automatically.

Hook Events Reference

The current Claude Code hook system supports the following events:

Event When it Fires Can Block?
SessionStart Session begins or resumes No
UserPromptSubmit User submits a prompt Yes
PreToolUse Before any tool executes Yes
PostToolUse After a tool completes No
SubagentStart Subagent spawned No
SubagentStop Subagent completes Yes
TaskCompleted Task marked complete Yes
Stop Claude finishes responding Yes
PreCompact Before context compaction No
SessionEnd Session terminates No

BMAD uses three of these:

SessionStart Hook

Executed when a new Claude Code session starts. Loads BMAD environment variables and project context.

File: bmad-skills/hooks/bmad-session-start.sh

Actions:

PreToolUse Hook

Executed before any tool is used. Validates and logs tool usage. Uses matcher field to optionally filter by tool name.

File: bmad-skills/hooks/bmad-pre-tool.sh

Actions:

PostToolUse Hook

Executed after a tool completes. Tracks workflow progress.

File: bmad-skills/hooks/bmad-post-tool.sh

Actions:

Example Hook Output:

BMAD: Writing to BMAD-managed path: /project/docs/prd-myapp-2025-01-15.md
BMAD: PRD created - Phase 2 (Planning) progress

Project Configuration

Project config is created by /workflow-init at {project}/bmad/config.yaml.

Full Configuration

# BMAD Project Configuration
# Generated by bmad-orchestrator skill

project:
  name: "My Project"
  type: "web-app"  # web-app, mobile-app, api, game, library, cli, other
  level: 2         # 0-4: see level definitions below
  description: "Brief project description"

# Project Levels:
# 0: Single atomic change (1 story)
# 1: Small feature (1-10 stories)
# 2: Medium feature set (5-15 stories)
# 3: Complex integration (12-40 stories)
# 4: Enterprise expansion (40+ stories)

paths:
  output_folder: "docs"
  stories_folder: "docs/stories"
  status_file: "docs/bmm-workflow-status.yaml"
  sprint_file: "docs/sprint-status.yaml"

workflow:
  # Phase requirements based on project level
  phase_1_analysis:
    product_brief: "recommended"  # required, recommended, optional, skip
    research: "optional"
    brainstorm: "optional"

  phase_2_planning:
    prd: "required"        # required for level 2+, recommended for level 1
    tech_spec: "optional"  # required for level 0-1
    ux_design: "recommended"

  phase_3_solutioning:
    architecture: "required"  # required for level 2+
    gate_check: "recommended"

  phase_4_implementation:
    sprint_planning: "required"
    stories: "required"

subagents:
  # Subagent configuration for parallel execution
  max_parallel: 4
  default_type: "general-purpose"

  # Skill-specific subagent allocations
  research_agents: 4
  section_agents: 4
  component_agents: 4
  story_agents: 4

metadata:
  created: "2025-01-15T10:00:00Z"
  bmad_version: "7.0.0"
  last_updated: "2025-01-15T10:00:00Z"

Project Level Details

The project level determines which workflows are required:

Level Scope Stories Required Docs
0 Single atomic change 1 Tech Spec only
1 Small feature 1-10 Tech Spec + Sprint Planning
2 Medium feature set 5-15 PRD + Architecture + Sprint Planning
3 Complex integration 12-40 PRD + Architecture + Sprint Planning
4 Enterprise expansion 40+ PRD + Architecture + Sprint Planning + UX

Planning Requirements by Level:

Project Directory Structure

After initialization, your project will have:

your-project/
├── bmad/
│   ├── config.yaml          # Project configuration
│   ├── context/             # Shared context for subagents
│   └── outputs/             # Subagent output files
├── docs/
│   ├── bmm-workflow-status.yaml  # Workflow progress tracking
│   ├── sprint-status.yaml        # Sprint tracking (Phase 4)
│   ├── stories/                  # User story documents
│   ├── product-brief-*.md        # Phase 1 outputs
│   ├── prd-*.md                  # Phase 2 outputs
│   ├── tech-spec-*.md            # Phase 2 outputs
│   └── architecture-*.md         # Phase 3 outputs
└── .claude/
    └── commands/bmad/            # Project-specific commands

Key Directories:

Customizing Paths

Change where BMAD writes files:

paths:
  output_folder: "documentation"
  stories_folder: "documentation/user-stories"
  status_file: "documentation/workflow-status.yaml"
  sprint_file: "documentation/sprint-status.yaml"

Subagent Configuration

BMAD Skills leverage parallel subagents to maximize the 200K token context window per agent. Configure subagent behavior in bmad/config.yaml.

Configuration Options

subagents:
  # Maximum parallel agents to launch
  max_parallel: 4

  # Default agent type: general-purpose, Explore, Plan, Bash
  default_type: "general-purpose"

  # Skill-specific allocations
  research_agents: 4      # For creative-intelligence research
  section_agents: 4       # For document section generation
  component_agents: 4     # For architecture components
  story_agents: 4         # For parallel story creation

Parallel Execution Patterns

Fan-Out Research Pattern:

Parallel Section Generation:

Component-Based Architecture:

Context Sharing

Subagents coordinate via shared files:

Input Context: bmad/context/

Output Files: bmad/outputs/

Example:

# Agent 1 reads:
bmad/context/shared-context.md  # Project overview
bmad/context/requirements.yaml  # What to build

# Agent 1 writes:
bmad/outputs/authentication-component.md

# Main context synthesizes all outputs

Adjusting Agent Count

For smaller projects or faster iteration:

subagents:
  max_parallel: 2          # Use 2 agents instead of 4
  research_agents: 2
  section_agents: 2

For maximum throughput on complex projects:

subagents:
  max_parallel: 6          # Use up to 6 parallel agents
  research_agents: 6
  section_agents: 6

Advanced Configuration

Multiple Projects with Different Settings

You can have different settings per project by modifying each project’s bmad/config.yaml:

Project A (complex enterprise project):

project:
  level: 4
workflow:
  phase_2_planning:
    prd: "required"
    tech_spec: "required"
    ux_design: "required"
subagents:
  max_parallel: 6

Project B (fast iteration):

project:
  level: 1
workflow:
  phase_2_planning:
    tech_spec: "required"
    prd: "skip"
subagents:
  max_parallel: 2

Team Configuration

For teams, consider:

  1. Project config in git - Version-controlled project settings
  2. Shared subagent patterns - Consistent parallel execution approach
  3. Custom skills in repo - Share custom BMAD skills via repository

Example: Add project config to git

# Add to version control
git add bmad/config.yaml
git add bmad/context/
git commit -m "Add BMAD project configuration and shared context"

Workflow Customization

Adjust workflow requirements per project needs:

workflow:
  phase_1_analysis:
    product_brief: "skip"      # Skip if requirements are clear
    research: "required"       # But require research

  phase_2_planning:
    prd: "required"
    tech_spec: "required"      # Require both for complex projects
    ux_design: "required"

  phase_3_solutioning:
    architecture: "required"
    gate_check: "required"     # Add mandatory gate checks

File Locations Reference

BMAD Skills Package Structure

bmad-skills/
├── settings.json                # Skill registry and hooks
├── CLAUDE.md                    # User-facing activation guide
├── SUBAGENT-PATTERNS.md         # Subagent architecture patterns
├── hooks/                       # Lifecycle hooks
│   ├── bmad-session-start.sh
│   ├── bmad-pre-tool.sh
│   └── bmad-post-tool.sh
├── bmad-orchestrator/           # Core orchestrator
│   ├── SKILL.md
│   ├── REFERENCE.md
│   ├── scripts/
│   ├── templates/
│   └── resources/
├── business-analyst/            # Phase 1 skill
│   ├── SKILL.md
│   └── ...
├── product-manager/             # Phase 2 skill
├── system-architect/            # Phase 3 skill
├── scrum-master/                # Phase 4 skill
├── developer/                   # Phase 4 skill
├── ux-designer/                 # Cross-phase skill
├── creative-intelligence/       # Cross-phase skill
├── builder/                     # Meta skill
├── shared/                      # Shared utilities
│   ├── config.template.yaml
│   └── helpers.md
└── examples/                    # Example templates

After Project Init

your-project/
├── bmad/
│   ├── config.yaml              # Project configuration
│   ├── context/                 # Shared subagent context
│   │   ├── shared-context.md
│   │   ├── requirements.yaml
│   │   └── constraints.md
│   └── outputs/                 # Subagent outputs
│       ├── agent-1-output.md
│       ├── agent-2-output.md
│       └── synthesis.md
├── docs/
│   ├── bmm-workflow-status.yaml # Workflow status
│   ├── sprint-status.yaml       # Sprint tracking
│   ├── product-brief-*.md       # Phase 1 outputs
│   ├── prd-*.md                 # Phase 2 outputs
│   ├── tech-spec-*.md           # Phase 2 outputs
│   ├── architecture-*.md        # Phase 3 outputs
│   └── stories/                 # User stories
│       ├── STORY-001.md
│       ├── STORY-002.md
│       └── ...
└── .claude/
    └── commands/bmad/           # Project-specific commands

Skill Templates and Resources

Each BMAD skill contains its own templates and resources in its directory.

Template Location

Templates are located within each skill:

bmad-skills/
├── bmad-orchestrator/templates/
│   └── config.template.yaml
├── business-analyst/templates/
│   └── product-brief.template.md
├── product-manager/templates/
│   ├── prd.template.md
│   └── tech-spec.template.md
├── system-architect/templates/
│   └── architecture.template.md
└── shared/
    ├── config.template.yaml
    └── helpers.md

Template Variables

Templates use `` placeholders:

Variable Description
`` Project name from config
`` Project type (web-app, api, etc.)
`` Project level (0-4)
`` Current date
`` Current timestamp
`` Workflow status value

Shared Helpers

The shared helpers file (bmad-skills/shared/helpers.md) contains reusable patterns:


Validation and Troubleshooting

YAML Validation

Use the builder skill to validate configuration:

# Validate project config
bash bmad-skills/builder/scripts/validate-config.sh bmad/config.yaml

# Validate workflow status
bash bmad-skills/builder/scripts/validate-config.sh docs/bmm-workflow-status.yaml

Common YAML Issues

Invalid indentation:

# Wrong (tabs or 4 spaces)
project:
    name: "MyApp"

# Correct (2 spaces)
project:
  name: "MyApp"

Missing quotes for special characters:

# Wrong
description: Project with: colons

# Correct
description: "Project with: colons"

Incorrect list syntax:

# Wrong
allowed-tools: Read, Write, Edit

# Correct
allowed-tools:
  - Read
  - Write
  - Edit

Troubleshooting Configuration

Config Not Loading

Symptoms: Commands don’t recognize your settings

Fixes:

  1. Verify bmad/config.yaml exists in project root
  2. Validate YAML syntax with validation script
  3. Check for required fields: project, paths, workflow
  4. Review hook output for environment variable issues

Hook Not Executing

Symptoms: Environment variables not set, no hook output

Fixes:

  1. Verify hooks are executable: chmod +x bmad-skills/hooks/*.sh
  2. Check settings.json has correct hook paths
  3. Review $SKILL_DIR environment variable is set
  4. Test hook manually: bash bmad-skills/hooks/bmad-session-start.sh

Invalid YAML

Symptoms: “YAML parse error” messages

Fixes:

  1. Check indentation (use 2 spaces, not tabs)
  2. Quote strings with special characters
  3. Use online YAML validator (yamllint.com)
  4. Run validation script: bash bmad-skills/builder/scripts/validate-config.sh

Settings Not Applied

Symptoms: Workflow requirements not respected

Fixes:

  1. Verify correct project level is set
  2. Check workflow status file matches project level
  3. Ensure bmad-orchestrator reads config correctly
  4. Review workflow section in config.yaml

Subagents Not Launching

Symptoms: Parallel execution not happening

Fixes:

  1. Check max_parallel is set in config
  2. Verify Task tool is available
  3. Review subagent output in bmad/outputs/
  4. Check context files exist in bmad/context/

Best Practices

1. Version Control Project Config

git add bmad/config.yaml
git add docs/bmm-workflow-status.yaml
git commit -m "Add BMAD project configuration"

This ensures team members have consistent project settings and can track workflow progress.

2. Use Project Level Appropriately

Match project level to actual complexity:

Don’t over-plan small projects or under-plan large ones.

3. Configure Subagents Based on Complexity

Adjust parallel agent count to match project needs:

More agents = more context but requires coordination.

4. Use Context Directory for Coordination

When using subagents, always:

  1. Write shared context to bmad/context/
  2. Each agent reads shared context
  3. Each agent writes to bmad/outputs/
  4. Main context synthesizes results

5. Keep SKILL.md Under 5K Tokens

When creating custom skills:

6. Update Workflow Status Regularly

After completing each workflow, update status file:

phase_2_planning:
  prd: "docs/prd-myapp-2025-01-15.md"  # Mark complete with path

This enables accurate /status reporting.


Quick Reference

Essential Configuration Tasks

Initialize BMAD in a project:

# In your project directory
/workflow-init

Check workflow status:

/workflow-status
# or
/status

Change project level:

# bmad/config.yaml
project:
  level: 3  # Update to match complexity

Configure subagents:

# bmad/config.yaml
subagents:
  max_parallel: 6
  research_agents: 6
  section_agents: 6

Customize output paths:

# bmad/config.yaml
paths:
  output_folder: "documentation"
  stories_folder: "documentation/stories"

Adjust workflow requirements:

# bmad/config.yaml
workflow:
  phase_2_planning:
    prd: "required"
    tech_spec: "required"
    ux_design: "recommended"

Configuration File Locations

File Purpose When to Edit
bmad-skills/settings.json Skill registry Rarely (managed by package)
bmad/config.yaml Project settings At initialization, as needs change
docs/bmm-workflow-status.yaml Progress tracking Updated by workflows automatically

Validation Commands

# Validate project config
bash bmad-skills/builder/scripts/validate-config.sh bmad/config.yaml

# Check hooks are executable
ls -la bmad-skills/hooks/

# Test session start hook
bash bmad-skills/hooks/bmad-session-start.sh

Next Steps