Skip to content
Development
Command

/update

Update the swarm plugin to the latest version

From plugin
8410 skills2 agents10 commands2 hooks
shell
$ npx -y skills add DheerG/swarms --agent claude-code

Ships with swarm. Installing the plugin gets this command.

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/update

Context preview

What this command does when you run it.

Update the swarm plugin to the latest version

Command definition

update.md
description: Update the swarm plugin to the latest version
allowed-tools: Bash(claude plugin:*), Bash(cd:*), Bash(ls:*), Bash(git rev-parse:*)

/swarm:update

Run these commands in order using the Bash tool. The order is load-bearing: `marketplace update` must run first to refresh the local marketplace clone — otherwise `plugin update` reads a stale clone and reports "already at latest" even when a newer version exists. `plugin update` does not auto-detect the install scope (it defaults to `user`), so resolve the real scope from `plugin list` before updating.

1. `claude plugin marketplace update swarms` 2. `claude plugin list --json` — read the entries whose `id` is `swarm@swarms` and resolve the install scope yourself (no extra tooling; read the JSON from the output):

  • Exactly one entry → use its `scope`.
  • Multiple entries → prefer the `project` entry whose `projectPath` matches the current project — in a git worktree, that is the main checkout root — the parent directory of what `git rev-parse --git-common-dir` returns (a permission prompt is acceptable) — not the worktree path; otherwise the `user` entry; otherwise whichever remains (`local`, `managed`).
  • No entry → treat as a failure: use the failure handling at the end of this file.

3. `claude plugin update swarm@swarms --scope <resolved scope>` — for a project-scope install whose `projectPath` is not the current directory (e.g., running from a git worktree), run the update pinned to that path in a subshell so the session's working directory is unchanged: `(cd "<projectPath>" && claude plugin update swarm@swarms --scope project)`. If you need another way to locate the main checkout (e.g., `git rev-parse --git-common-dir`), use it even if it requires a permission approval — a prompt beats failing.

After the commands succeed, choose the message from the `plugin update` output. The reliable signal is the success token "updated from X to Y" (the command prints e.g. "updated from 0.5.3 to 0.5.4" — this also carries the version numbers to substitute):

  • **If the output contains "updated from X to Y"** (a new version was installed) — use the **update-applied** message and STOP directive below. Substitute the real X and Y; do not emit the literal placeholders "vX"/"vY". Do not soften the restart instruction, and do not offer `/reload-plugins` or any in-session reload as a shortcut.
  • **If the commands succeeded but the output does not contain "updated from X to Y"** (it reports you are already on the latest version) — use the **already-current** message below. No restart, no STOP, no version delta.
  • **If the commands succeeded but you cannot tell whether a new version was installed** — use the **update-applied** message. A needless restart is harmless; wrongly saying "already current" after a real update reintroduces the version mix.
  • If any command errored or exited non-zero — regardless of which scope was resolved — use the failure handling at the end of this file.

**Update-applied** (a new version was installed):

> Update applied to disk: swarm vX → vY. This session is still running the previous version — Claude Code loads plugin commands and skills once at startup. **Restart Claude Code before running any swarm command** — quit and relaunch the CLI or desktop app; or on the web, end this session and open a new one. Clearing the conversation (/clear) is not enough; the session has to fully restart.

Then STOP and end your turn. Do not run any other swarm command and do not hand off into a launch flow this session — the running session is pinned to the old version, so any swarm command run now reads new plugin files against old in-context instructions and mixes versions. Reading from a newer version directory does not help either: there is no in-session path to a clean new version. Do not suggest `/reload-plugins` or any in-session reload to skip the restart — it does not rebuild the command index or re-inject skills and is unavailable on desktop and web, so it reproduces this exact split-version state. If the user asks to proceed with swarm work now, restate that they must start a fresh session first.

**Already current** (no new version was installed) — tell the user, then continue normally:

> Already on the latest version: swarm v<current>. Nothing to update — carry on.

Include the version only if the CLI printed one; otherwise say "Already on the latest version. Nothing to update — carry on."

If any command errored or exited non-zero, or `swarm@swarms` was not found in the `plugin list` output, show the error output (if any), then give the user these concrete next steps:

  • If working in a git worktree and the pinned update also failed, run `/swarm:update` from the main checkout, not the worktree — `claude plugin update` resolves project scope against the current directory and cannot see an install that lives at the main repo root.
  • Check `claude plugin list` for the actual install scope of `swarm@swarms`.
  • Try running the commands manually in a terminal.
Read more
Read it on GitHub ↗
Ships withswarm

Describe what you want. Get a reviewed, ship-ready PR — without babysitting the agent.

Get the whole plugin, auto-invoked
Stats
84
Stars
0
Views
7
Forks
Active
Maintenance
Shell
Language
MIT
License
11d ago
Last commit
4mo ago
Created

Repo: DheerG/swarms