Release notes from pull requests are only useful when someone translates them: PR titles are written for reviewers, not for the people who use your product. Sai reads every merged PR since your last release, keeps what users will notice, writes it in plain language and, after you approve, publishes it to GitHub, your changelog and Slack.
What release notes from pull requests should be
Release notes from pull requests are a short, user-facing summary of what changed in a release, built from the pull requests merged since the previous version. Each line says what is different for the reader and links to the PR for detail; internal work is left out.
Release notes and a changelog overlap but are not the same. A changelog is the running record of every version. Release notes explain one release and point readers to what they should try, update or migrate. Keep a Changelog sums up the principle for both: changelogs are for humans, not machines.
Why release notes from PRs are hard to write
- PR titles are written for reviewers. "Refactor auth middleware" tells a customer nothing; "Fixed a sign-in loop on Safari" does.
- The history is noisy. Keep a Changelog warns against dumping commit logs, which are full of merge commits, obscure titles and documentation changes.
- Automation depends on discipline. GitHub's automatically generated release notes list merged pull requests and contributors, sorted into categories by labels set in
.github/release.yml. Tools like release-please build changelogs from Conventional Commit prefixes such asfeat:andfix:. Both work only when every PR is labeled or titled consistently. - The context is elsewhere. What a change means for users lives in the linked issue, a screenshot or the product itself, not in the diff.
- Publishing is a second job. The same notes go to the GitHub release, a changelog page, Slack and sometimes a customer email.
A release notes template that works
Group by what the reader cares about, in this order, and skip empty sections:
- Breaking changes: what stops working, who is affected and the steps to migrate.
- New: features the reader can try now.
- Improved: changes to things they already use.
- Fixed: bugs they may have hit, described by the symptom.
- Deprecated, removed and security: anything going away, and any vulnerability fixes.
Write each line as the outcome for the user, start with a verb, and link the PR or the docs. For example: "Export up to 50,000 rows at once from any report (#914)." Add the version and release date at the top.
Ways to automate release notes, compared
| Approach | Works from | Readable by users | Setup | Publishes to |
|---|---|---|---|---|
| Written by hand | Whatever the writer remembers | Yes, if someone has time | None | Wherever the writer pastes it |
| GitHub generated release notes | Merged PR titles and labels | As good as your PR titles | A .github/release.yml with label categories | GitHub releases |
| Conventional Commits tools (e.g. release-please) | Commit message prefixes | As good as your commit messages | Commit conventions and a CI action | CHANGELOG file and GitHub releases |
| Sai | PRs, linked issues, screenshots and the app itself | Yes, rewritten for customers | A plain-English prompt | GitHub, Notion, Slack, email or a CMS, after your approval |
If your team already labels every PR, keep GitHub's generated notes as the raw list and let Sai turn it into the version your users read.
How to write release notes from merged PRs with Sai
- Point Sai at the repository. Give it the repo, the tag range and the labels that mean "leave this out". The full prompt is in the Start with a prompt tab above.
- Say who the notes are for. Customers, API users or your own team; Sai writes for that reader.
- Review the draft. Sai shows the grouped notes and the PRs it left out, with reasons, and waits for your OK.
- Approve and publish. Sai publishes the GitHub release, updates your changelog page and posts the summary in Slack.
- Make it routine. Run it on every new tag, or every Friday for weekly notes.
Sai ranks #1 on OSWorld, the public benchmark for agents that complete tasks on a real computer, so it can work through GitHub, Notion and a CMS the way a person does, including changelog pages that have no API. Once the routine works, Sai repeats it each release without being watched and only stops for your approval.
From your coding agent or CI: add the Sai MCP server to Claude Code, Codex or Cursor and ask for release notes right after you tag a release, or call POST /v1/agents/message from a release workflow. Read the quick start.
Make your PRs easier to turn into release notes
- Add a "User-facing change" line to your PR template. One sentence from the author saves a guess later.
- Label internal work. A
skip-changeloglabel, also listed underexcludein.github/release.yml, keeps refactors and CI changes out of every tool's output. - Link the issue. The issue usually explains the user problem better than the diff.
- Attach a screenshot for UI changes. It helps reviewers now and the release notes later.
- Mark breaking changes in the title. A
!after the type in Conventional Commits, such asfeat!:, or abreakinglabel.
Related use cases: test your signup flow end to end, turn a document into a slide deck and post one update to every social channel.
Last reviewed October 5, 2026.