Skip to content

RigSmith vs @changesets/cli

@changesets/cli is the tool the changeset workflow comes from, and RigSmith deliberately speaks its format: the .changeset/*.md files and config.json are compatible. changeRig and shipRig are a faithful port of that model — pinned against a golden corpus that includes live @changesets output — with a few deliberate differences.

@changesets/clichangeRig / shipRig
RuntimeNodeSingle static Go binary — no Node required
Ecosystemsnpm / JavaScript packages.NET, Node, Go, Rust in one repo
Changeset format.changeset/*.mdSame format (compatible)
Dependency cascadeYesYes (range-aware, ported behavior)
Linked / fixed groupsYesYes, plus lockstep
PublishnpmPer-ecosystem native publish, via the plugin contract
Release orchestrationGitHub Action + bespoke scriptsshiprig release — a configurable pipeline (.changeset/release.jsonc)
ExtensibilityJS changelog functionsSubprocess JSON plugin contract (any language)

When to use which

Use @changesets/cli if you're a pure-npm monorepo already invested in the Node toolchain and its ecosystem of GitHub Actions.

Use changeRig / shipRig if your repo is polyglot (or just isn't Node), if you want a single binary with no runtime to install, or if you want the release orchestration (shiprig release) as a first-class, config-driven pipeline rather than hand-rolled CI scripts.

Because the changeset format is shared, moving an existing @changesets repo to changeRig is mostly a matter of swapping the binary — your .changeset/ directory comes along unchanged.

Released under the MIT License.