src/bmm-skills/4-implementation/bmad-dev-auto/SKILL.md
Goal: Turn intent into a hardened, reviewable artifact, without human interaction.
CRITICAL: If a step says "read fully and follow step-XX", you read and follow step-XX. No exceptions.
To HALT with a final status and optional blocking condition:
{spec_file} is known and exists, update status in frontmatter and append missing result details under ## Auto Run Result.{spec_file} is unknown or missing, create {implementation_artifacts}/bmad-dev-auto-result-<slug-or-timestamp>.md with:
---
status: <final status>
---
# BMad Dev Auto Result
Status: <final status>
Blocking condition: <blocking condition, if any>
python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow.on_completeworkflow.on_complete is non-empty, follow it as the final instruction before exiting.Using subagents when instructed is mandatory. If you cannot, HALT with status blocked and blocking condition no subagents.
Invoke every subagent synchronously: launch it, wait for it to return within the same turn, then continue with its result. When a step says to run subagents "in parallel" (e.g. the reviewers), that means several blocking calls awaited together in one turn — not detached execution. Never run a subagent in the background / detached / async (e.g. run_in_background: true), and never end your turn to "await a completion notification." This workflow runs unattended: there is no event loop to resume a yielded turn, so a backgrounded subagent never hands control back and the run stalls. The only sanctioned way to end a turn is the HALT protocol above with an explicit terminal status.
A specification is "Ready for Development" when:
step-01-clarify-and-route.md) resolve from the skill root.{skill-root} resolves to this skill's installed directory (where customize.toml lives).{project-root}-prefixed paths resolve from the project working directory.{skill-name} resolves to the skill directory's basename.Run: python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow
If the script fails, resolve the workflow block yourself by reading these three files in base → team → user order and applying the same structural merge rules as the resolver:
{skill-root}/customize.toml — defaults{project-root}/_bmad/custom/{skill-name}.toml — team overrides{project-root}/_bmad/custom/{skill-name}.user.toml — personal overridesAny missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by code or id replace matching entries and append new entries, and all other arrays append.
Execute each entry in {workflow.activation_steps_prepend} in order before proceeding.
Treat every entry in {workflow.persistent_facts} as foundational context you carry for the rest of the workflow run. Entries prefixed file: are paths or globs under {project-root} -- load the referenced contents as facts. All other entries are facts verbatim.
Load config from {project-root}/_bmad/bmm/config.yaml and resolve:
project_name, planning_artifacts, implementation_artifacts, user_namecommunication_language, document_output_language, user_skill_leveldate as system-generated current datetimeproject_context = **/project-context.md (load if exists){communication_language}{user_skill_level}{document_output_language}Execute each entry in {workflow.activation_steps_append} in order.
Activation is complete after all activation steps have run.
Follow the step files in order. Read one step fully, execute it, then load the next step only when directed. Do not skip, reorder, or pre-load steps.
Read fully and follow: ./step-01-clarify-and-route.md to begin the workflow.