Markdown Output Prompt — Lock the Document Structure
The contract that stops AI documents from restructuring themselves: a pinned section skeleton, forced tables, and strict consistency rules.
Added, Changed, Fixed, Removed, Security — changelog entries written as user-visible changes, not commit messages.
Changelogs written from commits read like commits: "refactor auth flow" tells users nothing. This setup generates changelog entries in the five standard sections under Strict consistency — the categories never drift — with the two rules that make changelogs readable: write each entry as a user-visible change, and one change per bullet, never bundled. The Security section is pinned so security-relevant changes can't be quietly filed under "Changed".
Draft below, structure above
Paste the raw release notes under the prompt; the entry comes back categorized and user-phrased.
Check the phrasing rule
"User-visible change, not a commit message" — the single rule that makes changelogs worth publishing.
Keep Security pinned
Strict mode means the section appears even when empty-ish releases tempt you to drop it.
Security is pinned as its own fixed section under the CONSISTENCY RULES, so the prompt forces a '## Security' heading in every release and forbids merging sections or rewording headings. A security-relevant change lands under Security by name instead of being quietly filed under '## Changed', even on a light release where you would be tempted to drop it.
It shapes a draft, it does not invent the changes. The TASK line states 'there is no source text to summarize' — you paste your raw release notes beneath the prompt and it returns them categorized into the five sections and rephrased as user-visible changes. Feeding it only a git log leaves it guessing, which is what the 'not a commit message' rule fights.
markdown-output-builder formats the prompt into clean markdown, but the actual changelog text comes from running that prompt in your own assistant, and the OUTPUT RULES make it copy-ready — 'return only the markdown document', no preamble, no code fences, starting at the '# ' title line. You paste the result into your CHANGELOG file or release page yourself; nothing auto-publishes.
The contract that stops AI documents from restructuring themselves: a pinned section skeleton, forced tables, and strict consistency rules.
Overview, Installation, Usage, Examples, Configuration — the README skeleton with required, runnable code examples.
Overview, Authentication, Endpoints, Error Handling, Rate Limits — endpoint docs in an identical structure, with parameter tables and runnable examples forced.
Summary, Why It Matters, What Happens Next — the executive summary contract for readers who will never open the source.
Stop getting 'Sure, here is the JSON…' — the output-contract pattern that forces models to return only parseable JSON: schema, example, and a strict rule block.
The JSON won't parse and you can't see why. Deterministic cause-sniffing — trailing commas, single quotes, unclosed brackets — and the repair prompt that fixes it.
Build prompts that produce documents in a fixed structure — headings, sections, and tables.
Work a live production incident in the right order — triage and stabilize first, then find the cause, then write the summary and postmortem — so the fire is out before the writeup begins.
The changelog gets written last, from a list of PR titles someone else wrote for a reviewer who has moved on. Here is how to generate a changelog with AI that records what shipped for the people upgrading — and parks what nobody can stand behind yet.