Skip to content

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.

go install gitlab.com/phpboyscout/skillup/cmd/skillup@latest

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

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.

Join the Discord