Files
ping-mee-self-service-platform/.agents/skills/bmad-build-auto/workflow.md
T
2026-10-15 08:57:23 +02:00

4.7 KiB

{% if workflow.route not in ("oneshot", "full", "auto") %}{{ halt("workflow.route must be oneshot, full, or auto, not " ~ workflow.route) }}{% endif %} {% if workflow.review not in ("none", "quick", "thorough", "auto") %}{{ halt("workflow.review must be none, quick, thorough, or auto, not " ~ workflow.review) }}{% endif %}

Build Auto Workflow

Goal: Turn intent into a hardened, reviewable artifact, without human interaction.

CRITICAL: If a step directs you to another snapshot file, read it fully and follow it. No exceptions.

HALT

To HALT with a final status and optional blocking condition. The halts blocked plan supplied and dropped plan supplied write nothing, so the plan keeps its first reason or its dropped status: go straight to 3.

  1. A ticket from the tree ({ticket_args} is set) with final status blocked: run uv run {project-root}/_bmad/method/scripts/tickets.py --project-root {project-root} mark {ticket_args} blocked --blocked <blocking condition>, with each argument quoted for the shell, which writes status, blocked_at, and blocked_reason to {plan_file} and creates it when there is none. Then append missing result details under ## Auto Run Result in {plan_file}. If mark fails, follow 2 instead.
  2. Otherwise:
    • If {plan_file} is known and exists, update status in frontmatter and append missing result details under ## Auto Run Result.
    • If {plan_file} is unknown or missing, create {{ initiative_folder }}/bmad-build-auto-result-<slug-or-timestamp>.md with:
      ---
      status: <final status>
      ---
      
      # BMad Build Auto Result
      
      Status: <final status>
      Blocking condition: <blocking condition, if any>
      
  3. Follow On Complete below, then stop the workflow.

On Complete

If anything appears below, follow it as the final terminal instruction before exiting; otherwise exit normally.

{{ workflow.on_complete }}

Subagents

Using subagents when instructed is mandatory. If you cannot, HALT with status blocked and blocking condition no subagents.

Launch all the subagents a step calls for in one message — several blocking calls awaited together in the same turn — then wait for all their results before continuing; a step that calls for one subagent is that same message with one call. Never split a step's launches across messages, and never run one detached. 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.

READY FOR DEVELOPMENT STANDARD

A oneshot plan is "Ready for Development" when its intent is clear, complete, coherent, and sufficient to implement and verify, its route choice and reason are recorded, and all template frontmatter fields are preserved.

A full plan is "Ready for Development" when:

  • Actionable: Every task has a file path and specific action.
  • Logical: Tasks ordered by dependency.
  • Testable: All ACs use Given/When/Then, and each is a check the implementer can prove it met without pointing at code.
  • Surface-anchored: ACs observe the outermost surface the intent references — never a more internal proxy for it.
  • Complete: No placeholders or TBDs.
  • Sufficient: No known requirement, acceptance, dependency, or implementation gaps remain unresolved.
  • Coherent: No unresolved ambiguities or internal contradictions.

Conventions

  • Whenever this workflow captures or records a version-control revision, obtain the full canonical identifier directly from version control and preserve it verbatim.

On Activation

Step 1: Execute Prepend Steps

Execute each of these steps in order before proceeding (_None._ means skip):

{{ workflow.activation_steps_prepend }}

Step 2: Load Persistent Facts

Treat every entry below 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 (_None._ means none):

{{ workflow.persistent_facts }}

Step 3: Execute Append Steps

Execute each of these steps in order (_None._ means skip):

{{ workflow.activation_steps_append }}

Activation is complete after all activation steps have run.

Workflow Execution

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.

First Workflow Step

Read fully and follow: {{ rendered("step-01-clarify-and-route.md") }}.