Skip to content
🤖 AI-optimized docs: llms-full.txt

Build Your First Module

This tutorial takes you from an initial idea to a working, installable BMad module with help registration and configuration.

  • Planning a module with the Ideate Module (IM) capability
  • Choosing between a single agent and multiple workflows
  • Building individual skills with the Agent and Workflow Builders
  • Scaffolding a setup skill with Create Module (CM)
  • Validating your module with Validate Module (VM)

A BMad module bundles skills so they’re discoverable and configurable. The Module Builder offers two approaches depending on what you’re building:

ApproachWhen to UseWhat Gets Generated
Setup skillFolder of 2+ skillsDedicated bmad-{code}-setup skill with config and help assets
Self-registrationSingle standalone skillRegistration embedded in the skill’s own assets/ folder

Both produce the same registration artifacts: module.yaml (identity and config variables) and module-help.csv (capability entries), which register with bmad-help.

See What Are Modules for the architecture behind these choices.

Start with the Ideate Module capability.

The ideation session covers:

TopicWhat You’ll Decide
VisionProblem space, target users, core value
ArchitectureSingle agent, multiple workflows, or hybrid
MemoryFor multi-agent modules: personal sidecars, shared module memory, or both
Module typeStandalone or expansion of another module
SkillsEach planned skill’s purpose, capabilities, and relationships
ConfigurationCustom install questions and variables
DependenciesExternal CLI tools, MCP servers, web services

The output is a plan document saved to your reports folder. You’ll reference it when building each skill.

Now build each skill individually.

Skill TypeBuilderMenu Code
AgentAgent BuilderBA
Workflow or utilityWorkflow BuilderBW

Share the plan document as context when building each skill so the builder knows how it fits into the module.

Run Create Module (CM) to package your finished skills.

The builder generates a dedicated setup skill:

your-skills-folder/
├── bmad-{code}-setup/ # Generated setup skill
│ ├── SKILL.md # Setup instructions
│ ├── scripts/ # Config merge and cleanup scripts
│ │ ├── merge-config.py
│ │ ├── merge-help-csv.py
│ │ └── cleanup-legacy.py
│ └── assets/
│ ├── module.yaml # Module identity and config vars
│ └── module-help.csv # Capability entries
├── your-agent-skill/
├── your-workflow-skill/
└── ...

The builder embeds registration into the skill itself:

your-skill/
├── SKILL.md # Updated with registration check
├── assets/
│ ├── module-setup.md # Self-registration reference
│ ├── module.yaml # Module identity and config vars
│ └── module-help.csv # Capability entries
├── scripts/
│ ├── merge-config.py # Config merge script
│ └── merge-help-csv.py # Help CSV merge script
└── ...

A .claude-plugin/marketplace.json is also generated at the parent level for distribution.

Run Validate Module (VM) to check for structural and quality issues.

Check TypeWhat It Catches
StructuralMissing files, orphan entries, duplicate menu codes, broken references
QualityInaccurate descriptions, missing capabilities, poor entry quality

Fix any findings and re-validate until clean.

Your module is ready to distribute. Multi-skill modules install through the setup skill; standalone modules self-register on first run. Either way, capabilities appear in bmad-help and configuration is persisted automatically.

CapabilityMenu CodeWhen to Use
Ideate ModuleIMPlanning a new module from scratch
Build an AgentBACreating an agent skill
Build a WorkflowBWCreating a workflow or utility skill
Create ModuleCMPackaging skills into an installable module
Validate ModuleVMChecking completeness and accuracy

No. If you already know what your module should contain, skip straight to Create Module (CM). Ideation helps when you’re still shaping the concept.

Yes. Build the new skill and re-run Create Module (CM) on the folder. The anti-zombie pattern ensures the existing setup skill is replaced cleanly.

The Module Builder handles this automatically. Give it a single skill and it recommends the standalone self-registering approach, where registration embeds directly in the skill and triggers on first run or when the user passes setup/configure.

Yes. Tell the builder during ideation or creation that your module is an expansion. Your help CSV entries can reference the parent module’s capabilities in their before/after ordering fields.