Skip to content

[BUG] validate/run blocked on BMAD-METHOD 6.13: skills moved to Claude Code plugins, and two required review skills no longer exist #768

Description

@gargatok

Summary

BMAD-METHOD 6.13 ships as Claude Code plugins rather than as skills vendored into the project. bmad-loop discovers every skill under {project}/{skill_tree}/ (.claude/skills for claude), with no awareness of plugin paths, so on a 6.13 install validate fails and run never starts.

Two of the skills the preflight demands were deleted outright in 6.13, so this cannot be worked around by installing anything — there is nothing left to install.

Environment

  • bmad-loop 0.11.1, git c47333d1bf3f1f779445fa70378685831610cf5b (current main at time of writing)
  • BMAD-METHOD 6.13.0-next, installed via the bmad plugin marketplace
  • Claude Code, Linux

6.13 lays the method down as two plugins:

~/.claude/plugins/cache/bmad/bmad-method/6.13.0-next/skills/    # 21 skills, incl. bmad-build-auto
~/.claude/plugins/cache/bmad/bmad-toolbox/6.13.0-next/skills/   #  8 skills, incl. bmad-review

The project keeps only:

_bmad/config.toml
_bmad/scripts/…

.claude/skills/ contains no bmad-* entries other than the three bmad-loop-* skills bmad-loop init installs.

Reproduction

  1. Install BMAD-METHOD 6.13 as a plugin (no per-project skill install).
  2. bmad-loop init --project <project>
  3. bmad-loop validate --project <project>

Actual

Exits 1 with four FAILs:

FAIL: BMAD config not found: <project>/_bmad/bmm/config.yaml (is BMAD installed here?)
FAIL: .claude/skills/bmad-build-auto not found — the orchestrator drives this upstream dev primitive
      directly; it ships with the bmm module (BMAD-METHOD >= 6.10.0); install or update bmm in this
      project (older installs name it bmad-dev-auto)
FAIL: .claude/skills/bmad-review-adversarial-general not found — …
FAIL: .claude/skills/bmad-review-edge-case-hunter not found — …

Why each of these is now structurally unsatisfiable

1. _bmad/bmm/config.yaml is gone. 6.13 has no per-module directory at all; project config is _bmad/config.toml. This is the surface already described in #154, which is still open.

2. bmad-build-auto is not under .claude/skills/. It lives in the bmad-method plugin. grep -rn 'plugins/cache\|claude-plugin' bmad_loop/*.py returns nothing, so no code path can currently find it.

3. bmad-review-adversarial-general and bmad-review-edge-case-hunter no longer exist in any form. 6.13 deleted them along with bmad-review-verification-gap, bmad-create-story, bmad-dev-story, bmad-quick-dev and bmad-dev-auto. (#260 already observed that bmad-review-verification-gap never shipped; 6.13 removed the other two as well.)

Root cause — one cascade, not four independent failures

install.resolve_review_layers's own docstring describes this exact degradation:

On a renamed project the legacy paths are simply absent, so without this the resolution silently returns None and the caller degrades to the static catalog — quietly seeding a worktree with the wrong reviewers instead of the ones this project configured.

That is what happens here:

  1. resolve_dev_primitive looks for {project}/{tree}/bmad-build-auto/SKILL.md → absent (it is in the plugin) → None
  2. review-layer resolution therefore returns None
  3. _review_findings falls back to the static catalog
  4. the static catalog names the pre-consolidation review skills, which 6.13 deleted

So FAILs 2–4 are all one bug: skill discovery does not consult plugin paths.

Worth noting the code is otherwise already correct for 6.13's topology. The MERGED_REVIEW_SKILL comment block anticipates it exactly:

On 6.11 sources the same four layers (blind-hunter, edge-case-hunter, verification-gap, intent-alignment) invoke no skill at all — two of them read the primitive's own review-prompts/*.md, two carry their prompt inline — so that tree derives an empty required map, which is satisfied rather than unsatisfiable

6.13 keeps that same four-layer topology in bmad-build-auto/customize.toml, each layer ending "Do not invoke any skill." So once the primitive is found, the derived required map is empty and the review preflight passes on its own. Only the discovery step is missing.

Suggested fix

Make skill discovery plugin-aware: when {project}/{tree}/<skill>/SKILL.md is absent, also look under the installed Claude Code plugin roots (e.g. ~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/skills/<skill>/), resolving the version the way the host does. Worktree provisioning would need the same treatment, or to skip seeding skills that resolve from a plugin (they are global, so a worktree already sees them).

Pairing that with #154 (read _bmad/config.toml as primary, bmm/config.yaml as fallback) clears all four FAILs.

Notes

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions