Generating Changelogs and Release Notes with AI
Changelogs and release notes are one of those tasks every team knows they should do well and almost no team actually does. The raw material is sitting right there in your git history, but turning a wall of commit messages into something readable takes time most engineers would rather spend shipping.
AI tools have changed that equation. Given the right input, a model can transform your git log into structured, audience-appropriate release notes in seconds — but only if your commits give them something to work with.
The Foundation: Clean Commit History
AI changelog generation is only as good as your commits. A message like fix stuff gives the model nothing to work with. Conventional Commits solves this with a lightweight structure both humans and AI can parse reliably:
type(scope): short description
Where type is one of feat, fix, docs, chore, refactor, perf, or breaking change:
feat(auth): add OAuth2 login with GitHub provider
fix(deploy): resolve race condition when parallel builds run simultaneously
feat(api): expose /v2/webhooks endpoint for deployment events
perf(assets): reduce initial bundle size by 34% via code splitting
chore(deps): upgrade Node.js to v20 LTS
breaking change(api): remove deprecated /v1/builds endpoint
With commits like these, AI tools can group, summarise, and rewrite entries accurately.
Getting the Right Git Log Output
# Commits between v1.2.0 and HEAD, excluding merge commits
git log v1.2.0..HEAD --oneline --no-merges
# Compare the two most recent tags automatically
git log $(git describe --tags --abbrev=0 HEAD^)..HEAD --oneline --no-merges
Copy the output — that is your raw material.
Using AI to Write the Changelog
Paste the git log output into Claude, ChatGPT, or whichever model you use:
"Turn these commits into a user-facing changelog section for version 1.3.0. Group entries under Features, Bug Fixes, and Breaking Changes. Write for end users — skip technical implementation details and chore entries."
The model handles grouping, rewriting passive commit messages into active prose, and filtering noise. Expect thirty seconds of review rather than thirty minutes of writing.
In Your IDE with GitHub Copilot
Open your CHANGELOG.md, paste the git log output as a comment block, and use Copilot Chat:
"Format and expand the commit list above into a CHANGELOG.md entry for v1.3.0. Follow Keep a Changelog conventions. Group by type and rewrite each entry clearly."
Writing for Different Audiences
Technical changelog (for developers): Include PR references, migration notes for breaking changes, and specific API changes.
Product changelog (for users): Drop implementation language entirely. Focus on outcomes — what can they do now that they could not before. Skip chore and infrastructure entries.
Same source material, different prompt, two different outputs in minutes.
Automated Tools
git-cliff is a fast changelog generator that parses Conventional Commits and produces structured output via templates:
# cliff.toml
[changelog]
body = """
{% for group, commits in commits | group_by(attribute="group") %}
## {{ group | upper_first }}
{% for commit in commits %}
- {{ commit.message }}
{% endfor %}
{% endfor %}
"""
[git]
conventional_commits = true
filter_unconventional = true
[commit_parsers]
- message = "^feat", group = "Features"
- message = "^fix", group = "Bug Fixes"
- message = "^chore", skip = true
Release Please (from Google) automates the entire release PR workflow — tracking commits since the last release, generating CHANGELOG.md updates, and opening a PR that bumps the version automatically on merge.
GitHub Copilot release notes appear directly in GitHub's release creation UI, auto-summarising merged pull requests. Combine with Copilot Chat for additional rewriting.
Quality Checks Before You Ship
AI-generated changelogs still need a quick human review:
- Breaking changes clearly marked — AI occasionally buries these; verify they appear prominently
- Correct version numbers and dates — models can hallucinate these
- Chore entries in user-facing notes — strip
chore(deps): bump lodashfrom product changelogs - Accuracy of feature descriptions — rewritten commit messages can drift from reality
Integrating with DeployHQ
At DeployHQ, deployments can trigger post-deploy actions — Slack notifications, webhook calls, or custom scripts. AI-generated release notes fit naturally here: generate the changelog before the deploy kicks off, attach it to the deployment notification, and your team gets context alongside the deploy status without any manual steps.