From flux
Upgrades Flux to the latest version, checks current state, fetches release notes, and summarizes what changed since the old version.
How this command is triggered — by the user, by Claude, or both
Slash command
/flux:upgradeflux/The summary Claude sees in its command listing — used to decide when to auto-load this command
# Flux Upgrade Upgrades Flux, shows the user what changed since their version, and tells them exactly what to do next. ## Step 1: Check current versions Run the doctor and version checks to see where things stand: Parse the JSON output. From `fluxctl doctor`, save: - `primary_driver.name` - `authoritative_version.version` - `primary_adapter.sync.status` - `guidance.update` From `version-check.sh`, save `local_version` as `OLD_VERSION` — you'll need it later. Report to the user: - Primary driver: `primary_driver.name` - Authoritative version: `authoritative_version.version` - Curren...
Upgrades Flux, shows the user what changed since their version, and tells them exactly what to do next.
Run the doctor and version checks to see where things stand:
.flux/bin/fluxctl doctor --json 2>/dev/null || scripts/fluxctl doctor --json
bash "${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-$(git rev-parse --show-toplevel 2>/dev/null || dirname "$(dirname "$(dirname "$0")")")}}/scripts/version-check.sh"
Parse the JSON output.
From fluxctl doctor, save:
primary_driver.nameauthoritative_version.versionprimary_adapter.sync.statusguidance.updateFrom version-check.sh, save local_version as OLD_VERSION — you'll need it later.
Report to the user:
primary_driver.nameauthoritative_version.versionlocal_versionremote_versionIf no update is available, tell the user they're on the latest version and stop.
Branch on primary_driver.name:
codex: update the repo-local Flux source the user installed from. If primary_adapter.sync.status is not in_sync, re-run /flux:setup so .flux/bin and AGENTS.md match the runtime. Do not send Codex-primary users through Claude plugin cache repair unless they explicitly want to refresh the Claude adapter too.claude: follow the SKILL.md workflow Steps 2-5 to refresh marketplace metadata, clear plugin cache, and update the install record. This is the mechanical Claude adapter upgrade.unknown: stop and tell the user to resolve the host ambiguity with .flux/bin/fluxctl doctor --json before continuing.If any step fails, report the specific error and stop. Do not continue with a partial upgrade.
This step is what makes the upgrade informative. Get release notes for every version between OLD_VERSION and the new version.
Primary source — GitHub releases:
gh release list --repo Nairon-AI/flux --limit 30 --json tagName,name,body,publishedAt 2>/dev/null
Filter to releases where the tag version is greater than OLD_VERSION and less than or equal to the new version.
Fallback — CHANGELOG.md from legacy marketplace dir:
MARKETPLACE_DIR="$HOME/.claude/plugins/marketplaces/nairon-flux"
cat "$MARKETPLACE_DIR/CHANGELOG.md"
Parse entries between the old and new version headers.
From the release notes, produce a concise, non-technical summary. The user wants to know why this upgrade was worth it, not what files changed.
Rules:
Format:
## What's new since v{OLD_VERSION}
**[Theme]** — [1-2 sentence benefit]
**[Theme]** — [1-2 sentence benefit]
If changes are minor (one patch version), a single short paragraph is fine.
/flux:setup needs re-runningScan the release notes/changelog for setup-relevant changes. This is NOT a blind version comparison — it's a content-based decision.
Re-run IS needed when the changelog mentions:
.flux/ directory structure changesRe-run is NOT needed when (most upgrades):
/flux:score)Present a clean upgrade report:
Flux upgraded: v{OLD_VERSION} → v{NEW_VERSION}
Then the "What's New" summary from Step 4.
Then next steps — adapt based on Step 5:
If setup re-run IS needed:
## What to do now
1. Follow the host-specific update guidance from `fluxctl doctor`
2. After restart, run /flux:setup to pick up new options:
[1-line explanation of what's new in setup]
Your existing project files were not modified.
Setup will only offer new options — nothing you've configured will change.
If setup re-run is NOT needed:
## What to do now
Follow the host-specific restart guidance from `fluxctl doctor`.
That's it — no need to re-run /flux:setup.
All changes in this upgrade activate after the correct host restart boundary.
If the user asks to upgrade multiple projects, or if you detect this is relevant:
find ~/Developer ~/Projects ~/Code ~/repos ~/src ~/work ~/Desktop ~ -maxdepth 4 -name ".flux" -type d 2>/dev/null | while read flux_dir; do
project_dir="$(dirname "$flux_dir")"
version="unknown"
if [[ -f "$flux_dir/meta.json" ]]; then
version=$(jq -r '.setup_version // "unknown"' "$flux_dir/meta.json" 2>/dev/null)
fi
echo "$project_dir|$version"
done | sort -u | head -30
Present the list and ask which to upgrade. For each selected project, update .flux/bin/ scripts and AGENTS.md / legacy CLAUDE.md markers only. Never touch .flux/tasks/, .flux/epics/, .flux/preferences.json, .mcp.json, or user data.
Report per-project results and flag any failures for manual follow-up.
npx claudepluginhub nairon-ai/flux --plugin flux/upgradeChecks for updates to agentic-dev-team plugin, shows categorized changes (agents, skills, commands), confirms, and applies via git pull.
/upgradeUpgrades dependencies or frameworks with breaking change analysis. Requires upgrade_target (e.g., 'React 18 to React 19', 'all dependencies') and optional flags (--deps, --package, --dry-run).
/upgradeUpgrades existing LLM Wiki to current plugin version: adds missing graph files idempotently and interactively merges SCHEMA.md sections.
/upgradeSafely upgrades a Ruby gem or all outdated ones: checks versions, reviews changelog and breaking changes, confirms with user, updates Gemfile, runs bundle update.
/upgradeUpgrades or installs the local Ormah runtime for this plugin without global client wiring. Checks version, asks permission before running safe install script, verifies plugin support.
/upgradeMigrates an obsidian-master-kit vault from v0.1.1 to v1.0 by creating a SQLite database, running a full scan, emitting initial events, and bumping the marker file. Idempotent.