# 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!