Summary
Webcmd ships the same skills/ through two independent distribution channels. They are stamped with the same version at release time but update on separate triggers, so a user can end up running a CLI and skills from different releases.
| Channel |
Transport |
How skills land |
Update trigger |
| npm |
@agentrhq/webcmd tarball |
symlink into the installed package (src/skills.ts:179) |
webcmd update |
| Claude Code plugin |
git clone of this repo |
copy into ~/.claude/plugins/cache/webcmd/webcmd/<ver>/ |
claude plugin update webcmd@webcmd |
The npm path cannot drift — webcmd skills add symlinks into the package, so a global npm install updates the skills for free.
The plugin path can. Claude Code copies the repo into a version-pinned cache directory it owns, keyed on .claude-plugin/plugin.json $.version. Verified empirically: a skill edit committed without a version bump does not propagate even after claude plugin marketplace update + claude plugin update (reports "already at the latest version"); with a version bump it lands in a fresh cache dir. Updates are version-gated, not commit-gated.
Why it bites
src/update-check.ts nags every 24h about a new CLI version and nothing else. A user who follows that prompt lands on CLI 0.6.1 + plugin skills 0.6.0 — precisely the mismatch the lockstep versioning was meant to prevent. Since skills emit webcmd commands and flags, a skill newer or older than the CLI produces confidently wrong commands.
Proposed work
webcmd update passthrough — after the global install, detect a plugin-cache install and shell out to claude plugin update webcmd@webcmd. Narrow in scope: the symlink install needs nothing.
webcmd doctor drift check — report when plugin-cache skills and symlinked skills are both present, and when their versions differ from the running CLI. Cheaper than (1) and catches the actual broken state.
- Release-trigger hygiene — a skill edit only reaches plugin users if it triggers a release.
docs:/chore: commits do not cut a version under release-please, so a skill fix landed under those prefixes stays invisible to plugin users indefinitely. Worth a CONTRIBUTING.md note that skill changes use fix:/feat:.
Related
Surfaced while adding the Claude Code plugin manifests in #273.
Summary
Webcmd ships the same
skills/through two independent distribution channels. They are stamped with the same version at release time but update on separate triggers, so a user can end up running a CLI and skills from different releases.@agentrhq/webcmdtarballsrc/skills.ts:179)webcmd update~/.claude/plugins/cache/webcmd/webcmd/<ver>/claude plugin update webcmd@webcmdThe npm path cannot drift —
webcmd skills addsymlinks into the package, so a global npm install updates the skills for free.The plugin path can. Claude Code copies the repo into a version-pinned cache directory it owns, keyed on
.claude-plugin/plugin.json$.version. Verified empirically: a skill edit committed without a version bump does not propagate even afterclaude plugin marketplace update+claude plugin update(reports "already at the latest version"); with a version bump it lands in a fresh cache dir. Updates are version-gated, not commit-gated.Why it bites
src/update-check.tsnags every 24h about a new CLI version and nothing else. A user who follows that prompt lands on CLI 0.6.1 + plugin skills 0.6.0 — precisely the mismatch the lockstep versioning was meant to prevent. Since skills emitwebcmdcommands and flags, a skill newer or older than the CLI produces confidently wrong commands.Proposed work
webcmd updatepassthrough — after the global install, detect a plugin-cache install and shell out toclaude plugin update webcmd@webcmd. Narrow in scope: the symlink install needs nothing.webcmd doctordrift check — report when plugin-cache skills and symlinked skills are both present, and when their versions differ from the running CLI. Cheaper than (1) and catches the actual broken state.docs:/chore:commits do not cut a version under release-please, so a skill fix landed under those prefixes stays invisible to plugin users indefinitely. Worth a CONTRIBUTING.md note that skill changes usefix:/feat:.Related
Surfaced while adding the Claude Code plugin manifests in #273.