/update
Update the swarm plugin to the latest version
> /plugin marketplace add DheerG/swarms > /plugin install swarm@swarms
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.mddescription: 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
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.
Describe what you want. Get a reviewed, ship-ready PR — without babysitting the agent.
Other commands on swarm.
create-workflow
Scaffold a custom workflow — generates a mode skill and shortcut command
launch
Interactively launch an agent team with guided setup
onboard
Walk through swarm's core concepts and launch your first team
refine
Run recursive refinement on the current branch and PR

