src/bmm-skills/2-plan-workflows/bmad-ux/references/headless.md
Load this file when invoked headless. Follow it for the whole run.
Headless when any of: caller sets headless: true (or harness equivalent); invocation is from another skill or non-interactive runner; {workflow.activation_steps_prepend} declares it; first message is an automation context pre-supplying inputs. Ambiguous → default interactive.
Free-form structured payload in the first message:
intent — "create", "update", or "validate". If absent, infer from the artifact set.doc_workspace if a specific run folder is required.DESIGN.md + EXPERIENCE.md (or path to either) + change signal.DESIGN.md + EXPERIENCE.md (or path to either). Workspace defaults to the spines' containing directory.Inferences → assumptions[]. Gaps needing a human decision → open_questions[]. Do not invent persona, brand, accessibility, or scope detail.
Creative tools default off in headless. Caller can override; artifacts land in .working/ and are not promoted unless the caller signals.
Do not ask. Do not greet. Complete the intent from what's provided, what exists in {doc_workspace}, or what you can discover. If intent stays ambiguous after inference, halt with status: "blocked" and a one-sentence reason.
status:
"complete" — stands on its own."partial" — artifact produced but open_questions[] non-empty or critical inputs inferred."blocked" — no artifact produced.End with JSON matching assets/headless-schemas.md. intent reflects detected intent. Omit keys for artifacts not produced.
Update. Apply the change. Log to .decision-log.md with rationale. Surface conflicts in conflicts_with_prior_decisions[].
Validate. Always write both validation-report.html and validation-report.md regardless of finding count. Always include "offer_to_update": true. Skip the browser-open step.