Skip to content

skillup

Version the segments of a Claude Code plugin marketplace from git history — without depending on tags.

In a marketplace the version field is the distribution mechanism, not a label: both harnesses cache by <marketplace>/<plugin>/<version> and neither resolves a git ref. A version that does not move withholds the change from every consumer, silently and indefinitely.

skillup works out what each segment's version should be from the conventional commits that touched it, and tells you — or writes it.

go install gitlab.com/phpboyscout/skillup/cmd/skillup@v0.1.0
$ 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 .

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.1.0 is cut, published to the Go module proxy, and gating merge requests on phpboyscout/claude-code-plugins.

Below 1.0 the CLI surface may still change between minor versions, so pin the version your pipeline installs rather than tracking @latest.

The investigation that produced the tool, and the verdict it reached, are in the spike report on the wiki.