New here? Get the free field guide →

← Blog

Release Automation: How SpecDevShip Derives Your Version Bump From Commit History

SpecDevShip · · 2 min readrelease-processworkflow
Contents

By the time you're ready to cut a release, SpecDevShip has already been quietly building the information it needs to do it correctly — provided your commits followed Conventional Commits along the way.

Where the semver decision actually comes from

prepare-release derives the version bump from your commit history since the last tag, using the Conventional Commits convention (feat:, fix:, docs:, and so on, plus a ! and BREAKING CHANGE: footer for breaking changes). A fix: commit implies a patch bump. A feat: implies minor. Anything marked breaking implies major. This isn't a suggestion you then have to double-check — it's derived directly from the same commits implement-tasks was already writing, one per completed checklist item.

Why this only works if the earlier discipline held

This is the payoff for a habit that seemed like a small detail three skills ago: implement-tasks committing one clean, correctly-typed commit per completed item, referencing the task it completes. A release process that has to guess at intent from a pile of "wip" and "fix stuff" commits can't do what prepare-release does — it has nothing reliable to derive a version number from. The commit discipline and the release automation are the same feature, just separated by time.

What actually gets produced

Beyond the version bump itself, prepare-release finalizes CHANGELOG.md and writes RELEASE_NOTES.md — both derived from the same commit history, so the changelog entry for a feature reads like a human wrote it from the actual feat: commit message, not like it was reverse-engineered from a diff.

The bigger point

Most teams treat release prep as a separate ritual, disconnected from how the work actually got done — someone sits down, reads the diff since last release, and writes prose about it from scratch. SpecDevShip treats it as the last, mechanical step of a chain that started back at implement-tasks's commit discipline. Get the early steps right and the release step barely takes any judgment at all — it's just reading back what your own commits already said.

Get the free field guide. A short, practical eBook walking through the whole workflow — the tier decision framework, the investigate-before-you-fix discipline, and how the approval gates hold up day to day.

Grab your copy →