chore(bmad): migrate 80_bmad/base from 6.0.4 to 6.9 + port customizations to TOML overrides

Migration des modules via l'installer officiel (Quick update, en place) :
- core/bmm 6.0.4 -> 6.9.0
- tea 1.5.3 -> 1.19.0
- cis 0.1.8 -> 0.2.1

Portage des customisations Lead_tech vers le nouveau mécanisme d'overrides
(_bmad/custom/<skill>.toml, couche "team" résolue par resolve_customization.py) :
- 6 agents directs (analyst, architect, dev, pm, tech-writer, ux-designer)
- module tea
- workflows: dev-story, create-story, code-review, quick-dev, qa-generate-e2e-tests
- agents disparus en 6.9 reportés vers leurs workflows hôtes
  (QA -> code-review, SM -> create-story, quick-flow-solo-dev -> quick-dev)
- règle de capitalisation 95_a_capitaliser factorisée dans
  _bmad/custom/leadtech-capitalisation.md (référencée via persistent_facts)

Nettoyage du legacy 6.0.4 :
- suppression des 17 *.customize.yaml (non lus par 6.9)
- suppression des .bak générés par l'installer (contenu porté en .toml)
- suppression de 17 skills orphelins dans .agents/skills (anciens noms, .agents/.claude réalignés 66=66)
- suppression des coquilles de workflows disparus

Tous les overrides validés par le resolver officiel (12/12 JSON valide,
base préservée + ajouts Lead_tech). Le cœur (couche customize.toml) n'est plus modifié,
donc les updates 6.x futurs ne pourront plus écraser ces customisations.

Note env: resolve_customization.py exige Python >=3.11 (uv installé, python3 -> 3.12.13).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
MaksTinyWorkshop
2026-06-24 16:48:44 +02:00
parent a7b96919a6
commit cbace46989
2117 changed files with 477236 additions and 29144 deletions
@@ -0,0 +1,30 @@
---
name: bmad-create-prd
description: 'DEPRECATED — consolidated into bmad-prd create intent - this skill will be removed in v7 in favor of `bmad-prd`.'
---
# 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`).
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. Customization fields that were in this version still remain in the new version and will be respected if present in `_bmad/custom/bmad-prd.toml`, but the new version also supports additional fields that you can take advantage of by migrating.
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.
@@ -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 = ""