Brian 825099b2cb fix(installer): ask about deprecated shims during Quick Update, and report the outcome (#2746)
* feat(installer): ask about shims during Quick Update

Quick Update returned before the shim prompt, so anyone who only ever
runs it carried their compatibility shims forward release after release
without once being offered the chance to drop them.

Quick Update now asks, defaulting to keeping the shims so pressing enter
never removes a skill in active use. It stays quiet for an installation
that already dropped its shims rather than re-asking every update. The
prompt carries the recommendation to remove them and names the one case
that justifies keeping them: a customized shim not yet migrated.

Whenever an install retains shims, it now lists every one of them and
what it forwards to. That notice is emitted where the policy is resolved
rather than at the prompt, so it also reaches the paths that never
prompt: --yes, --shims, and scripted quick updates.

* fix(installer): never prompt for shims without a TTY, and report removal

Two gaps in the Quick Update shim prompt.

The prompt could be reached by a scripted run. `--action quick-update`
is a documented scripting flag and is not tied to `--yes`, so a headless
invocation on an install that still had shims fell through to a confirm.
clack's confirm never resolves without a TTY: the process drained its
event loop and exited silently, mid-install, with status 0. It now keeps
the standing answer whenever stdin is not a TTY, leaving --shims and
--no-shims as the way to change it from a script.

Removing shims was also completely silent. Source filtering just skips
the directories, and the IDE cleanup that deletes the stale skill dirs
suppresses its logging on purpose, so nothing anywhere told the user
that a skill they may still invoke had just gone. Any run that removes
shims now lists them and says how to put them back, mirroring the
retained notice. Between the two, every run that has shims either way
reports which way it went, on interactive and headless paths alike.

* feat(installer): carry the shim outcome into the final summary

Both shim notices print before the install tasks start, so a long run
buries them well above the fold. The summary box already repeats the uv
warning for exactly this reason; the shim outcome now rides along the
same way, as a single line next to the preserved/backed-up file counts.

Retained reads "Deprecated shim skills retained: N (re-run to remove
them)" in yellow, removed reads "Deprecated shim skills removed: N" in
green, and an install with no shims either way adds no line at all.

* fix(installer): say what an empty module selection installs

The official module picker allows an empty selection on purpose: core is
always installed and is not a row in the list, so selecting nothing is a
valid core-only install. The prompt did not say so, and collapsed to a
bare "0 items selected", which reads as though the install is about to
do nothing.

autocompleteMultiselect takes an optional emptyLabel, shown while
selecting as "Nothing selected: installs core only" and on submit as
"0 items selected (core only)". Pickers that pass no emptyLabel are
unchanged. Also fixes the count to say "1 item" rather than "1 items".

* refactor(installer): trim explanatory comments to what the code cannot say

Cuts 35 comment lines added across this branch down to seven, keeping
only the non-obvious constraints: clack's confirm hanging without a TTY,
core not being a row in the module picker, and why the shim notices are
emitted where they are.

* fix(installer): report shims removed after they are retired from source

Removal reporting was derived from the shims the incoming release ships,
so a shim retired from source fell out of the report entirely: it was
absent from discovery, yet the update cleanup still deleted its installed
target using the previous manifest. The v7 cut is exactly that case, and
it would have removed every shim in silence.

Removal is now derived from what is installed, read back from
skill-manifest.csv, and the retained/removed split moves into
selectShimOutcome. This also covers the mixed run where one shim is
retired while the rest stay enabled: both notices fire, and the summary
carries both counts. The recovery line no longer offers --shims when the
release cannot reinstall them.

Raised by greptile and coderabbit on #2746.
2026-08-15 18:53:03 -05:00
2026-01-07 18:18:12 +08:00

BMad Method

Agile Ai Driven Development — turn an idea or change request into working software without giving up the thinking.

Ai Driven Development (AiDD) covers the whole effort, not only the code: what to build, how it holds together, and how it changes as you learn. BMad Method is the agile way to do it — decisions stay explicit, context carries forward, and the process sizes itself to the work. Small changes go straight to build. Complex work gets the depth it needs. The same method covers a weekend prototype and a system with years of history behind it.

The BMad delivery loop: a vague notion starts at Clarify, a big clear idea at Plan, and a small change at Build and verify; Learn and adjust loops back to Plan

Start anywhere. Use BMad end to end, or carry its briefs, specifications, and architecture into your existing delivery workflow.

Start Building

Prerequisites: Node.js 20.12+, Python 3.10+, and uv

npx bmad-method install

Open your project in your AI coding tool, invoke bmad-build with what you want to change, and keep making the decisions that matter. Run bmad-help whenever you want guidance on what comes next or what is optional.

Build your first project with BMad →

Add BMad to an existing codebase →

BMad is free and open source, with no paywalled workflows or gated community. For prerelease builds, CI/CD, configuration overrides, and non-interactive setup, see the installation guide.

Why BMad?

Coding assistants are effective at implementation, but they often turn unstated assumptions into code. BMad keeps you in control while its agents and workflows make the important decisions explicit and preserve them as context for the work that follows.

  • Right-sized process — Go directly to implementation for clear changes or add deeper planning for larger initiatives.
  • New or existing code — Start from nothing, or establish verified context on a codebase you inherited and work from what is actually there.
  • Durable context — Carry product and technical decisions forward instead of re-explaining them in every chat.
  • Specialized perspectives — Bring in product, architecture, UX, development, and testing expertise when it helps.
  • Guided collaboration — Use structured workflows and multiple-agent discussions without handing over judgment.
  • One delivery path — Move from early thinking through reviewed implementation, correction, and learning.

See how the workflows fit together →

BMad Ecosystem

Install the core method or add official modules for specialized work.

Module Purpose
BMad Method Plan and deliver software, from new prototypes to established codebases
BMad Builder Skill, workflow, and agent builder
BMad Creative Intelligence Suite Creative thinking partners for innovation, design thinking, and storytelling
BMad Test Architect Enterprise testing add-on for BMad Method
BMad Loop Builds, verifies, and retros a whole epic unattended
BMad Game Dev Studio Ideate, design, and build games in any framework, including Unity, Unreal, Godot, and Phaser

Plan on the Web

Web bundles package selected BMad workflows as Google Gemini Gems and ChatGPT Custom GPTs. Use them for planning in your existing web subscription, then bring the resulting artifacts into your AI coding tool for implementation.

Documentation

Roadmap

See what is in progress and what is planned on the public roadmap.

Community

Support and Contributing

BMad is free for everyone and always will be. Star the repository, buy me a coffee, or email contact@bmadcode.com for corporate sponsorship.

Contributions are welcome. Read CONTRIBUTING.md before opening a pull request.

License

MIT License — see LICENSE for details.

BMad and BMAD-METHOD are trademarks of BMad Code, LLC. See TRADEMARK.md for details.

Contributors

See CONTRIBUTORS.md for contributor information.

Version License: MIT Discord

S
Description
Breakthrough Method for Agile Ai Driven Development
Readme MIT 126 MiB
Languages
JavaScript 59%
Python 22%
HTML 16.7%
CSS 1.1%
Shell 0.7%
Other 0.4%