Help us improve
Share bugs, ideas, or general feedback.
From cartog
Installs or upgrades the cartog binary to match the plugin's pinned version. Handles missing binary, old versions, and mid-range upgrades.
npx claudepluginhub jrollin/cartog --plugin cartogHow this skill is triggered — by the user, by Claude, or both
Slash command
/cartog:cartog-installThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The plugin pins a specific cartog binary version. This skill installs that
Installs, verifies, or refreshes the claude-evolve plugin: sets up Python venv, installs dependencies, and confirms MCP server registration.
Checks if the bopen-tools plugin is up to date by comparing local and GitHub versions. Returns status (current, outdated, etc.) and suggests update commands. Fast (~70ms).
Automates Navigator plugin updates with version detection, conflict resolution, and post-update validation. Invoked when user mentions upgrading Navigator or getting new features.
Share bugs, ideas, or general feedback.
The plugin pins a specific cartog binary version. This skill installs that version, or upgrades an existing install to match.
PLUGIN_VERSION=0.26.0
scripts/release.sh bumps the PLUGIN_VERSION= line above at release time;
the rest of this file references that value as $PLUGIN_VERSION and the
agent must substitute it from the line above before running any command. The
literal string $PLUGIN_VERSION is NOT a shell variable in your Bash
environment — it is a token you replace.
Probe the current state, then run the matching path. Surface every step's output to the user — they typed this verb because they want to see what happens.
cartog --versionRun cartog --version via Bash. Capture exit code and version string.
Run the bundled installer, substituting $PLUGIN_VERSION with the version
from the PLUGIN_VERSION= line at the top of this file:
bash "${CLAUDE_PLUGIN_ROOT}/skills/cartog/scripts/install.sh" $PLUGIN_VERSION
After install:
hash -r so the shell forgets cached lookups.cartog --version to confirm the install matches $PLUGIN_VERSION.cartog --version still fails, check whether the install directory
(printed by install.sh) is on the user's PATH. If not, tell the user
the exact export PATH="<dir>:$PATH" line to add to their shell rc.Tell the user to restart Claude Code so the MCP server picks up the new binary. The cartog MCP server can't reconnect mid-session.
< 0.14.0Pre-0.14.0 binaries don't have cartog self update. Use the same bundled
installer with the pinned version (substitute $PLUGIN_VERSION from the top):
bash "${CLAUDE_PLUGIN_ROOT}/skills/cartog/scripts/install.sh" $PLUGIN_VERSION
Then verify and tell the user to restart Claude Code (same as step 2).
>= 0.14.0, and lacks --apply-pendingThe deferred flags (--defer/--apply-pending) landed in 0.20.0. Binaries
in 0.14.0–0.20.0 have cartog self update but reject those flags with a clap
"unexpected argument" (exit 2), so the deferred path below does not apply to
them. Detect this band by probing the help text:
cartog self update --help 2>&1 | grep -q -- '--apply-pending' || echo "PRE_DEFERRED"
When it prints PRE_DEFERRED, do not run --defer. Recover by reinstalling
the pinned version with the bundled installer (it overwrites the on-disk binary;
the running MCP server keeps its old inode until the user restarts):
bash "${CLAUDE_PLUGIN_ROOT}/skills/cartog/scripts/install.sh" $PLUGIN_VERSION
Then verify and tell the user to restart Claude Code (same as step 2).
--apply-pending (>= 0.20.0)Run cartog self update via Bash. Relay its output to the user verbatim.
Handle the documented exit codes:
| Exit | Meaning | What to tell the user |
|---|---|---|
| 0 | Updated | "cartog upgraded. Restart Claude Code to pick up the new binary." |
| 3 | Installed via cargo | "cartog was installed via cargo. Run cargo install cartog --force to upgrade." |
| 6 | Another cartog process is running | Inside a Claude Code session this is the normal case — the cartog MCP server (cartog serve) is the running peer. Arm a deferred update to the pinned version instead, substituting $PLUGIN_VERSION from the top of this file: cartog self update --defer --to $PLUGIN_VERSION. Tell the user "cartog will update to $PLUGIN_VERSION when this session ends." (Manual alternative: close other Claude Code sessions, stop any background cartog watch, then run /cartog-install again.) |
| other | Unexpected | Surface the exit code + stderr to the user. Then run the bundled installer pinned to $PLUGIN_VERSION as a recovery: bash "${CLAUDE_PLUGIN_ROOT}/skills/cartog/scripts/install.sh" $PLUGIN_VERSION. Never invoke install.sh without the pinned version — that would install the latest GitHub release, drifting off the plugin's pin. |
cartog self update --defer --to $PLUGIN_VERSION is the right call from
inside a Claude Code session: the MCP server is the peer that blocks an
in-place swap, and --to arms the pinned version (not the latest GitHub
release) so the deferred update lands exactly on the plugin's pin. Plain
cartog self update is for a terminal with no cartog serve/watch running.
Compare cartog --version against the PLUGIN_VERSION= line at the top of
this file. If they match, print "cartog is already at the pinned version —
nothing to do." and stop.
.cartog.toml, the index database, or any user
files.${CLAUDE_PLUGIN_ROOT} resolves to the directory Claude Code expanded
the plugin into. Use it literally — do not substitute a guessed path.https://jrollin.github.io/cartog/install.sh which they can download
and inspect before running.