From 58cf16979a0d88d21e7129bf7f9fa171c92bd711 Mon Sep 17 00:00:00 2001 From: Jerome Revillard Date: Mon, 27 Apr 2026 18:16:19 +0200 Subject: [PATCH] fix(skills): use resolve_config.py instead of reading config.yaml directly Skills were reading _bmad/bmm|core/config.yaml directly, bypassing the TOML merge mechanism. Now they call resolve_config.py first, with a fallback to read the merge logic and apply it manually. --- src/bmm-skills/1-analysis/bmad-agent-analyst/SKILL.md | 2 +- .../1-analysis/bmad-agent-tech-writer/SKILL.md | 2 +- src/bmm-skills/1-analysis/bmad-document-project/SKILL.md | 2 +- .../workflows/deep-dive-workflow.md | 2 +- .../workflows/full-scan-workflow.md | 2 +- src/bmm-skills/1-analysis/bmad-prfaq/SKILL.md | 2 +- src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md | 9 ++++++++- .../1-analysis/research/bmad-domain-research/SKILL.md | 2 +- .../1-analysis/research/bmad-market-research/SKILL.md | 2 +- .../1-analysis/research/bmad-technical-research/SKILL.md | 2 +- src/bmm-skills/2-plan-workflows/bmad-agent-pm/SKILL.md | 2 +- .../2-plan-workflows/bmad-agent-ux-designer/SKILL.md | 2 +- src/bmm-skills/2-plan-workflows/bmad-create-prd/SKILL.md | 2 +- .../2-plan-workflows/bmad-create-ux-design/SKILL.md | 2 +- src/bmm-skills/2-plan-workflows/bmad-edit-prd/SKILL.md | 2 +- src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md | 2 +- .../2-plan-workflows/bmad-validate-prd/SKILL.md | 2 +- .../3-solutioning/bmad-agent-architect/SKILL.md | 2 +- .../bmad-check-implementation-readiness/SKILL.md | 2 +- .../3-solutioning/bmad-create-architecture/SKILL.md | 2 +- .../3-solutioning/bmad-create-epics-and-stories/SKILL.md | 2 +- .../3-solutioning/bmad-generate-project-context/SKILL.md | 2 +- src/bmm-skills/4-implementation/bmad-agent-dev/SKILL.md | 2 +- .../4-implementation/bmad-checkpoint-preview/SKILL.md | 2 +- .../4-implementation/bmad-correct-course/SKILL.md | 2 +- .../4-implementation/bmad-create-story/SKILL.md | 2 +- .../4-implementation/bmad-qa-generate-e2e-tests/SKILL.md | 2 +- .../4-implementation/bmad-retrospective/SKILL.md | 2 +- src/core-skills/bmad-brainstorming/workflow.md | 2 +- src/core-skills/bmad-help/SKILL.md | 2 +- src/core-skills/bmad-party-mode/SKILL.md | 2 +- 31 files changed, 38 insertions(+), 31 deletions(-) diff --git a/src/bmm-skills/1-analysis/bmad-agent-analyst/SKILL.md b/src/bmm-skills/1-analysis/bmad-agent-analyst/SKILL.md index 4653171df..daa69616f 100644 --- a/src/bmm-skills/1-analysis/bmad-agent-analyst/SKILL.md +++ b/src/bmm-skills/1-analysis/bmad-agent-analyst/SKILL.md @@ -46,7 +46,7 @@ Treat every entry in `{agent.persistent_facts}` as foundational context you carr ### Step 5: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications - Use `{document_output_language}` for output documents diff --git a/src/bmm-skills/1-analysis/bmad-agent-tech-writer/SKILL.md b/src/bmm-skills/1-analysis/bmad-agent-tech-writer/SKILL.md index ff6430d93..8b5749163 100644 --- a/src/bmm-skills/1-analysis/bmad-agent-tech-writer/SKILL.md +++ b/src/bmm-skills/1-analysis/bmad-agent-tech-writer/SKILL.md @@ -46,7 +46,7 @@ Treat every entry in `{agent.persistent_facts}` as foundational context you carr ### Step 5: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications - Use `{document_output_language}` for output documents diff --git a/src/bmm-skills/1-analysis/bmad-document-project/SKILL.md b/src/bmm-skills/1-analysis/bmad-document-project/SKILL.md index 112732031..0a628e291 100644 --- a/src/bmm-skills/1-analysis/bmad-document-project/SKILL.md +++ b/src/bmm-skills/1-analysis/bmad-document-project/SKILL.md @@ -40,7 +40,7 @@ Treat every entry in `{workflow.persistent_facts}` as foundational context you c ### Step 4: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications - Use `{document_output_language}` for output documents diff --git a/src/bmm-skills/1-analysis/bmad-document-project/workflows/deep-dive-workflow.md b/src/bmm-skills/1-analysis/bmad-document-project/workflows/deep-dive-workflow.md index c55f036a7..1796ea8d8 100644 --- a/src/bmm-skills/1-analysis/bmad-document-project/workflows/deep-dive-workflow.md +++ b/src/bmm-skills/1-analysis/bmad-document-project/workflows/deep-dive-workflow.md @@ -11,7 +11,7 @@ ### Configuration Loading -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - `project_knowledge` - `user_name` diff --git a/src/bmm-skills/1-analysis/bmad-document-project/workflows/full-scan-workflow.md b/src/bmm-skills/1-analysis/bmad-document-project/workflows/full-scan-workflow.md index 5aaf4a580..367179ec3 100644 --- a/src/bmm-skills/1-analysis/bmad-document-project/workflows/full-scan-workflow.md +++ b/src/bmm-skills/1-analysis/bmad-document-project/workflows/full-scan-workflow.md @@ -10,7 +10,7 @@ ### Configuration Loading -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - `project_knowledge` - `user_name` diff --git a/src/bmm-skills/1-analysis/bmad-prfaq/SKILL.md b/src/bmm-skills/1-analysis/bmad-prfaq/SKILL.md index 6ce2d33ed..55338d6f9 100644 --- a/src/bmm-skills/1-analysis/bmad-prfaq/SKILL.md +++ b/src/bmm-skills/1-analysis/bmad-prfaq/SKILL.md @@ -50,7 +50,7 @@ Treat every entry in `{workflow.persistent_facts}` as foundational context you c ### Step 4: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications - Use `{document_output_language}` for output documents diff --git a/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md b/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md index 671079999..66ac987c0 100644 --- a/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md +++ b/src/bmm-skills/1-analysis/bmad-product-brief/SKILL.md @@ -19,7 +19,7 @@ At the opening greeting, let the user know they can invoke `bmad-party-mode` for 2. Execute each entry in `{workflow.activation_steps_prepend}` in order. 3. Treat every entry in `{workflow.persistent_facts}` as foundational context for the rest of the run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim. 4. `{workflow.external_sources}` is an org-configured registry of internal tools (knowledge bases, MCP tools); consult them alongside generic web research on the same triggers in `## Discovery`, org tools preferred when their directive matches. If a named tool is unavailable at runtime, fall back to standard behavior and note the gap when relevant. -5. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present). Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`. +5. Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`. 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. @@ -59,6 +59,13 @@ When invoked headless, do not ask. Complete the intent using what is provided, w Omit keys for artifacts that were not produced. +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: +- Use `{user_name}` for greeting +- Use `{communication_language}` for all communications +- Use `{document_output_language}` for output documents +- Use `{planning_artifacts}` for output location and artifact scanning +- Use `{project_knowledge}` for additional context scanning + ## Discovery Conversationally surface what the user brings, why this brief exists, and the domain — echo back how each shapes your approach. Open with space for the full picture: invite a brain dump and ask up front for any source material they already have (memo, deck, transcript, prior brief, slack thread). Read what exists first; ask only what is missing. After the dump, a simple "anything else?" often surfaces what they almost forgot. Drill into specifics only after the broad shape is on the table; premature granular questions interrupt the dump and miss the room. Get a read on stakes early (passion project, internal pitch, investor input, public launch), and let that calibrate how hard you push. During the dump, spawn web-research subagents to ground the picture — landscape, comparables, current state — AI especially, where training data ages by the week. Subagent searches; parent gets a digest. Deep work (full market sizing, exhaustive teardowns) → suggest `bmad-market-research` or `bmad-domain-research`. diff --git a/src/bmm-skills/1-analysis/research/bmad-domain-research/SKILL.md b/src/bmm-skills/1-analysis/research/bmad-domain-research/SKILL.md index be364aa2f..d4fa24e05 100644 --- a/src/bmm-skills/1-analysis/research/bmad-domain-research/SKILL.md +++ b/src/bmm-skills/1-analysis/research/bmad-domain-research/SKILL.md @@ -44,7 +44,7 @@ Treat every entry in `{workflow.persistent_facts}` as foundational context you c ### Step 4: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications - Use `{document_output_language}` for output documents diff --git a/src/bmm-skills/1-analysis/research/bmad-market-research/SKILL.md b/src/bmm-skills/1-analysis/research/bmad-market-research/SKILL.md index 964049085..eb96b59f8 100644 --- a/src/bmm-skills/1-analysis/research/bmad-market-research/SKILL.md +++ b/src/bmm-skills/1-analysis/research/bmad-market-research/SKILL.md @@ -44,7 +44,7 @@ Treat every entry in `{workflow.persistent_facts}` as foundational context you c ### Step 4: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications - Use `{document_output_language}` for output documents diff --git a/src/bmm-skills/1-analysis/research/bmad-technical-research/SKILL.md b/src/bmm-skills/1-analysis/research/bmad-technical-research/SKILL.md index 582a05c60..e46a82239 100644 --- a/src/bmm-skills/1-analysis/research/bmad-technical-research/SKILL.md +++ b/src/bmm-skills/1-analysis/research/bmad-technical-research/SKILL.md @@ -44,7 +44,7 @@ Treat every entry in `{workflow.persistent_facts}` as foundational context you c ### Step 4: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications - Use `{document_output_language}` for output documents diff --git a/src/bmm-skills/2-plan-workflows/bmad-agent-pm/SKILL.md b/src/bmm-skills/2-plan-workflows/bmad-agent-pm/SKILL.md index 693072603..9ab429a27 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-agent-pm/SKILL.md +++ b/src/bmm-skills/2-plan-workflows/bmad-agent-pm/SKILL.md @@ -46,7 +46,7 @@ Treat every entry in `{agent.persistent_facts}` as foundational context you carr ### Step 5: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications - Use `{document_output_language}` for output documents diff --git a/src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer/SKILL.md b/src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer/SKILL.md index cb261c3fb..2e666a9b8 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer/SKILL.md +++ b/src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer/SKILL.md @@ -46,7 +46,7 @@ Treat every entry in `{agent.persistent_facts}` as foundational context you carr ### Step 5: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications - Use `{document_output_language}` for output documents 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 index 7062d0efe..3f74232b3 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/SKILL.md +++ b/src/bmm-skills/2-plan-workflows/bmad-create-prd/SKILL.md @@ -11,7 +11,7 @@ This skill was consolidated into `bmad-prd`. It is retained as a thin compatibil 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}`. +2. Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve `{user_name}` and `{communication_language}`. 3. Emit a deprecation notice to the user in `{communication_language}`: diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-ux-design/SKILL.md b/src/bmm-skills/2-plan-workflows/bmad-create-ux-design/SKILL.md index 496473b1e..76f865681 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-create-ux-design/SKILL.md +++ b/src/bmm-skills/2-plan-workflows/bmad-create-ux-design/SKILL.md @@ -47,7 +47,7 @@ Treat every entry in `{workflow.persistent_facts}` as foundational context you c ### Step 4: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications - Use `{document_output_language}` for output documents 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 index ee952e692..792673832 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/SKILL.md +++ b/src/bmm-skills/2-plan-workflows/bmad-edit-prd/SKILL.md @@ -11,7 +11,7 @@ This skill was consolidated into `bmad-prd`. It is retained as a thin compatibil 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`). -2. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present) to resolve `{user_name}` and `{communication_language}`. +2. Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve `{user_name}` and `{communication_language}`. 3. Emit a deprecation notice to the user in `{communication_language}`: diff --git a/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md b/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md index 310b59be0..0f468e3c4 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md +++ b/src/bmm-skills/2-plan-workflows/bmad-prd/SKILL.md @@ -17,7 +17,7 @@ You are a master facilitator and coach helping the user create, edit, or validat 1. Resolve customization: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, read `{skill-root}/customize.toml` directly and use defaults. 2. Run `{workflow.activation_steps_prepend}`. Treat `{workflow.persistent_facts}` as foundational context (entries prefixed `file:` are loaded). `{workflow.external_sources}` is an org-configured registry of internal tools (knowledge bases, MCP tools); consult them alongside generic web research on the same triggers, org tools preferred when their directive matches. Research itself fires during Discovery — see **Research subagents**. -3. Load `{project-root}/_bmad/bmm/config.yaml` (+ `config.user.yaml` if present). Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`. Missing keys → neutral defaults; never block. +3. Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve `{user_name}`, `{communication_language}`, `{document_output_language}`, `{planning_artifacts}`, `{project_name}`, `{date}`. Missing keys → neutral defaults; never block. 4. If headless, follow `references/headless.md` for the whole run. Otherwise greet the user **by name** using `{user_name}` and **in their language** using `{communication_language}` — and stay in `{communication_language}` for every turn for the entire run, not just the greeting. In the greeting, let the user know that at any point they can invoke `bmad-party-mode` for multi-agent perspectives or `bmad-advanced-elicitation` for deeper exploration on a specific section. Then scan for misroute on the first message: if the signal points elsewhere (game → BMad GDS; express build → `bmad-quick-dev`; one-pager → `bmad-product-brief`; vet product idea → `bmad-prfaq`; agent skill or custom agent → `bmad-workflow-builder`), suggest they might want the other options before continuing. 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}`. 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 index 44d1fb5ba..3228d6903 100644 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/SKILL.md +++ b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/SKILL.md @@ -11,7 +11,7 @@ This skill was consolidated into `bmad-prd`. It is retained as a thin compatibil 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`). -2. Load `{project-root}/_bmad/bmm/config.yaml` (and `config.user.yaml` if present) to resolve `{user_name}` and `{communication_language}`. +2. Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve `{user_name}` and `{communication_language}`. 3. Emit a deprecation notice to the user in `{communication_language}`: diff --git a/src/bmm-skills/3-solutioning/bmad-agent-architect/SKILL.md b/src/bmm-skills/3-solutioning/bmad-agent-architect/SKILL.md index 1650aee09..52e9829b4 100644 --- a/src/bmm-skills/3-solutioning/bmad-agent-architect/SKILL.md +++ b/src/bmm-skills/3-solutioning/bmad-agent-architect/SKILL.md @@ -46,7 +46,7 @@ Treat every entry in `{agent.persistent_facts}` as foundational context you carr ### Step 5: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications - Use `{document_output_language}` for output documents diff --git a/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/SKILL.md b/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/SKILL.md index 1d5133f90..725ce3e31 100644 --- a/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/SKILL.md +++ b/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/SKILL.md @@ -69,7 +69,7 @@ Treat every entry in `{workflow.persistent_facts}` as foundational context you c ### Step 4: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications - Use `{document_output_language}` for output documents diff --git a/src/bmm-skills/3-solutioning/bmad-create-architecture/SKILL.md b/src/bmm-skills/3-solutioning/bmad-create-architecture/SKILL.md index ca89a71cf..ebe478f73 100644 --- a/src/bmm-skills/3-solutioning/bmad-create-architecture/SKILL.md +++ b/src/bmm-skills/3-solutioning/bmad-create-architecture/SKILL.md @@ -50,7 +50,7 @@ Treat every entry in `{workflow.persistent_facts}` as foundational context you c ### Step 4: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications - Use `{document_output_language}` for output documents diff --git a/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/SKILL.md b/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/SKILL.md index a3f0f61c8..c535de75e 100644 --- a/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/SKILL.md +++ b/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/SKILL.md @@ -71,7 +71,7 @@ Treat every entry in `{workflow.persistent_facts}` as foundational context you c ### Step 4: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications - Use `{document_output_language}` for output documents diff --git a/src/bmm-skills/3-solutioning/bmad-generate-project-context/SKILL.md b/src/bmm-skills/3-solutioning/bmad-generate-project-context/SKILL.md index 42fd2e8fc..13e712fcd 100644 --- a/src/bmm-skills/3-solutioning/bmad-generate-project-context/SKILL.md +++ b/src/bmm-skills/3-solutioning/bmad-generate-project-context/SKILL.md @@ -50,7 +50,7 @@ Treat every entry in `{workflow.persistent_facts}` as foundational context you c ### Step 4: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications - Use `{document_output_language}` for output documents diff --git a/src/bmm-skills/4-implementation/bmad-agent-dev/SKILL.md b/src/bmm-skills/4-implementation/bmad-agent-dev/SKILL.md index 95a3b9594..4d2ec3711 100644 --- a/src/bmm-skills/4-implementation/bmad-agent-dev/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-agent-dev/SKILL.md @@ -46,7 +46,7 @@ Treat every entry in `{agent.persistent_facts}` as foundational context you carr ### Step 5: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications - Use `{document_output_language}` for output documents diff --git a/src/bmm-skills/4-implementation/bmad-checkpoint-preview/SKILL.md b/src/bmm-skills/4-implementation/bmad-checkpoint-preview/SKILL.md index 101dcf2bc..db1d7fba2 100644 --- a/src/bmm-skills/4-implementation/bmad-checkpoint-preview/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-checkpoint-preview/SKILL.md @@ -40,7 +40,7 @@ Treat every entry in `{workflow.persistent_facts}` as foundational context you c ### Step 4: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - `implementation_artifacts` - `planning_artifacts` diff --git a/src/bmm-skills/4-implementation/bmad-correct-course/SKILL.md b/src/bmm-skills/4-implementation/bmad-correct-course/SKILL.md index adea0bda0..0456d63dd 100644 --- a/src/bmm-skills/4-implementation/bmad-correct-course/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-correct-course/SKILL.md @@ -40,7 +40,7 @@ Treat every entry in `{workflow.persistent_facts}` as foundational context you c ### Step 4: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - `project_name`, `user_name` - `communication_language`, `document_output_language` diff --git a/src/bmm-skills/4-implementation/bmad-create-story/SKILL.md b/src/bmm-skills/4-implementation/bmad-create-story/SKILL.md index cf14039c1..516095eee 100644 --- a/src/bmm-skills/4-implementation/bmad-create-story/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-create-story/SKILL.md @@ -47,7 +47,7 @@ Treat every entry in `{workflow.persistent_facts}` as foundational context you c ### Step 4: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - `project_name`, `user_name` - `communication_language`, `document_output_language` diff --git a/src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests/SKILL.md b/src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests/SKILL.md index ef9d7e87a..655130c71 100644 --- a/src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests/SKILL.md @@ -40,7 +40,7 @@ Treat every entry in `{workflow.persistent_facts}` as foundational context you c ### Step 4: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - `project_name`, `user_name` - `communication_language`, `document_output_language` diff --git a/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md b/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md index b6d0c96c6..e1cdb2764 100644 --- a/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md +++ b/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md @@ -56,7 +56,7 @@ Treat every entry in `{workflow.persistent_facts}` as foundational context you c ### Step 4: Load Config -Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - `project_name`, `user_name` - `communication_language`, `document_output_language` diff --git a/src/core-skills/bmad-brainstorming/workflow.md b/src/core-skills/bmad-brainstorming/workflow.md index 168dab93e..7eccef9b7 100644 --- a/src/core-skills/bmad-brainstorming/workflow.md +++ b/src/core-skills/bmad-brainstorming/workflow.md @@ -32,7 +32,7 @@ This uses **micro-file architecture** for disciplined execution: ### Configuration Loading -Load config from `{project-root}/_bmad/core/config.yaml` and resolve: +Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - `project_name`, `output_folder`, `user_name` - `communication_language`, `document_output_language`, `user_skill_level` diff --git a/src/core-skills/bmad-help/SKILL.md b/src/core-skills/bmad-help/SKILL.md index ffa392ecd..1980e832b 100644 --- a/src/core-skills/bmad-help/SKILL.md +++ b/src/core-skills/bmad-help/SKILL.md @@ -23,7 +23,7 @@ When this skill completes, the user should: ## Data Sources - **Catalog**: `{project-root}/_bmad/_config/bmad-help.csv` — assembled manifest of all installed module skills -- **Config**: `config.yaml` and `user-config.yaml` files in `{project-root}/_bmad/` and its subfolders — resolve `output-location` variables, provide `communication_language` and `project_knowledge` +- **Config**: Run `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` to get merged config. If that fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself — resolve `output-location` variables, provide `communication_language` and `project_knowledge` - **Artifacts**: Files matching `outputs` patterns at resolved `output-location` paths reveal which steps are possibly completed; their content may also provide grounding context for recommendations - **Project knowledge**: If `project_knowledge` resolves to an existing path, read it for grounding context. Never fabricate project-specific details. - **Module docs**: Rows with `_meta` in the `skill` column carry a URL or path in `output-location` pointing to the module's documentation (e.g., llms.txt). Fetch and use these to answer general questions about that module. diff --git a/src/core-skills/bmad-party-mode/SKILL.md b/src/core-skills/bmad-party-mode/SKILL.md index 6f4ee3e63..6f3906da8 100644 --- a/src/core-skills/bmad-party-mode/SKILL.md +++ b/src/core-skills/bmad-party-mode/SKILL.md @@ -22,7 +22,7 @@ Party mode accepts optional arguments when invoked: 1. **Parse arguments** — check for `--model` and `--solo` flags from the user's invocation. -2. Load config from `{project-root}/_bmad/core/config.yaml` and resolve: +2. Load config by running `python3 {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root}` (requires Python 3.11+). If the command fails, read the merge logic in `{project-root}/_bmad/scripts/resolve_config.py` and apply it yourself to resolve the config variables. Resolve: - Use `{user_name}` for greeting - Use `{communication_language}` for all communications