BMAD-METHOD/tools/cli
Henry Ávila 14d145f35b fix(cli): support parent directories in --custom-content path
When --custom-content points to a parent directory (no module.yaml at
root), scan immediate subdirectories (1 level) for module.yaml files.
Previously the path was silently rejected and the installer fell back to
cached modules, reporting "updated" without actually copying new files.

Adds resolveCustomContentPaths() method and applies it to all three
custom content processing flows (quick-update, update, fresh install).

Closes #2040

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 14:40:02 -03:00
..
commands feat(cli): add uninstall command with selective component removal (#1650) 2026-02-15 08:13:03 -06:00
installers Merge branch 'main' into feat/add-ona-platform-support 2026-03-16 07:26:53 -06:00
lib fix(cli): support parent directories in --custom-content path 2026-03-17 14:40:02 -03:00
README.md modify post install notes example 2026-02-14 21:25:58 -06:00
bmad-cli.js fix(cli): use semantic versioning for update check (#1671) 2026-02-16 09:39:03 -06:00
external-official-modules.yaml prototype preview of new version of product brief skill (#1959) 2026-03-15 00:05:53 -05:00

README.md

BMad CLI Tool

Installing external repo BMad official modules

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:

post-install-notes: |
  Thank you for choosing the XYZ Cool Module
  For Support about this Module call 555-1212  

Conditional Format

Display different messages based on a config question's answer:

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:

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.