From silver-bullet
Checks GitHub for the latest Silver Bullet release, shows changelog since installed version, and installs update after confirmation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/silver-bullet:silver-updateThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Check GitHub for the latest Silver Bullet release, display what changed since your installed version, and install the update.
Check GitHub for the latest Silver Bullet release, display what changed since your installed version, and install the update.
Read ${SB_RUNTIME_HOME_ROOT}/plugins/installed_plugins.json. Try these keys in order:
silver-bullet@alo-labs (Claude / Cursor marketplace)silver-bullet@alo-labs-codex (Codex marketplace)silver-bullet@silver-bullet (legacy installation)Use the first key that exists; read its version field (e.g. 0.24.1). If none exist, treat installed version as 0.0.0.
Display:
## Silver Bullet Update
Checking for updates...
**Installed:** vX.Y.Z
curl -fsSL https://api.github.com/repos/alo-exp/silver-bullet/releases/latest \
| jq -r '.tag_name' | sed 's/^v//'
If the curl fails or returns empty, output:
Couldn't check for updates (offline or GitHub unavailable).
To update manually: reinstall via the active host's plugin manager or package refresh path, or clone from https://github.com/alo-exp/silver-bullet
Then exit.
Validate the version string before proceeding. After extracting $LATEST, verify it is a valid semver (MAJOR.MINOR.PATCH — digits only, no pre-release suffix):
if [[ -z "$LATEST" ]] || ! [[ "$LATEST" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "GitHub returned an unexpected version string: '${LATEST:-<empty>}'"
echo "Expected semver format (e.g. 0.23.6). Aborting to prevent path/ref corruption."
exit
fi
If validation fails, output the message above and exit. Do not proceed — passing a malformed version string to the marketplace install command can cause an incorrect or failed install.
Parse both as semver (MAJOR.MINOR.PATCH) and compare numerically.
If installed == latest:
## Silver Bullet Update
**Installed:** vX.Y.Z
**Latest:** vX.Y.Z
You're already on the latest version.
Exit.
If installed > latest (dev build):
## Silver Bullet Update
**Installed:** vX.Y.Z
**Latest:** vA.B.C
You're ahead of the latest release (development build).
Exit.
Fetch the changelog:
curl -s https://raw.githubusercontent.com/alo-exp/silver-bullet/main/CHANGELOG.md
Extract entries between the installed version and the latest version (inclusive of latest, exclusive of installed). Show all intermediate versions.
Display:
## Silver Bullet Update Available
**Installed:** vX.Y.Z
**Latest:** vA.B.C
### What's New
────────────────────────────────────────────────────────────
[extracted changelog entries]
────────────────────────────────────────────────────────────
⚠️ **Note:** The update installs the new release via the active host's marketplace or package manager.
On Codex, use the repo's Codex package refresh path instead of the Claude marketplace command.
Your project files (project instruction file, silver-bullet.md, hooks, config) are never
touched — only the active host's plugin cache and registry are updated.
Ask the user directly:
If user cancels, exit.
Run the host-appropriate install command. Silver Bullet is a plugin, not an MCP server — install it through the host's plugin manager:
# Claude Code / Cursor (plugin host): run inside the agent, not the shell
/plugin install alo-exp/silver-bullet
# Codex host: ./scripts/install-codex.sh --purge-legacy-skills
If the command fails (non-zero exit code), display the error output and exit without proceeding to cleanup:
Update failed. The host install did not complete successfully.
Please try again or install manually via the active host's plugin manager or package refresh path.
Do not modify the registry or attempt cleanup if the install step fails.
After the marketplace install succeeds, clean up any residual legacy installations.
6a. Remove stale registry entry:
Check whether installed_plugins.json contains the legacy silver-bullet@silver-bullet key. If it does, remove it atomically:
REG="${SB_RUNTIME_HOME_ROOT}/plugins/installed_plugins.json"
if jq -e '.plugins["silver-bullet@silver-bullet"]' "$REG" > /dev/null 2>&1; then
TMP="$(mktemp "${REG}.XXXXXX")"
jq 'del(.plugins["silver-bullet@silver-bullet"])' "$REG" > "$TMP" && mv "$TMP" "$REG"
fi
6b. Remove stale cache directory:
Check whether ${SB_RUNTIME_HOME_ROOT}/plugins/cache/silver-bullet/silver-bullet/ exists. If it does, remove it:
if [[ -z "$HOME" ]]; then
echo "WARNING: HOME is unset — skipping stale cache cleanup."
else
STALE_CACHE="${SB_RUNTIME_HOME_ROOT}/plugins/cache/silver-bullet/silver-bullet"
if [[ -d "$STALE_CACHE" && ! -L "$STALE_CACHE" && "$STALE_CACHE" == "${HOME}/"* ]]; then
rm -rf "$STALE_CACHE"
fi
fi
Do NOT remove ${SB_RUNTIME_HOME_ROOT}/plugins/cache/silver-bullet/alo-labs/ — that is the newly installed version.
If either cleanup step fails, log the error but do not abort — the install already succeeded.
╔═══════════════════════════════════════════════════════════╗
║ Silver Bullet Updated: vX.Y.Z → vA.B.C ║
╚═══════════════════════════════════════════════════════════╝
Installed via the active host's package manager / marketplace (silver-bullet@alo-labs).
⚠️ Restart the host coding agent to pick up the new skills and hooks.
[View full changelog](https://github.com/alo-exp/silver-bullet/blob/main/CHANGELOG.md)
npx claudepluginhub alo-exp/silver-bullet --plugin silver-bulletGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.