From e66bbd02f23f2ded52429247f6f782379be29a79 Mon Sep 17 00:00:00 2001 From: Alex Verkhovsky Date: Fri, 13 Feb 2026 21:54:35 -0700 Subject: [PATCH 1/5] docs: replace branching strategy doc with trunk-based development reference (#1598) --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 06ab6d174..d9c12655f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -73,7 +73,7 @@ After searching, use the [feature request template](https://github.com/bmad-code ### Target Branch -Submit PRs to the `main` branch. +Submit PRs to the `main` branch. We use [trunk-based development](https://trunkbaseddevelopment.com/branch-for-release/): `main` is the trunk where all work lands, and stable release branches receive only cherry-picked fixes. ### PR Size From 3103c3d4ce4d8fd5575ac2bc73ae5204ec2b630d Mon Sep 17 00:00:00 2001 From: Murat K Ozcan <34237651+muratkeremozcan@users.noreply.github.com> Date: Sat, 14 Feb 2026 10:44:39 -0600 Subject: [PATCH 2/5] feat: tea automation prereq prompts (#1649) * feat: tea automation prereq prompts * fix: addressed PR comments * docs: added docs on how to set the post install output in the module * addressed PR request from Brian --- .../installers/lib/core/config-collector.js | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/tools/cli/installers/lib/core/config-collector.js b/tools/cli/installers/lib/core/config-collector.js index 44d3805d7..b01098318 100644 --- a/tools/cli/installers/lib/core/config-collector.js +++ b/tools/cli/installers/lib/core/config-collector.js @@ -550,6 +550,8 @@ class ConfigCollector { } } + await this.displayModulePostConfigNotes(moduleName, moduleConfig); + return newKeys.length > 0 || newStaticKeys.length > 0; // Return true if we had any new fields (interactive or static) } @@ -923,6 +925,8 @@ class ConfigCollector { } } } + + await this.displayModulePostConfigNotes(moduleName, moduleConfig); } /** @@ -1195,6 +1199,59 @@ class ConfigCollector { return question; } + /** + * Display post-configuration notes for a module + * Shows prerequisite guidance based on collected config values + * Reads notes from the module's `post-install-notes` section in module.yaml + * Supports two formats: + * - Simple string: always displayed + * - Object keyed by config field name, with value-specific messages + * @param {string} moduleName - Module name + * @param {Object} moduleConfig - Parsed module.yaml content + */ + async displayModulePostConfigNotes(moduleName, moduleConfig) { + if (this._silentConfig) return; + if (!moduleConfig || !moduleConfig['post-install-notes']) return; + + const notes = moduleConfig['post-install-notes']; + const color = await prompts.getColor(); + + // Format 1: Simple string - always display + if (typeof notes === 'string') { + await prompts.log.message(''); + for (const line of notes.trim().split('\n')) { + await prompts.log.message(color.dim(line)); + } + return; + } + + // Format 2: Conditional on config values + if (typeof notes === 'object') { + const config = this.collectedConfig[moduleName]; + if (!config) return; + + let hasOutput = false; + for (const [configKey, valueMessages] of Object.entries(notes)) { + const selectedValue = config[configKey]; + if (!selectedValue || !valueMessages[selectedValue]) continue; + + if (hasOutput) await prompts.log.message(''); + hasOutput = true; + + const message = valueMessages[selectedValue]; + await prompts.log.message(''); + for (const line of message.trim().split('\n')) { + const trimmedLine = line.trim(); + if (trimmedLine.endsWith(':') && !trimmedLine.startsWith(' ')) { + await prompts.log.info(color.bold(trimmedLine)); + } else { + await prompts.log.message(color.dim(' ' + trimmedLine)); + } + } + } + } + } + /** * Deep merge two objects * @param {Object} target - Target object From ae7b3a7930865d2bc622a6ccec5c553b9b690e38 Mon Sep 17 00:00:00 2001 From: Murat K Ozcan <34237651+muratkeremozcan@users.noreply.github.com> Date: Sat, 14 Feb 2026 10:59:07 -0600 Subject: [PATCH 3/5] docs: post install notes (#1653) --- tools/cli/README.md | 53 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/tools/cli/README.md b/tools/cli/README.md index 6d698580f..8ba164d36 100644 --- a/tools/cli/README.md +++ b/tools/cli/README.md @@ -5,3 +5,56 @@ For external official modules to be discoverable during install, ensure an entry for the external repo is added to external-official-modules.yaml. For community modules - this will be handled in a different way. This file is only for registration of modules under the bmad-code-org. + +## Post-Install Notes + +Modules can display setup guidance to users after configuration is collected during `npx bmad-method install`. Notes are defined in the module's own `module.yaml` — no changes to the installer are needed. + +### Simple Format + +Always displayed after the module is configured: + +```yaml +post-install-notes: | + Remember to set the API_KEY environment variable. + See: https://example.com/setup +``` + +### Conditional Format + +Display different messages based on a config question's answer: + +```yaml +post-install-notes: + config_key_name: + value1: | + Instructions for value1... + value2: | + Instructions for value2... +``` + +Values without an entry (e.g., `none`) display nothing. Multiple config keys can each have their own conditional notes. + +### Example: TEA Module + +The TEA module uses the conditional format keyed on `tea_browser_automation`: + +```yaml +post-install-notes: + tea_browser_automation: + cli: | + Playwright CLI Setup: + npm install -g @playwright/cli@latest + playwright-cli install --skills + mcp: | + Playwright MCP Setup (two servers): + 1. playwright — npx @playwright/mcp@latest + 2. playwright-test — npx playwright run-test-mcp-server + auto: | + Playwright CLI Setup: + ... + Playwright MCP Setup (two servers): + ... +``` + +When a user selects `auto`, they see both CLI and MCP instructions. When they select `none`, nothing is shown. From 98c1fa8282df16879cf06dfe6e5839f17e49693c Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Thu, 12 Feb 2026 12:52:13 -0600 Subject: [PATCH 4/5] document project remove legacy workflow init and workflow- status function calls --- docs/_STYLE_GUIDE.md | 13 +- .../document-project/instructions.md | 115 ++---------------- 2 files changed, 18 insertions(+), 110 deletions(-) diff --git a/docs/_STYLE_GUIDE.md b/docs/_STYLE_GUIDE.md index 801314cd0..f9b38ed86 100644 --- a/docs/_STYLE_GUIDE.md +++ b/docs/_STYLE_GUIDE.md @@ -78,7 +78,6 @@ your-project/ ├── _bmad/ # BMad configuration ├── _bmad-output/ │ ├── PRD.md # Your requirements document -│ └── bmm-workflow-status.yaml # Progress tracking └── ... ``` ```` @@ -142,12 +141,12 @@ your-project/ ### Types -| Type | Example | -| ----------------- | ---------------------------- | -| **Index/Landing** | `core-concepts/index.md` | -| **Concept** | `what-are-agents.md` | -| **Feature** | `quick-flow.md` | -| **Philosophy** | `why-solutioning-matters.md` | +| Type | Example | +| ----------------- | ----------------------------- | +| **Index/Landing** | `core-concepts/index.md` | +| **Concept** | `what-are-agents.md` | +| **Feature** | `quick-flow.md` | +| **Philosophy** | `why-solutioning-matters.md` | | **FAQ** | `established-projects-faq.md` | ### General Template diff --git a/src/bmm/workflows/document-project/instructions.md b/src/bmm/workflows/document-project/instructions.md index 059134259..0354be610 100644 --- a/src/bmm/workflows/document-project/instructions.md +++ b/src/bmm/workflows/document-project/instructions.md @@ -8,55 +8,7 @@ This router determines workflow mode and delegates to specialized sub-workflows - - - - mode: data - data_request: project_config - - - - {{suggestion}} - Note: Documentation workflow can run standalone. Continuing without progress tracking. - Set standalone_mode = true - Set status_file_found = false - - - - Store {{status_file_path}} for later updates - Set status_file_found = true - - - - Note: This is a greenfield project. Documentation workflow is typically for brownfield projects. - Continue anyway to document planning artifacts? (y/n) - - Exit workflow - - - - - - mode: validate - calling_workflow: document-project - - - - {{warning}} - Note: This may be auto-invoked by prd for brownfield documentation. - Continue with documentation? (y/n) - - {{suggestion}} - Exit workflow - - - - - - - -SMART LOADING STRATEGY: Check state file FIRST before loading any CSV files - + Check for existing state file at: {project_knowledge}/project-scan-report.json @@ -66,21 +18,21 @@ I found an in-progress workflow state from {{last_updated}}. -**Current Progress:** + **Current Progress:** -- Mode: {{mode}} -- Scan Level: {{scan_level}} -- Completed Steps: {{completed_steps_count}}/{{total_steps}} -- Last Step: {{current_step}} -- Project Type(s): {{cached_project_types}} + - Mode: {{mode}} + - Scan Level: {{scan_level}} + - Completed Steps: {{completed_steps_count}}/{{total_steps}} + - Last Step: {{current_step}} + - Project Type(s): {{cached_project_types}} -Would you like to: + Would you like to: -1. **Resume from where we left off** - Continue from step {{current_step}} -2. **Start fresh** - Archive old state and begin new scan -3. **Cancel** - Exit without changes + 1. **Resume from where we left off** - Continue from step {{current_step}} + 2. **Start fresh** - Archive old state and begin new scan + 3. **Cancel** - Exit without changes -Your choice [1/2/3]: + Your choice [1/2/3]: @@ -175,47 +127,4 @@ Your choice [1/2/3]: - - - - - mode: update - action: complete_workflow - workflow_name: document-project - - - - Status updated! - - - -**✅ Document Project Workflow Complete, {user_name}!** - -**Documentation Generated:** - -- Mode: {{workflow_mode}} -- Scan Level: {{scan_level}} -- Output: {project_knowledge}/index.md and related files - -{{#if status_file_found}} -**Status Updated:** - -- Progress tracking updated - -**Next Steps:** - -- **Next required:** {{next_workflow}} ({{next_agent}} agent) - -Check status anytime with: `workflow-status` -{{else}} -**Next Steps:** -Since no workflow is in progress: - -- Refer to the BMM workflow guide if unsure what to do next -- Or run `workflow-init` to create a workflow path and get guided next steps - {{/if}} - - - - From 5b5cb1a3964ba5caab03d3c420d8a5c47fbe4d8d Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Sat, 14 Feb 2026 21:25:58 -0600 Subject: [PATCH 5/5] modify post install notes example --- tools/cli/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/cli/README.md b/tools/cli/README.md index 8ba164d36..9e943d689 100644 --- a/tools/cli/README.md +++ b/tools/cli/README.md @@ -16,8 +16,8 @@ Always displayed after the module is configured: ```yaml post-install-notes: | - Remember to set the API_KEY environment variable. - See: https://example.com/setup + Thank you for choosing the XYZ Cool Module + For Support about this Module call 555-1212 ``` ### Conditional Format