10 KiB
Module Agent Architecture
Full integration agents with workflow orchestration, module-specific paths, and professional tooling.
When to Use
- Professional development workflows (business analysis, architecture design)
- Team-oriented tools (project management, sprint planning)
- Agents that orchestrate multiple workflows
- Module-specific functionality (BMM, BMB, CIS, custom modules)
- Agents with complex multi-step operations
File Location
src/modules/{module-code}/agents/{agent-name}.agent.yaml
Compiles to:
.bmad/{module-code}/agents/{agent-name}.md
YAML Structure
agent:
metadata:
id: '.bmad/{module-code}/agents/{agent-name}.md'
name: 'Persona Name'
title: 'Professional Title'
icon: 'emoji'
module: '{module-code}'
persona:
role: 'Primary expertise and function'
identity: 'Background, experience, specializations'
communication_style: 'Interaction approach, tone, methodology'
principles: 'Core beliefs and methodology'
menu:
- trigger: workflow-action
workflow: '{project-root}/.bmad/{module-code}/workflows/{workflow-name}/workflow.yaml'
description: 'Execute module workflow'
- trigger: another-workflow
workflow: '{project-root}/.bmad/core/workflows/{workflow-name}/workflow.yaml'
description: 'Execute core workflow'
- trigger: task-action
exec: '{project-root}/.bmad/{module-code}/tasks/{task-name}.xml'
description: 'Execute module task'
- trigger: cross-module
workflow: '{project-root}/.bmad/other-module/workflows/{workflow-name}/workflow.yaml'
description: 'Execute workflow from another module'
- trigger: with-template
exec: '{project-root}/.bmad/core/tasks/create-doc.xml'
tmpl: '{project-root}/.bmad/{module-code}/templates/{template-name}.md'
description: 'Create document from template'
- trigger: with-data
exec: '{project-root}/.bmad/{module-code}/tasks/{task-name}.xml'
data: '{project-root}/.bmad/_cfg/agent-manifest.csv'
description: 'Execute task with data file'
Key Components
Metadata
- id: Path with
.bmadvariable (resolved at install time) - name: Agent persona name
- title: Professional role
- icon: Single emoji
- module: Module code (bmm, bmb, cis, custom)
Persona (Professional Voice)
Module agents typically use professional communication styles:
persona:
role: Strategic Business Analyst + Requirements Expert
identity: Senior analyst with deep expertise in market research, competitive analysis, and requirements elicitation. Specializes in translating vague needs into actionable specs.
communication_style: Systematic and probing. Connects dots others miss. Structures findings hierarchically. Uses precise unambiguous language. Ensures all stakeholder voices heard.
principles: Every business challenge has root causes waiting to be discovered. Ground findings in verifiable evidence. Articulate requirements with absolute precision.
Note: Module agents usually don't use Handlebars templating since they're not user-customized - they're professional tools with fixed personalities.
Menu Handlers
Workflow Handler (Most Common)
menu:
- trigger: create-prd
workflow: '{project-root}/.bmad/bmm/workflows/prd/workflow.yaml'
description: 'Create Product Requirements Document'
Invokes BMAD workflow engine to execute multi-step processes.
Task/Exec Handler
menu:
- trigger: validate
exec: '{project-root}/.bmad/core/tasks/validate-workflow.xml'
description: 'Validate document structure'
Executes single-operation tasks.
Template Handler
menu:
- trigger: create-brief
exec: '{project-root}/.bmad/core/tasks/create-doc.xml'
tmpl: '{project-root}/.bmad/bmm/templates/brief.md'
description: 'Create project brief from template'
Combines task execution with template file.
Data Handler
menu:
- trigger: team-standup
exec: '{project-root}/.bmad/bmm/tasks/standup.xml'
data: '{project-root}/.bmad/_cfg/agent-manifest.csv'
description: 'Run team standup with agent roster'
Provides data file to task.
Placeholder Handler
menu:
- trigger: future-feature
workflow: 'todo'
description: 'Feature planned but not yet implemented'
Marks unimplemented features - compiler handles gracefully.
Platform-Specific Menu Items
Control visibility based on platform:
menu:
- trigger: advanced-elicitation
exec: '{project-root}/.bmad/core/tasks/advanced-elicitation.xml'
description: 'Advanced elicitation techniques'
web-only: true # Only shows in web bundle
- trigger: git-operations
exec: '{project-root}/.bmad/bmm/tasks/git-flow.xml'
description: 'Git workflow operations'
ide-only: true # Only shows in IDE environments
Variable System
Core Variables
{project-root}- Root directory of installed project.bmad- BMAD installation folder (usually.bmad){user_name}- User's name from module config{communication_language}- Language preference{output_folder}- Document output directory
Path Construction
Always use variables, never hardcoded paths:
# GOOD
workflow: "{project-root}/.bmad/bmm/workflows/prd/workflow.yaml"
# BAD
workflow: "/Users/john/project/.bmad/bmm/workflows/prd/workflow.yaml"
# BAD
workflow: "../../../bmm/workflows/prd/workflow.yaml"
What Gets Injected at Compile Time
Module agents use the same injection process as simple agents:
- Frontmatter with name and description
- Activation block with standard steps
- Menu handlers based on usage (workflow, exec, tmpl, data)
- Rules section for consistent behavior
- Auto-injected *help and *exit commands
Key difference: Module agents load module-specific config instead of core config:
<step n="2">Load and read {project-root}/.bmad/{module}/config.yaml...</step>
Reference Examples
See: src/modules/bmm/agents/
analyst.agent.yaml - Business Analyst
- Workflow orchestration for analysis phase
- Multiple workflow integrations
- Cross-module workflow access (core/workflows/party-mode)
architect.agent.yaml - System Architect
- Technical workflow management
- Architecture decision workflows
pm.agent.yaml - Product Manager
- Planning and coordination workflows
- Sprint management integration
Module Configuration
Each module has config.yaml providing:
# src/modules/{module}/config.yaml
user_name: 'User Name'
communication_language: 'English'
output_folder: '{project-root}/docs'
custom_settings: 'module-specific values'
Agents load this at activation for consistent behavior.
Workflow Integration Patterns
Sequential Workflow Execution
menu:
- trigger: init
workflow: '{project-root}/.bmad/bmm/workflows/workflow-init/workflow.yaml'
description: 'Initialize workflow path (START HERE)'
- trigger: status
workflow: '{project-root}/.bmad/bmm/workflows/workflow-status/workflow.yaml'
description: 'Check current workflow status'
- trigger: next-step
workflow: '{project-root}/.bmad/bmm/workflows/next-step/workflow.yaml'
description: 'Execute next workflow in sequence'
Phase-Based Organization
menu:
# Phase 1: Analysis
- trigger: brainstorm
workflow: '{project-root}/.bmad/bmm/workflows/1-analysis/brainstorm/workflow.yaml'
description: 'Guided brainstorming session'
- trigger: research
workflow: '{project-root}/.bmad/bmm/workflows/1-analysis/research/workflow.yaml'
description: 'Market and technical research'
# Phase 2: Planning
- trigger: prd
workflow: '{project-root}/.bmad/bmm/workflows/2-planning/prd/workflow.yaml'
description: 'Create PRD'
- trigger: architecture
workflow: '{project-root}/.bmad/bmm/workflows/2-planning/architecture/workflow.yaml'
description: 'Design architecture'
Cross-Module Access
menu:
- trigger: party-mode
workflow: '{project-root}/.bmad/core/workflows/party-mode/workflow.yaml'
description: 'Bring all agents together'
- trigger: brainstorm
workflow: '{project-root}/.bmad/cis/workflows/brainstorming/workflow.yaml'
description: 'Use CIS brainstorming techniques'
Best Practices
- Use .bmad paths - Portable across installations
- Organize workflows by phase - Clear progression for users
- Include workflow-status - Help users track progress
- Reference module config - Consistent behavior
- No Handlebars templating - Module agents are fixed personalities
- Professional personas - Match module purpose
- Clear trigger names - Self-documenting commands
- Group related workflows - Logical menu organization
Common Patterns
Entry Point Agent
menu:
- trigger: start
workflow: '{project-root}/.bmad/{module}/workflows/init/workflow.yaml'
description: 'Start new project (BEGIN HERE)'
Status Tracking
menu:
- trigger: status
workflow: '{project-root}/.bmad/{module}/workflows/status/workflow.yaml'
description: 'Check workflow progress'
Team Coordination
menu:
- trigger: party
workflow: '{project-root}/.bmad/core/workflows/party-mode/workflow.yaml'
description: 'Multi-agent discussion'
Module Agent vs Simple/Expert
| Aspect | Module Agent | Simple/Expert Agent |
|---|---|---|
| Location | .bmad/{module}/agents/ |
.bmad/custom/agents/ |
| Persona | Fixed, professional | Customizable via install_config |
| Handlebars | No templating | Yes, extensive |
| Menu actions | Workflows, tasks, templates | Prompts, inline actions |
| Configuration | Module config.yaml | Core config or none |
| Purpose | Professional tooling | Personal utilities |
Validation Checklist
- Valid YAML syntax
- Metadata includes
module: "{module-code}" - id uses
.bmad/{module}/agents/{name}.md - All workflow paths use
{project-root}/.bmad/prefix - No hardcoded paths
- No duplicate triggers
- Each menu item has description
- Triggers don't start with
*(auto-added) - Professional persona appropriate for module
- Workflow paths resolve to actual workflows (or "todo")
- File named
{agent-name}.agent.yaml - Located in
src/modules/{module}/agents/