vership
A release orchestrator that handles version bumping, changelog generation, and publishing — with zero configuration.
$ vership bump patch
✓ No uncommitted changes
✓ On branch main
✓ Tag v0.3.1 does not exist
✓ Lock file in sync
✓ Lint passes
✓ Tests pass
→ Bumping 0.3.0 → 0.3.1
→ Updated rust + maturin
→ Generated changelog (2 entries)
→ Committed: chore: bump version to v0.3.1
→ Tagged: v0.3.1
→ Pushed to origin
Why vership?
Most release tools require config files, plugins, or CI integration before they do anything. vership works out of the box: it detects your project type, runs pre-flight checks, generates a changelog from conventional commits, bumps the version, and pushes — in one command.
| vership | cargo-release | semantic-release | git-cliff | |
|---|---|---|---|---|
| Zero config | Yes | No | No | No |
| Multi-ecosystem | Rust, Node, Python, Go | Rust only | Node only | Any (changelog only) |
| Changelog generation | Built-in | External tool | Plugin | Yes |
| Pre-flight checks | Built-in | Partial | No | No |
| Single binary | Yes | Yes | No (Node runtime) | Yes |
Agent-friendly (--json, schema) |
Yes | No | No | No |
Install
# Homebrew
# From crates.io
# From PyPI
# From source
&& &&
Quick Start
No setup required. Just use conventional commits and run:
Preview before releasing:
Commands
vership bump <patch|minor|major> Bump version, generate changelog, tag, push
--dry-run Preview without making changes
--skip-checks Skip lint and test checks
--no-push Stop after tagging, do not push
vership changelog Preview changelog for unreleased commits
vership preflight Run all pre-flight checks
vership status Show version, project type, unreleased commits
vership config init Create vership.toml with defaults
vership schema JSON schema for agent integration
vership completions <shell> Generate shell completions
What It Does
vership bump patch runs this flow:
- Detect project type (Rust, Rust+Maturin, Node, Go, Python)
- Check clean working tree, correct branch, tag doesn't exist, lockfile in sync
- Check lint and tests pass (skippable with
--skip-checks) - Bump version in project files (Cargo.toml, package.json, pyproject.toml) or tag directly (Go)
- Generate changelog from conventional commits since last tag
- Commit, tag, and push
Your existing CI release workflow (GitHub Actions, etc.) triggers on the tag push as usual. vership handles the local side only.
Changelog Format
Generated from conventional commits in Keep a Changelog format:
-
-
| Commit type | Section |
|---|---|
feat |
Added |
fix |
Fixed |
perf |
Performance |
change |
Changed |
feat! / BREAKING CHANGE |
Breaking Changes |
chore, docs, ci, test, refactor, build, style |
Excluded |
Configuration
vership works without any configuration. Only create vership.toml if you need to override defaults:
[]
= "main" # Branch to release from
[]
= "make verify" # Run before version bump
= "echo done" # Run after push (e.g. trigger Homebrew update)
[]
= true # Run lint checks (default: true)
= true # Run tests (default: true)
= "npm run lint" # Override default lint command
= "npm test" # Override default test command
[]
= "exclude" # "exclude", "include", or "strict"
Agent Integration
vership is designed to work with AI coding assistants:
# Machine-readable project status
# Full command schema for tool discovery
License
MIT