/ouroboros:update
Check for updates and upgrade Ouroboros (PyPI package + runtime integration).
Usage
ooo update
/ouroboros:updateTrigger keywords: "ooo update", "update ouroboros", "upgrade ouroboros"
Instructions
When the user invokes this skill:
- Check current version: First, try reading the version from the CLI binary (works for all install methods):
ouroboros --version 2>/dev/nullIf that fails, try the plugin version:cat.claude-plugin/plugin.json 2>/dev/null | python3 -c "import sys,json; print(json.load(sys.stdin).get('version','unknown'))" 2>/dev/nullIf both fail, the package is not installed — skip to step 3. - Check latest version on PyPI: First, determine if the current installed version is a pre-release (contains
a,b,rc, ordev). If the current version is a pre-release, scan all PyPI releases to find the latest (including betas):python3 -c " import json, ssl, urllib.request from packaging.version import Version ctx = ssl.create_default_context() data = json.loads(urllib.request.urlopen('https://pypi.org/pypi/ouroboros-ai/json', timeout=5, context=ctx).read()) versions = [Version(v) for v in data.get('releases', {}) if data['releases'][v]] print(str(max(versions)) if versions else data['info']['version']) "If the current version is stable, use the standard latest:python3 -c " import json, ssl, urllib.request ctx = ssl.create_default_context() data = json.loads(urllib.request.urlopen('https://pypi.org/pypi/ouroboros-ai/json', timeout=5, context=ctx).read()) print(data['info']['version']) " - Compare and report: If already on the latest version:
Ouroboros is up to date (v0.X.Y)If a newer version is available, show:Update available: v0.X.Y → v0.X.Z Changes: https://github.com/Q00/ouroboros/releases/tag/v0.X.ZThen ask the user with AskUserQuestion:
- "Update now" — Proceed with update - "Skip" — Do nothing
- Run update (if user chose to update): a. Update PyPI package — detect the original install method and preserve
[claude]extras: Check which installer was used:uv tool list 2>/dev/null | grep -q ouroboros && echo "uv" pipx list 2>/dev/null | grep -q ouroboros && echo "pipx"This skill runs inside Claude Code, so always useouroboros-ai[claude](includesclaude-agent-sdkandanthropicrequired for MCP tools). Note: The[claude]extra is critical — it installsclaude-agent-sdkandanthropicwhich are required for MCP tool execution. Omitting it causes MCP tools to fail silently at call time. b. Update runtime integration: For Claude Code:claude plugin marketplace update ouroboros 2>/dev/null || true claude plugin install ouroboros@ouroborosFor Codex CLI (re-install skills/rules to ~/.codex/):ouroboros setup --runtime codex --non-interactivec. Refresh MCP server config (fixes stale args from older versions): Run the same setup command used in step b to ensure MCP config is current: For Claude Code:ouroboros setup --runtime claude --non-interactiveFor Codex CLI (already handled by step b above — skip this step). This ensures~/.claude/mcp.jsonhas the latest MCP command and args (e.g.,ouroboros-ai[claude]extras). Skips if already up to date. d. Verify and update CLAUDE.md version marker:NEW_VERSION=$(ouroboros --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+[a-z0-9.]*') echo "Installed: v$NEW_VERSION" if [-n "$NEW_VERSION"] && grep -q "ooo:VERSION" CLAUDE.md 2>/dev/null; then OLD_VERSION=$(grep "ooo:VERSION" CLAUDE.md | sed 's/.*ooo:VERSION:\(.*\) -->/\1/' | tr -d ' ') if ["$OLD_VERSION"!= "$NEW_VERSION"]; then sed -i.bak "s/<!-- ooo:VERSION:.*-->/<!-- ooo:VERSION:$NEW_VERSION -->/" CLAUDE.md && rm -f CLAUDE.md.bak echo "CLAUDE.md version marker updated: v$OLD_VERSION → v$NEW_VERSION" else echo "CLAUDE.md version marker already up to date (v$NEW_VERSION)" fi fiNote: This only updates the version marker. If the block content itself changed between versions, the user should runooo setupto regenerate it.
- If installed via uv tool (most common with install.sh): # For pre-release targets: uv tool install --upgrade --prerelease=allow ouroboros-ai[claude] # For stable targets: uv tool install --upgrade ouroboros-ai[claude] - If installed via pipx: pipx upgrade cannot add extras to an existing venv — use install --force to reinstall with extras. # For pre-release targets: pipx install --force --pip-args='--pre' ouroboros-ai[claude] # For stable targets: pipx install --force ouroboros-ai[claude] - If installed via pip (fallback): # For pre-release targets: python3 -m pip install --upgrade --pre ouroboros-ai[claude] # For stable targets: python3 -m pip install --upgrade ouroboros-ai[claude]
- Post-update guidance: `
Updated to v0.X.Z Restart your Claude Code session to apply the update. (Close this session and start a new one withclaude) If CLAUDE.md block content changed, regenerate it: ooo setup Runooo helpto see what's new.`
Notes
- The update check uses PyPI as the source of truth for the latest version.
- Plugin update (Claude Code) pulls the latest from the marketplace.
- No data is lost during updates — event stores and session data are preserved.
- Always use the same installer that was used for the original installation (uv tool > pipx > pip).