Replaces tools/validate-skills.js with tools/validate_skills.py, taken from the flat-tree work on feat/npx-skills-distribution rather than written afresh, so the two do not diverge again. Discovery is repointed from that branch's flat skills/ tree to src/. Behaviour is otherwise unchanged: same rule IDs, same JSON shape, same --strict and --json flags, and the tests come across as unittest cases run through uv, matching how the other Python tests are wired. The three step-structure rules go away with it. STEP-01 (filename format), STEP-06 (step frontmatter) and STEP-07 (step count) all key off a literal steps/ directory that only two of fifty skills have — everywhere else step files sit at the skill root — so they validated almost nothing. The catalog's first-pass list drops from 13 rules to 10 to match, and their rule sections are removed. CI is unaffected: quality.yaml already provisions uv and invokes the npm script rather than the file.
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.