9.6 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	BMAD Module Structure Guide
What is a Module?
A BMAD module is a self-contained package of agents, workflows, tasks, and resources that work together to provide specialized functionality. Think of it as an expansion pack for the BMAD Method.
Module Architecture
Core Structure
# SOURCE MODULE (in BMAD-METHOD project)
src/modules/{module-code}/
├── agents/                        # Agent definitions (.agent.yaml)
├── workflows/                     # Workflow folders
├── tasks/                         # Task files
├── tools/                         # Tool files
├── templates/                     # Shared templates
├── data/                          # Static data
├── _module-installer/             # Installation configuration
│   ├── install-config.yaml  # Installation questions & config
│   ├── installer.js              # Optional custom install logic
│   └── assets/                   # Files to copy during install
└── README.md                      # Module documentation
# INSTALLED MODULE (in target project)
{project-root}/bmad/{module-code}/
├── agents/                        # Compiled agent files (.md)
├── workflows/                     # Workflow instances
├── tasks/                         # Task files
├── tools/                         # Tool files
├── templates/                     # Templates
├── data/                          # Module data
├── config.yaml                    # Generated from install-config.yaml
└── README.md                      # Module documentation
Module Types by Complexity
Simple Module (1-2 agents, 2-3 workflows)
Perfect for focused, single-purpose tools.
Example: Code Review Module
- 1 Reviewer Agent
 - 2 Workflows: quick-review, deep-review
 - Clear, narrow scope
 
Standard Module (3-5 agents, 5-10 workflows)
Comprehensive solution for a domain.
Example: Project Management Module
- PM Agent, Scrum Master Agent, Analyst Agent
 - Workflows: sprint-planning, retrospective, roadmap, user-stories
 - Integrated component ecosystem
 
Complex Module (5+ agents, 10+ workflows)
Full platform or framework.
Example: RPG Toolkit Module
- DM Agent, NPC Agent, Monster Agent, Loot Agent, Map Agent
 - 15+ workflows for every aspect of game management
 - Multiple interconnected systems
 
Module Naming Conventions
Module Code (kebab-case)
data-viz- Data Visualizationteam-collab- Team Collaborationrpg-toolkit- RPG Toolkitlegal-assist- Legal Assistant
Module Name (Title Case)
- "Data Visualization Suite"
 - "Team Collaboration Platform"
 - "RPG Game Master Toolkit"
 - "Legal Document Assistant"
 
Component Guidelines
Agents per Module
Recommended Distribution:
- Primary Agent (1): The main interface/orchestrator
 - Specialist Agents (2-4): Domain-specific experts
 - Utility Agents (0-2): Helper/support functions
 
Anti-patterns to Avoid:
- Too many overlapping agents
 - Agents that could be combined
 - Agents without clear purpose
 
Workflows per Module
Categories:
- Core Workflows (2-3): Essential functionality
 - Feature Workflows (3-5): Specific capabilities
 - Utility Workflows (2-3): Supporting operations
 - Admin Workflows (0-2): Maintenance/config
 
Workflow Complexity Guide:
- Simple: 3-5 steps, single output
 - Standard: 5-10 steps, multiple outputs
 - Complex: 10+ steps, conditional logic, sub-workflows
 
Tasks per Module
Tasks should be used for:
- Single-operation utilities
 - Shared subroutines
 - Quick actions that don't warrant workflows
 
Module Dependencies
Internal Dependencies
- Agents can reference module workflows
 - Workflows can invoke module tasks
 - Tasks can use module templates
 
External Dependencies
- Reference other modules via full paths
 - Declare dependencies in config.yaml
 - Version compatibility notes
 
Installation Infrastructure
Required: _module-installer/install-config.yaml
This file defines both installation questions AND static configuration values:
# Module metadata
code: module-code
name: 'Module Name'
default_selected: false
# Welcome message during installation
prompt:
  - 'Welcome to Module Name!'
  - 'Brief description here'
# Core values automatically inherited from installer:
## user_name
## communication_language
## document_output_language
## output_folder
# INTERACTIVE fields (ask user during install)
output_location:
  prompt: 'Where should module outputs be saved?'
  default: 'output/module-code'
  result: '{project-root}/{value}'
feature_level:
  prompt: 'Which feature set?'
  default: 'standard'
  result: '{value}'
  single-select:
    - value: 'basic'
      label: 'Basic - Core features only'
    - value: 'standard'
      label: 'Standard - Recommended features'
    - value: 'advanced'
      label: 'Advanced - All features'
# STATIC fields (no prompt, just hardcoded values)
module_version:
  result: '1.0.0'
data_path:
  result: '{project-root}/bmad/module-code/data'
Key Points:
- File is named 
install-config.yaml(NOT install-config.yaml) - Supports both interactive prompts and static values
 resultfield uses placeholders:{value},{project-root},{directory_name}- Installer generates final 
config.yamlfrom this template 
Optional: _module-installer/installer.js
For complex installations requiring custom logic:
/**
 * @param {Object} options - Installation options
 * @param {string} options.projectRoot - Target project directory
 * @param {Object} options.config - Config from install-config.yaml
 * @param {Array} options.installedIDEs - IDEs being configured
 * @param {Object} options.logger - Logger (log, warn, error)
 * @returns {boolean} - true if successful
 */
async function install(options) {
  // Custom installation logic here
  // - Database setup
  // - API configuration
  // - External downloads
  // - Integration setup
  return true;
}
module.exports = { install };
Optional: _module-installer/assets/
Files to copy during installation:
- External configurations
 - Documentation
 - Example files
 - Integration scripts
 
Module Lifecycle
Development Phases
- 
Planning Phase
- Define scope and purpose
 - Identify components
 - Design architecture
 
 - 
Scaffolding Phase
- Create directory structure
 - Generate configurations
 - Setup installer
 
 - 
Building Phase
- Create agents incrementally
 - Build workflows progressively
 - Add tasks as needed
 
 - 
Testing Phase
- Test individual components
 - Verify integration
 - Validate installation
 
 - 
Deployment Phase
- Package module
 - Document usage
 - Distribute/share
 
 
Best Practices
Module Cohesion
- All components should relate to module theme
 - Clear boundaries between modules
 - No feature creep
 
Progressive Enhancement
- Start with MVP (1 agent, 2 workflows)
 - Add components based on usage
 - Refactor as patterns emerge
 
Documentation Standards
- Every module needs README.md
 - Each agent needs purpose statement
 - Workflows need clear descriptions
 - Include examples and quickstart
 
Naming Consistency
- Use module code prefix for uniqueness
 - Consistent naming patterns within module
 - Clear, descriptive names
 
Example Modules
Example 1: Personal Productivity
productivity/
├── agents/
│   ├── task-manager.md      # GTD methodology
│   └── focus-coach.md        # Pomodoro timer
├── workflows/
│   ├── daily-planning/       # Morning routine
│   ├── weekly-review/        # Week retrospective
│   └── project-setup/        # New project init
└── config.yaml
Example 2: Content Creation
content/
├── agents/
│   ├── writer.md            # Blog/article writer
│   ├── editor.md            # Copy editor
│   └── seo-optimizer.md     # SEO specialist
├── workflows/
│   ├── blog-post/           # Full blog creation
│   ├── social-media/        # Social content
│   ├── email-campaign/      # Email sequence
│   └── content-calendar/    # Planning
└── templates/
    ├── blog-template.md
    └── email-template.md
Example 3: DevOps Automation
devops/
├── agents/
│   ├── deploy-master.md     # Deployment orchestrator
│   ├── monitor.md           # System monitoring
│   ├── incident-responder.md # Incident management
│   └── infra-architect.md   # Infrastructure design
├── workflows/
│   ├── ci-cd-setup/         # Pipeline creation
│   ├── deploy-app/          # Application deployment
│   ├── rollback/            # Emergency rollback
│   ├── health-check/        # System verification
│   └── incident-response/   # Incident handling
├── tasks/
│   ├── check-status.md      # Quick status check
│   └── notify-team.md       # Team notifications
└── data/
    └── runbooks/            # Operational guides
Module Evolution Pattern
Simple Module → Standard Module → Complex Module → Module Suite
     (MVP)          (Enhanced)        (Complete)      (Ecosystem)
Common Pitfalls
- Over-engineering: Starting too complex
 - Under-planning: No clear architecture
 - Poor boundaries: Module does too much
 - Weak integration: Components don't work together
 - Missing docs: No clear usage guide
 
Success Metrics
A well-designed module has:
- ✅ Clear, focused purpose
 - ✅ Cohesive components
 - ✅ Smooth installation
 - ✅ Comprehensive docs
 - ✅ Room for growth
 - ✅ Happy users!