Versioning
Use semver. Bump deliberately. Treat breaking changes seriously.
[rig].version is a semver string. The Hub uses it for
ordering, rig hub update uses it for resolution, and consumers use it to pin.
When to bump
| Change | Bump |
|---|---|
| Fixing a typo in a prompt | patch (0.1.0 → 0.1.1) |
| Adding a new MCP server, env var, or skill (additive) | minor (0.1.0 → 0.2.0) |
Renaming a required env var, dropping a tool, restructuring [package].include | major (0.1.0 → 1.0.0) |
| First public release | 1.0.0 (or 0.x.x if you want to flag it as pre-stable) |
The rule of thumb: would an existing user need to do anything beyond
rig hub update to keep the rig working? If yes, that's a major bump.
What counts as breaking
In rig terms, breaking means an existing install will fail rig doctor
or stop working after rig hub update. Examples:
- A new required env var. (Existing users will see a gap.)
- A renamed env var (old one removed, new one required).
- A removed MCP server that other parts of the rig still expect.
- A
[run].entrypointchange that breaks a documented command. - A
[package]change that drops a file an existing workflow depends on.
Adding a new optional env var, a new MCP server that doesn't replace anything, or a new skill is not breaking.
Pre-release
Use semver pre-release suffixes when you want to publish without claiming stability:
0.1.0-alpha.1
0.1.0-beta.2
1.0.0-rc.1rig use will not pick a pre-release as "latest" unless explicitly
requested with @version.
Pinning
Consumers can pin:
rig hub use hub:you/your-rig@1.2.0rig hub update --check will tell them when a newer release exists; rig update won't move them to a major bump unless they re-use the new version
explicitly.
Changelogs
Rig itself doesn't ship a changelog format. Include a CHANGELOG.md in your
rig (it'll be included by default) so users can see what changed without
diffing manifests.