BMAD-METHOD/BEST_PRACTICES_SUMMARY.md

24 KiB

BMAD-METHOD Best Practices Summary

Learned from Analyzing the BMAD-METHOD Repository

This document summarizes key best practices and patterns discovered in the BMAD-METHOD codebase that you can apply to your own projects and AI collaboration workflows.


1. Agent Design Patterns

Persona-Driven Agents

Every BMAD agent has a well-defined persona with:

persona:
  role: "Specific role + expertise area"
  identity: "Years of experience + domain expertise"
  communication_style: "How they interact"
  principles: "Core beliefs that guide decisions"

Why this works:

  • Creates consistent agent behavior
  • Sets clear expectations for users
  • Makes agents feel like real experts
  • Guides decision-making through principles

Apply to your agents:

## Agent: Security Auditor

**Role:** Application Security Expert + Penetration Tester
**Identity:** 10+ years securing enterprise applications, CISSP certified
**Style:** Paranoid but practical. Questions everything. Risk-focused.
**Principles:**
- Trust nothing, verify everything
- Defense in depth
- Fail securely
- Security is everyone's job

Menu-Driven Interaction

BMAD agents present numbered menus of available workflows:

Welcome! I'm John, your Product Manager.

Available workflows:
1. *workflow-init - Start a new project
2. *create-prd - Create PRD
3. *create-epics-and-stories - Break down into stories
4. *party-mode - Multi-agent collaboration

Type a number, shortcut (*prd), or ask naturally.

Why this works:

  • Discoverability - users see all capabilities
  • Multiple interaction modes (number, shortcut, natural language)
  • Reduces cognitive load - clear options
  • Self-documenting - menu IS the documentation

Apply to your agents:

  • Always start with a menu introduction
  • Use consistent trigger patterns (*workflow-name)
  • Support natural language AND shortcuts
  • Include descriptions for each option

Critical Actions Pattern

Agents execute "critical actions" on load:

critical_actions:
  - auto_load_config
  - check_workflow_status
  - set_context_from_project_files
  - remember_user_preferences

Why this works:

  • Agents are immediately context-aware
  • Reduces repetitive prompting
  • Ensures consistency across sessions
  • Loads just-in-time information

Apply to your agents:

## Critical Actions (Execute on Load)

1. Load user configuration (name, skill level, preferences)
2. Scan project directory for existing artifacts
3. Determine current project phase
4. Set appropriate context
5. Present relevant menu based on phase

2. Workflow Architecture

Structured Workflow Files

Each workflow has a clear structure:

workflow/
├── workflow.yaml          # Workflow definition
├── instructions.md        # Step-by-step guide for agent
├── template.md            # Output document template
├── checklist.md           # Validation checklist
└── data/
    └── reference-data.csv # Data-driven behavior

Why this works:

  • Separation of concerns (config, logic, output, validation)
  • Reusable templates
  • Data-driven customization
  • Quality assurance built-in

Apply to your workflows:

  1. Define workflow (inputs, outputs, steps)
  2. Create instructions (how agent should execute)
  3. Design template (consistent output format)
  4. Add validation (checklist to verify quality)

Scale-Adaptive Workflows

BMAD workflows adapt to project complexity:

scale_adaptive:
  level_0_1: quick_flow      # Bug fixes, small features
  level_2: bmad_method       # Products, platforms
  level_3_4: enterprise      # Large-scale systems

Decision matrix:

Complexity Users Timeline Documentation Test Strategy
0-1 1-100 Days Tech spec Basic
2 100-10K Weeks PRD + Arch Standard
3-4 10K+ Months Full suite Comprehensive

Why this works:

  • Prevents over-planning simple tasks
  • Ensures thoroughness for complex projects
  • Saves time and tokens
  • Automatic adjustment based on assessment

Apply to your workflows:

## Workflow: Security Review

**Quick (Level 0-1):**
- Basic OWASP checklist
- Automated scan only

**Standard (Level 2):**
- Threat modeling
- Manual code review
- Penetration testing

**Enterprise (Level 3-4):**
- Full threat modeling (STRIDE)
- Security architecture review
- Compliance audit (SOC2, ISO27001)
- Penetration testing + red team

Four-Phase Methodology

BMAD organizes workflows into phases:

Phase 1: Analysis (Optional)
├── brainstorming
├── research
└── product-brief

Phase 2: Planning (Required)
├── PRD or tech-spec
└── epic/story breakdown

Phase 3: Solutioning (Track-dependent)
├── architecture
├── UX design
└── test strategy

Phase 4: Implementation (Iterative)
├── story development
├── code review
└── testing

Why this works:

  • Clear progression (left-to-right workflow)
  • Prevents jumping to implementation prematurely
  • Artifacts from each phase feed the next
  • Allows checkpoints and course corrections

Apply to your domains:

Marketing Campaign:

  1. Research (market analysis, competitor review)
  2. Planning (campaign brief, messaging)
  3. Creation (copy, creative, landing pages)
  4. Execution (launch, monitor, optimize)

Data Science Project:

  1. Discovery (problem definition, data exploration)
  2. Planning (hypothesis, metrics, approach)
  3. Modeling (feature engineering, model building)
  4. Deployment (productionize, monitor, iterate)

3. Collaboration Patterns

Sequential Handoffs

Agents work in sequence, each producing artifacts for the next:

PM → PRD.md
  ↓
Architect → architecture.md (reads PRD)
  ↓
UX Designer → ux-design.md (reads PRD)
  ↓
Developer → code (reads PRD + Architecture + UX)

Why this works:

  • Clear dependencies
  • Artifacts are contracts between agents
  • Each agent adds their expertise layer
  • Prevents rework from missing context

Apply to your agent workflows:

  • Define artifact formats (templates)
  • Specify what each agent consumes vs. produces
  • Version artifacts (PRD v1 → PRD v2)
  • Track dependencies in workflow status

Party Mode (Multi-Agent Collaboration)

All agents collaborate on complex decisions:

party_mode:
  participants:
    - PM (facilitator)
    - Architect (technical feasibility)
    - Developer (implementation complexity)
    - UX Designer (user impact)
    - Security Expert (risk assessment)

  process:
    1. PM presents problem
    2. Each agent shares perspective
    3. Agents debate trade-offs
    4. Human makes final decision

Why this works:

  • Diverse perspectives on complex problems
  • Uncovers issues single agents miss
  • More creative solutions
  • Human retains decision authority

Apply to your workflows:

Example: Choosing a tech stack

  • Architect: "I recommend microservices for scalability"
  • Developer: "Team is small, monolith is faster to start"
  • Security: "Microservices increase attack surface"
  • PM: "MVP timeline is 3 months, complexity is a risk"
  • Decision: Start with modular monolith, extract services later

Just-In-Time Context Loading

BMAD loads context only when needed:

# Anti-pattern: Load everything
context = load_entire_prd() + load_all_stories() + load_full_architecture()
# → 50K tokens, most irrelevant

# BMAD pattern: Load just-in-time
current_story = load_story("story-12")
relevant_prd_section = load_prd_section("user-management")
relevant_arch = load_architecture_component("auth-service")
# → 2K tokens, all relevant

Why this works:

  • 90%+ token savings
  • Faster processing
  • More focused responses
  • Lower costs

Apply to your workflows:

## Context Loading Strategy

**Phase 2 (Planning):** Load full context
- All research
- All market data
- All user feedback

**Phase 4 (Implementation):** Load relevant context only
- Current story
- Related PRD section
- Relevant architecture component
- Affected code files only

4. Configuration Management

Update-Safe Customization

BMAD separates core files from user customizations:

.bmad/
├── bmm/agents/pm.agent.yaml          # Core (never edit)
└── _cfg/
    └── agents/pm.customize.yaml      # Your changes

Customization file:

agent:
  metadata:
    name: "Sarah"  # Override default "John"

  persona:
    additional_expertise: "SaaS products, B2B sales"

  memory:
    - "User prefers Agile over Waterfall"
    - "Project uses TypeScript + React"

Why this works:

  • Updates don't break your customizations
  • Clear separation of concerns
  • Easy to version control your changes
  • Can reset to defaults easily

Apply to your agents:

  1. Base template (version controlled, shared)
  2. User overrides (gitignored or per-user)
  3. Project-specific config (per-project folder)

Layered Configuration

BMAD has 4 configuration levels:

1. Global defaults (framework level)
   ↓
2. Module defaults (bmm, bmb, cis)
   ↓
3. Project config (per-project settings)
   ↓
4. Agent customization (per-agent overrides)

Priority: Agent > Project > Module > Global

Why this works:

  • Sensible defaults out-of-the-box
  • Customize per-project or per-agent
  • Override only what you need
  • Clear precedence rules

Apply to your systems:

# global-config.yaml
output_language: "English"
skill_level: "Intermediate"

# project-config.yaml
output_language: "Spanish"  # Override global

# agent-config/pm.yaml
communication_style: "Casual"  # Override for this agent

Multi-Language Support

BMAD separates communication from output:

config:
  communication_language: "Spanish"       # Agent talks to me in Spanish
  document_output_language: "English"     # But generates docs in English

Why this works:

  • International teams with English docs
  • Personal comfort vs. team standards
  • Separate concerns (interaction vs. artifacts)

Apply to your agents:

## Language Configuration

**Communication:** The language I use to talk with you
**Output:** The language I generate documents in

Examples:
- Communicate in German, output in English (EU team, English docs)
- Communicate in English, output in Japanese (offshore team)
- Both in Spanish (Spanish-language product)

5. Document Management

Document Sharding

For large documents, BMAD splits by headings:

Whole PRD (50K tokens):

PRD.md
├── Executive Summary
├── User Stories
├── Epic: User Management (5K tokens)
├── Epic: Task Management (8K tokens)
├── Epic: Collaboration (7K tokens)
└── ... (10 more sections)

Sharded PRD (load only what you need):

docs/
├── PRD.md                          # Main file with links
└── PRD/
    ├── epic-user-management.md     # 5K tokens
    ├── epic-task-management.md     # 8K tokens
    └── epic-collaboration.md       # 7K tokens

Workflow loads only relevant shard:

Story: "Add password reset"
→ Load: epic-user-management.md (5K tokens)
→ Skip: epic-task-management.md (8K tokens saved)

Why this works:

  • 90%+ token savings in implementation
  • Faster loading
  • Lower costs
  • Maintains full document for reference

Apply to your documents:

  1. Generate full document in planning phase
  2. Split by logical sections (epics, components, modules)
  3. Load only relevant sections during implementation
  4. Keep full document for reviews/updates

Input Pattern Abstraction

BMAD workflows auto-detect whole vs. sharded documents:

inputs:
  - name: prd
    pattern:
      whole: "{output_folder}/PRD.md"
      sharded: "{output_folder}/PRD/epic-*.md"

    load_strategy:
      - try: whole
        if_exists: load_entire_file
      - try: sharded
        if_exists: load_matching_shard_for_current_story
      - else: ask_user_for_prd_location

Why this works:

  • Workflows work with either format
  • No manual configuration needed
  • Backward compatible
  • Graceful fallbacks

Apply to your workflows:

## Document Loading Strategy

**Step 1:** Try to load whole document
- If exists: Use it
- If not: Continue to Step 2

**Step 2:** Try to load sharded documents
- If exists: Load relevant shard only
- If not: Continue to Step 3

**Step 3:** Ask user
- "I couldn't find the PRD. Please provide the path."

6. Quality Assurance

Validation Checklists

Every major workflow has a validation checklist:

PRD Validation Checklist:

## Completeness
- [ ] Executive Summary (1 paragraph)
- [ ] Problem Statement (clear, measurable)
- [ ] User Personas (3-5, detailed)
- [ ] Success Metrics (quantified)
- [ ] Functional Requirements (granular, testable)

## Quality
- [ ] Requirements are specific (not vague)
- [ ] Acceptance criteria are testable
- [ ] Risks are identified
- [ ] Timeline is realistic

## Alignment
- [ ] Aligns with business goals
- [ ] User needs are addressed
- [ ] Technical constraints considered

Why this works:

  • Catches gaps before implementation
  • Ensures consistency across projects
  • Teachable moments (users learn what "good" looks like)
  • Reduces rework

Apply to your workflows:

  1. Create checklist for each deliverable
  2. Run validation workflow before moving to next phase
  3. Use checklist as a teaching tool
  4. Update checklist based on lessons learned

Schema Validation

BMAD validates agent definitions against schemas:

// Agent schema validation
const agentSchema = {
  metadata: { required: ['id', 'name', 'title', 'module'] },
  persona: { required: ['role', 'identity', 'communication_style', 'principles'] },
  menu: {
    type: 'array',
    items: {
      required: ['trigger', 'description'],
      oneOf: ['workflow', 'exec', 'tmpl', 'data', 'action']
    }
  }
};

validateAgent(agentFile, agentSchema);

Why this works:

  • Catches errors before runtime
  • Ensures consistency across agents
  • Documentation through types
  • Easy to onboard new contributors

Apply to your systems:

  • Define schemas for agents, workflows, templates
  • Validate before deployment
  • Use TypeScript/JSON Schema for type safety
  • Run validation in CI/CD

7. Developer Experience

Comprehensive Testing

BMAD has multiple test layers:

# Schema validation
npm run test:schemas          # Validate YAML against schemas

# Installation tests
npm run test:install          # Test compilation process

# Integration tests
npm run validate:bundles      # Verify web bundles work

# Code quality
npm run lint                  # ESLint + YAML lint
npm run format:check          # Prettier

# All checks
npm test                      # Run everything

Why this works:

  • Catch issues before users hit them
  • Fast feedback loop
  • Multiple validation layers
  • Automated quality gates

Apply to your projects:

  1. Schema validation (structure)
  2. Unit tests (logic)
  3. Integration tests (workflows end-to-end)
  4. Linting (code quality)
  5. Pre-commit hooks (prevent bad commits)

Self-Documenting Code

BMAD uses YAML for agent definitions (human-readable):

# Anti-pattern: Opaque code
agent = Agent(
  "pm",
  "John",
  lambda x: x.role == "PM",
  [Workflow("prd", "Create PRD", prd_handler)]
)

# BMAD pattern: Self-documenting YAML
agent:
  metadata:
    name: John
    title: Product Manager

  menu:
    - trigger: create-prd
      workflow: "path/to/prd/workflow.yaml"
      description: "Create Product Requirements Document"

Why this works:

  • Non-developers can read and modify
  • Version control friendly (clear diffs)
  • Self-documenting (structure = documentation)
  • Easy to generate/validate

Apply to your systems:

  • Use YAML/JSON for configuration
  • Clear naming conventions
  • Comments for complex logic only
  • Structure reflects intent

Modular Architecture

BMAD is organized into clear modules:

src/
├── core/                    # Framework (agents, workflows, tasks)
│   ├── agents/              # BMad Master orchestrator
│   ├── workflows/           # Core workflows (party-mode)
│   └── tasks/               # Reusable task units
│
├── modules/
│   ├── bmm/                 # Software development
│   ├── bmb/                 # Agent builder
│   ├── cis/                 # Creative intelligence
│   └── custom/              # User-created modules
│
├── utility/                 # Shared utilities
│   ├── models/fragments/    # XML components
│   └── templates/           # Reusable templates
│
└── tools/
    ├── cli/                 # Installation CLI
    └── bundlers/            # Web bundle generation

Why this works:

  • Clear boundaries (core vs. modules vs. tools)
  • Modules can be installed independently
  • Easy to add new modules
  • Shared utilities reduce duplication

Apply to your projects:

your-project/
├── core/               # Framework, base classes
├── modules/            # Domain-specific functionality
│   ├── module-a/
│   ├── module-b/
│   └── module-c/
├── shared/             # Shared utilities
└── tools/              # CLI tools, scripts

8. Deployment Strategies

Multi-Target Compilation

BMAD compiles agents for different targets:

// Single agent definition (YAML)
const agent = loadAgentYaml('pm.agent.yaml');

// Compile for different targets
compileForIDE(agent, 'claude-code');    // → .md with filesystem handlers
compileForIDE(agent, 'cursor');         // → .md with Cursor-specific syntax
compileForWeb(agent, 'gemini');         // → .xml for Gemini Gems
compileForWeb(agent, 'chatgpt');        // → Custom GPT format

Why this works:

  • Write once, deploy anywhere
  • Target-specific optimizations
  • Maintain single source of truth
  • Easy to add new targets

Apply to your agents:

  1. Define agents in platform-agnostic format (YAML)
  2. Create target-specific compilers
  3. Generate optimized artifacts per platform
  4. Automate compilation in build process

Dependency Resolution

BMAD automatically resolves cross-module dependencies:

# Workflow in BMM module references CIS module
workflow:
  dependencies:
    - module: cis
      workflow: brainstorming

Bundler resolves:

  1. Scan all workflows
  2. Identify cross-module references
  3. Vendor (copy) dependencies into bundle
  4. Embed inline to create self-contained artifact

Why this works:

  • Self-contained bundles (no external deps)
  • Automatic detection (no manual tracking)
  • Works across modules
  • No broken links

Apply to your build system:

  1. Parse all workflow/agent files
  2. Build dependency graph
  3. Resolve and bundle dependencies
  4. Validate no missing dependencies
  5. Generate self-contained artifacts

Web Bundle Strategy

BMAD creates dual deployment modes:

IDE Installation (Filesystem-aware):

  • Agents load files from project folder
  • Read/write workflows
  • Customization via _cfg/ folder
  • Full functionality

Web Bundles (Self-contained):

  • Everything embedded inline
  • No file system access
  • Dependencies bundled
  • Limited but portable

Trade-offs:

Feature IDE Web Bundle
File access Yes No
Customization Easy Manual
Multi-agent Yes ⚠️ Limited
Cost $
Setup Complex Easy

Why this works:

  • Best tool for the job
  • Planning in web (cheaper)
  • Implementation in IDE (full power)
  • Users choose based on needs

Apply to your deployment:

  1. Identify use cases (planning vs. implementation)
  2. Create appropriate deployment modes
  3. Guide users to right mode
  4. Allow hybrid workflows (web planning → IDE implementation)

9. Community & Contribution

Clear Contribution Guidelines

BMAD has comprehensive contribution docs:

CONTRIBUTING.md includes:

  • Code style guide
  • PR size limits (200-400 lines ideal, 800 max)
  • Commit message conventions (feat:, fix:, docs:)
  • Testing requirements
  • Documentation standards

Why this works:

  • Consistent codebase
  • Easy code reviews
  • Faster merges
  • Better collaboration

Apply to your projects:

  1. Document coding standards
  2. Set PR size expectations
  3. Require tests for new features
  4. Enforce via CI/CD
  5. Provide templates (PR, issue)

Atomic Commits

BMAD uses conventional commits:

# Good commits
feat(bmm): add course-correction workflow
fix(bundler): resolve cross-module dependencies correctly
docs(readme): update installation instructions

# Bad commits
update stuff
fixes
WIP

Why this works:

  • Clear history (what changed, why)
  • Easier to review
  • Can generate changelogs automatically
  • Easy to revert specific changes

Apply to your workflow:

  1. One logical change per commit
  2. Use conventional commit format
  3. Write clear commit messages
  4. Small, frequent commits
  5. Use tools like commitlint

10. Key Takeaways

Top 10 Best Practices

  1. Persona-Driven Agents - Give agents identity, principles, and communication style
  2. Menu-Driven UX - Let users discover capabilities through menus
  3. Scale-Adaptive - Adjust complexity based on project needs
  4. Just-In-Time Context - Load only relevant information
  5. Update-Safe Customization - Separate core from user configs
  6. Validation Checklists - Ensure quality before moving forward
  7. Multi-Target Compilation - Write once, deploy anywhere
  8. Modular Architecture - Clear boundaries, independent modules
  9. Comprehensive Testing - Multiple validation layers
  10. Human Amplification - AI augments, doesn't replace human decisions

Anti-Patterns to Avoid

Monolithic agents - One agent trying to do everything Specialized agents - Each agent has a clear domain

Loading full context always - Wasting tokens Just-in-time loading - Load only what's needed

Hardcoded instructions - Difficult to maintain YAML-based config - Easy to read and modify

No validation - Quality issues slip through Built-in checklists - Validate before proceeding

Manual artifact handoffs - Prone to errors Structured file formats - Automatic detection

All-or-nothing planning - Overkill for small tasks Scale-adaptive - Right level of planning per project

Editing core files - Breaks on updates Customization layer - Survives updates

One deployment target - Locked in Multi-target compilation - Deploy anywhere

Vague commit messages - Hard to understand history Conventional commits - Clear, structured history

Large, infrequent commits - Hard to review Small, atomic commits - Easy to review and revert


Next Steps

Apply These Practices:

  1. Review your agents - Do they have clear personas and principles?
  2. Check your workflows - Are they scale-adaptive?
  3. Audit context loading - Are you loading too much?
  4. Add validation - Create checklists for deliverables
  5. Separate customizations - Set up update-safe config
  6. Improve testing - Add schema validation, linting
  7. Modularize - Break monoliths into clear modules
  8. Document - Make code self-documenting
  9. Optimize deployment - Create target-specific bundles
  10. Contribute - Share your learnings with the community

Resources


These best practices are derived from analyzing the BMAD-METHOD v6-alpha codebase. Apply them to build better AI collaboration systems!