All skills
Skillintermediate

Check Plugin Version

Verify the installed compound-engineering plugin version matches the upstream `plugin.json` on `main`, and recommend the update command if it doesn't. Claude Code only.

Claude Code Knowledge Pack7/10/2026

Overview

Check Plugin Version

Verify the installed compound-engineering plugin version matches the upstream plugin.json on main, and recommend the update command if it doesn't. Claude Code only.

Pre-resolved context

Only the Skill directory determines whether this session is Claude Code — if empty or unresolved, the skill requires Claude Code. The other sections may contain error sentinels even in valid Claude Code sessions; the decision logic below handles those cases.

${CLAUDE_SKILL_DIR} is a Claude Code-documented substitution that resolves at skill-load time. For a marketplace-cached install it looks like ~/.claude/plugins/cache/<marketplace>/compound-engineering/<version>/skills/ce-update, so the currently-loaded version is the basename two dirname levels up.

The upstream version comes from plugins/compound-engineering/.claude-plugin/plugin.json on main rather than the latest GitHub release tag, because the marketplace installs plugin contents from main HEAD. Comparing against release tags false-positives whenever main is ahead of the last tag (the normal state between releases).

Skill directory: !echo "${CLAUDE_SKILL_DIR}"

Latest upstream version: !version=$(gh api repos/EveryInc/compound-engineering-plugin/contents/plugins/compound-engineering/.claude-plugin/plugin.json --jq '.content | @base64d | fromjson | .version' 2>/dev/null) && [ -n "$version" ] && echo "$version" || echo '__CE_UPDATE_VERSION_FAILED__'

Currently loaded version: !case "${CLAUDE_SKILL_DIR}" in */plugins/cache/*/compound-engineering/*/skills/ce-update) basename "$(dirname "$(dirname "${CLAUDE_SKILL_DIR}")")" ;; *) echo '__CE_UPDATE_NOT_MARKETPLACE__' ;; esac

Marketplace name: !case "${CLAUDE_SKILL_DIR}" in */plugins/cache/*/compound-engineering/*/skills/ce-update) basename "$(dirname "$(dirname "$(dirname "$(dirname "${CLAUDE_SKILL_DIR}")")")")" ;; *) echo '__CE_UPDATE_NOT_MARKETPLACE__' ;; esac

Decision logic

1. Platform gate

If Skill directory is empty or unresolved: tell the user this skill requires Claude Code and stop. No further action.

2. Handle failure cases

If Latest upstream version contains __CE_UPDATE_VERSION_FAILED__: tell the user the upstream version could not be fetched (gh may be unavailable or rate-limited) and stop.

If Currently loaded version contains __CE_UPDATE_NOT_MARKETPLACE__: this session loaded the skill from outside the standard marketplace cache (typical when using claude --plugin-dir for local development, or for a non-standard install). Tell the user (substituting the actual path):

"Skill is loaded from {skill-directory} — not the standard marketplace cache at ~/.claude/plugins/cache/. This is normal when using claude --plugin-dir for local development. No action for this session. Your marketplace install (if any) is unaffected — run /ce-update in a regular Claude Code session (no --plugin-dir) to check that cache."

Then stop.

3. Compare versions

Up to date{currently loaded} == {latest upstream}:

"compound-engineering v{version} is installed and up to date."

Out of date{currently loaded} != {latest upstream}:

"compound-engineering is on v{currently loaded} but v{latest upstream} is available.

Update with:

claude plugin update compound-engineering@{marketplace-name}

Then restart Claude Code to apply."

The claude plugin update command ships with Claude Code itself and updates installed plugins to their latest version; it replaces earlier manual cache sweep / marketplace-refresh workarounds. The marketplace name is derived from the skill path rather than hardcoded because this plugin is distributed under multiple marketplace names (for example, compound-engineering-plugin for public installs per the README, or other names for internal/team marketplaces).