# Module Standards **Purpose:** Defines what a BMAD module is, its structure, and the three types of modules. --- ## What is a BMAD Module? A **BMAD module** is a self-contained package of functionality that extends the BMAD framework. Modules provide: - **Agents** — AI personas with specialized expertise and menu-driven commands - **Workflows** — Structured processes for accomplishing complex tasks - **Configuration** — module.yaml for user customization - **Installation** — Optional installer.js for setup logic --- ## Module Types ### 1. Standalone Module A new, independent module focused on a specific domain. **Characteristics:** - Own module code (e.g., `healthcare-ai`, `legal-assist`) - Independent of other modules - Can be installed alongside any other modules - Has its own agents, workflows, configuration **Location:** `src/modules/{module-code}/` **Example:** CIS (Creative Innovation Suite) — a standalone module for innovation workflows --- ### 2. Extension Module Extends an existing BMAD module with additional functionality. **Characteristics:** - Builds upon an existing module's agents and workflows - May add new agents or workflows that complement the base module - Shares configuration context with the extended module - Typically installed alongside the module it extends **Location:** `src/modules/{base-module}/extensions/{extension-code}/` **Example:** An extension to BMM that adds specialized security review workflows --- ### Extension Module: Override & Merge Pattern When an extension module is installed, its files merge with the base module following these rules: #### Code Matching The extension's `module.yaml` `code:` field matches the base module's code: ```yaml # Base module: src/modules/bmm/module.yaml code: bmm # Extension: src/modules/bmm/extensions/security/module.yaml code: bmm # SAME CODE — extends BMM ``` The **folder name** is unique (e.g., `bmm-security`) but the `code:` matches the base module. #### File Merge Rules | File Type | Same Name | Different Name | |-----------|-----------|----------------| | Agent file | **OVERRIDE** — replaces the base agent | **ADD** — new agent added | | Workflow folder | **OVERRIDE** — replaces the base workflow | **ADD** — new workflow added | | Other files | **OVERRIDE** — replaces base file | **ADD** — new file added | #### Examples **Override scenario:** ``` Base module (BMM): ├── agents/ │ └── pm.agent.yaml # Original PM agent Extension (bmm-security): ├── agents/ │ └── pm.agent.yaml # Security-focused PM — REPLACES original Result after installation: ├── agents/ │ └── pm.agent.yaml # Now the security version ``` **Add scenario:** ``` Base module (BMM): ├── agents/ │ ├── pm.agent.yaml │ └── architect.agent.yaml Extension (bmm-security): ├── agents/ │ └── security-auditor.agent.yaml # NEW agent Result after installation: ├── agents/ │ ├── pm.agent.yaml │ ├── architect.agent.yaml │ └── security-auditor.agent.yaml # ADDED ``` **Mixed scenario:** ``` Extension contains both overrides and new files — applies rules per file ``` --- ### 3. Global Module Affects the entire BMAD framework and all modules. **Characteristics:** - Core functionality that impacts all modules - Often provides foundational services or utilities - Installed at the framework level - Use sparingly — only for truly global concerns **Location:** `src/modules/{module-code}/` with `global: true` in module.yaml **Example:** A module that provides universal logging or telemetry across BMAD --- ## Required Module Structure ``` {module-code}/ ├── module.yaml # Module configuration (REQUIRED) ├── README.md # Module documentation (REQUIRED) ├── agents/ # Agent definitions (if any) │ └── {agent-name}.agent.yaml ├── workflows/ # Workflow definitions (if any) │ └── {workflow-name}/ │ └── workflow.md ├── _module-installer/ # Installation logic (optional) │ ├── installer.js │ └── platform-specifics/ │ ├── claude-code.js │ ├── windsurf.js │ └── ... └── {other folders} # Tasks, templates, data as needed ``` --- ## Required Files ### module.yaml (REQUIRED) Every module MUST have a `module.yaml` file with at minimum: ```yaml code: {module-code} name: "Module Display Name" header: "Brief module description" subheader: "Additional context" default_selected: false ``` See: `module-yaml-conventions.md` for full specification. --- ### README.md (REQUIRED) Every module MUST have a README.md with: - Module name and purpose - Installation instructions - Components section (agents, workflows) - Quick start guide - Module structure diagram - Configuration section - Usage examples - Author information --- ## Optional Components ### Agents Agents are AI personas with: - Metadata (id, name, title, icon, module) - Persona (role, identity, communication_style, principles) - Menu (trigger → workflow/exec mappings) See: `agent-architecture.md` for design guidance. --- ### Workflows Workflows are structured processes with: - workflow.md (entry point) - steps/ folder with step files - data/ folder with shared reference - templates/ folder if needed --- ### _module-installer/ Optional installation logic for: - Creating directories - Copying assets - IDE-specific configuration - Platform-specific setup See: `module-installer-standards.md` for patterns. --- ## Module Type Decision Tree ``` START: Creating a module │ ├─ Is this a brand new independent domain? │ └─ YES → Standalone Module │ ├─ Does this extend an existing module? │ └─ YES → Extension Module │ └─ Does this affect all modules globally? └─ YES → Global Module (use sparingly) ``` --- ## Naming Conventions ### Module Code - **kebab-case** (e.g., `bmm`, `cis`, `bmgd`, `healthcare-ai`) - Short, memorable, descriptive - 2-20 characters - Lowercase letters, numbers, hyphens only ### Agent Files - Format: `{role-name}.agent.yaml` - Example: `pm.agent.yaml`, `architect.agent.yaml` ### Workflow Folders - Format: `{workflow-name}/` - Example: `prd/`, `create-architecture/` --- ## Module Dependencies Modules can depend on: - **Core BMAD** — Always available - **Other modules** — Specify in module.yaml as `dependencies:` - **External tools** — Document in README, handle in installer --- ## Quick Reference | Question | Answer | |----------|--------| | What's a module? | Self-contained package of agents, workflows, config | | What are the types? | Standalone, Extension, Global | | What's required? | module.yaml, README.md | | Where do modules live? | `src/modules/{code}/` | | How do agents work? | Menu triggers → workflow/exec | | How does installation work? | module.yaml prompts + optional installer.js |