skillup
Version numbers, worked out from your commits.
A command-line tool for Claude Code plugin marketplaces, where the
version field is not a label but the distribution mechanism:
both harnesses cache by <marketplace>/<plugin>/<version>
and neither resolves a git ref. skillup reads the conventional commits that
touched each plugin, works out the version each one has earned, and either
tells you or writes it. No tags required, and nothing to remember.
plan
Report what each plugin's version should be, given the conventional commits that touched it. Changes nothing, so it is safe to run anywhere.
apply
Write the warranted version into each plugin.json. Writes only by default, so the bump lands in the same commit as the change that earned it.
check
The CI gate. Exits non-zero when a version is behind what its commits warrant, or when the catalogue and the plugins on disk disagree.
tag
Create a <plugin>--v<version> tag for the version already in each manifest, for the times you want one after all.
The thirty-second version¶
Three changes have merged. The manifest has not moved.
$ skillup check --path .
my-segment is 0.3.0 but its commits warrant 0.4.0 (minor)
a1b2c3d4 feat(my-segment): add a thing (minor)
To fix, on your branch:
skillup apply --path .
Nothing is broken and no pipeline is red. The plugin works perfectly, it declares
0.3.0, and every consumer who installs it gets code three commits ahead of the
number it is claiming to be. They will keep getting it, silently, until somebody
notices, because a cache keyed on a version that never moves never expires.
That is the failure skillup exists to catch, and it catches it on the merge request rather than six weeks later.
Where to start¶
| Your first run | Install it, point it at a marketplace you create, watch it catch a change that would have reached nobody. |
| Install skillup | Module proxy, release binaries, or a clone. |
| Set up the gate in GitLab ยท in GitHub | Make a merge request fail when a version is behind. |
| Command reference | Every flag, exit code and guarantee. |
| Why not tags? | The one design decision that distinguishes it from cocogitto, release-please and the rest. |
Status¶
Released, pre-1.0. v0.2.0 is cut, published to the Go module proxy, and gating merge requests on phpboyscout/claude-code-plugins.
@latest above is the right thing for trying it on your own machine. In a
pipeline, pin the tag. skillup decides whether a
change ships, so a gate installing @latest can change that decision without a
commit saying so, and below 1.0 the CLI surface may still move between minor
versions.
The investigation that produced the tool, and the verdict it reached, are in the spike report on the wiki.
Further reading¶
Everything written about the estate, including the curated guides, is on the blog.
Ask phpbotscout

He answers questions about the projects over on the Discord, citing the docs where they already cover it, and offering to raise an issue where they don't. Bring a bug, an idea, or a questionable engineering decision.