BMAD 6.11.0 with Ultracode: A how-to

TLDR/BLUF

What this is. BMAD-METHOD 6.11.0 is a persona-based skill framework for Claude Code. This page compares it to Ultracode and answers whether combining them is worth doing.

Why you should care. Yes, and there is one thing to avoid: never run a BMAD skill that writes its state file as two or more concurrent Ultracode subagents. Not for you if you want a tutorial: read the upstream docs.

How to use it. Read the diagram, then the how-to at the end. Everything else is the reasoning behind both.


What is BMAD

BMAD (Breakthrough Method for Agile AI-Driven Development) and Ultracode are two different philosophies for running Claude Code at scale.

BMAD turns Claude Code into a governed, human-directed team working from Markdown specifications. Ultracode lets Claude Opus decide on its own when to fan out into parallel sub-agents, at maximum (xhigh) reasoning effort.

BMAD: governed and spec-driven. You work with named personas – analyst, product manager, architect – to produce a PRD and an architecture document before any code is written.

Work then stays scoped to version-controlled files under _bmad-output/, not chat memory, which is what keeps context from drifting across a long build. A developer, a UX designer, and a party-mode aggregator that runs several personas at once round out the 49 installed skills.

Ultracode: autonomous and parallel. Activated with /effort ultracode, it combines xhigh reasoning with automatic workflow orchestration: Claude decides on its own when a task is big enough to fan out into parallel sub-agents, rather than you dictating the process.

Each sub-agent’s result is held in a script variable until the run finishes, keeping the main context window clean.

BMAD’s persona work also writes a file to disk – a PRD, an architecture document, story files, a sprint status file – and those files persist after the session ends.

Install BMAD with:

npx bmad-method@6.11.0 install --yes --tools claude-code --modules bmm --directory .

That puts 3.0MB and 248 files into .claude/skills/ and _bmad/, none of it gitignored by default.

Two of the 49 skills also run Python, not just prompts. sprint_status.py writes the work-tracking file, atomically but without a lock – two writers racing it can lose an update.

config_utils.py resolves the project root fail-closed: run BMAD from the wrong place and it errors instead of guessing.

The 49 skills:

bmad-advanced-elicitation      bmad-agent-analyst           bmad-agent-architect
bmad-agent-dev                 bmad-agent-pm                bmad-agent-ux-designer
bmad-architecture              bmad-brainstorming           bmad-build
bmad-build-auto                bmad-checkpoint-preview      bmad-code-review
bmad-correct-course            bmad-create-architecture     bmad-create-epics-and-stories
bmad-create-prd                bmad-create-story            bmad-customize
bmad-deep-recon                bmad-dev-auto                bmad-dev-story
bmad-document-project          bmad-domain-research         bmad-edit-prd
bmad-editorial-review          bmad-editorial-review-prose  bmad-editorial-review-structure
bmad-forge-idea                bmad-generate-project-context bmad-help
bmad-market-research           bmad-party-mode              bmad-prd
bmad-prfaq                     bmad-product-brief           bmad-project-context
bmad-qa-generate-e2e-tests     bmad-quick-dev               bmad-retrospective
bmad-review                    bmad-review-adversarial-general
bmad-review-edge-case-hunter   bmad-review-verification-gap bmad-spec
bmad-sprint-planning           bmad-sprint-status           bmad-technical-research
bmad-ux                        bmad-validate-prd

BMAD vs Ultracode

BMAD, run alone Personas, no fixed order Analyst PM Architect Dev UX designer Party mode PRD, architecture, story files, sprint status Persists after the session ends Ultracode, run alone Request Fans out to subagents Task Task Task Session context Ends when the run ends -- nothing written unless told to Combined: BMAD plans, Ultracode executes PRD, architecture, story files Ultracode fan-out, one subagent per story Code and tests Keep BMAD's stateful skills (anything writing sprint-status.yaml) out of this fan-out -- no lock between the read and the write. Route only planning output and checked review skills in.
BMAD alone writes persistent files from personas with no fixed order. Ultracode alone fans out to anonymous subagents that return data and leave nothing on disk. Combined, BMAD's planning files become the input Ultracode's fan-out executes against.

Does BMAD augment Ultracode

Yes, for two things Ultracode does not keep on its own: a written project spec, and named review passes.

Run BMAD’s planning skills once, before the first fan-out. They each produce a file, not a concurrent writer, so the lock issue above does not apply yet. Route BMAD’s review skills into the fan-out once you have checked they do not write the state file.

No, if the plan is to run BMAD’s whole persona set as a fan-out. Its personas are sequential by design, and forcing concurrency onto them is the exact combination that races the state file.


How to use them together

  1. Run the planning skills, in this order: bmad-create-prd, bmad-create-architecture, bmad-create-epics-and-stories. Each writes one file under _bmad-output/.
  2. Hand the resulting story files to Ultracode. /effort ultracode fans out across them, one subagent per story.
  3. Check that a review skill – bmad-review, bmad-review-adversarial-general, bmad-review-edge-case-hunter, bmad-review-verification-gap – does not touch sprint-status.yaml before routing it into the fan-out.
  4. Never run bmad-sprint-status, bmad-dev-story, bmad-build, or any other skill that writes sprint-status.yaml, as two or more concurrent subagents sharing one worktree. Give each its own worktree, or keep it sequential.
  5. For unattended runs across a whole epic – native Ultracode is session-scoped, so it will not advance to the next story on its own – a third-party extension exists: bmad-module-ultracode-goal.
    • It gates each story’s advancement on a deterministic pass from BMAD’s own Test Architect module, not the model’s self-assessment.
    • It is unofficial: published by an individual, not by bmad-code-org. Read its source before trusting it with an unattended run.