Auto semver and release notes generation for releases#696
Merged
sami-alajrami merged 6 commits intomainfrom Mar 11, 2026
Merged
Auto semver and release notes generation for releases#696sami-alajrami merged 6 commits intomainfrom
sami-alajrami merged 6 commits intomainfrom
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces an interactive release flow that uses an AI-generated semver suggestion and draft release notes, then carries the final release notes through the annotated git tag body into the GitHub Release (via GoReleaser).
Changes:
- Add
make releasedefault interactive flow (AI suggestion → optional edit → confirm → tag & push), plus a non-interactive fallback using an explicit tag. - Add scripts to generate suggested version + release notes from
git diffand to drive the interactive confirmation/edit step. - Update the release GitHub Actions workflow to extract release notes from the tag body and pass them to GoReleaser.
Reviewed changes
Copilot reviewed 3 out of 5 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
release-guide.md |
Documents the new interactive and fallback release flows. |
bin/suggest-version-ai.sh |
Generates bump + next version + release notes using Claude from a diff. |
bin/release-interactive.sh |
Interactive confirmation/edit step before tagging and pushing. |
Makefile |
Adds suggest-version-ai target and updates release to support interactive + fallback flows. |
.github/workflows/release.yml |
Pulls release notes from tag body and passes them to GoReleaser. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
jbpros
approved these changes
Mar 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds AI-powered automatic semantic versioning and release notes generation to the CLI release process, using Claude to analyse the git diff and suggest the appropriate version bump and changelog.
What changed
New scripts:
bin/suggest-version-ai.sh— sends the git diff (since the last tag) to the Anthropic API (Claude Opus) and parses back a semver bump recommendation (major/minor/patch) plus a markdown changelog. Authenticates viaANTHROPIC_API_KEYenv var or 1Password CLI (op). Caps diff at 50k chars. The prompt instructs Claude to only consider user-facing CLI changes (undercmd/andinternal/), ignoring docs, CI, tests, scripts, etc.bin/release-interactive.sh— interactive post-suggestion flow: displays the suggested version and release notes, opens the user's editor for review/edits, then asks for confirmation before creating an annotated tag (with release notes as body) and pushing.Makefile changes:
make release(notag=argument) now runs the AI suggestion flow → interactive review → tag & push. Requiresjqand eitherANTHROPIC_API_KEYor 1Password CLI.make release tag=vX.Y.Zremains as a direct fallback that skips the AI step. Now also embedsdist/release_notes.mdinto the tag body if the file exists.make suggest-version-aitarget for running the suggestion step standalone.CI workflow (
release.yml):--release-notes=dist/release_notes.md. This means AI-generated (or manually edited) release notes flow through to the GitHub Release page.Documentation (
release-guide.md):jq).