fix(skills): strengthen activation guardrails for all workflow skills

Add explicit "Activation is complete" boundary markers that require
confirming activation_steps_prepend and activation_steps_append were
fully executed before beginning the main workflow.

Previously, the guardrail was either missing (bmad-product-brief,
bmad-prd, bmad-investigate) or too weak ("Begin the workflow below").
LLM agents would short-circuit complex activation sequences (INCLUDE →
READ → RUN → CHECK → FILTER → CD) by guessing variables instead of
executing steps in order, causing append steps and on_complete hooks
to be silently skipped.

The new guardrail explicitly names both prepend and append steps,
requiring confirmation before proceeding. This prevents agents from
starting the main workflow in parallel with activation.

23 skills updated: bmad-product-brief, bmad-prd, bmad-prfaq,
bmad-investigate, bmad-create-story, bmad-dev-story,
bmad-quick-dev, bmad-code-review, bmad-correct-course,
bmad-sprint-planning, bmad-sprint-status, bmad-retrospective,
bmad-qa-generate-e2e-tests, bmad-checkpoint-preview,
bmad-check-implementation-readiness, bmad-create-architecture,
bmad-create-epics-and-stories, bmad-generate-project-context,
bmad-create-ux-design, bmad-document-project, bmad-market-research,
bmad-technical-research, bmad-domain-research.
This commit is contained in:
Jerome Revillard 2026-05-20 11:28:13 +02:00
parent 1da6bf80df
commit a4cdc82754
23 changed files with 26 additions and 20 deletions

View File

@ -55,7 +55,7 @@ Greet `{user_name}` (if you have not already), speaking in `{communication_langu
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Execution

View File

@ -65,7 +65,7 @@ Greet `{user_name}`, speaking in `{communication_language}`. Be warm but efficie
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Continue below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Pre-workflow Setup

View File

@ -23,6 +23,8 @@ At the opening greeting, let the user know they can invoke `bmad-party-mode` for
6. Greet `{user_name}` in `{communication_language}` — and stay in `{communication_language}` for every turn for the entire run, not just the greeting. Detect intent (create / update / validate). If interactive and intent is unclear, ask; for headless behavior see `## Headless Mode`.
7. Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Intent Operating Modes
**Create.** A brief the user is proud of, that meets their needs, drawn out through real conversation — do not assume: instead converse and understand, and then help craft the best product brief for their needs. Begin in `## Discovery` before drafting; the brief comes after the picture is on the table. Shape follows the product and need. Treat `{workflow.brief_template}` as a starting structure, not a contract: drop sections that do not earn their place, add sections the product needs, reorder freely - create sections for specialized domains or concerns also as needed. The brief serves the product's story, not the template's shape. Bind `{doc_workspace}` to a fresh folder at `{workflow.brief_output_path}/{workflow.run_folder_pattern}/` and write `brief.md` there with YAML frontmatter (title, status, created, updated). For Update and Validate, `{doc_workspace}` is the existing folder of the brief being targeted.

View File

@ -59,7 +59,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## QUICK TOPIC DISCOVERY

View File

@ -59,7 +59,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## QUICK TOPIC DISCOVERY

View File

@ -59,7 +59,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## QUICK TOPIC DISCOVERY

View File

@ -62,7 +62,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Paths

View File

@ -22,6 +22,8 @@ You are a master facilitator and coach helping the user create, edit, or validat
5. Detect intent: **Create** (no PRD), **Update** (existing PRD), **Validate** (critique only). If ambiguous, ask. For Create intent, before binding a fresh workspace, scan `{workflow.prd_output_path}` for prior in-progress runs (folders matching `{workflow.run_folder_pattern}` whose `prd.md` frontmatter `status` is not `final`); if any exist, offer to resume rather than starting over.
6. Run `{workflow.activation_steps_append}`.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Intent Modes
**Create.** Bind `{doc_workspace}` to `{workflow.prd_output_path}/{workflow.run_folder_pattern}/`. Write `prd.md` with YAML frontmatter (title, status, created, updated — initial `status: draft`), and create the `.decision-log.md` skeleton at the workspace root so subsequent decisions land in a known file. Tell the user the path. Run `## Discovery`, then `## Finalize`.

View File

@ -84,7 +84,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Execution

View File

@ -65,7 +65,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Execution

View File

@ -86,7 +86,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Execution

View File

@ -65,7 +65,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Paths

View File

@ -55,7 +55,7 @@ Greet the user, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Global Step Rules (apply to every step)

View File

@ -58,7 +58,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## WORKFLOW ARCHITECTURE

View File

@ -62,7 +62,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Paths

View File

@ -63,7 +63,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Paths

View File

@ -63,7 +63,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Paths

View File

@ -84,6 +84,8 @@ Run each entry in `{workflow.activation_steps_append}` in order.
Acknowledge the input as a reference (record paths and IDs; don't read raw content). Path to an existing case file →
Outcome 0. Otherwise → Outcome 1.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Procedure
### Outcome 0: Existing case is loaded and surfaced

View File

@ -56,7 +56,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Paths

View File

@ -79,7 +79,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## WORKFLOW ARCHITECTURE

View File

@ -73,7 +73,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Paths

View File

@ -58,7 +58,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Paths

View File

@ -56,7 +56,7 @@ Greet `{user_name}`, speaking in `{communication_language}`.
Execute each entry in `{workflow.activation_steps_append}` in order.
Activation is complete. Begin the workflow below.
Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
## Paths