The BMAD map: modules, phases, personas, and the skill surface

Chapter 30 argued why research belongs at the head of spec-driven development and where BMAD fits among the tools. This chapter is the map. When you type bmad-prd or bmad-deep-recon, there is an organization behind that one command: a module it came from, a phase it belongs to, a persona that owns it, a configuration that shapes it, and a document it is about to write. Learn the map once here and the walkthrough in Chapter 33 reads like watching a team you already know.

Everything below was inspected against the installed v6.10 source. BMAD ships minor releases roughly monthly, so treat command names as dated claims: the ground truth is always the skill directories on your own disk, and bmad-help reads that installed set and recommends from it.

The five-layer model: what BMAD actually is

The single most useful sentence about BMAD:

BMAD is a packaged context-and-process layer. Your AI host is the runtime; project files are the durable state; installed skills are the procedures; external tools supply capabilities; reviewed artifacts are the contracts between stages.

It is not a second model, a model router, a database, a web crawler, or a daemon running a deterministic graph. It makes a capable coding/research agent behave like a disciplined cross-functional team by controlling what the agent loads, what it asks, what it writes, when it stops, and what the next agent receives. Five layers, often collapsed into the one word "agent":

┌─────────────────────────────────────────────────────────────────────┐
│ 5  Product work                                                     │
│    research.md -> brief -> PRD -> architecture -> stories -> code   │
├─────────────────────────────────────────────────────────────────────┤
│ 4  BMAD method                                                      │
│    personas · workflow instructions · steps · gates · templates     │
├─────────────────────────────────────────────────────────────────────┤
│ 3  Installed skill adapter                                          │
│    bmad-* SKILL.md files in the host's discovery directory          │
├─────────────────────────────────────────────────────────────────────┤
│ 2  AI host / runtime                                                │
│    Claude Code · Codex · Cursor · Gemini CLI · another agent host    │
├─────────────────────────────────────────────────────────────────────┤
│ 1  Capabilities                                                     │
│    filesystem · shell · Git · web · subagents · MCP · data systems  │
└─────────────────────────────────────────────────────────────────────┘

Three common surprises fall out of the separation immediately:

  • Installing BMAD does not give a model new tools; it teaches the model a procedure for using tools the host already exposes. If the host has no web search, BMAD cannot browse by wishing harder.
  • Running the same BMAD skill in two hosts can produce different speed, tool reach, and quality, because layers 1 and 2 changed under it.
  • The documents matter more than persona continuity. Mary and Winston run in separate fresh chats because the report and the PRD carry state between them, not because a character remembers.

Modules on a core

BMAD ships a small core and the flagship BMM module (the BMad Method itself) built in; everything else is an installable module you add with --modules. The registry as of v6.10:

ModuleCodeWhat it adds
Corecorecross-cutting skills every module can use (help, research, brainstorming, review, elicitation, customize, party mode)
BMad Methodbmmthe four-phase method: 30+ workflows across Analysis, Planning, Solutioning, Implementation
BMad Builderbmbbuild your own agents, workflows, and modules from a conversation
Creative Intelligence Suitecisbrainstorming, ideation, storytelling, design thinking, problem-solving
Test Architecttearisk-based quality strategy, test automation, and release gates (persona: Murat)
Game Dev Studiogdsgame design and development for Unity, Unreal, Godot, and Phaser
Whiteport Design Studiowdsstrategic, UX-and-design-first planning methodology
BMad Loopbmad-loopa deterministic, Python-based unattended dev loop with adversarial review

Two housekeeping notes the installer enforces. The older bmad-automator module is deprecated and points users to bmad-loop instead; and external modules install from their own npm packages and channels, so a reproducible install records each one's tag and SHA in _bmad/_config/manifest.yaml. The core and BMM are what the rest of this part uses; the others are proof the method is a pattern, reinstantiated per domain (the Game Dev Studio section returns to this).

The four phases

BMM organizes work as Analysis → Planning → Solutioning → Implementation. Each phase produces documents the next phase consumes; the official docs put the contract in one line: "The PRD tells the architect what constraints matter. The architecture tells the dev agent which patterns to follow."

Analysis            Planning              Solutioning            Implementation
research, brief  -> PRD, UX spines     -> architecture,       -> stories, code,
(what's true,       (what to build       epics & stories        tests, reviews,
 what to build)      and why)             (how to build it)      sprint state
   Mary               John / Sally         Winston                Amelia

Analysis is optional for a small change and load-bearing for an expensive one; the method is designed to scale down (a bugfix skips almost all of it) as well as up. That is the whole point of the readiness gate and bmad-help: they let you run only the phases the decision's stakes justify.

The six personas (policy, not another model)

Analysis, planning, solutioning, and implementation are each led by a persona with a fixed identity and a customizable layer. These are the exact identities from the installed agent skills:

PersonaSkillRole, in their own words
Marybmad-agent-analystBusiness Analyst: market research, competitive analysis, requirements elicitation, "translating vague needs into actionable specs while staying grounded in evidence"
Paigebmad-agent-tech-writerTechnical Writer: turns complex concepts into structured docs, favors diagrams over prose, master of CommonMark, DITA, OpenAPI, Mermaid
Johnbmad-agent-pmProduct Manager: drives the PRD through user interviews and requirements discovery, "small, validated increments development can ship"
Sallybmad-agent-ux-designerUX Designer: turns needs into interaction design and UX specs, "balancing empathy with edge-case rigor"
Winstonbmad-agent-architectSystem Architect: turns requirements and UX into architecture, "favoring boring technology, developer productivity, and trade-offs over verdicts"
Ameliabmad-agent-devSenior Software Engineer: executes approved stories test-first (red, green, refactor); "file paths and AC IDs are my vocabulary"

Two more personas live in installed modules: Murat, TEA's Master Test Architect and Quality Advisor (risk-based P0-P3 prioritization, ATDD, CI governance, requirements traceability, across nine testing workflows); and the Game Dev Studio cast, which rebuilds the whole roster for games (Samus Shepard the Game Designer, Cloud Dragonborn the Game Architect, Link Freeman the Game Developer, Indie the solo-dev generalist, Max the Scrum Master, GLaDOS for QA, and Paige again for docs).

The persona is not decoration. Loading bmad-agent-pm does not start a separate "John" process; it loads a stable identity, role, principles, communication style, and menu into the current conversation. "John" is valuable because the same product standards are re-established without you rebuilding a PM system prompt each session. The result is continuity of behavior, not magical continuity of memory:

persona continuity = reloaded identity + rules + menu
project continuity = files on disk
conversation memory = current host context only

If John makes a decision and it exists only in chat, Winston will not reliably know it in a fresh architecture session. If the decision is in the PRD or its decision sidecar, Winston can read it. That is why BMAD's document contracts are more fundamental than its character names, and why a fresh chat per workflow is a feature: state that matters is on disk.

Don't be confused: a direct skill vs. a persona menu. Both reach the same workflow. user -> bmad-prd -> PRD workflow is direct; user -> bmad-agent-pm -> John's menu -> PRD trigger -> PRD workflow goes through the persona. Use the direct skill when the job is known; load the persona when you want an exploratory conversation across John's related jobs. In runbooks and automation, prefer the direct names: bmad-create-story says what it does, while CS depends on knowing Amelia's menu.

The command atlas

"Show every BMAD command" needs a boundary, because BMAD generates skills from the modules and IDE adapters you install: TEA adds nine testing workflows, CIS and GDS add their own, and a private module can add anything. The canonical list for your checkout is the installed skill directories. For Claude Code:

find .claude/skills -maxdepth 1 -type d -name 'bmad-*' -print | sort

Cursor and Windsurf normally use .agents/skills/; other adapters print their destination during installation. The leading slash is UI syntax, not part of the skill's ID: Claude Code shows /bmad-prd, another agent may accept bmad-prd in natural language, and the installed directory is named bmad-prd either way. The tables below are the complete core + BMM surface for the v6.10-era snapshot.

Installer and discovery commands

CommandUse
npx bmad-method installinteractive first install or update
npx bmad-method install --yes --modules bmm --tools claude-codereproducible non-interactive selection
npx bmad-method@next installprerelease core/BMM; expect churn
npx bmad-method install --list-toolslist supported IDE/agent adapters
npx bmad-method install --list-options bmmlist known BMM configuration keys
npx bmad-method install --yes --action update --modules bmm,bmb,gdsadd/update modules while retaining configured tools
npx bmad-method install --yes --modules bmm,bmb --pin bmb=v1.7.0 --tools claude-codepin an external module; pinning does not apply to bundled core/BMM

Core skills (available to every module)

SkillWhat it does
bmad-helpinspects artifacts and installed modules; recommends the next required and optional skills
bmad-advanced-elicitationrefines a recent output with a Socratic, first-principles, pre-mortem, red-team, or other selected lens
bmad-reviewreviews code or documents with applicable adversarial, edge-case, verification-gap, structure, and prose lenses
bmad-customizeauthors and verifies sparse TOML overrides that survive reinstall
bmad-brainstormingwidens the option set through facilitated ideation
bmad-forge-ideapressure-tests one idea until it hardens, becomes clearer, or dies
bmad-deep-recondrafts, processes, runs, refreshes, or deepens decision-grade research (Chapter 32)
bmad-party-modebrings installed personas into one moderated discussion

Older review IDs such as bmad-review-adversarial-general forward to bmad-review; likewise bmad-market-research, bmad-domain-research, and bmad-technical-research forward to bmad-deep-recon. Prefer the consolidated names in new documentation.

BMM workflow skills by phase

PhaseSkillArtifact or decision
Analysisbmad-product-briefbrief.md, addendum.md, optional briefing
Analysisbmad-prfaqcustomer-first prfaq-{project}.md (ships its own web-researcher subagent)
Analysisbmad-document-projectscan and document a complex existing project before planning a change
Planningbmad-prdCreate/Update: PRD + addendum + decision log; Validate: findings report
Planningbmad-uxvisual DESIGN.md + behavioral EXPERIENCE.md
Planningbmad-speccompact SPEC.md contract, companions, optional stories.yaml
Solutioningbmad-architectureexplicit architecture spine and decisions
Solutioningbmad-create-epics-and-storiesimplementable epic/story files
Solutioningbmad-generate-project-contextdistill stack, conventions, and rules into project-context.md
Solutioningbmad-check-implementation-readinessPASS / CONCERNS / FAIL gate
Implementationbmad-sprint-planninginitialized sprint-status.yaml
Implementationbmad-create-storynext focused story file
Implementationbmad-dev-storycode and tests for one story
Implementationbmad-code-reviewimplementation findings or approval
Implementationbmad-correct-coursereconciled plan after a significant change
Implementationbmad-checkpoint-previewa reviewable checkpoint of in-progress work
Implementationbmad-sprint-statuscurrent progress and risks
Implementationbmad-retrospectivelessons after an epic
Quick Flowbmad-quick-devclarified small intent, spec, implementation, review in one track
Unattendedbmad-dev-autoone no-interaction small-intent development iteration
Testbmad-qa-generate-e2e-testspragmatic API/E2E coverage with the project's current framework

bmad-qa-generate-e2e-tests is the lightweight built-in path; install TEA when the decision needs risk-based priorities, ATDD, traceability, NFR assessment, CI design, or formal release gates.

Agent launchers (optional)

You do not need to load a persona before a workflow skill, but launchers are useful for exploratory discussion: bmad-agent-analyst (Mary), bmad-agent-tech-writer (Paige), bmad-agent-pm (John), bmad-agent-ux-designer (Sally), bmad-agent-architect (Winston), bmad-agent-dev (Amelia). Agent-menu codes (Amelia's DS for Dev Story, John's PRD) are shortcuts scoped to an active persona, not global commands; prefer full skill names in runbooks.

For the recommendation feature of Chapter 33, the full evidence-to-code path is a subset of the above:

bmad-document-project → bmad-brainstorming → bmad-forge-idea →
bmad-deep-recon → bmad-product-brief → bmad-prd → bmad-architecture →
bmad-create-epics-and-stories → bmad-check-implementation-readiness →
bmad-sprint-planning → bmad-create-story → bmad-dev-story → bmad-code-review

Do not run every command merely because it exists: bmad-help and the readiness gate exist to make the method scale down.

What the installer writes, and where to change it

The installer performs four jobs: resolve the requested module sources, collect configuration and record installed versions, write shared configuration and resolver scripts under _bmad/, and copy/register the selected bmad-* skills into the host's discovery directory. A rough layout (exact names vary by release and host):

project/
├── _bmad/
│   ├── _config/manifest.yaml        what was installed: version/channel/SHA
│   ├── config.toml                  installer-generated team config + roster
│   ├── config.user.toml             installer-generated personal config
│   ├── custom/                      YOUR durable overrides (survive updates)
│   │   ├── config.toml              team overrides
│   │   ├── config.user.toml         personal overrides
│   │   └── bmad-deep-recon.toml     one workflow's override
│   └── scripts/                     resolvers (resolve_config.py, memlog.py, …)
├── .claude/skills/bmad-*/SKILL.md   the installed skills (Claude Code)
└── {planning_artifacts}/            research, briefs, PRD, architecture, stories

Three copies of "BMAD" get confused, and only one is yours to edit:

CopyOwnerSafe to edit?On update
package/module sourceBMAD maintainerno (unless forking)replaced
installed _bmad/ + generated skillsthe installergenerally noregenerated
_bmad/custom/ + your output folderyour teamyespreserved

Treat installer-owned files as generated code. Editing _bmad/config.toml directly is not customization; it is update debt. Put behavior overrides in _bmad/custom/ and business artifacts in the output folder. The installation is deliberately inspectable: manifest.yaml, the skill directories, and git diff after an update answer almost every "what do I really have?" question.

Configuration resolution: two override stacks

Central configuration (cross-cutting paths and the agent roster) resolves in four layers, highest wins:

highest  _bmad/custom/config.user.toml   personal durable override
         _bmad/custom/config.toml        team durable override
         _bmad/config.user.toml          installer-generated personal
lowest   _bmad/config.toml               installer-generated team/base

Per-skill behavior resolves in three: the skill's shipped customize.toml at the bottom, then _bmad/custom/<skill>.toml (team), then _bmad/custom/<skill>.user.toml (personal). The resolver merges by value shape, and the rule is worth knowing because it is why overrides should be sparse:

ShapeMerge rule
scalarhigher layer replaces lower
tablerecursively deep-merge
array of tables keyed by code or idreplace matching key; append new keys
any other arrayappend (base → team → user)

There is deliberately no deletion operator. Copy the whole shipped customize.toml into your override and you freeze old defaults and mask future improvements; keep overrides to the handful of fields you actually changed. Chapter 32 uses this to give the research skill a recommender-specific evidence pack in about ten lines.

project-context.md is the other durable file worth naming: it holds implementation policy (temporal-split rules, profile idempotency, privacy SLOs, required evaluation guardrails), not fast-changing research claims, which belong in dated research artifacts.

State: what survives a fresh chat

BMAD uses several kinds of state, and treating them as one bucket causes most resume failures:

StateHomeSurvives fresh chat?In Git?
install/module state_bmad/_config/manifest.yamlyesusually
team / personal config_bmad/config*.toml, custom overridesyesteam yes, personal no
project rulesproject-context.mdyesyes
workflow progressartifact frontmatter / run-folder stateyesif committed
product decisionsPRD/architecture + decision sidecaryesyes
sprint progresssprint-status.yamlyesyes
conversationhost context windownono
subagent scratchrun folder / temp digestonly if writtensometimes

The strong principle is externalized state: every result that must affect a later phase becomes a file. A fresh chat then becomes a quality feature rather than a reset, because the reviewed artifacts, not the chat scrollback, are the contract between stages. Those artifacts are typed messages with schemas: research.md carries claims/citations/confidence/ staleness for the analyst and PM; the PRD carries FRs/NFRs/constraints for the architect; a story carries one implementable intent plus acceptance criteria for the developer.

The rest of the box

Four corners a research-focused tour would otherwise skip, each of which sharpens the SDD picture.

bmad-spec, the distiller. Where bmad-prd coaches a sparse idea into requirements, bmad-spec runs the opposite direction: it compresses existing intent material (a PRD, a game design doc, an RFC, a Slack thread, a meeting transcript, a research report) into SPEC.md, a five-field kernel (Why, Capabilities, Constraints, Non-goals, Success signal) plus companion files for detail that would bloat the kernel. Together they are "the machine contract every downstream BMad skill consumes." Multiple skills can call it to update the same spec over time, and its optional story breakdown emits a stories.yaml an unattended dev loop can dispatch, which closes a loop this part cares about: a research report can flow, through distillation, all the way to autonomous implementation, with the human checkpoints concentrated where they were placed on purpose.

bmad-ux, the two-spine contract. Sally's skill produces not one UX document but two peer contracts. DESIGN.md follows the open Google Labs design.md spec (tokenized colors, typography, spacing, components in YAML frontmatter) and owns how it looks. EXPERIENCE.md owns how it works: information architecture, states, interactions, accessibility, and named-protagonist journeys, and it cross-references DESIGN.md tokens by name with {path.to.token} syntax. Both spines win on conflict with any mock or import. That is the SDD thesis applied to design: the handoff from design into engineering is a sealed file contract, not a translation layer. For our feed, how repetition feels across a session is an EXPERIENCE.md journey, not just a ranker metric.

Game Dev Studio, the portability proof. GDS rebuilds the whole method for Unity, Unreal, Godot, and Phaser, with its own persona cast (above). Two details matter beyond the novelty. The document chain keeps its shape but swaps the centerpiece: Game Brief, then a GDD (game design document, with dozens of game-type templates) as the primary design document, then architecture. And preproduction ships its own research workflows (game-flavored brainstorming, domain research with competitive and technical-trends steps) rather than reusing the core research skill: evidence that BMAD treats research standards as per-domain, the same conclusion the evidence-kinds table of Chapter 30 reached.

Version mechanics, for teams landing mid-stream. The npm package resolves latest to v6 and next to prereleases. The documented v4 story is a frozen V4 branch (critical patches only) and a migration page: the v6 installer detects a legacy .bmad-method/ folder, offers a backup-and-remove, and moves old planning artifacts into the v6 output layout. There is no supported v4/v6 coexistence; the shims that keep old skill names working are the intended bridge. Record manifest.yaml for team reproducibility, because a "stable" install resolves to the newest release at install time.

With the board laid out, the next chapter zooms all the way in on the one skill this part exists for: bmad-deep-recon, the research director, down to the folder it writes and the Python it runs. 👉