Maestro Releaser
The only way to cut a release.
Releaser is a command-line tool that cuts releases for Python, Node and Rust projects. It reads your conventional commits, bumps the version, writes the changelog with git-cliff, tags, pushes, and creates the GitHub release. There is also an undo.
How it ships
Five steps in, one command out.
01 —
It learns your project in one command.
releaser init detects the project type (pyproject.toml, package.json or Cargo.toml), checks the tools, and scaffolds a default cliff.toml. git-cliff is bundled; there is nothing else to install.
02 —
Five steps. Always the same five.
Pre-flight insists on a clean tree and the right branch. The next version comes from your conventional-commit history: feat bumps minor, fix bumps patch. Then changelog, commit, tag, push, GitHub release. Deterministic, every time.
01
pre-flight
clean tree · right branch
02
version
from conventional commits
03
changelog
bundled git-cliff
04
commit · tag · push
chore(release)
05
GitHub release
notes attached
03 —
CI and agents cut releases the same way you do.
One tool, one behaviour, three audiences: a human at a prompt, a CI job, an unattended agent. Maestro's own releases are cut by the same command this page documents.
--dry-run See the whole release (version, changelog, tag) before any of it is made.
--yes No prompts, no surprises. CI and unattended agents cut releases exactly the way you do.
releaser push Cut locally with --skip-push, review, then push the release and its GitHub entry later.
The safety net
Every release is reversible.
releaser undo walks the whole thing back (tag,
commit, changelog, GitHub release) in one reset. Local by default, --remote when you mean it.