An AI release notes generator turns a repository's git activity — commits, pull requests — into release notes your customers can actually read. Almost every tool in the category, from git-cliff to release-please to the newer AI layers, actually reads commit messages and PR titles: the quality of your notes depends entirely on your team's naming discipline. A newer approach derives the notes from the real diffs — the content of each change — and holds up even when half your commits are named "fix".
This is an honest comparison of the three tool families, the limit they share (documented by their own users), and what changes when notes are generated from diffs — for your human readers and for the AI agents that, increasingly, read your release notes too.
What a release notes generator actually is
Release notes generator: a tool that automatically produces, for each published version, the readable list of what changed — new features, fixes, breaking changes — from the project's git history.
The definition hides the question that separates the tools: from which part of the history, exactly? Git history has two layers. The metadata — commit messages, PR titles and descriptions, labels — written by humans, of variable quality. And the diffs — the line-by-line content of every change — exact by construction, because they're what the machine runs. Nearly every generator reads the first layer. That single choice explains both their popularity and their disappointing output.
The honest landscape: three families
Deterministic generators: git-cliff, release-please
git-cliff is an open-source, template-driven changelog generator: it parses conventional commits (feat:, fix:, feat!:…) and produces a clean changelog grouped by change type. release-please, maintained by Google, pushes automation further: from the same conventional commits it derives the semver version bump and opens a "release PR" which, once merged, publishes the release and its changelog. semantic-release, in the same family, automates versioning and publishing.
These tools are excellent within their contract — deterministic, auditable, free. The contract is explicit: well-named commits in, a faithful changelog out. If your team enforces conventional commits, they do the job. That's a real "if": the convention has to be imposed on everyone, survive Friday-evening hotfixes, and be followed by the AI agents that now commit to your repo too.
GitHub's built-in button
GitHub offers "Generate release notes" when you create a release: the list of merged pull requests since the previous version, grouped by label, with contributor credits. Zero setup, and honestly the right default for an open-source project with small, well-titled PRs. It is also, literally, a list of PRs — hold that phrase.
The AI layers
The recent wave adds a language model on top of the same sources: the AI rewrites commit and PR titles into customer-facing sentences, groups them by theme, applies a tone. The rewriting is real — the notes read better. But the raw material doesn't change: if the input is a list of titles, the output is a better-written list of titles. A language model cannot recover from "fix" the information that was never put there.
The shared limit, in their users' own words: "a list of PRs doesn't cut it"
This limit isn't our finding — it's a recurring criticism, on Hacker News in particular, of "commit-dump" generators: a list of PRs doesn't cut it. One HN thread with 241 points mocked changelogs that boil down to "bug fixes and performance improvements"; and customers of developer tools describe demanding real patch notes so they can judge whether an update is safe to apply.
The mechanism is structural, not anecdotal: git metadata is a declarative copy of the change, written by a human in a hurry. A generator that reads it inherits its silences. Three practical consequences:
- Badly named commits produce empty notes. "fix", "wip", "address review" — the generator has nothing to say, so it says nothing, or worse, fills the gap with boilerplate.
- The "why" is never there. A PR title says at best what was done, almost never why — and "why" is exactly what your customers ask when a behavior changes.
- Silent breaking changes slip through. A behavior change buried in a PR titled "refactor" triggers no "breaking changes" section, and no caution from the customer about to update.
Release notes derived from real diffs
The structural alternative: generate the notes from the exact layer of the history — the diffs. An illustrative example: a commit named "fix" actually changes the default separator of the CSV export. A metadata-based generator writes "Miscellaneous fixes". Reading the diff surfaces the changed constant, the touched file, the adjusted tests — and can write: "CSV export now uses semicolons by default; imports configured for commas need adjusting." Same commit, two unrelated notes — and only the second one prevents a support ticket.
That's DeployIt's approach: it reads the real code (re-synced on every push) and the git history — commits and diffs — and verifies in the code before asserting. Release notes become a generated view of that knowledge: derived from the content of the changes, they hold up even with badly named commits, they surface behavior changes, and they regenerate on every deploy instead of waiting for someone to write them.
Ready to see what your team shipped?
"What changed since the last release?"
The question deserves to be asked verbatim, because release notes are only one of its possible answers. The same git history can answer live — a customer asking what changed in the product this week, a support agent checking whether a ticket comes from the latest release, an integrator asking whether the API breaks. Generated notes and on-demand answers are two surfaces of the same source.
That's where the "product expert" approach earns its name: one MCP server per project, plugged into your code (in early access, through a design partner program), that your AI agents can query; and the same knowledge exposed to humans in an always-current help center. Your release notes, your documentation and your support bot's answers stop being three copies to maintain: they're three views of one expert, rebuilt on every push. And a detail that matters in 2026: release notes are no longer read only by humans — AI agents plugged into your product use them to know whether something changed. Accurate notes have become a machine interface.
The DIY objection: "git-cliff plus good commits is enough"
For a tooled-up developer team, it's true — and it deserves to be said plainly. If conventional commits are enforced in CI, git-cliff or release-please will produce a faithful, free, deterministic changelog; keep them. The structural difference of diff-based generation comes down to two points: it keeps working when the discipline breaks (and it breaks — hotfixes, AI-agent commits, occasional contributors), and it can answer "why did this behavior change?", which a list of titles structurally cannot. And one more: a local generator serves your team; a queryable expert also serves the people without repo access — support platforms, customers, contractors.
The mirror objection: "but this expert reads my repo itself"
Correct — and here is exactly how. The GitHub connection is read-only. Each project gets its own MCP server: one product's expert sees nothing but that product. Notes and answers are derived from commits and diffs — raw source code is never returned to whoever asks. Access is revocable at any time, and the code never leaves your repository. For the neighbors: Context7 and DeepWiki cover libraries and public repositories; Mintlify generates an MCP server from written docs. The DeployIt expert covers your private product, derived from the code itself, fresh on every deploy.
Mini-FAQ
Does this measure my developers' activity? No. Notes and answers are about the product — what changed, when, why. Never "what did the developers do": it is neither an activity-reporting tool nor a productivity metric.
Should I drop git-cliff or release-please? No. If they serve you, they remain the best deterministic tools in their category. The diff approach complements them where they stop: badly named commits, the "why" question, readers without repo access.
Do I need conventional commits? No — that's the point. Since the notes are derived from the content of the changes, they don't depend on naming.
Do AI agents really read release notes? Yes: any agent plugged into your product needs to know what changed (release awareness). An expert queryable over MCP gives it the fresh answer without waiting for a written note.
Notes that hold up on their own
If your release notes disappoint, the problem is probably not your writing — it's their raw material. Derive them from the real diffs and they'll stay accurate even in the weeks when nobody has time to name their commits properly. The DeployIt MCP server is in early access through its design partner program — and connecting your repository is free during early access.
Continue reading
Architecture Decision Records from Git: Always Current
ADRs go stale as soon as the code moves on. Derive them from git history so every decision record stays current, traceable and auditable — for humans and AI agents.
Connect Claude to Your GitHub Repo — and What It Can't See
A step-by-step guide to Claude's GitHub connector, its documented limit — no commit history — and how to still answer "what changed this week?".
How to Connect Intercom Fin to Your Codebase
A step-by-step guide to Fin's custom MCP connector: plug in a product expert derived from your real code — without handing anyone a GitHub token.