[6.12.0] bmad-create-epics-and-stories cannot find a PRD or architecture that bmad-prd and bmad-architecture wrote

Author: johnkattenhornCreated Sep 17, 2026Updated Sep 17, 2026

bmad-create-epics-and-stories step 01 looks for the PRD and the architecture with non-recursive globs. bmad-prd and bmad-architecture write theirs into a run folder, one level deeper. So the epics workflow reports its inputs missing on a tree that its own planning phase produced, and step 01's failure table calls that a SYSTEM FAILURE.

Repro, from an empty git repo:

npx [email protected] install --yes --directory ~/Code/<project> \
  --modules bmm --tools claude-code

Run bmad-product-brief, then bmad-prd, then bmad-architecture, accepting defaults throughout. Then:

python3 -c "
import pathlib
p = pathlib.Path('_bmad-output/planning-artifacts')
for pat in ('*prd*.md','*prd*/index.md','*architecture*.md','*architecture*/index.md'):
    print(f'{pat:26}', [str(x.relative_to(p)) for x in p.glob(pat)])
print('actual PRD :', [str(x.relative_to(p)) for x in p.glob('**/prd.md')])
print('actual arch:', [str(x.relative_to(p)) for x in p.glob('**/ARCHITECTURE-SPINE.md')])"
*prd*.md                   []
*prd*/index.md             []
*architecture*.md          []
*architecture*/index.md    []
actual PRD : ['prds/prd-scratch-wave-bmad-2026-09-17/prd.md']
actual arch: ['architecture/architecture-scratch-wave-bmad-2026-09-17/ARCHITECTURE-SPINE.md']

Environment: Linux, node via npx, uv 0.12.10, installation.version: 6.12.0.

Where the two halves disagree

steps/step-01-validate-prerequisites.md lines 57-64:

**PRD Document Search Priority:**
1. `{planning_artifacts}/*prd*.md` (whole document)
2. `{planning_artifacts}/*prd*/index.md` (sharded version)

**Architecture Document Search Priority:**
1. `{planning_artifacts}/*architecture*.md` (whole document)
2. `{planning_artifacts}/*architecture*/index.md` (sharded version)

Pattern 2 is for a sharded document, so prds/ matches *prd* and it looks for prds/index.md. The artefact is at prds/prd-<project>-<date>/prd.md.

Meanwhile the UX search in the same file, three lines below, already knows about run folders:

1. `{planning_artifacts}/ux-designs/ux-*/DESIGN.md` and `.../EXPERIENCE.md` (bmad-ux spine pair)

One of the three search blocks was updated for the run-folder layout and the other two were not.

Seven installed skills set run_folder_pattern in their customize.toml:

grep -rh run_folder_pattern .claude/skills/*/customize.toml | sort -u
run_folder_pattern = "architecture-{project_name}-{date}"
run_folder_pattern = "brief-{project_name}-{date}"
run_folder_pattern = "prd-{project_name}-{date}"
run_folder_pattern = "{research_type}-{topic_slug}-{date}"

So any project whose PRD came from bmad-prd at defaults hits this.

What it costs the operator

Step 01 has a declared terminal state and this lands in it. Line 256 of the same file: ### ❌ SYSTEM FAILURE: / - Missing required documents, under a Master Rule that calls skipping steps forbidden. So a literal execution against a correct, complete, BMAD-generated tree ends in the workflow's own failure state, and the operator is told documents are missing while they sit on disk.

I hit this building a scheduler that reads BMAD plans, and I had written the same defect myself that morning: my artefact detectors were non-recursive too, against the same run folders. Mine reported "no brief found" and named a workflow to run, which is wrong but recoverable. Step 01 stops instead.

Possible fix

Adding the run folder to the two search lists would do it: {planning_artifacts}/*prd*/*prd*.md alongside the existing two, and the same shape for architecture. That matches what the UX block already does.

One question I cannot answer from outside. Should step 01 refuse at all when it finds nothing? A missing PRD is a state an operator can fix by running one workflow, and the UX block already asks the user what to do when its match is incomplete. The PRD block has no equivalent.

Happy to test a fix against the same install.

Source: bmad-code-org/BMAD-METHOD