π Fixes
-
The builders pass
--project-root, and stop teaching the omission forward (#116).resolve_customization.pyworked out the project root by itself when the flag was absent, walking up from the skill's installed directory. For a skill installed under your home directory that walk reaches~, and a user-level BMad install leaves a~/_bmadsitting there β so the resolver decided home was the project, found no override, and returned shipped defaults. A team override in the actual project was never opened, and nothing reported it.Three of the six files changed here are the templates the builders stamp into every new skill β
bmad-agent-builder'sSKILL-template.mdandSKILL-template-bootloader.md, andbmad-workflow-builder'sSKILL-template.md. Left alone, the omission kept seeding itself into everything built from here on, which is why this matters more than five call sites suggests. The builders' own activation steps and themake-a-skill-customizablerecipe are covered too; that recipe runs from the project directory with a relative path, so it passes"$PWD"rather than the{project-root}placeholder the templates use.The resolver itself is fixed upstream in BMAD-METHOD#2802, which is what repairs an existing install β this repo ships no copy of the script and calls core's.
-
scan-path-standards.pystops reporting the agent builder's own operational files (#113).pathlibglob does not exclude dotfiles the way shell globbing does, soskill_path.glob('*.md')picked up the root.memlog.mdthatbmad-agent-builder/SKILL.mdrequires for resume detection, and reported a high-severity "Prompt file at skill root" finding on every run. The recursive scan also descended into generated.analysis/<timestamp>/output, wherefindings.jsonhas to contain absolute paths and therefore tripped the absolute-path rule..memlog.mdis now exempt from the root-file structure rule,.analysisis filtered from the recursive scan and added to the prepass skip list. Measured on a sample agent: 8 findings down to 5. -
CodeQL code-quality findings cleared in the Python builder skills (#106). Five findings that consumer repos inherited after installing BMad Builder skills. Adjacent string literals inside list displays are merged into single literals β generated
CAPABILITIES.mdoutput is byte-identical before and after, verified across every evolvable/capabilities combination, and the same change lands in the three sampleinit-sanctum.pycopies that shared the pattern. Three intentional emptyexceptblocks gained explanatory comments with no control-flow change, and an unusedimport sysis gone fromtest_canon_sync.py.
π§ Maintenance
- Marketplace plugin versions synced to 2.2.2 β nothing in the release workflow touches
.claude-plugin/marketplace.json, so its versions drift frompackage.jsonunless bumped by hand.