Skip to content

feat!: replace per-skill module metadata with bmod module records - #2916

Merged
bmadcode merged 2 commits into
devfrom
bmad-bmod
Sep 20, 2026
Merged

bmadcode merged 2 commits into
devfrom
bmad-bmod

Conversation

@bmadcode

Copy link
Copy Markdown
Collaborator

What

Replaces the per-skill module metadata with one module record per module, and rebuilds help around it.

  • A module is one inert skill folder, bmod-<code>, whose bmod.toml holds a [bmod] table: code, version, update source, skills, required and recommended skills, config questions. Each member skill carries a bmod.toml with a [skill] table naming its module. A file with both tables is a single-skill module.
  • This removes the 30 module-manifest.toml files, the root bmad-meta/ folder and the 74 per-skill copies of it, tools/sync_knowledge.py, and its pre-commit hook.
  • Standard files in a module folder are found by name. help/help.md is always read and routes to small help/<topic>.md files that bmad opens only when a question needs them. roster.toml supplies agents, guests and parties.
  • Adds bmod-method and bmod-core-tools.

Behaviour

  • bmad setup [code] is an upsert and reports as JSON. bmad status [code] is read-only and ends with the one command to run next. Team answers go to _bmad/config.toml, user answers to _bmad/custom/config.user.toml, and _bmad/custom/.gitignore is written once.
  • knowledge.py reports skills, documents, topics (path only, never text) and problems. A file it cannot use becomes a problem, never an exception.
  • The roster is the one source of agents. The [agents.bmad-agent-*] tables are gone from the config template. For a roster agent, name, title, icon and module come from its skill and customization, so an old recorded table no longer undoes a custom name. bmad-forge-idea reads roster.py as bmad-party-mode does, with the config table as fallback.
  • Help order for bmad: the module's help/help.md, then the topic file, then the one skill's own files as a last resort, then the docs site.
  • Twelve skills handed off to the removed bmad-help skill. They now hand off to bmad.
  • The validator requires help/help.md in every bmod-* folder, every topic file to be named in it, and every help/<name>.md reference to exist. It also carries the roster content checks that sync_knowledge.py had.

Help content

help.md for each module holds what is needed to route a user and say what to do next: a decision tree, a situation table, a one-line index of every skill with what it writes, and what to offer after each skill. Topic files go deeper on one subject each:

  • Method: the four phase files, prototyping, existing codebases, preparing a repo for agents, monorepo and poly repo, artifact lifetime, working in an organization, ticketing and epics, ticketing setup, unattended builds, review choices, project context.
  • Core tools: party mode, research, customization, team adoption, modules.

Several statements in the old help were checked against the skills and corrected: what bmad-build requires of tests, how to get another review pass, when bmad-build-auto needs a clean tree, and what bmad-correct-course writes.

Breaking

  • module-manifest.toml and bmad-meta/ are removed.
  • setup.py no longer accepts --doctor or --update.
  • Install bmod-method and bmod-core-tools beside the skills, then run bmad setup. A skill whose module record is absent reports the install command.

Verification

  • uv sync --frozen && (cd docs-site && npm ci) && uv run --frozen tools/quality.py passes on this commit.
  • In a scratch project: bmad setup and bmad status; resolve_party.py default, --list-groups, --party product-team, an unknown party, with bmod-method removed, and with one agent skill removed; the roster.py call bmad-advanced-elicitation makes; resolve_personas.py in bmad-forge-idea; a custom agent name surviving.
  • Path safety: a symlinked topic, help/ folder or roster.toml, and .., absolute or URL paths, all become problems and nothing outside the folder is read.

Follow-ups, not in this PR

  • The English docs/ pages and the translated READMEs still describe the 6.12 installer and name bmad-help.
  • CIS gets the same conversion in its own PR after this merges.

A module is now one inert skill folder, bmod-<code>, whose bmod.toml holds a
[bmod] table: the module's code, version, update source, skills, required and
recommended skills, and config questions. Each member skill carries a bmod.toml
with a [skill] table naming its module. A file with both tables is a
single-skill module. This replaces module-manifest.toml and the bmad-meta/
copies every skill carried, along with tools/sync_knowledge.py and its hook.

Standard files in a module folder are found by name: help/help.md is always
read and routes to small help/<topic>.md files that bmad opens only when a
question needs them, and roster.toml supplies agents, guests and parties.

bmad setup is an upsert that reports as JSON, and bmad status is read-only.
Team answers go to _bmad/config.toml and user answers to
_bmad/custom/config.user.toml.

The roster is the one source of agents. The [agents.bmad-agent-*] tables are
gone from the config template, a roster agent's name, title, icon and module
come from its skill and customization, and bmad-forge-idea reads roster.py as
bmad-party-mode does. Skills that handed off to the removed bmad-help skill
now hand off to bmad.

Adds bmod-method and bmod-core-tools with rewritten help, including topics on
prototyping, existing codebases, organizations, poly repos, preparing a repo
for agents, artifact lifetime, unattended builds, review, ticketing,
customization, party mode, research and modules.

BREAKING CHANGE: module-manifest.toml and bmad-meta/ are removed, and
setup.py no longer accepts --doctor or --update. Install bmod-method and
bmod-core-tools beside the skills, then run bmad setup.
@greptile-apps

greptile-apps Bot commented Sep 20, 2026

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 2/5

The PR is not yet safe to merge because partial or malformed installations can be reported as current and can expose unusable agents in the default roster.

Findings

  1. P1 Unknown Versions Pass Requirements
  2. P1 Missing Records Report Current
  3. P1 Invalid Folders Become Agents
Fix with agent prompt
### Issue 1
skills/bmad/scripts/setup.py:616-619
When a required skill’s directory exists but its `bmod.toml` is missing or unusable, `skill_module_version()` returns `None` and this branch treats the versioned requirement as satisfied. A partial or stale install can therefore report no unmet requirement and `current: true`, even though the required skill has no usable module metadata and cannot establish the required version.

### Issue 2
skills/bmad/scripts/setup.py:293
Missing module records only influence `next` when an install command can be generated. If a skill from a local, plugin, or other non-GitHub source lacks its module record, setup and status can still report `current: true`. The missing record remains in the JSON, but the top-level state contradicts the installation contract and gives callers no required next action.

### Issue 3
skills/bmad/scripts/roster.py:56-59
Roster installation status is computed from every directory under the skill roots rather than from successfully parsed `[skill]` records. If an agent folder remains after a partial update, has a broken `bmod.toml`, or contains no skill metadata, it is still placed in `agents` and therefore the default party even though the agent is unusable. Knowledge discovery uses the same folder-presence test for `installed_skills`.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Summary

This PR replaces duplicated per-skill manifests and help payloads with module-level bmod.toml, help, and roster records, then updates setup, status, discovery, release tooling, and roster consumers around that model.

  • Adds module-record discovery and module-scoped runtime materialization.
  • Rebuilds help around module documents and lazily loaded topics.
  • Moves agent and party discovery to module rosters.
  • Adds user-scoped configuration answers and JSON setup/status reporting.
  • Three installation-state checks still equate directory presence or an absent fix command with a valid installation, which can produce false-current reports and unusable default agents.
Diagram
%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Installed skill roots] --> B[Scan bmod.toml files]
  B --> C[Module records]
  B --> D[Member skill records]
  C --> E[Setup and status]
  C --> F[Knowledge documents and topics]
  C --> G[Module roster]
  D --> E
  D --> F
  D --> G
  E --> H[_bmad shared and module runtime]
  F --> I[bmad help routing]
  G --> J[Party mode and forge personas]
Loading

Reviews (1) · Last reviewed commit: "feat!: replace per-skill module metadata..."

Comment on lines +616 to +619
installed = skill_module_version(skills_dir, requirement.skill)
if installed is None:
return None, None
return requirement_state(installed, requirement.version), installed

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Unknown Versions Pass Requirements

When a required skill’s directory exists but its bmod.toml is missing or unusable, skill_module_version() returns None and this branch treats the versioned requirement as satisfied. A partial or stale install can therefore report no unmet requirement and current: true, even though the required skill has no usable module metadata and cannot establish the required version.

Prompt To Fix With AI
This is a comment left during a code review.
Path: skills/bmad/scripts/setup.py
Line: 616-619

Comment:
**Unknown Versions Pass Requirements**

When a required skill’s directory exists but its `bmod.toml` is missing or unusable, `skill_module_version()` returns `None` and this branch treats the versioned requirement as satisfied. A partial or stale install can therefore report no unmet requirement and `current: true`, even though the required skill has no usable module metadata and cannot establish the required version.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 4fe048f. A required skill with a minimum version and no bmod.toml of its own is now unmet with state unknown-version and npx skills update as the fix. A skill that names an absent module record is still left to the missing module record report, so it is not reported twice.

Comment thread skills/bmad/scripts/setup.py Outdated
"missing_module_records": list(installation.missing_records),
"problems": problems,
"legacy_leftovers": legacy_leftovers(project_root),
"current": next_command is None and not unmet and not problems,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Missing Records Report Current

Missing module records only influence next when an install command can be generated. If a skill from a local, plugin, or other non-GitHub source lacks its module record, setup and status can still report current: true. The missing record remains in the JSON, but the top-level state contradicts the installation contract and gives callers no required next action.

Prompt To Fix With AI
This is a comment left during a code review.
Path: skills/bmad/scripts/setup.py
Line: 293

Comment:
**Missing Records Report Current**

Missing module records only influence `next` when an install command can be generated. If a skill from a local, plugin, or other non-GitHub source lacks its module record, setup and status can still report `current: true`. The missing record remains in the JSON, but the top-level state contradicts the installation contract and gives callers no required next action.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 4fe048f. A missing module record now makes current false in both setup and status, including when no install command can be built for it.

Comment on lines 56 to +59
def collect(roots: list[Path], project_root: Path | None = None) -> dict[str, object]:
problems: list[dict[str, str]] = []
skills: dict[str, Path] = {}
found = scan(roots)
problems = found.problems
skills = found.folders

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Invalid Folders Become Agents

Roster installation status is computed from every directory under the skill roots rather than from successfully parsed [skill] records. If an agent folder remains after a partial update, has a broken bmod.toml, or contains no skill metadata, it is still placed in agents and therefore the default party even though the agent is unusable. Knowledge discovery uses the same folder-presence test for installed_skills.

Prompt To Fix With AI
This is a comment left during a code review.
Path: skills/bmad/scripts/roster.py
Line: 56-59

Comment:
**Invalid Folders Become Agents**

Roster installation status is computed from every directory under the skill roots rather than from successfully parsed `[skill]` records. If an agent folder remains after a partial update, has a broken `bmod.toml`, or contains no skill metadata, it is still placed in `agents` and therefore the default party even though the agent is unusable. Knowledge discovery uses the same folder-presence test for `installed_skills`.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leaving this as is. Installed means the skill folder exists, which is what the host lists and can invoke; scan applies the same rule so a project copy shadows a user copy even without a bmod.toml. A broken bmod.toml does not stop the agent skill from running, and knowledge.py already reports that file as a problem.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Understood. Given that the host treats an existing skill folder as installed and invocable, and scan intentionally preserves that folder-based shadowing behavior, a malformed or missing bmod.toml should not remove the skill from the roster. Reporting the metadata issue through knowledge.py while keeping the folder installed is consistent with the intended model. No change needed.

@coderabbitai

coderabbitai Bot commented Sep 20, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: bmad-code-org/BMAD-METHOD/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: dbfed45b-734e-405b-9d79-5b1b57bb2a43

📥 Commits

Reviewing files that changed from the base of the PR and between 329a9b2 and 8d4856c.

📒 Files selected for processing (206)
  • .github/ISSUE_TEMPLATE/bug-report.yaml
  • .pre-commit-config.yaml
  • README.md
  • bmad-meta/agents-help.md
  • bmad-meta/core-tools-help.md
  • bmad-meta/delivery-help.md
  • bmad-meta/method-help.md
  • bmad-meta/planning-help.md
  • pyproject.toml
  • skills/bmad-advanced-elicitation/bmad-meta/core-tools-help.md
  • skills/bmad-advanced-elicitation/bmod.toml
  • skills/bmad-advanced-elicitation/module-manifest.toml
  • skills/bmad-agent-analyst/SKILL.md
  • skills/bmad-agent-analyst/bmad-meta/agents-help.md
  • skills/bmad-agent-analyst/bmad-meta/method-help.md
  • skills/bmad-agent-analyst/bmad-meta/method-roster.toml
  • skills/bmad-agent-analyst/bmod.toml
  • skills/bmad-agent-analyst/module-manifest.toml
  • skills/bmad-agent-architect/SKILL.md
  • skills/bmad-agent-architect/bmad-meta/agents-help.md
  • skills/bmad-agent-architect/bmad-meta/method-help.md
  • skills/bmad-agent-architect/bmad-meta/method-roster.toml
  • skills/bmad-agent-architect/bmod.toml
  • skills/bmad-agent-architect/module-manifest.toml
  • skills/bmad-agent-dev/SKILL.md
  • skills/bmad-agent-dev/bmad-meta/agents-help.md
  • skills/bmad-agent-dev/bmad-meta/method-help.md
  • skills/bmad-agent-dev/bmad-meta/method-roster.toml
  • skills/bmad-agent-dev/bmod.toml
  • skills/bmad-agent-dev/module-manifest.toml
  • skills/bmad-agent-pm/SKILL.md
  • skills/bmad-agent-pm/bmad-meta/agents-help.md
  • skills/bmad-agent-pm/bmad-meta/method-help.md
  • skills/bmad-agent-pm/bmad-meta/method-roster.toml
  • skills/bmad-agent-pm/bmod.toml
  • skills/bmad-agent-pm/module-manifest.toml
  • skills/bmad-agent-ux-designer/SKILL.md
  • skills/bmad-agent-ux-designer/bmad-meta/agents-help.md
  • skills/bmad-agent-ux-designer/bmad-meta/method-help.md
  • skills/bmad-agent-ux-designer/bmad-meta/method-roster.toml
  • skills/bmad-agent-ux-designer/bmod.toml
  • skills/bmad-agent-ux-designer/module-manifest.toml
  • skills/bmad-architecture/SKILL.md
  • skills/bmad-architecture/bmad-meta/method-help.md
  • skills/bmad-architecture/bmad-meta/method-roster.toml
  • skills/bmad-architecture/bmad-meta/planning-help.md
  • skills/bmad-architecture/bmod.toml
  • skills/bmad-architecture/module-manifest.toml
  • skills/bmad-brainstorming/bmad-meta/core-tools-help.md
  • skills/bmad-brainstorming/bmod.toml
  • skills/bmad-brainstorming/module-manifest.toml
  • skills/bmad-brainstorming/references/finalize.md
  • skills/bmad-build-auto/bmad-meta/delivery-help.md
  • skills/bmad-build-auto/bmad-meta/method-help.md
  • skills/bmad-build-auto/bmad-meta/method-roster.toml
  • skills/bmad-build-auto/bmod.toml
  • skills/bmad-build-auto/module-manifest.toml
  • skills/bmad-build/bmad-meta/delivery-help.md
  • skills/bmad-build/bmad-meta/method-help.md
  • skills/bmad-build/bmad-meta/method-roster.toml
  • skills/bmad-build/bmod.toml
  • skills/bmad-build/module-manifest.toml
  • skills/bmad-code-review/bmad-meta/delivery-help.md
  • skills/bmad-code-review/bmad-meta/method-help.md
  • skills/bmad-code-review/bmad-meta/method-roster.toml
  • skills/bmad-code-review/bmod.toml
  • skills/bmad-code-review/module-manifest.toml
  • skills/bmad-correct-course/bmad-meta/delivery-help.md
  • skills/bmad-correct-course/bmad-meta/method-help.md
  • skills/bmad-correct-course/bmad-meta/method-roster.toml
  • skills/bmad-correct-course/bmod.toml
  • skills/bmad-correct-course/module-manifest.toml
  • skills/bmad-create-epics-and-stories/bmad-meta/method-help.md
  • skills/bmad-create-epics-and-stories/bmad-meta/method-roster.toml
  • skills/bmad-create-epics-and-stories/bmad-meta/planning-help.md
  • skills/bmad-create-epics-and-stories/bmod.toml
  • skills/bmad-create-epics-and-stories/customize.toml
  • skills/bmad-create-epics-and-stories/module-manifest.toml
  • skills/bmad-create-epics-and-stories/steps/step-04-final-validation.md
  • skills/bmad-customize/bmad-meta/core-tools-help.md
  • skills/bmad-customize/bmod.toml
  • skills/bmad-customize/module-manifest.toml
  • skills/bmad-deep-recon/bmad-meta/core-tools-help.md
  • skills/bmad-deep-recon/bmod.toml
  • skills/bmad-deep-recon/module-manifest.toml
  • skills/bmad-deep-recon/references/finalize.md
  • skills/bmad-forge-idea/bmad-meta/core-tools-help.md
  • skills/bmad-forge-idea/bmod.toml
  • skills/bmad-forge-idea/module-manifest.toml
  • skills/bmad-forge-idea/scripts/resolve_personas.py
  • skills/bmad-forge-idea/scripts/tests/test_resolve_personas.py
  • skills/bmad-party-mode/bmad-meta/core-tools-help.md
  • skills/bmad-party-mode/bmod.toml
  • skills/bmad-party-mode/module-manifest.toml
  • skills/bmad-party-mode/scripts/resolve_party.py
  • skills/bmad-party-mode/scripts/tests/test_resolve_party.py
  • skills/bmad-prd/SKILL.md
  • skills/bmad-prd/bmad-meta/method-help.md
  • skills/bmad-prd/bmad-meta/method-roster.toml
  • skills/bmad-prd/bmad-meta/planning-help.md
  • skills/bmad-prd/bmod.toml
  • skills/bmad-prd/module-manifest.toml
  • skills/bmad-preview-ticketing/bmad-meta/method-help.md
  • skills/bmad-preview-ticketing/bmad-meta/method-roster.toml
  • skills/bmad-preview-ticketing/bmad-meta/planning-help.md
  • skills/bmad-preview-ticketing/bmod.toml
  • skills/bmad-preview-ticketing/module-manifest.toml
  • skills/bmad-prfaq/bmad-meta/method-help.md
  • skills/bmad-prfaq/bmad-meta/method-roster.toml
  • skills/bmad-prfaq/bmad-meta/planning-help.md
  • skills/bmad-prfaq/bmod.toml
  • skills/bmad-prfaq/module-manifest.toml
  • skills/bmad-product-brief/SKILL.md
  • skills/bmad-product-brief/bmad-meta/method-help.md
  • skills/bmad-product-brief/bmad-meta/method-roster.toml
  • skills/bmad-product-brief/bmad-meta/planning-help.md
  • skills/bmad-product-brief/bmod.toml
  • skills/bmad-product-brief/module-manifest.toml
  • skills/bmad-project-context/bmad-meta/method-help.md
  • skills/bmad-project-context/bmad-meta/method-roster.toml
  • skills/bmad-project-context/bmad-meta/planning-help.md
  • skills/bmad-project-context/bmod.toml
  • skills/bmad-project-context/module-manifest.toml
  • skills/bmad-qa-generate-e2e-tests/bmad-meta/delivery-help.md
  • skills/bmad-qa-generate-e2e-tests/bmad-meta/method-help.md
  • skills/bmad-qa-generate-e2e-tests/bmad-meta/method-roster.toml
  • skills/bmad-qa-generate-e2e-tests/bmod.toml
  • skills/bmad-qa-generate-e2e-tests/module-manifest.toml
  • skills/bmad-retrospective/bmad-meta/delivery-help.md
  • skills/bmad-retrospective/bmad-meta/method-help.md
  • skills/bmad-retrospective/bmad-meta/method-roster.toml
  • skills/bmad-retrospective/bmod.toml
  • skills/bmad-retrospective/module-manifest.toml
  • skills/bmad-review/bmad-meta/core-tools-help.md
  • skills/bmad-review/bmod.toml
  • skills/bmad-review/module-manifest.toml
  • skills/bmad-spec/bmad-meta/method-help.md
  • skills/bmad-spec/bmad-meta/method-roster.toml
  • skills/bmad-spec/bmad-meta/planning-help.md
  • skills/bmad-spec/bmod.toml
  • skills/bmad-spec/module-manifest.toml
  • skills/bmad-sprint-planning/bmad-meta/method-help.md
  • skills/bmad-sprint-planning/bmad-meta/method-roster.toml
  • skills/bmad-sprint-planning/bmad-meta/planning-help.md
  • skills/bmad-sprint-planning/bmod.toml
  • skills/bmad-sprint-planning/module-manifest.toml
  • skills/bmad-ux/bmad-meta/method-help.md
  • skills/bmad-ux/bmad-meta/method-roster.toml
  • skills/bmad-ux/bmad-meta/planning-help.md
  • skills/bmad-ux/bmod.toml
  • skills/bmad-ux/module-manifest.toml
  • skills/bmad-walkthrough/bmad-meta/delivery-help.md
  • skills/bmad-walkthrough/bmad-meta/method-help.md
  • skills/bmad-walkthrough/bmad-meta/method-roster.toml
  • skills/bmad-walkthrough/bmod.toml
  • skills/bmad-walkthrough/module-manifest.toml
  • skills/bmad/SKILL.md
  • skills/bmad/assets/config.template.toml
  • skills/bmad/bmad-meta/core-tools-help.md
  • skills/bmad/bmod.toml
  • skills/bmad/module-manifest.toml
  • skills/bmad/references/setup.md
  • skills/bmad/scripts/knowledge.py
  • skills/bmad/scripts/roster.py
  • skills/bmad/scripts/setup.py
  • skills/bmad/scripts/setup_check.py
  • skills/bmad/scripts/tests/test_roster.py
  • skills/bmad/scripts/tests/test_setup_check.py
  • skills/bmod-core-tools/SKILL.md
  • skills/bmod-core-tools/bmod.toml
  • skills/bmod-core-tools/help/customization.md
  • skills/bmod-core-tools/help/help.md
  • skills/bmod-core-tools/help/modules.md
  • skills/bmod-core-tools/help/party-mode.md
  • skills/bmod-core-tools/help/research.md
  • skills/bmod-core-tools/help/team-adoption.md
  • skills/bmod-method/SKILL.md
  • skills/bmod-method/bmod.toml
  • skills/bmod-method/help/analysis-skills.md
  • skills/bmod-method/help/artifact-lifetime.md
  • skills/bmod-method/help/existing-codebase.md
  • skills/bmod-method/help/help.md
  • skills/bmod-method/help/implementation-skills.md
  • skills/bmod-method/help/monorepo-and-polyrepo.md
  • skills/bmod-method/help/planning-skills.md
  • skills/bmod-method/help/preparing-a-repo-for-agents.md
  • skills/bmod-method/help/project-context.md
  • skills/bmod-method/help/prototyping.md
  • skills/bmod-method/help/review-choices.md
  • skills/bmod-method/help/ticketing-and-epics.md
  • skills/bmod-method/help/ticketing-setup.md
  • skills/bmod-method/help/unattended-builds.md
  • skills/bmod-method/help/validation-skills.md
  • skills/bmod-method/help/working-in-an-organization.md
  • skills/bmod-method/roster.toml
  • tools/release.md
  • tools/skill-validator.md
  • tools/stamp_release.py
  • tools/sync_knowledge.py
  • tools/tests/test_bmad_setup.py
  • tools/tests/test_knowledge.py
  • tools/tests/test_stamp_release.py
  • tools/tests/test_validate_manifests.py
  • tools/tests/test_validate_skills.py
  • tools/validate_manifests.py
  • tools/validate_skills.py
💤 Files with no reviewable changes (111)
  • skills/bmad-prd/module-manifest.toml
  • skills/bmad-correct-course/module-manifest.toml
  • skills/bmad-project-context/module-manifest.toml
  • skills/bmad-create-epics-and-stories/bmad-meta/planning-help.md
  • skills/bmad-correct-course/bmad-meta/method-help.md
  • skills/bmad-agent-ux-designer/bmad-meta/method-help.md
  • skills/bmad-prfaq/bmad-meta/planning-help.md
  • skills/bmad-spec/module-manifest.toml
  • skills/bmad-product-brief/bmad-meta/planning-help.md
  • bmad-meta/core-tools-help.md
  • skills/bmad-agent-dev/bmad-meta/agents-help.md
  • skills/bmad-agent-analyst/bmad-meta/method-help.md
  • skills/bmad-customize/module-manifest.toml
  • skills/bmad-agent-analyst/module-manifest.toml
  • skills/bmad-walkthrough/bmad-meta/method-help.md
  • skills/bmad-agent-dev/bmad-meta/method-help.md
  • skills/bmad-spec/bmad-meta/planning-help.md
  • skills/bmad-create-epics-and-stories/module-manifest.toml
  • skills/bmad-ux/bmad-meta/method-help.md
  • skills/bmad-create-epics-and-stories/bmad-meta/method-roster.toml
  • skills/bmad-project-context/bmad-meta/method-roster.toml
  • bmad-meta/method-help.md
  • skills/bmad-advanced-elicitation/bmad-meta/core-tools-help.md
  • skills/bmad-product-brief/module-manifest.toml
  • skills/bmad-qa-generate-e2e-tests/bmad-meta/delivery-help.md
  • skills/bmad-retrospective/bmad-meta/delivery-help.md
  • skills/bmad-party-mode/bmad-meta/core-tools-help.md
  • skills/bmad-spec/bmad-meta/method-help.md
  • skills/bmad-code-review/bmad-meta/method-roster.toml
  • skills/bmad-agent-ux-designer/module-manifest.toml
  • bmad-meta/agents-help.md
  • skills/bmad-prfaq/module-manifest.toml
  • skills/bmad-review/module-manifest.toml
  • skills/bmad-forge-idea/bmad-meta/core-tools-help.md
  • skills/bmad-sprint-planning/bmad-meta/method-help.md
  • skills/bmad-prd/bmad-meta/planning-help.md
  • skills/bmad-preview-ticketing/bmad-meta/method-roster.toml
  • skills/bmad-qa-generate-e2e-tests/bmad-meta/method-help.md
  • skills/bmad-create-epics-and-stories/bmad-meta/method-help.md
  • skills/bmad-ux/bmad-meta/planning-help.md
  • bmad-meta/planning-help.md
  • tools/sync_knowledge.py
  • skills/bmad-forge-idea/module-manifest.toml
  • skills/bmad-architecture/bmad-meta/planning-help.md
  • skills/bmad-project-context/bmad-meta/planning-help.md
  • skills/bmad-architecture/bmad-meta/method-help.md
  • skills/bmad-product-brief/bmad-meta/method-roster.toml
  • skills/bmad-build/bmad-meta/method-help.md
  • skills/bmad-prd/bmad-meta/method-help.md
  • skills/bmad/bmad-meta/core-tools-help.md
  • skills/bmad-agent-pm/bmad-meta/method-roster.toml
  • skills/bmad-build-auto/bmad-meta/method-help.md
  • skills/bmad-brainstorming/bmad-meta/core-tools-help.md
  • skills/bmad-build-auto/module-manifest.toml
  • skills/bmad-agent-architect/bmad-meta/method-help.md
  • skills/bmad-walkthrough/module-manifest.toml
  • skills/bmad-agent-analyst/bmad-meta/method-roster.toml
  • skills/bmad-build/bmad-meta/method-roster.toml
  • bmad-meta/delivery-help.md
  • skills/bmad-deep-recon/module-manifest.toml
  • skills/bmad-product-brief/bmad-meta/method-help.md
  • skills/bmad-agent-architect/bmad-meta/agents-help.md
  • skills/bmad-code-review/bmad-meta/method-help.md
  • skills/bmad-correct-course/bmad-meta/delivery-help.md
  • skills/bmad-retrospective/module-manifest.toml
  • skills/bmad-agent-pm/bmad-meta/method-help.md
  • skills/bmad-project-context/bmad-meta/method-help.md
  • skills/bmad-prfaq/bmad-meta/method-help.md
  • skills/bmad-agent-pm/module-manifest.toml
  • skills/bmad-code-review/bmad-meta/delivery-help.md
  • skills/bmad-brainstorming/module-manifest.toml
  • skills/bmad-preview-ticketing/bmad-meta/method-help.md
  • skills/bmad-architecture/module-manifest.toml
  • skills/bmad-architecture/bmad-meta/method-roster.toml
  • skills/bmad-preview-ticketing/bmad-meta/planning-help.md
  • skills/bmad-qa-generate-e2e-tests/bmad-meta/method-roster.toml
  • skills/bmad-sprint-planning/bmad-meta/method-roster.toml
  • skills/bmad-sprint-planning/module-manifest.toml
  • skills/bmad/assets/config.template.toml
  • skills/bmad-prfaq/bmad-meta/method-roster.toml
  • skills/bmad-ux/module-manifest.toml
  • skills/bmad-retrospective/bmad-meta/method-help.md
  • skills/bmad-deep-recon/bmad-meta/core-tools-help.md
  • skills/bmad-spec/bmad-meta/method-roster.toml
  • skills/bmad-agent-ux-designer/bmad-meta/method-roster.toml
  • skills/bmad-advanced-elicitation/module-manifest.toml
  • skills/bmad-code-review/module-manifest.toml
  • skills/bmad-agent-architect/bmad-meta/method-roster.toml
  • skills/bmad-agent-dev/bmad-meta/method-roster.toml
  • skills/bmad-build-auto/bmad-meta/delivery-help.md
  • skills/bmad-agent-pm/bmad-meta/agents-help.md
  • skills/bmad-agent-architect/module-manifest.toml
  • skills/bmad-walkthrough/bmad-meta/delivery-help.md
  • skills/bmad-ux/bmad-meta/method-roster.toml
  • skills/bmad/module-manifest.toml
  • skills/bmad-sprint-planning/bmad-meta/planning-help.md
  • skills/bmad-customize/bmad-meta/core-tools-help.md
  • skills/bmad-prd/bmad-meta/method-roster.toml
  • skills/bmad-qa-generate-e2e-tests/module-manifest.toml
  • skills/bmad-agent-ux-designer/bmad-meta/agents-help.md
  • skills/bmad-walkthrough/bmad-meta/method-roster.toml
  • skills/bmad-build/module-manifest.toml
  • skills/bmad-build/bmad-meta/delivery-help.md
  • skills/bmad-correct-course/bmad-meta/method-roster.toml
  • skills/bmad-agent-analyst/bmad-meta/agents-help.md
  • skills/bmad-retrospective/bmad-meta/method-roster.toml
  • skills/bmad-review/bmad-meta/core-tools-help.md
  • skills/bmad-build-auto/bmad-meta/method-roster.toml
  • skills/bmad-agent-dev/module-manifest.toml
  • skills/bmad-preview-ticketing/module-manifest.toml
  • skills/bmad-party-mode/module-manifest.toml

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The pull request migrates BMad from per-skill module-manifest.toml files and copied metadata to module-level bmod.toml records. It rewrites setup, status, knowledge, roster, validation, and release tooling, adds module help content, and updates skill references from bmad-help to bmad.

Changes

Bmod metadata migration

Layer / File(s) Summary
Record metadata migration
skills/*/bmod.toml, skills/*/module-manifest.toml, skills/*/bmad-meta/*, bmad-meta/*
Skill records now identify their module through [skill] data. Legacy manifests and replicated method, delivery, planning, core-tools, and roster files are removed.
Runtime discovery and setup
skills/bmad/SKILL.md, skills/bmad/references/setup.md, skills/bmad/scripts/*, skills/bmad/scripts/setup_check.py
Setup and status use bmod.toml, module records, module-owned rosters, scoped configuration questions, and JSON reports. Knowledge and roster discovery no longer use copied files or drift hashes.
Module content and help
skills/bmod-core-tools/*, skills/bmod-method/*
New module records, metadata skills, help documents, topic files, customization guidance, workflow guidance, and a module-owned roster are added.
Validation and release tooling
tools/validate_manifests.py, tools/stamp_release.py, tools/tests/*, tools/release.md, .pre-commit-config.yaml
Validation and release stamping now operate on [bmod] records. Tests cover record membership, knowledge paths, rosters, requirements, version stamping, and runtime discovery. The obsolete knowledge-sync hook and script are removed.

Priority: ➖ Normal

Estimated code review effort: 5 (Critical) | ~90 minutes

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the primary change: replacing per-skill module metadata with bmod module records.
Description check ✅ Passed The description is directly related to the changeset and provides detailed coverage of the new module records, help routing, setup behavior, roster handling, breaking changes, and verification.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

… as not current

A required skill with a minimum version and no bmod.toml of its own is a copy
from before module records, so its version cannot be read. It was counted as
met. It is now unmet with state unknown-version and npx skills update as the
fix. A skill that names an absent module record is still left to the missing
module record report.

Setup and status also reported current while listing a missing module record
whenever no install command could be built for it, as with a local or plugin
source. A missing record now makes current false.
@bmadcode
bmadcode merged commit 35d39c3 into dev Sep 20, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant