- Docs
- Guides
- Cross-cutting
- How-to
- How to upgrade an installed pack
How to upgrade an installed pack
Upgrade a catalogue pack while preserving local edits as reviewable upstream companion files.
Use this when: You want to move an installed pack to a newer version — whether a whole pack, a single primitive, or resolving companion files left by a previous upgrade.
Prerequisites: A pack already installed from the catalogue and the agentbundle CLI on your PATH; see Prerequisites.
Result: The pack upgraded to the newer version with any local edits preserved as .upstream.<ext> companion files for selective merging.
Move an installed pack to a newer version, with the conflict handling you expect when your local edits and the upstream pack have both moved on.
Prerequisites
Section titled “Prerequisites”- A pack already installed from this catalogue via one of the three routes (Claude Code plugin marketplace, APM, or the
agentbundleCLI). - For the catalogue-native flow: the
agentbundleCLI on your PATH. - For catalogue-level safety on APM and Claude-plugin installs: a one-time
agentbundle init-staterun after the original install.
Pick the right granularity
Section titled “Pick the right granularity”Three granularities are available, in order of increasing specificity.
Whole pack (default)
Section titled “Whole pack (default)”Pick the verb that matches how you originally installed.
-
APM:
apm update <pack>. -
Claude Code plugins:
/plugin update <pack>@<catalogue>. -
agentbundleCLI:Terminal window agentbundle upgrade --pack <name> <catalogue>
upgrade takes no version — the target is whatever the catalogue you point at declares. To move to a specific past version, point <catalogue> at that git ref.
The first two use the host tool’s native verbs and follow that tool’s conflict-resolution rules, not the catalogue’s. The agentbundle upgrade verb is the only route that drops *.upstream.<ext> companions next to any Tier-2 file whose content has diverged since install — letting you walk the merges later via the adapt-to-project skill (see One file at a time below). Before it writes, it tells you how many of your edited files it will preserve as companions.
<catalogue> is the same URI you installed from, e.g. git+https://github.com/<owner>/<catalogue> or a local checkout path.
One primitive at a time
Section titled “One primitive at a time”Add a primitive filter to the same upgrade verb:
agentbundle upgrade --pack <name> --skill <skill-name> <catalogue>--agent, --hook, --seed <path>, and --command work the same way. Only the named primitive moves; the rest of the pack stays at the previously-installed version. The CLI records the resulting mixed-version state in .agentbundle-state.toml; the next whole-pack upgrade flags it.
One file at a time
Section titled “One file at a time”Re-invoke the adapt-to-project skill. It walks any *.upstream.<ext> companions still on disk one by one, with per-file accept / edit / skip / decline. This is the merge UI for the companions a previous agentbundle upgrade (or first-install collision) left behind.
Downgrades
Section titled “Downgrades”Not supported in v0.1. To roll back: agentbundle uninstall --pack <pack> and reinstall at the prior version. Tier-2 (your edited copies) and Tier-3 (files outside the pack’s projected paths) survive the uninstall by design — only the upstream-managed Tier-1 files are removed.
Related
Section titled “Related”- How to adapt a freshly-installed pack — the skill that walks
*.upstream.<ext>companions.