How to Write Changelog and Release Notes from a Git Log

Release notes go wrong when a model invents a commit to make the week look finished. The SHA is not in the log. Support quotes a feature that never shipped. You spend the next day walking it back.
The matching generator is the Changelog and Release Notes from a Git Log (No Invented Commits) (Changelog And Release Notes From A Git Log No Invented Commits) prompt. Browse related cards in the PromptDig library (Browse more prompts). When a filled run survives, share the version you actually use (Share a prompt).
Inventory the log before you write a heading
Turn a pasted git log into Keep a Changelog notes and a customer release note. No invented SHAs, authors, or unlogged features. Start by filling Inputs, not by asking the model to remember last week's run. If a field is blank, write NONE or NOT IN INPUTS and leave it blank through Generate. The card is built so the model cannot honestly invent a number, owner, URL, or command that you did not paste.
Paste these fields before you hit run:
Package or product name and version you are shipping: [NameVer]
Compare range (from tag to tag): [Range]
Pasted git log (oneline or medium, include SHA): [Log]
Breaking changes I already confirmed: [Breaking]
Security fixes I already confirmed (CVE ids only if I paste them): [Security]
Audience for the customer note: [Audience]
Upgrade steps I can prove: [Upgrade]
Known issues still open: [Issues]
Words I must not use: [Banned]
Date of the tag (ISO) if tagged: [Date]
That inventory is the honesty ledger. Anything that does not appear there is forbidden in the draft. If you catch yourself adding a nice-to-have after the run, you are no longer using the card. You are ghostwriting. Put the extra fact in Inputs and run again.
Map commits to Keep a Changelog sections
Generate is numbered on purpose. Do not skip a step because the first paragraph looked done. The early steps exist to stop later prose from smuggling claims.
Walk the Generate list in order:
- Honesty ledger: every SHA, author, date, ticket, and version that appears in Log, Breaking, Security. Anything not on the ledger is forbidden.
- Keep a Changelog 1.1.0 block for NameVer: Added, Changed, Deprecated, Removed, Fixed, Security. Each bullet must cite at least one SHA from Log. Empty sections write none in this range.
- Unmapped commits: list SHAs whose messages do not fit a section. Do not silently drop them.
- Customer release note (180-280 words): what changed for Audience. No SHA dump. No features that lack a SHA.
- Upgrade notes: only Upgrade. If Upgrade is blank, write not specified.
- Known issues: only Issues. Do not close them in prose.
- Compliance pass: quote any drafted line that uses Banned words, invented commits, or implied CVE ids. Cut or rewrite.
If a step asks for a version lock, quote the version from Inputs in the output. If a step asks for a refuse list, keep the refuse list in the published artifact, not in a sidebar you delete. Reviewers should see what the model was not allowed to do.
Write the customer note without a SHA dump
Most failures are the same shape: a missing field gets a confident fill. A conversion rate appears. A Gradle task appears. A flash point appears. A caption appears on a job that asked for slide text only. Your review is to search the draft for numbers, names, and commands, then grep Inputs. No match means cut.
Honor the constraints as hard stops, not vibes:
- Keep a Changelog 1.1.0 headings only. Do not switch to a marketing changelog.
- Never invent a commit, author, or 'also includes'.
- If Range does not match the SHAs, say so and stop grouping as if it did.
- Security bullets may only use CVE ids present in Security.
- No emojis unless a commit message already used them.
When the card says not legal advice, not certification, not an exam dump, or not a caption engine, that sentence belongs at the top of the output. Deleting it to look more finished is how you inherit risk.
Leave open issues open
Finish with the compliance pass the prompt already asks for. Quote the banned-word hits. Cut them. Print character counts when the job has a cap. Print word counts when the job has a budget. List gaps as gaps. Five missing facts are more useful than one smooth paragraph.
Tags on the card (git changelog keep a changelog, release notes from git log, no invented commits) are a reminder of the job shape, not an invitation to wander into a neighboring cluster. If you need a different surface, open a different PromptDig card rather than stretching this one.
Fill the card, then run
Replace every bracket. Run on ChatGPT, Claude, or Gemini. Read the ledger first, then the artifact. If the model invents a commit, KPI, DOI, PEL, bid, or logo, discard the run. Tighten Inputs. Run again. Share the filled card that survived, not the first draft that sounded done.