Claude/Code/Q/Does editing a plugin's SKILL.md in a local-path Claude Code marketplace require reinstalling, or is restarting Claude Code enough to pick up the change?
Does editing a plugin's Claude Code Skills SKILL.md in a local-path Claude/Code/Plugin/Marketplace require reinstalling, or is restarting Claude Code enough to pick up the change?
- Answer/Official from Plugins reference - Claude Code Docs
- Short answer: No, restarting alone is not enough. A plugin installed with
/plugin install from any marketplace — including one added from a local path via /plugin marketplace add ./my-marketplace — is copied into ~/.claude/plugins/cache at install time. Claude Code loads that cached copy, not the live files under my-marketplace/, so editing SKILL.md in the source tree has no effect until the plugin is reinstalled or updated. - Why a restart doesn't help: the cache-vs-source split applies to every marketplace-installed plugin, not only git-hosted ones — "Claude Code copies marketplace plugins to the user's local plugin cache (
~/.claude/plugins/cache) rather than using them in-place." A restart just reloads whatever is already sitting in that cache. - Why
/plugin update may not help either: Claude Code decides whether an update is needed by comparing the plugin's resolved version, checked in this order: plugin.json version → marketplace-entry version → git commit SHA (only for github/url/git-subdir/relative-path sources inside a git-hosted marketplace) → unknown for local directories that aren't inside a git repo. A plain local-path marketplace with no explicit version set always resolves to unknown on both sides of the comparison, so /plugin update (and background auto-update) reports "already at the latest version" and skips the re-copy. - How auto-update interacts with this: auto-update doesn't diff file contents — it re-runs the same version comparison as
/plugin update, just on a timer, so it inherits the same blind spot.- It's off by default for exactly this kind of marketplace: "official Anthropic marketplaces have auto-update enabled by default. Third-party and local development marketplaces have auto-update disabled by default." Turn it on per marketplace via
/plugin → Marketplaces → select the marketplace → Enable auto-update (or, for a team, an admin sets "autoUpdate": true on that marketplace's extraKnownMarketplaces entry in managed settings). - Even enabled, whether it can ever notice the edit depends on what
my-marketplace/ actually is:- Plain directory, no
.git: version stays unknown forever, so enabling auto-update changes nothing — there's no version delta for it to detect, ever. my-marketplace is itself a git repo (even with no remote) and the plugin uses a relative-path source: version resolves to that repo's commit SHA, so saving SKILL.md alone still doesn't change anything — you must git commit the change. Once committed, auto-update's next background pass (or a manual /plugin update) sees a new SHA and re-copies.- Explicit
version set in plugin.json/the marketplace entry: same rule as manual update — auto-update only fires when that string is bumped.
- Timing, when it does apply: "Claude Code checks for marketplace and plugin updates after your session starts, with a random delay of up to ten minutes, so the running session keeps using the versions it loaded at launch. If any plugins were updated, you'll see a notification prompting you to run
/reload-plugins, or the new versions load on your next launch." - Net effect for local plugin development: auto-update is built to keep other people's marketplaces fresh in the background, not for a tight edit-save-test loop. Best case (git-backed marketplace, auto-update on) still needs a commit and a ≤10-minute wait before a notification; worst case (plain directory) it never helps at all.
--plugin-dir (below) sidesteps all of this.
- To actually pick up the edit:
- 1. Reinstall:
/plugin uninstall my-plugin@my-marketplace then /plugin install my-plugin@my-marketplace. This forces a fresh copy into the cache regardless of the version string. The uninstall command's --keep-data flag exists for exactly this case — the docs note it's for "reinstalling after testing a new version" — to preserve ${CLAUDE_PLUGIN_DATA} across the reinstall. - 2. Or set an explicit
version in plugin.json (or the marketplace entry) and bump it on every change, then run /plugin marketplace update my-marketplace followed by /plugin update my-plugin@my-marketplace (or let auto-update apply it once enabled for that marketplace). - 3. If skills still don't show up after reinstalling, clear the cache outright:
rm -rf ~/.claude/plugins/cache, restart Claude Code, and reinstall.
- Better fit for active plugin development: skip the marketplace-install path and load the plugin for the session with
claude --plugin-dir /path/to/my-plugin instead. --plugin-dir plugins are read in place rather than copied to the cache, so edits are picked up on the next session start with no install/update step — the pattern used for rapid local iteration in Claude/Code/Plugin/Marketplace/Report/26/01/Automated Testing. - Related, narrower exception: a plugin auto-discovered from a project's
skills/ directory via @skills-dir (no marketplace, no install step) is read in place, and edits to its SKILL.md take effect immediately in the current session — but that's a different mechanism from a marketplace-installed plugin, and its other components (hooks, .mcp.json, agents) still need /reload-plugins or a restart.