PLUGIN brewtools / Skills
On this page
plugin-update
sonnet 3 modes user-invokedBrings the brewcode suite up to date in one run: brewcode, brewdoc, brewtools, brewui and the mods brewmod-placeholders, brewmod-plan-effort and brewmod-reminders. The skill updates every installed plugin and mod at the scope it is installed in and never asks whether to update.
The run ends with one report: versions before and after, what changed for you, and numbered next steps. The skill cannot reload plugins, so after every update or all run, /reload-plugins is the first next step.
Quick reference
| Field | Value |
|---|---|
| Command | /brewtools:plugin-update |
| Arguments | [prompt] [update|check|all] β free-form prompt first; no args = update |
| Model | sonnet |
| Tools | Read, Bash, AskUserQuestion |
| Output | Versions before β after, What changed for you, Next steps |
When to use
| Situation | Command | Changes anything | Asks | Does |
|---|---|---|---|---|
| A new release is out, bring everything up to date | /brewtools:plugin-update (mode update, the default) | yes | once, only when mods or plugins are missing | Refreshes the marketplace, updates every outdated plugin and mod in every scope, installs the offers you pick |
| See what is outdated, change nothing | /brewtools:plugin-update check | no | never | Reads the published versions and reports what can be updated; no marketplace refresh |
| New machine, or take every offer without questions | /brewtools:plugin-update all | yes | never | update, plus every missing mod and plugin installed, plugins from other marketplaces updated, and orphaned auto-installed dependencies pruned once per installed scope |
A mode word can sit anywhere in a free-form prompt, for example /brewtools:plugin-update check what is outdated. The prompt never narrows what is updated.
Example
/brewtools:plugin-update
## π’ brewcode updated: 6 of 7 components
| Component | Before | After | |
|---|---|---|---|
| **brewmod-placeholders** | 6.9.5 | **6.9.6** | π’ updated |
| **brewmod-plan-effort** | β | **6.9.6** | π’ installed |
| **brewmod-reminders** | β | **6.9.6** | π’ installed |
| **brewcode** | 6.9.5 | **6.9.6** | π’ updated |
| **brewdoc** | 6.9.6 | 6.9.6 | βͺ already current |
| **brewtools** | 6.9.5 | **6.9.6** | π’ updated |
| **brewui** | 6.9.5 | **6.9.6** | π’ updated |
### What changed for you (6.9.5 β 6.9.6)
- **v6.9.6:** <first bullet from that release's "What changed for you">
- **v6.9.6:** <second bullet>
- **v6.9.6:** <third bullet>
- *+2 more:* [release notes](https://github.com/kochetkov-ma/claude-brewcode/blob/main/RELEASE-NOTES.md)
### Next steps
1. π΅ **`/reload-plugins`**: activates the new versions in this session (or `exit`, then `claude`).
2. π΅ **`/brewcode:setup-status upgrade`**: brings this project's setups up to **6.9.6** in one run; repeat it in every project you use.
π΅ Auto-update is off for claude-brewcode: `/plugin` -> Marketplaces -> claude-brewcode -> **Enable auto-update**.

One run updates every plugin and mod, then setup-status upgrade brings the setups of the project current. Real Claude Code 2.1.302 screens, sped up where the title bar shows β©.
Versions and bullet text are illustrative. check prints the same sections with Installed and Latest columns and the cell π΅ update available; its first next step is /brewtools:plugin-update, and /brewdoc:my-claude refresh follows when an installation guide is stale.
The one question
Only update asks, and only when the plan lists at least one missing mod or plugin. One call, up to two multi-select questions:
| Question | Header | Options |
|---|---|---|
Install the missing mods? | Mods | One option per missing mod, placeholders first, each with a one-line reason; then Skip |
Install the missing plugins? | Plugins | Up to 3 missing plugins, or one Install all N when more are missing; then Skip |
Pick any options, or Skip. Choosing Skip (alone or with other options), giving no answer or running headless installs nothing from that question, and the report prints the install command for each open offer. all installs every offer without asking. The skill never installs a mod that is not in the offer.
Update Claude Code first
Mods need Claude Code 2.1.301 or newer. Below that, or when the version cannot be read, the skill offers no mod and the report says to run claude update, restart Claude Code, then run the skill again.
How it works
- Inventory
Lists installed plugins with
claude plugin list --json, or a script fallback on older CLIs, into a private temporary directory. - Latest versions
updateandallrefresh the claude-brewcode marketplace, then read the versions from the refreshed clone.check, or a failed refresh, reads the published versions over the web instead. When no latest version can be read, the report marks the rowsβͺ latest unknownrather than current. - Plan
One plan lists the rows to update (mods first, placeholders first), the missing mods and plugins, and the release-notes range.
checkskips to the report. - One question
updatewith open offers asks the question above, before any change.checkandallask nothing. - Update, then install
One
claude plugin updateper row at its own scope, then oneclaude plugin installper chosen offer. A failed command is reported and the run continues. - Prune and after snapshot
allprunes orphaned auto-installed dependencies once per installed scope;updateskips the prune. Then the list is read again for the after versions. - Report
Prints the report verbatim: title, table, offers still open, What changed for you, Next steps and the auto-update hint. Below it come one
π΄line per failed marketplace refresh, update, install or prune command, and one line per orphan install. The private temporary directory is removed afterwards.
Technical details
Internals: discovery, update chain, prune
Discovery. claude plugin list --json (CC 2.1.163+) returns id, version, scope, enabled, installPath, installedAt, lastUpdated, optional mcpServers, and projectPath on project/local rows only. version may be "unknown" for locally loaded plugins. Inside a session the call is prefixed with unset CLAUDECODE &&. If it errors, returns nothing or invalid JSON, scripts/discover-plugins.sh reads settings.json (CLAUDE_CONFIG_DIR, default ~/.claude) and walks the cache (CLAUDE_CODE_PLUGIN_CACHE_DIR, default <config dir>/plugins/cache/). If both fail, the inventory is reported unknown and nothing is offered, installed or updated. Ids ending @inline, @skills-dir or @synced are not marketplace installs and never update.
Update chain. --scope is always passed from the pluginβs own discovery row, because CLIs before 2.1.281 read an omitted scope as user and update the wrong instance:
claude plugin marketplace update claude-brewcode
claude plugin update <id> --scope <scope>
(cd "<projectPath>" && claude plugin update <id> --scope <scope>)Every outdated plugin and mod gets one such command, for example brewcode@claude-brewcode or brewmod-placeholders@claude-brewcode. Project and local rows run from their own projectPath. A missing directory is reported as an orphan install with mkdir -p "<projectPath>" && cd "<projectPath>" && claude plugin uninstall <id> --scope <scope> as the removal command; its table cell is βͺ orphan install, never a failure. all also updates rows from other marketplaces (a no-op when current); they show in the table only when their version changed. If the marketplace refresh fails, the skill reports it, reads the published versions over the web, and adds the marketplace before any install.
Prune. all only, once per installed scope in this order: user from the session directory, then each project and local scope from its own project directory. claude plugin prune --dry-run --scope <scope> lists the orphans, then claude plugin prune --scope <scope> -y removes exactly that list: typing all is the consent. A scope whose directory is gone is skipped (the orphan report covers it), another scope such as managed is reported as unsupported, and a CLI without prune skips the step with a notice. Prune removes only auto-installed dependencies nothing still requires. The -y is mandatory: the Bash tool has no TTY, and a bare prune removes nothing yet exits 0.
No delegation. The skill spawns nothing; discovery, the chain and the question run in the main conversation so you see every command.
Claude summarizes instead of running? Paste: βExecute every claude plugin ... command shown above using the Bash tool. Do not describe, run each command and show full output.β
Report: titles, cells, release notes, next steps
Titles and status cells appear verbatim. N is the number updated or installed, M the installed components, K the failed ones, X the version still installed and Y the latest.
| Title or cell | Meaning |
|---|---|
## π’ brewcode updated: N of M components | N components were updated or installed |
## π΄ brewcode: N updated, K failed | K components are still behind the latest version |
## βͺ brewcode is current | Nothing needed an update |
## π΅ brewcode check: N of M components can be updated | check mode: N updates are available |
## βͺ brewcode: latest versions unknown (offline?) | No latest version could be read, so no row is called current |
## π΅ brewcode check: latest versions unknown | check mode: the published versions could not be read |
## π΄ brewcode: update result unknown (plugin list unreadable) | The plugin list after the run could not be read; the report opens with a π΄ line saying so and the table shows the versions from before the run |
π’ updated | The version changed to the latest |
π’ installed | The component was installed in this run |
βͺ already current | The version was already the latest |
βͺ not installed | The component is not on this machine |
βͺ latest unknown | The latest version of this component is not known, so the row is never called current |
βͺ orphan install | A project or local install whose directory is gone; reported with its removal command and never counted as a failure |
π΄ still X, latest Y | The component is still at version X after the update; Y is the latest |
π΄ not verified, latest Y | The list after the update could not be read; the After column shows β |
π΅ update available | check mode: a newer version exists |
A scope other than user shows as (scope: path) after the name; a missing version shows as β; a changed version is bold.
What changed for you. The text comes from RELEASE-NOTES.md in the local marketplace clone, never from the network. The range runs from your lowest installed claude-brewcode version, excluded, to the highest latest, included. Per version it shows the bullets under What changed for you: at most 3 per version and 10 in total, newest first, with the rest counted as +N more. A Claude Code requirement line shows once, and only when Claude Code is below 2.1.301 or its version cannot be read; migration bullets come first, and technical sections never appear. A clone older than the latest version (check, or a failed marketplace refresh) shows a line saying so, with the release-notes link.
Next steps. Numbered at run time:
| Step | Appears when |
|---|---|
/reload-plugins | After every update or all run, no-op runs included |
/brewcode:setup-status upgrade | brewcode is installed and the project has .claude/; other project and local paths are listed for you to repeat it in |
/brewdoc:my-claude refresh | An installation guide is older than the installed brewdoc |
A plugin update does not replace files a setup already copied into a project, so the upgrade step runs in each project; Setup Status explains it.
In check mode with updates available, the first step is /brewtools:plugin-update, which applies the N updates.
Below the table. Each missing mod and plugin the run did not install is listed with its claude plugin install command. When a mod is missing and Claude Code is below 2.1.301 or unreadable, a line tells you to run claude update instead of listing a mod install command.
Below the report. The skill adds π΄ <command>: <first error line> for each failed marketplace refresh, update, install, prune or prune preview, and one line per orphan install with its removal command. A report flagged degraded (a latest version unknown, or the after list unreadable) is still complete and printed in full. Auto-update stays a user switch (/plugin β Marketplaces β claude-brewcode): the skill never edits settings.json or known_marketplaces.json.
Mode keywords
| Mode | Keywords |
|---|---|
update | none (default), update, upgrade |
check | check, status |
all | all, everything, full |
An explicit mode word wins. Otherwise the most distinct whole-word keyword decides; a tie with check resolves to check, and update against all resolves to the keyword that comes first.
Related
Setup Status
The next step: upgrade the stale setups of each project.
Brewcode mods
The add-ons this skill updates and offers.
GitHub source
Source, discovery scripts and update references.
Brewtools overview
Commands, models and arguments for every brewtools skill.
Update: /brewtools:plugin-update, /reload-plugins, then /brewcode:setup-status upgrade - FAQ