Skip to content

Releasing

Releases are tag-driven. Pushing a v*.*.* tag runs GoReleaser, which builds linux, darwin, and windows for amd64 and arm64, packages tar.gz archives (zip on Windows) with checksums.txt, and publishes the GitHub release. .goreleaser.yaml is the single source of truth; CI runs goreleaser check and a snapshot build on every change, and make release-check runs the same locally when GoReleaser is installed.

The same tag push then:

  • packs @brokkai/slopcop from those release archives, checked against checksums.txt, and publishes it to npm with trusted publishing, so the package needs no npm token. See Publishing to npm.
  • packs a wheel per release target from the binaries GoReleaser just built, installs the wheel on every platform GitHub can run, and publishes brokk-slopcop to PyPI with trusted publishing. See Publishing to PyPI.

Stable versions publish on npm’s latest dist-tag and prereleases on next; PyPI takes the version from the tag.

Terminal window
git tag v0.1.0
git push origin v0.1.0

Then watch the Release workflow. A rerun of the npm or PyPI job skips a version or file that already exists, so a half-finished publish can be finished by rerunning.

  • The service’s SlopCop-Latest-Version header starts naming the new release, and older CLIs print the upgrade notice.
  • The next slopcop login or check from the new binary updates the installed agent skill and names the files that changed.
  • This documentation redeploys on the tag so it describes the released CLI; see This documentation.