From 00f42947da9d358e9f17791e2653ad05c9e6451e Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Wed, 13 May 2026 08:37:59 -0500 Subject: [PATCH] feat(bmm): add deprecation shims for retired PRD skills MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Re-adds bmad-create-prd, bmad-edit-prd, bmad-validate-prd as thin compatibility shims so existing invocations by name and _bmad/custom/bmad-{create,edit,validate}-prd.toml override files keep working post-consolidation. Each shim contains only SKILL.md and customize.toml — no steps, data, or templates. On activation, each shim: 1. Resolves customization via resolve_customization.py, picking up any legacy override files for the four legacy fields (activation_steps_*, persistent_facts, on_complete). 2. Emits a one-time deprecation notice in {communication_language}, pointing at bmad-prd and the migration path for override files. 3. Invokes bmad-prd with the appropriate intent (create / update / validate), passes through the resolved legacy customization with instruction to use these values instead of re-resolving from bmad-prd's own customize.toml, and forwards the original user input verbatim. bmad-prd continues to read its own customize.toml + bmad-prd.toml overrides for the new-only fields (prd_template, validation_checklist, doc_standards, output_dir, output_folder_name, external_sources, external_handoffs, validation_report_template). Users wanting those fields must migrate to invoking bmad-prd directly. --- .../2-plan-workflows/bmad-create-prd/SKILL.md | 30 +++++++++++++ .../bmad-create-prd/customize.toml | 41 ++++++++++++++++++ .../2-plan-workflows/bmad-edit-prd/SKILL.md | 30 +++++++++++++ .../bmad-edit-prd/customize.toml | 42 +++++++++++++++++++ .../bmad-validate-prd/SKILL.md | 30 +++++++++++++ .../bmad-validate-prd/customize.toml | 42 +++++++++++++++++++ 6 files changed, 215 insertions(+) create mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/SKILL.md create mode 100644 src/bmm-skills/2-plan-workflows/bmad-create-prd/customize.toml create mode 100644 src/bmm-skills/2-plan-workflows/bmad-edit-prd/SKILL.md create mode 100644 src/bmm-skills/2-plan-workflows/bmad-edit-prd/customize.toml create mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/SKILL.md create mode 100644 src/bmm-skills/2-plan-workflows/bmad-validate-prd/customize.toml diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/SKILL.md b/src/bmm-skills/2-plan-workflows/bmad-create-prd/SKILL.md new file mode 100644 index 000000000..554245a87 --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-create-prd/SKILL.md @@ -0,0 +1,30 @@ +--- +name: bmad-create-prd +description: 'DEPRECATED — consolidated into bmad-prd. Forwards to bmad-prd with create intent. Use when the user invokes bmad-create-prd by name, has a {project-root}/_bmad/custom/bmad-create-prd.toml override file, or asks for the legacy PRD-create workflow specifically.' +--- + +# DEPRECATED — forwards to bmad-prd (create intent) + +This skill was consolidated into `bmad-prd`. It is retained as a thin compatibility shim so existing invocations by name and `_bmad/custom/bmad-create-prd.toml` override files keep working. New work should invoke `bmad-prd` directly — it detects create / update / validate intent from the conversation. + +## On Activation + +1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. This picks up any `{project-root}/_bmad/custom/bmad-create-prd.toml` and `bmad-create-prd.user.toml` overrides for the legacy fields (`activation_steps_prepend`, `activation_steps_append`, `persistent_facts`, `on_complete`). On failure, surface the diagnostic and halt. + +2. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present) to resolve `{user_name}` and `{communication_language}`. + +3. Emit a deprecation notice to the user in `{communication_language}`: + + > Notice: `bmad-create-prd` is deprecated and will be removed in a future release. It now forwards to `bmad-prd` with create intent. To silence this notice and access the full new customization surface (`prd_template`, `validation_checklist`, `doc_standards`, `external_sources`, `external_handoffs`, `output_dir`, `output_folder_name`), migrate `_bmad/custom/bmad-create-prd.toml` to `_bmad/custom/bmad-prd.toml` and invoke `bmad-prd` directly next time. + +4. Invoke `bmad-prd` with the following context. Pass these as the activating context so `bmad-prd` honors them instead of resolving its own customization from scratch: + + - **Intent:** `create` — skip `bmad-prd`'s usual intent detection step. + - **Pre-resolved legacy customization** — use these in place of resolving from `bmad-prd`'s own `customize.toml` for the four legacy fields. For everything else (`prd_template`, `validation_checklist`, `validation_report_template`, `doc_standards`, `output_dir`, `output_folder_name`, `external_sources`, `external_handoffs`), use `bmad-prd`'s own defaults and overrides as normal: + - `activation_steps_prepend` = the resolved value from step 1 + - `activation_steps_append` = the resolved value from step 1 + - `persistent_facts` = the resolved value from step 1 + - `on_complete` = the resolved value from step 1 + - **Original user input:** forward whatever the user said when invoking this skill verbatim. + + `bmad-prd` takes the workflow from here. Do not execute any further steps in this shim. diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/customize.toml b/src/bmm-skills/2-plan-workflows/bmad-create-prd/customize.toml new file mode 100644 index 000000000..fde1ba1b1 --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-create-prd/customize.toml @@ -0,0 +1,41 @@ +# DO NOT EDIT -- overwritten on every update. +# +# Workflow customization surface for bmad-create-prd. Mirrors the +# agent customization shape under the [workflow] namespace. + +[workflow] + +# --- Configurable below. Overrides merge per BMad structural rules: --- +# scalars: override wins • arrays (persistent_facts, activation_steps_*): append +# arrays-of-tables with `code`/`id`: replace matching items, append new ones. + +# Steps to run before the standard activation (config load, greet). +# Overrides append. Use for pre-flight loads, compliance checks, etc. + +activation_steps_prepend = [] + +# Steps to run after greet but before the workflow begins. +# Overrides append. Use for context-heavy setup that should happen +# once the user has been acknowledged. + +activation_steps_append = [] + +# Persistent facts the workflow keeps in mind for the whole run +# (standards, compliance constraints, stylistic guardrails). +# Distinct from the runtime memory sidecar — these are static context +# loaded on activation. Overrides append. +# +# Each entry is either: +# - a literal sentence, e.g. "All PRDs must include a regulatory-risk section." +# - a file reference prefixed with `file:`, e.g. "file:{project-root}/docs/standards.md" +# (glob patterns are supported; the file's contents are loaded and treated as facts). + +persistent_facts = [ + "file:{project-root}/**/project-context.md", +] + +# Scalar: executed when the workflow reaches Step 12 (Workflow Completion), +# after the PRD is finalized and workflow status is updated. Override wins. +# Leave empty for no custom post-completion behavior. + +on_complete = "" diff --git a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/SKILL.md b/src/bmm-skills/2-plan-workflows/bmad-edit-prd/SKILL.md new file mode 100644 index 000000000..6d237fef7 --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-edit-prd/SKILL.md @@ -0,0 +1,30 @@ +--- +name: bmad-edit-prd +description: 'DEPRECATED — consolidated into bmad-prd. Forwards to bmad-prd with update intent. Use when the user invokes bmad-edit-prd by name, has a {project-root}/_bmad/custom/bmad-edit-prd.toml override file, or asks for the legacy PRD-edit workflow specifically.' +--- + +# DEPRECATED — forwards to bmad-prd (update intent) + +This skill was consolidated into `bmad-prd`. It is retained as a thin compatibility shim so existing invocations by name and `_bmad/custom/bmad-edit-prd.toml` override files keep working. New work should invoke `bmad-prd` directly — it detects create / update / validate intent from the conversation. + +## On Activation + +1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. This picks up any `{project-root}/_bmad/custom/bmad-edit-prd.toml` and `bmad-edit-prd.user.toml` overrides for the legacy fields (`activation_steps_prepend`, `activation_steps_append`, `persistent_facts`, `on_complete`). On failure, surface the diagnostic and halt. + +2. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present) to resolve `{user_name}` and `{communication_language}`. + +3. Emit a deprecation notice to the user in `{communication_language}`: + + > Notice: `bmad-edit-prd` is deprecated and will be removed in a future release. It now forwards to `bmad-prd` with update intent. To silence this notice and access the full new customization surface (`prd_template`, `validation_checklist`, `doc_standards`, `external_sources`, `external_handoffs`, `output_dir`, `output_folder_name`), migrate `_bmad/custom/bmad-edit-prd.toml` to `_bmad/custom/bmad-prd.toml` and invoke `bmad-prd` directly next time. + +4. Invoke `bmad-prd` with the following context. Pass these as the activating context so `bmad-prd` honors them instead of resolving its own customization from scratch: + + - **Intent:** `update` — skip `bmad-prd`'s usual intent detection step. + - **Pre-resolved legacy customization** — use these in place of resolving from `bmad-prd`'s own `customize.toml` for the four legacy fields. For everything else (`prd_template`, `validation_checklist`, `validation_report_template`, `doc_standards`, `output_dir`, `output_folder_name`, `external_sources`, `external_handoffs`), use `bmad-prd`'s own defaults and overrides as normal: + - `activation_steps_prepend` = the resolved value from step 1 + - `activation_steps_append` = the resolved value from step 1 + - `persistent_facts` = the resolved value from step 1 + - `on_complete` = the resolved value from step 1 + - **Original user input:** forward whatever the user said when invoking this skill verbatim (the target PRD path, the change signal, etc.). + + `bmad-prd` takes the workflow from here. Do not execute any further steps in this shim. diff --git a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/customize.toml b/src/bmm-skills/2-plan-workflows/bmad-edit-prd/customize.toml new file mode 100644 index 000000000..1886d4ace --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-edit-prd/customize.toml @@ -0,0 +1,42 @@ +# DO NOT EDIT -- overwritten on every update. +# +# Workflow customization surface for bmad-edit-prd. Mirrors the +# agent customization shape under the [workflow] namespace. + +[workflow] + +# --- Configurable below. Overrides merge per BMad structural rules: --- +# scalars: override wins • arrays (persistent_facts, activation_steps_*): append +# arrays-of-tables with `code`/`id`: replace matching items, append new ones. + +# Steps to run before the standard activation (config load, greet). +# Overrides append. Use for pre-flight loads, compliance checks, etc. + +activation_steps_prepend = [] + +# Steps to run after greet but before the workflow begins. +# Overrides append. Use for context-heavy setup that should happen +# once the user has been acknowledged. + +activation_steps_append = [] + +# Persistent facts the workflow keeps in mind for the whole run +# (standards, compliance constraints, stylistic guardrails). +# Distinct from the runtime memory sidecar — these are static context +# loaded on activation. Overrides append. +# +# Each entry is either: +# - a literal sentence, e.g. "All PRDs must include a regulatory-risk section." +# - a file reference prefixed with `file:`, e.g. "file:{project-root}/docs/standards.md" +# (glob patterns are supported; the file's contents are loaded and treated as facts). + +persistent_facts = [ + "file:{project-root}/**/project-context.md", +] + +# Scalar: executed when the workflow reaches Step E-4 (Complete & Validate) and the +# user exits via [S] Summary or [X] Exit — not on [V] Validate (which chains to +# bmad-validate-prd) or [E] Edit More (which loops back). Override wins. +# Leave empty for no custom post-completion behavior. + +on_complete = "" diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/SKILL.md b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/SKILL.md new file mode 100644 index 000000000..7dafb3801 --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/SKILL.md @@ -0,0 +1,30 @@ +--- +name: bmad-validate-prd +description: 'DEPRECATED — consolidated into bmad-prd. Forwards to bmad-prd with validate intent. Use when the user invokes bmad-validate-prd by name, has a {project-root}/_bmad/custom/bmad-validate-prd.toml override file, or asks for the legacy PRD-validate workflow specifically.' +--- + +# DEPRECATED — forwards to bmad-prd (validate intent) + +This skill was consolidated into `bmad-prd`. It is retained as a thin compatibility shim so existing invocations by name and `_bmad/custom/bmad-validate-prd.toml` override files keep working. New work should invoke `bmad-prd` directly — it detects create / update / validate intent from the conversation. + +## On Activation + +1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. This picks up any `{project-root}/_bmad/custom/bmad-validate-prd.toml` and `bmad-validate-prd.user.toml` overrides for the legacy fields (`activation_steps_prepend`, `activation_steps_append`, `persistent_facts`, `on_complete`). On failure, surface the diagnostic and halt. + +2. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present) to resolve `{user_name}` and `{communication_language}`. + +3. Emit a deprecation notice to the user in `{communication_language}`: + + > Notice: `bmad-validate-prd` is deprecated and will be removed in a future release. It now forwards to `bmad-prd` with validate intent. To silence this notice and access the full new customization surface (`prd_template`, `validation_checklist`, `doc_standards`, `external_sources`, `external_handoffs`, `output_dir`, `output_folder_name`), migrate `_bmad/custom/bmad-validate-prd.toml` to `_bmad/custom/bmad-prd.toml` and invoke `bmad-prd` directly next time. + +4. Invoke `bmad-prd` with the following context. Pass these as the activating context so `bmad-prd` honors them instead of resolving its own customization from scratch: + + - **Intent:** `validate` — skip `bmad-prd`'s usual intent detection step. + - **Pre-resolved legacy customization** — use these in place of resolving from `bmad-prd`'s own `customize.toml` for the four legacy fields. For everything else (`prd_template`, `validation_checklist`, `validation_report_template`, `doc_standards`, `output_dir`, `output_folder_name`, `external_sources`, `external_handoffs`), use `bmad-prd`'s own defaults and overrides as normal: + - `activation_steps_prepend` = the resolved value from step 1 + - `activation_steps_append` = the resolved value from step 1 + - `persistent_facts` = the resolved value from step 1 + - `on_complete` = the resolved value from step 1 + - **Original user input:** forward whatever the user said when invoking this skill verbatim (the target PRD path, etc.). + + `bmad-prd` takes the workflow from here. Do not execute any further steps in this shim. diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/customize.toml b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/customize.toml new file mode 100644 index 000000000..15ec851af --- /dev/null +++ b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/customize.toml @@ -0,0 +1,42 @@ +# DO NOT EDIT -- overwritten on every update. +# +# Workflow customization surface for bmad-validate-prd. Mirrors the +# agent customization shape under the [workflow] namespace. + +[workflow] + +# --- Configurable below. Overrides merge per BMad structural rules: --- +# scalars: override wins • arrays (persistent_facts, activation_steps_*): append +# arrays-of-tables with `code`/`id`: replace matching items, append new ones. + +# Steps to run before the standard activation (config load, greet). +# Overrides append. Use for pre-flight loads, compliance checks, etc. + +activation_steps_prepend = [] + +# Steps to run after greet but before the workflow begins. +# Overrides append. Use for context-heavy setup that should happen +# once the user has been acknowledged. + +activation_steps_append = [] + +# Persistent facts the workflow keeps in mind for the whole run +# (standards, compliance constraints, stylistic guardrails). +# Distinct from the runtime memory sidecar — these are static context +# loaded on activation. Overrides append. +# +# Each entry is either: +# - a literal sentence, e.g. "All PRDs must include a regulatory-risk section." +# - a file reference prefixed with `file:`, e.g. "file:{project-root}/docs/standards.md" +# (glob patterns are supported; the file's contents are loaded and treated as facts). + +persistent_facts = [ + "file:{project-root}/**/project-context.md", +] + +# Scalar: executed when the workflow reaches Step 13 (Validation Report Complete) and +# the user exits via [X] Exit — not on [E] Use Edit Workflow (which chains to +# bmad-edit-prd), [R] Review (which loops within), or [F] Fix (which loops within). +# Override wins. Leave empty for no custom post-completion behavior. + +on_complete = ""