367 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			367 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# 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 Visualization
 | 
						|
- `team-collab` - Team Collaboration
 | 
						|
- `rpg-toolkit` - RPG Toolkit
 | 
						|
- `legal-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:
 | 
						|
 | 
						|
```yaml
 | 
						|
# 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
 | 
						|
- `result` field uses placeholders: `{value}`, `{project-root}`, `{directory_name}`
 | 
						|
- Installer generates final `config.yaml` from this template
 | 
						|
 | 
						|
### Optional: \_module-installer/installer.js
 | 
						|
 | 
						|
For complex installations requiring custom logic:
 | 
						|
 | 
						|
```javascript
 | 
						|
/**
 | 
						|
 * @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
 | 
						|
 | 
						|
1. **Planning Phase**
 | 
						|
   - Define scope and purpose
 | 
						|
   - Identify components
 | 
						|
   - Design architecture
 | 
						|
 | 
						|
2. **Scaffolding Phase**
 | 
						|
   - Create directory structure
 | 
						|
   - Generate configurations
 | 
						|
   - Setup installer
 | 
						|
 | 
						|
3. **Building Phase**
 | 
						|
   - Create agents incrementally
 | 
						|
   - Build workflows progressively
 | 
						|
   - Add tasks as needed
 | 
						|
 | 
						|
4. **Testing Phase**
 | 
						|
   - Test individual components
 | 
						|
   - Verify integration
 | 
						|
   - Validate installation
 | 
						|
 | 
						|
5. **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
 | 
						|
 | 
						|
1. **Over-engineering**: Starting too complex
 | 
						|
2. **Under-planning**: No clear architecture
 | 
						|
3. **Poor boundaries**: Module does too much
 | 
						|
4. **Weak integration**: Components don't work together
 | 
						|
5. **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!
 |