name: release-notes
description: Transform technical changelogs and tickets into user-facing release notes written in benefit language. Use when shipping a release, communicating product updates, or preparing changelog communications.
tags: [release-notes, communication, changelog, product-updates]
Release Notes
Transform technical changelogs, PRs, and tickets into clear, user-facing release notes that communicate what changed and why it matters — in language customers understand.
Purpose
Technical changelogs are written for developers. Release notes are written for customers. This skill bridges the gap — translating implementation details into benefit-oriented language that helps users understand, adopt, and appreciate product improvements.
When to Use
- After merging a release branch and preparing for deployment
- Weekly or bi-weekly product update communications
- Monthly product newsletters
- App store update descriptions
- In-app "What's New" notifications
When NOT to Use
- Internal engineering changelogs (keep those technical)
- Security advisories (use a dedicated security disclosure format)
- API breaking change notices (use migration guides)
Required Input
Provide any combination of:
- Git log / PR list for the release
- Completed JIRA/Linear tickets
- Sprint review notes
- PRD sections for shipped features
- Technical changelogs
The Process
Step 1: Categorize Changes
Sort every change into one of these categories:
| Category |
Icon |
Description |
| New Features |
New |
Entirely new capabilities |
| Improvements |
Improved |
Enhancements to existing features |
| Bug Fixes |
Fixed |
Issues that are now resolved |
| Breaking Changes |
Breaking |
Changes that require user action |
| Deprecations |
Deprecated |
Features being removed in a future release |
Step 2: Rewrite in Benefit Language
Transform each change from technical to user-facing:
Rules:
- Lead with the benefit, not the implementation
- Use plain language — no jargon, no ticket numbers, no internal terms
- Keep each entry to 1–3 sentences
- Be specific about the improvement (quantify when possible)
Examples:
| Technical (Before) |
User-Facing (After) |
| Implemented Redis caching for dashboard queries |
Dashboards now load up to 3x faster |
| Fixed null pointer exception in report export |
Report exports no longer fail for accounts with empty custom fields |
| Added SAML SSO support (SCIM provisioning) |
Enterprise teams can now sign in with their company SSO — no more separate passwords |
| Migrated search to Elasticsearch |
Search results are now more accurate and return in under 200ms |
| Refactored payment processing module |
(Omit — internal refactoring with no user-visible change) |
| Updated React from v17 to v18 |
(Omit — unless there's a user-visible improvement) |
Step 3: Determine Tone
Adjust tone based on audience:
| Audience |
Tone |
Example |
| B2B Professional |
Clear, confident, concise |
"Dashboards now load up to 3x faster." |
| Consumer / Friendly |
Warm, conversational, excited |
"Your dashboards just got a speed boost — they load 3x faster now!" |
| Developer / API |
Technical, precise, actionable |
"Dashboard API response times reduced from ~900ms to ~300ms via query caching." |
Step 4: Structure the Release Notes
Output Format
# Release Notes — [Version or Date]
**Released:** [date]
---
## New Features
### [Feature Name]
[1-3 sentences describing what it does and why it matters to the user]
### [Feature Name]
[description]
---
## Improvements
- **[Area]** — [What improved and the benefit]
- **[Area]** — [What improved and the benefit]
---
## Bug Fixes
- Fixed an issue where [user-visible problem] — [what works now]
- Fixed an issue where [user-visible problem] — [what works now]
---
## Breaking Changes
### [Change Description]
**What changed:** [specific change]
**What you need to do:** [clear migration steps]
**Deadline:** [if applicable]
---
## Deprecations
- **[Feature/API]** will be removed on [date]. [Migration path or alternative].
Filtering Rules
Include:
- Any change that affects what users see, do, or experience
- Performance improvements users would notice
- Bug fixes for reported issues
- Security improvements (without disclosing vulnerability details)
Exclude:
- Internal refactoring with no user-visible impact
- Dependency updates (unless they fix a user-visible issue)
- Build system or CI/CD changes
- Test additions or modifications
- Code style or formatting changes
Distribution Channels
Adapt the release notes for each channel:
| Channel |
Format |
Length |
| In-app notification |
1–3 bullet highlights |
Very short |
| Email newsletter |
Full release notes with context |
Medium |
| Blog post |
Narrative with screenshots |
Long |
| App store description |
Top 3 changes in bullet form |
Very short |
| Changelog page |
Full structured notes |
Medium |
| Slack/Discord |
Emoji-formatted highlights |
Short |
| API docs |
Technical details + migration guides |
Technical |
Anti-Patterns
| Avoid |
Why |
Instead |
| Ticket numbers in notes |
Customers don't know what PROJ-1234 means |
Describe the change in plain language |
| "Various bug fixes" |
Dismissive, unhelpful, erodes trust |
List specific fixes or say "stability improvements including [example]" |
| Technical jargon |
"Optimized SQL query" means nothing to users |
"Reports now load faster" |
| Listing internal refactors |
Adds noise, no user value |
Only include user-visible changes |
| No categorization |
Hard to scan, important changes get buried |
Use consistent categories |
| Stale release notes |
Notes published days/weeks after release |
Ship notes with the release |
References
1---2name: release-notes-23description: <!-- AUTO-GENERATED by export-plugins.py — DO NOT EDIT -->4---5<!-- AUTO-GENERATED by export-plugins.py — DO NOT EDIT -->6---7name: release-notes8description: Transform technical changelogs and tickets into user-facing release notes written in benefit language. Use when shipping a release, communicating product updates, or preparing changelog communications.9tags: [release-notes, communication, changelog, product-updates]10---1112# Release Notes1314Transform technical changelogs, PRs, and tickets into clear, user-facing release notes that communicate **what changed and why it matters** — in language customers understand.1516---1718## Purpose1920Technical changelogs are written for developers. Release notes are written for customers. This skill bridges the gap — translating implementation details into benefit-oriented language that helps users understand, adopt, and appreciate product improvements.2122---2324## When to Use2526- After merging a release branch and preparing for deployment27- Weekly or bi-weekly product update communications28- Monthly product newsletters29- App store update descriptions30- In-app "What's New" notifications3132## When NOT to Use3334- Internal engineering changelogs (keep those technical)35- Security advisories (use a dedicated security disclosure format)36- API breaking change notices (use migration guides)3738---3940## Required Input4142Provide any combination of:43- Git log / PR list for the release44- Completed JIRA/Linear tickets45- Sprint review notes46- PRD sections for shipped features47- Technical changelogs4849---5051## The Process5253### Step 1: Categorize Changes5455Sort every change into one of these categories:5657| Category | Icon | Description |58| --- | --- | --- |59| **New Features** | New | Entirely new capabilities |60| **Improvements** | Improved | Enhancements to existing features |61| **Bug Fixes** | Fixed | Issues that are now resolved |62| **Breaking Changes** | Breaking | Changes that require user action |63| **Deprecations** | Deprecated | Features being removed in a future release |6465### Step 2: Rewrite in Benefit Language6667Transform each change from technical to user-facing:6869**Rules:**70- Lead with the **benefit**, not the implementation71- Use **plain language** — no jargon, no ticket numbers, no internal terms72- Keep each entry to **1–3 sentences**73- Be specific about the improvement (quantify when possible)7475**Examples:**7677| Technical (Before) | User-Facing (After) |78| --- | --- |79| Implemented Redis caching for dashboard queries | Dashboards now load up to 3x faster |80| Fixed null pointer exception in report export | Report exports no longer fail for accounts with empty custom fields |81| Added SAML SSO support (SCIM provisioning) | Enterprise teams can now sign in with their company SSO — no more separate passwords |82| Migrated search to Elasticsearch | Search results are now more accurate and return in under 200ms |83| Refactored payment processing module | (Omit — internal refactoring with no user-visible change) |84| Updated React from v17 to v18 | (Omit — unless there's a user-visible improvement) |8586### Step 3: Determine Tone8788Adjust tone based on audience:8990| Audience | Tone | Example |91| --- | --- | --- |92| **B2B Professional** | Clear, confident, concise | "Dashboards now load up to 3x faster." |93| **Consumer / Friendly** | Warm, conversational, excited | "Your dashboards just got a speed boost — they load 3x faster now!" |94| **Developer / API** | Technical, precise, actionable | "Dashboard API response times reduced from ~900ms to ~300ms via query caching." |9596### Step 4: Structure the Release Notes9798---99100## Output Format101102```markdown103# Release Notes — [Version or Date]104105**Released:** [date]106107---108109## New Features110111### [Feature Name]112[1-3 sentences describing what it does and why it matters to the user]113114### [Feature Name]115[description]116117---118119## Improvements120121- **[Area]** — [What improved and the benefit]122- **[Area]** — [What improved and the benefit]123124---125126## Bug Fixes127128- Fixed an issue where [user-visible problem] — [what works now]129- Fixed an issue where [user-visible problem] — [what works now]130131---132133## Breaking Changes134135### [Change Description]136**What changed:** [specific change]137**What you need to do:** [clear migration steps]138**Deadline:** [if applicable]139140---141142## Deprecations143144- **[Feature/API]** will be removed on [date]. [Migration path or alternative].145```146147---148149## Filtering Rules150151**Include:**152- Any change that affects what users see, do, or experience153- Performance improvements users would notice154- Bug fixes for reported issues155- Security improvements (without disclosing vulnerability details)156157**Exclude:**158- Internal refactoring with no user-visible impact159- Dependency updates (unless they fix a user-visible issue)160- Build system or CI/CD changes161- Test additions or modifications162- Code style or formatting changes163164---165166## Distribution Channels167168Adapt the release notes for each channel:169170| Channel | Format | Length |171| --- | --- | --- |172| In-app notification | 1–3 bullet highlights | Very short |173| Email newsletter | Full release notes with context | Medium |174| Blog post | Narrative with screenshots | Long |175| App store description | Top 3 changes in bullet form | Very short |176| Changelog page | Full structured notes | Medium |177| Slack/Discord | Emoji-formatted highlights | Short |178| API docs | Technical details + migration guides | Technical |179180---181182## Anti-Patterns183184| Avoid | Why | Instead |185| --- | --- | --- |186| Ticket numbers in notes | Customers don't know what PROJ-1234 means | Describe the change in plain language |187| "Various bug fixes" | Dismissive, unhelpful, erodes trust | List specific fixes or say "stability improvements including [example]" |188| Technical jargon | "Optimized SQL query" means nothing to users | "Reports now load faster" |189| Listing internal refactors | Adds noise, no user value | Only include user-visible changes |190| No categorization | Hard to scan, important changes get buried | Use consistent categories |191| Stale release notes | Notes published days/weeks after release | Ship notes with the release |192193---194195## References196197- [Keep a Changelog](https://keepachangelog.com/)198- [Slite: How to Write Release Notes](https://slite.com/learn/release-notes)199200<!-- Source: .faos/custom/skills/business/release-notes/SKILL.md -->