plugin-update — manage plugin versions
Caution
Running old plugin versions causes silent mismatches. Skills added in newer releases are missing. Fixes don’t apply. The skill manifest Claude loads at startup can be weeks behind the repo. There is no auto-update prompt — you have to ask.
Tip
One skill checks, installs, and updates the full brewcode suite. Interactive by default — or pass check / update / all to skip questions.
Quick reference
| Field | Value |
|---|---|
| Command | /brewtools:plugin-update |
| Arguments | [check|update|all] — no args = interactive |
| Model | sonnet |
| Context | session |
| Tools | Read, Bash, Write, AskUserQuestion, WebFetch |
When to use
- Version check before a long session — confirm the suite is current before investing time
- After seeing unfamiliar errors — an outdated plugin may lack a fix already released
- First run on a new machine — install all four plugins non-interactively with
all - CI / scripted setup —
allmode skips every confirmation prompt
| Situation | Command |
|---|---|
| Just check versions, change nothing | /brewtools:plugin-update check |
| Update what’s outdated, skip missing | /brewtools:plugin-update update |
| Install missing + update all, no prompts | /brewtools:plugin-update all |
| Walk through each decision interactively | /brewtools:plugin-update |
Examples
# Interactive — check versions and decide what to update
/brewtools:plugin-update
# Status check only — no changes made
/brewtools:plugin-update check
# Update all outdated plugins non-interactively
/brewtools:plugin-update update
# Install missing + update all — fully non-interactive
/brewtools:plugin-update all
After a run you will see a version table like this:
| Plugin | Installed | Latest | Status |
|---|---|---|---|
| brewcode | 3.4.51 | 3.4.52 | ⬇️ update available |
| brewdoc | 3.4.51 | 3.4.51 | ✅ current |
| brewtools | — | 3.4.51 | ❌ missing |
| brewui | 3.4.51 | 3.4.51 | ✅ current |
Status legend: ✅ current · ⬇️ update available · ❌ missing · ❓ unknown.
Flow
- Discover installed plugins
Primary path: runs
claude plugin list —json(CC 2.1.163+, prefixed withunset CLAUDECODE &&inside a session). Returns an array of objects:id,version,scope,enabled,installPath,installedAt,lastUpdated, and optionalmcpServers. Theversionfield may read“unknown”for locally-loaded plugins. Fallback: if the command errors, returns empty output, or produces invalid JSON, the skill runsdiscover-plugins.sh, which reads~/.claude/settings.jsonand walks~/.claude/plugins/cache/directly. - Fetch latest versions
Fetches release metadata from GitHub. If the network request fails, all latest versions are marked “unknown” and the run continues — you can still update without knowing the exact latest tag.
- Render status table
Prints the version table for all four suite plugins (brewcode, brewdoc, brewtools, brewui) plus any other installed plugins as informational rows. Argument
checkstops here — no changes are made. - Install missing plugins
For each suite plugin not present: asks whether to install (interactive) or auto-installs (
allmode). Runsclaude plugin marketplace addfirst (idempotent), then per-plugininstall. Skipped entirely for theupdateargument. - Update outdated plugins
Runs the full update chain in order: marketplace refresh, then each of the four plugins. Shows full CLI output for every command. In interactive mode, asks before proceeding. Any single failure is reported and the chain continues.
- Auto-update toggle hint
Only in interactive and
allmodes. Explains how to enable per-marketplace auto-update via the/pluginUI (Marketplaces → claude-brewcode). The skill never patchessettings.jsondirectly — the exact key is unverified. - Reload notice + final summary
Always printed, even on no-op runs. Lists what was installed, updated, skipped, and any errors. Preferred reload: run
/reload-pluginsin this session. Fallback:exit, thenclaudeagain.
Warning
Run /reload-plugins or restart the session after any install or update. Claude Code reads skill and agent definitions once at startup — changes take effect only after a reload.
Internals
Discovery — primary: claude plugin list --json (available since CC 2.1.163). Returns objects with fields id, version, scope, enabled, installPath, installedAt, lastUpdated, and optionally mcpServers. The version field may be "unknown" for dev-mode plugins. When run inside a session, the Bash invocation is prefixed with unset CLAUDECODE && to avoid the env-var conflict. Fallback: if the command errors, returns empty output, or returns invalid JSON (CC older than 2.1.163), the skill falls back to discover-plugins.sh, which parses ~/.claude/settings.json for marketplace registrations and walks ~/.claude/plugins/cache/ for installed version directories.
Update chain — runs in this fixed order:
claude plugin marketplace update claude-brewcode
claude plugin update brewcode@claude-brewcode
claude plugin update brewdoc@claude-brewcode
claude plugin update brewtools@claude-brewcode
claude plugin update brewui@claude-brewcodeEach command runs via the Bash tool with full output shown. Failures are reported inline; remaining steps continue regardless.
Interactive gates — AskUserQuestion presents option lists only (no free-text). Three decision points: install missing, update outdated, enable auto-update. Explicit arguments (check, update, all) bypass all three.
Claude refuses to execute? — if Claude summarizes instead of running commands, paste this coercive prompt: “Execute every claude plugin ... command shown above using the Bash tool. Do not describe — run each command and show full output.”
GitHub source
Source code, discovery scripts, and update references.
Brewtools overview
All brewtools skills in one place.
Updating plugins
/brewtools:plugin-update to check and update the brewcode plugin suite in one command.
See the FAQ for details.