updatelisted
Install: claude install-skill josefheld/claude-skills
# Bulk plugin update
## Why this skill exists
Two things are easy to confuse:
- `claude plugin marketplace update` only refreshes the **catalog**. The installed plugin version in the cache under `~/.claude/plugins/cache` stays untouched.
- `claude plugin update <plugin>` updates the **plugin itself**, but requires a plugin argument. There is no `--all` (as of 09/2026, open feature request in anthropics/claude-code).
The script handles both, in the right order: catalog first, then each plugin.
## How to run it
```bash
bash "${CLAUDE_PLUGIN_ROOT}/scripts/update-plugins.sh"
```
`${CLAUDE_PLUGIN_ROOT}` points at the directory this plugin is currently loaded from. Do not replace it with a fixed path: in a marketplace install the plugin lives in a versioned cache directory that changes with every update.
Useful options:
| Option | Effect |
| --- | --- |
| `--dry-run` | Only shows which plugins would be touched |
| `--only <name>` | A single plugin, with or without `@marketplace` |
| `--scope <scope>` | Pin to one scope: `user`, `project`, `local` or `managed` |
| `--no-marketplace` | Skip the catalog refresh |
If the user only wants to know whether anything is outdated, use `--dry-run`. It lists the candidates without changing anything.
## Reading the output
Each line is marked:
- `OK` updated
- `==` already current
- `!!` failed, with the error message indented below it
- `--` skipped
A `[scope: project]` or `[scope: local]` after a plugin name means it was not insta