UNPKG

@blundergoat/goat-flow

Version:

AI coding agent harness and local dashboard for Claude Code, OpenAI Codex, Google Antigravity, and GitHub Copilot - setup audits, guardrails, structured skills, deny hooks, and persistent learning loops.

141 lines (97 loc) 6.3 kB
--- goat-flow-reference-version: "1.12.1" --- # Release Notes Use this when writing a user-facing release announcement: GitHub release body, app-store notes, email, in-app "what's new", or short social copy. For the durable in-repo change ledger, load [`changelog.md`](./changelog.md) first. ## Availability Check This is a discipline reference, not a runnable tool. Load it when: - Drafting release notes or a release announcement. - Turning a changelog into user-facing highlights. - Reviewing release notes before publish. - Answering "what's new in vX.Y.Z?" No availability command applies. If the project has draft-shape, link, or version checks, run them; they augment the **Verification Gate** and do not replace it. ## Intent You are a coding agent producing or reviewing a release artifact. Your job is to turn verified changelog evidence into the shortest useful user-facing release notes. A reader opens release notes to decide: should I upgrade, what matters to me, and what might break? They may never read the changelog. Agents default verbose. Counter that deliberately: draft the accurate version, then cut about half the words. Preserve headline impact, breaking changes, upgrade steps, measurements, and links; remove launch-copy, duplicated changelog detail, and implementation trivia. ## Source Chain Release notes are derived, not invented: ```text diff -> changelog -> release notes -> shorter surfaces ``` Rules: - Fix the changelog first if it is missing a shipped change. - Every release-note claim must trace to the changelog or a verified changed surface. - If a claim is internal-only, cut it. - If the release notes contradict the changelog, the changelog wins. - Do not summarize from memory. The useful signal order mirrors changelog work: PRs/issues, tests, changed product surfaces, diff, config/dependency changes, then commit messages last. ## Default Output If the user does not name a surface, write a concise GitHub release body: title, one-sentence headline, 3-5 highlights, breaking changes if any, and upgrade instructions. Do not write a blog-style introduction unless asked. ## Selection Rules - Lead with the change a stranger would care about. - Group by user benefit, not commit, file, or category. - Keep only material user-facing changes. - Include all breaking changes, even if the short surface has room for little else. - Skip refactors, tests, CI, dependency bumps, and internal cleanup unless users see the result. - If there are many changes, make a highlight reel and put the rest under "Other notable changes". Theme names must help a user decide whether to read further. Good: "Windows install fixes", "Faster cold start", "Stricter upload validation". Bad: "Refactoring", "Various fixes", "Code quality". ## Writing Rules - Write for users, not implementers. - Lead with effect, then add mechanism only when it helps trust or action. - Use plain English and short sentences. - Prefer bullets over paragraphs. - Say "Fixed duplicate search results", not "Refactored search reconciliation". - Say "Search results now load 3x faster", not "Improved performance". - Do not use "excited to announce", "game-changing", "powerful", or other launch-copy. - Do not name internal classes, files, or subsystems for end-user surfaces. Bad: "Refactored auth middleware." Good: "**Single sign-on works across subdomains.** Users no longer get logged out between app subdomains." ## Breaking Changes Breaking changes get top billing. For each one: 1. Lead with user impact. 2. Show before/after command, config, or code when useful. 3. Estimate migration effort if non-trivial. 4. Link to migration tooling or docs. 5. Reference prior deprecation if there was one. If the changelog has `BREAKING:` and release notes omit it, the notes are unsafe to publish. ## Surface Rules Default shapes: GitHub release = headline, 3-5 highlights, breaks, upgrade; app/in-app = headline plus 1-3 bullets; email = 3-5 bullets plus link; social = one headline plus link; blog = only when asked. Tailor depth, not facts. Short surfaces may omit secondary changes, but must not hide breaking changes or contradict the full notes. ## Compression Pass Before publishing: 1. Delete launch-copy and throat-clearing. 2. Delete repeated changelog detail. 3. Delete implementation trivia. 4. Split long sentences; keep one idea per sentence. 5. Keep non-breaking highlights to one sentence unless a second sentence carries measurement, migration note, or user-visible caveat. The default release body should be about half the first agent draft. ## Antipatterns - **Changelog dump:** no selection or framing. - **Marketing-only notes:** enthusiasm without facts. - **Missing breaks:** breaking change buried or omitted. - **Wrong audience:** internal subsystem names in user-facing copy. - **Vague upgrade:** "update and enjoy". - **Future-vague:** "coming soon" in notes for what shipped. - **Acknowledgement padding:** names that do not help the release reader. - **Agent launch-copy bloat:** wrapper prose that hides the user impact. ## Verification Gate Before publishing: 1. Every claim traces to the changelog or verified diff evidence. 2. Every breaking change appears clearly and early. 3. The headline passes "would a stranger care?" 4. No marketing without measurements. 5. No internal jargon on end-user surfaces. 6. Multi-surface variants do not contradict each other. 7. Upgrade instructions are concrete. 8. Version, date, and install/update location are present. 9. A reader can decide whether to upgrade without reading commit history. 10. The compression pass ran. ## Troubleshooting - **Thin changelog:** fix it first; release notes from a weak changelog become guesswork. - **Too long or polished:** cut about half before changing facts. - **Different headline requested:** use user impact, not internal implementation framing. - **Missing changelog entry:** add it first, then write the release-note line. ## Related References - [`changelog.md`](./changelog.md) - source-of-truth release ledger. - Project's prior release announcements - match voice and structure before inventing a new one. - Project instruction files (`CLAUDE.md`, `AGENTS.md`, `.github/copilot-instructions.md`) may declare release-note policy.