
Ce Update
Detect whether ce-update runs from the Claude marketplace cache and print the installed Compound Engineering version segment.
Overview
CE Update is an agent skill for the Build phase that reads the local Claude marketplace cache path to report the installed Compound Engineering plugin version or a not-marketplace sentinel.
Install
npx skills add https://github.com/everyinc/compound-engineering-plugin --skill ce-updateWhat is this skill?
- Bash helpers derive skill_dir from BASH_SOURCE (not CLAUDE_SKILL_DIR env)
- Parses ~/.claude/plugins/cache/<marketplace>/compound-engineering/<version>/skills/ce-update
- Emits version string when cache layout matches; otherwise __CE_UPDATE_NOT_MARKETPLACE__
- Companion script captures marketplace name segment from the same path pattern
- Supports reliable self-location when invoked as bash "${CLAUDE_SKILL_DIR}/scripts/<name>.sh"
- Sentinel literal __CE_UPDATE_NOT_MARKETPLACE__ when path is outside marketplace cache layout
- Path regex captures marketplace and version segments under plugins/cache/.../compound-engineering/<version>/skills/ce-up
Adoption & trust: 1.6k installs on skills.sh; 20.5k GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You installed Compound Engineering from the Claude marketplace but cannot tell which cached version your agent skills are executing against.
Who is it for?
Developers who install everyinc/compound-engineering via Claude plugin cache and need version-aware update automation.
Skip if: Projects that vendor skills only in-repo with no ~/.claude/plugins/cache layout—expect the sentinel, not a semver.
When should I use this skill?
Use when ce-update or related maintenance flows need the installed Compound Engineering version from the Claude marketplace cache path.
What do I get? / Deliverables
Update and diagnostics scripts get an authoritative version string or explicit __CE_UPDATE_NOT_MARKETPLACE__ signal before running upgrade steps.
- Printed version segment string when cache layout matches
- Marketplace name segment or __CE_UPDATE_NOT_MARKETPLACE__ sentinel for guard rails
Recommended Skills
Journey fit
Canonical shelf is Build agent-tooling because the skill maintains marketplace-installed skills, not application feature code. Agent-tooling subphase fits version introspection scripts under compound-engineering/<version>/skills/ce-update cache paths.
How it compares
Skill package utility for marketplace installs, not an MCP server or generic package manager CLI.
Common Questions / FAQ
Who is ce-update for?
Claude Code users maintaining the Compound Engineering marketplace plugin who need scripts to detect installed cache version.
When should I use ce-update?
During Build agent-tooling when refreshing plugins, debugging stale skills, or before running documented ce-update upgrade steps.
Is ce-update safe to install?
Review the Security Audits panel on this page; scripts only read their own path and print version text—no network calls in the provided helpers.
SKILL.md
READMESKILL.md - Ce Update
#!/usr/bin/env bash # Print the version segment of the skill's own location when it matches the # marketplace cache layout `~/.claude/plugins/cache/<marketplace>/compound-engineering/<version>/skills/ce-update`, # or the literal sentinel `__CE_UPDATE_NOT_MARKETPLACE__` otherwise. # # Derives skill_dir from BASH_SOURCE rather than $CLAUDE_SKILL_DIR because # CLAUDE_SKILL_DIR is documented as a SKILL.md content substitution and is # not a guaranteed environment variable for Bash tool subprocesses. The # script is invoked as `bash "${CLAUDE_SKILL_DIR}/scripts/<name>.sh"`, so # BASH_SOURCE[0] is the absolute script path either way and self-locating # is reliable. set -u script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" skill_dir="$(dirname "$script_dir")" # Match `.../plugins/cache/*/compound-engineering/<version>/skills/ce-update[/]?` # Capture group 1 is the version segment. version=$(printf '%s\n' "$skill_dir" | sed -nE 's|.*/plugins/cache/[^/]+/compound-engineering/([^/]+)/skills/ce-update/?$|\1|p') if [ -n "$version" ]; then echo "$version" else echo '__CE_UPDATE_NOT_MARKETPLACE__' fi #!/usr/bin/env bash # Print the marketplace-name segment of the skill's own location when it # matches the marketplace cache layout # `~/.claude/plugins/cache/<marketplace>/compound-engineering/<version>/skills/ce-update`, # or the literal sentinel `__CE_UPDATE_NOT_MARKETPLACE__` otherwise. # # Derives skill_dir from BASH_SOURCE rather than $CLAUDE_SKILL_DIR — see # currently-loaded-version.sh for the rationale. set -u script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" skill_dir="$(dirname "$script_dir")" # Capture group 1 is the marketplace segment. marketplace=$(printf '%s\n' "$skill_dir" | sed -nE 's|.*/plugins/cache/([^/]+)/compound-engineering/[^/]+/skills/ce-update/?$|\1|p') if [ -n "$marketplace" ]; then echo "$marketplace" else echo '__CE_UPDATE_NOT_MARKETPLACE__' fi #!/usr/bin/env bash # Print the upstream `version` field from plugins/compound-engineering/.claude-plugin/plugin.json # on main, or the literal sentinel `__CE_UPDATE_VERSION_FAILED__` if the lookup fails. # # Compared to release tags, this reads the current main HEAD because the marketplace # installs plugin contents from main HEAD; comparing against tags false-positives # whenever main is ahead of the last tag. set -u version=$(gh api repos/EveryInc/compound-engineering-plugin/contents/plugins/compound-engineering/.claude-plugin/plugin.json --jq '.content | @base64d | fromjson | .version' 2>/dev/null) if [ -n "$version" ]; then echo "$version" else echo '__CE_UPDATE_VERSION_FAILED__' fi --- name: ce-update description: | Check if the compound-engineering plugin is up to date and recommend the update command if not. Use when the user says "update compound engineering", "check compound engineering version", "ce update", "is compound engineering up to date", "update ce plugin", or reports issues that might stem from a stale compound-engineering plugin version. This skill only works in Claude Code — it relies on the plugin harness cache layout. disable-model-invocation: true ce_platforms: [claude] allowed-tools: Bash(bash *upstream-version.sh), Bash(bash *currently-loaded-version.sh), Bash(bash *marketplace-name.sh) --- # 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. 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). ## Step 1: Probe versions Run these three scripts in parallel via the Bash tool. Each prints a single line of output; capture the values for the decision logic below. Use `${CLAUDE_S