Changelog Maintenance
Use this skill when the deliverable is release history or shipped-change communication, not a broad documentation or launch-campaign bundle.
changelog-maintenance is the documentation-cluster anchor for:
CHANGELOG.md upkeep
- GitHub / GitLab / docs-site release notes
- migration and deprecation updates tied to a shipped change
- customer-facing “what changed” summaries
- lightweight game patch notes and small update posts
Read these support docs before choosing the mode or boundary:
- references/modes-and-boundaries.md
- references/output-packets-and-channel-handoffs.md
- references/release-note-quality-checklist.md
- references/automation-and-source-of-truth.md
When to use this skill
- A repo needs a durable changelog entry or
Unreleased refresh based on shipped work
- A release needs audience-appropriate notes for developers, customers, internal stakeholders, or players
- A breaking change, deprecation, or compatibility shift needs a migration update linked from release history
- Release automation drafted notes, but the output still needs truthful grouping, clearer wording, or better route-outs
- A game update needs concise patch notes without collapsing into marketing copy, deployment runbooks, or full help docs
- The real job is deciding the smallest release-writing packet rather than writing every neighboring document from scratch
When not to use this skill
- The main job is an internal spec, runbook, ADR, rollout plan, or deep migration procedure →
technical-writing
- The main job is published API / SDK / webhook / developer-portal content →
api-documentation
- The main job is end-user onboarding, tutorials, screenshots, FAQs, or help-center walkthroughs →
technical-writing
- The main job is deployment execution, environment promotion, rollback mechanics, or release orchestration →
deployment-automation
- The main job is launch copy, feature positioning, campaign sequencing, or GTM messaging →
marketing-automation
- There is no credible shipped evidence yet → collect proof first instead of inventing release notes from a roadmap or TODO list
Instructions
Step 1: Classify one primary release-writing mode
Normalize the request before drafting.
changelog_mode:
primary_mode: changelog | release-notes | migration-update | game-patch-notes
audience: developers | end-users | mixed | players | internal-stakeholders | unknown
release_scope: patch | minor | major | rolling | unknown
source_of_truth: release-pr | tagged-release | prs | issues | commits | docs | mixed | unknown
publishing_surface: changelog-file | github-release | docs-site | in-app-updates | steam-news | mixed | unknown
automation_context: manual | release-drafter | changesets | release-please | autogenerated-release-notes | mixed | unknown
output_shape: single-entry | summary-plus-links | migration-brief | patch-note-brief | sync-packet | unknown
Use one mode per run:
changelog → durable repo history in CHANGELOG.md
release-notes → audience-facing summary of what changed and why it matters
migration-update → changed behavior, required actions, deadlines, and compatibility notes
game-patch-notes → concise player-facing update summary
Step 2: Confirm audience, proof, and route-outs
Answer these before writing:
- Who reads this first?
- What action should they take after reading it?
- Which shipped evidence proves each headline claim?
- Which deeper artifact should carry the rest?
Quick route-out table:
| If the request sounds like... |
Use |
| “Write the architecture / rollout / runbook / internal migration plan” |
technical-writing |
| “Publish API reference, SDK docs, auth troubleshooting, or portal pages” |
api-documentation |
| “Write help docs, tutorials, screenshots, or FAQs for the changed workflow” |
technical-writing |
| “Plan deploy / rollback / release execution” |
deployment-automation |
| “Write launch copy / announcement / campaign messaging” |
marketing-automation |
| “Summarize shipped changes truthfully for a release surface” |
changelog-maintenance |
Step 3: Gather the smallest truthful evidence set
Do not write release history from memory alone. Pull the smallest credible packet first:
- merged release PR, tag, or release entry if it exists
- merged PRs / issues / commits included in the release
- linked migration docs, upgrade notes, or help docs
- breaking changes, removals, deprecations, deadlines, or rollout caveats
- publishing-surface constraints (
CHANGELOG.md, GitHub Release, customer update hub, Steam patch-note post)
- automation context, if any
If evidence is incomplete, label assumptions and missing proof explicitly.
Step 4: Choose the smallest useful artifact packet
Use references/output-packets-and-channel-handoffs.md.
Default shapes:
single-entry → one changelog entry or one release-note block
summary-plus-links → short release summary plus migration/help/API links
migration-brief → what changed, who is affected, required action, deadline, link-outs
patch-note-brief → concise new content / tuning / fixes / known issues packet
sync-packet → release-note draft plus list of downstream docs or channels that must stay aligned
Do not ship a broad handbook when one release packet and a short sync list will do.
Step 5: Apply mode-specific writing rules
- Changelog: favor grouped notable changes over commit archaeology; keep compare links or version/date framing when the repo uses them.
- Release notes: lead with impact, not internal ticket numbers; keep wording plain and scannable.
- Migration update: foreground required action, affected readers, deadline, and compatibility risk.
- Game patch notes: keep the note lightweight and player-facing; do not smuggle rollout mechanics or campaign copy into it.
Step 6: Keep record, communication, and promotion separate
Guard these boundaries aggressively:
- changelog / release notes summarize what shipped
- migration detail lives in linked migration docs when the procedure is too large for the summary
- tutorials / FAQs live in
technical-writing
- API and integration detail lives in
api-documentation
- rollout / rollback mechanics live in
deployment-automation
- campaign-style language lives in
marketing-automation
Step 7: Work with automation without surrendering judgment
Use automation as draft input, not the final editor.
- Release Drafter / autogenerated release notes → good for PR grouping and starter bullets
- Changesets → good for package/version intent and monorepo release aggregation
- release-please / semantic-release style flows → good for release PRs, version bumps, and commit-driven summaries
Still decide manually:
- the primary audience
- what counts as notable
- what needs a migration link
- what should become a separate help/API/internal doc
Step 8: Run the trust check before publishing
Use references/release-note-quality-checklist.md.
Verify:
- Every claim matches shipped or merged evidence.
- The chosen mode fits the audience and channel.
- Breaking changes, removals, and deadlines are impossible to miss.
- Route-outs stay explicit instead of bloating the note.
- The packet is as small as possible while still truthful.
Step 9: Return a brief or the finished artifact
Preferred brief shape before full drafting:
# Release Writing Brief
## Mode
- Primary mode:
- Why it fits:
- Audience:
- Output shape:
## Evidence used
- Source of truth:
- Supporting docs / links:
- Assumptions / missing proof:
## Planned artifact packet
1. main release artifact
2. downstream sync / linked-doc follow-up
## Writing notes
- Breaking changes / deadlines:
- Route-outs kept out of scope:
- Channel-specific constraints:
If the user already asked for the finished artifact, produce the selected packet directly with the matching structure.
Examples
Example 1: Changelog plus migration link
Input
Update CHANGELOG.md for v2.4.0 from the merged PR list and make the Basic Auth deprecation obvious.
Good output direction
- mode:
changelog
- output shape:
summary-plus-links
- grouped sections such as
Added, Changed, Deprecated, Fixed
- migration link or placeholder instead of embedding the full auth procedure
Example 2: Customer-facing release summary
Input
Turn these shipped product updates into release notes customers will actually read.
Good output direction
- mode:
release-notes
- output shape:
single-entry or summary-plus-links
- benefit-led headings like
What’s new, Improvements, Fixes
- route tutorials or help refreshes to
technical-writing
Example 3: Lightweight game patch notes
Input
Write patch notes for our latest game update and keep them short.
Good output direction
- mode:
game-patch-notes
- output shape:
patch-note-brief
- concise sections for new content, tuning, fixes, and known issues
- route launch-event hype or campaign beats to
marketing-automation
Best practices
- Start from shipped evidence, not vibes.
- Pick one primary audience and one primary mode.
- Use the smallest packet that fits the channel.
- Separate release summary, migration detail, help docs, API docs, rollout mechanics, and launch messaging.
- Let automation collect draft material, but do not outsource judgment.
- Call out breaking changes and deadlines early.
- Treat patch notes as a real workflow with player-facing constraints, not just a renamed changelog.
References
1---2name: changelog-maintenance3description: Write and maintain release-history artifacts for shipped changes: `CHANGELOG.md` updates, release notes, migration/deprecation updates, and lightweight game patch notes. Use when the main job is turning shipped evidence into the smallest truthful release-writing packet for developers, customers, internal stakeholders, or players. Triggers on: changelog, release notes, patch notes, migration update, deprecation notice, version notes, what shipped, what changed, and what's new. Route internal specs/runbooks to `technical-writing`, API portals to `api-documentation`, end-user tutorials to `technical-writing`, rollout execution to `deployment-automation`, and launch messaging to `marketing-automation`.4license: MIT5---6789101112# Changelog Maintenance1314Use this skill when the deliverable is **release history or shipped-change communication**, not a broad documentation or launch-campaign bundle.1516`changelog-maintenance` is the documentation-cluster anchor for:17- `CHANGELOG.md` upkeep18- GitHub / GitLab / docs-site release notes19- migration and deprecation updates tied to a shipped change20- customer-facing “what changed” summaries21- lightweight game patch notes and small update posts2223Read these support docs before choosing the mode or boundary:24- [references/modes-and-boundaries.md](references/modes-and-boundaries.md)25- [references/output-packets-and-channel-handoffs.md](references/output-packets-and-channel-handoffs.md)26- [references/release-note-quality-checklist.md](references/release-note-quality-checklist.md)27- [references/automation-and-source-of-truth.md](references/automation-and-source-of-truth.md)2829## When to use this skill30- A repo needs a durable changelog entry or `Unreleased` refresh based on shipped work31- A release needs audience-appropriate notes for developers, customers, internal stakeholders, or players32- A breaking change, deprecation, or compatibility shift needs a migration update linked from release history33- Release automation drafted notes, but the output still needs truthful grouping, clearer wording, or better route-outs34- A game update needs concise patch notes without collapsing into marketing copy, deployment runbooks, or full help docs35- The real job is deciding the smallest release-writing packet rather than writing every neighboring document from scratch3637## When not to use this skill38- **The main job is an internal spec, runbook, ADR, rollout plan, or deep migration procedure** → `technical-writing`39- **The main job is published API / SDK / webhook / developer-portal content** → `api-documentation`40- **The main job is end-user onboarding, tutorials, screenshots, FAQs, or help-center walkthroughs** → `technical-writing`41- **The main job is deployment execution, environment promotion, rollback mechanics, or release orchestration** → `deployment-automation`42- **The main job is launch copy, feature positioning, campaign sequencing, or GTM messaging** → `marketing-automation`43- **There is no credible shipped evidence yet** → collect proof first instead of inventing release notes from a roadmap or TODO list4445## Instructions4647### Step 1: Classify one primary release-writing mode48Normalize the request before drafting.4950```yaml51changelog_mode:52 primary_mode: changelog | release-notes | migration-update | game-patch-notes53 audience: developers | end-users | mixed | players | internal-stakeholders | unknown54 release_scope: patch | minor | major | rolling | unknown55 source_of_truth: release-pr | tagged-release | prs | issues | commits | docs | mixed | unknown56 publishing_surface: changelog-file | github-release | docs-site | in-app-updates | steam-news | mixed | unknown57 automation_context: manual | release-drafter | changesets | release-please | autogenerated-release-notes | mixed | unknown58 output_shape: single-entry | summary-plus-links | migration-brief | patch-note-brief | sync-packet | unknown59```6061Use one mode per run:62- `changelog` → durable repo history in `CHANGELOG.md`63- `release-notes` → audience-facing summary of what changed and why it matters64- `migration-update` → changed behavior, required actions, deadlines, and compatibility notes65- `game-patch-notes` → concise player-facing update summary6667### Step 2: Confirm audience, proof, and route-outs68Answer these before writing:691. Who reads this first?702. What action should they take after reading it?713. Which shipped evidence proves each headline claim?724. Which deeper artifact should carry the rest?7374Quick route-out table:7576| If the request sounds like... | Use |77|---|---|78| “Write the architecture / rollout / runbook / internal migration plan” | `technical-writing` |79| “Publish API reference, SDK docs, auth troubleshooting, or portal pages” | `api-documentation` |80| “Write help docs, tutorials, screenshots, or FAQs for the changed workflow” | `technical-writing` |81| “Plan deploy / rollback / release execution” | `deployment-automation` |82| “Write launch copy / announcement / campaign messaging” | `marketing-automation` |83| “Summarize shipped changes truthfully for a release surface” | `changelog-maintenance` |8485### Step 3: Gather the smallest truthful evidence set86Do not write release history from memory alone. Pull the smallest credible packet first:87- merged release PR, tag, or release entry if it exists88- merged PRs / issues / commits included in the release89- linked migration docs, upgrade notes, or help docs90- breaking changes, removals, deprecations, deadlines, or rollout caveats91- publishing-surface constraints (`CHANGELOG.md`, GitHub Release, customer update hub, Steam patch-note post)92- automation context, if any9394If evidence is incomplete, label assumptions and missing proof explicitly.9596### Step 4: Choose the smallest useful artifact packet97Use [references/output-packets-and-channel-handoffs.md](references/output-packets-and-channel-handoffs.md).9899Default shapes:100- `single-entry` → one changelog entry or one release-note block101- `summary-plus-links` → short release summary plus migration/help/API links102- `migration-brief` → what changed, who is affected, required action, deadline, link-outs103- `patch-note-brief` → concise new content / tuning / fixes / known issues packet104- `sync-packet` → release-note draft plus list of downstream docs or channels that must stay aligned105106Do not ship a broad handbook when one release packet and a short sync list will do.107108### Step 5: Apply mode-specific writing rules109- **Changelog**: favor grouped notable changes over commit archaeology; keep compare links or version/date framing when the repo uses them.110- **Release notes**: lead with impact, not internal ticket numbers; keep wording plain and scannable.111- **Migration update**: foreground required action, affected readers, deadline, and compatibility risk.112- **Game patch notes**: keep the note lightweight and player-facing; do not smuggle rollout mechanics or campaign copy into it.113114### Step 6: Keep record, communication, and promotion separate115Guard these boundaries aggressively:116- changelog / release notes summarize what shipped117- migration detail lives in linked migration docs when the procedure is too large for the summary118- tutorials / FAQs live in `technical-writing`119- API and integration detail lives in `api-documentation`120- rollout / rollback mechanics live in `deployment-automation`121- campaign-style language lives in `marketing-automation`122123### Step 7: Work with automation without surrendering judgment124Use automation as draft input, not the final editor.125- **Release Drafter / autogenerated release notes** → good for PR grouping and starter bullets126- **Changesets** → good for package/version intent and monorepo release aggregation127- **release-please / semantic-release style flows** → good for release PRs, version bumps, and commit-driven summaries128129Still decide manually:130- the primary audience131- what counts as notable132- what needs a migration link133- what should become a separate help/API/internal doc134135### Step 8: Run the trust check before publishing136Use [references/release-note-quality-checklist.md](references/release-note-quality-checklist.md).137138Verify:1391. Every claim matches shipped or merged evidence.1402. The chosen mode fits the audience and channel.1413. Breaking changes, removals, and deadlines are impossible to miss.1424. Route-outs stay explicit instead of bloating the note.1435. The packet is as small as possible while still truthful.144145### Step 9: Return a brief or the finished artifact146Preferred brief shape before full drafting:147148```markdown149# Release Writing Brief150151## Mode152- Primary mode:153- Why it fits:154- Audience:155- Output shape:156157## Evidence used158- Source of truth:159- Supporting docs / links:160- Assumptions / missing proof:161162## Planned artifact packet1631. main release artifact1642. downstream sync / linked-doc follow-up165166## Writing notes167- Breaking changes / deadlines:168- Route-outs kept out of scope:169- Channel-specific constraints:170```171172If the user already asked for the finished artifact, produce the selected packet directly with the matching structure.173174## Examples175176### Example 1: Changelog plus migration link177**Input**178> Update `CHANGELOG.md` for v2.4.0 from the merged PR list and make the Basic Auth deprecation obvious.179180**Good output direction**181- mode: `changelog`182- output shape: `summary-plus-links`183- grouped sections such as `Added`, `Changed`, `Deprecated`, `Fixed`184- migration link or placeholder instead of embedding the full auth procedure185186### Example 2: Customer-facing release summary187**Input**188> Turn these shipped product updates into release notes customers will actually read.189190**Good output direction**191- mode: `release-notes`192- output shape: `single-entry` or `summary-plus-links`193- benefit-led headings like `What’s new`, `Improvements`, `Fixes`194- route tutorials or help refreshes to `technical-writing`195196### Example 3: Lightweight game patch notes197**Input**198> Write patch notes for our latest game update and keep them short.199200**Good output direction**201- mode: `game-patch-notes`202- output shape: `patch-note-brief`203- concise sections for new content, tuning, fixes, and known issues204- route launch-event hype or campaign beats to `marketing-automation`205206## Best practices2071. Start from shipped evidence, not vibes.2082. Pick one primary audience and one primary mode.2093. Use the smallest packet that fits the channel.2104. Separate release summary, migration detail, help docs, API docs, rollout mechanics, and launch messaging.2115. Let automation collect draft material, but do not outsource judgment.2126. Call out breaking changes and deadlines early.2137. Treat patch notes as a real workflow with player-facing constraints, not just a renamed changelog.214215## References216- [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)217- [Semantic Versioning 2.0.0](https://semver.org/)218- [Release Drafter](https://github.com/release-drafter/release-drafter)219- [Changesets](https://github.com/changesets/changesets)220- [release-please](https://github.com/googleapis/release-please)221- [GitHub Docs: Automatically generated release notes](https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes)222- [Steamworks: Event Type — Small Update / Patch Notes](https://partner.steamgames.com/doc/marketing/event_tools/type_patchnotes?l=english)223- [Steamworks: Updating Your Game — Best Practices](https://partner.steamgames.com/doc/store/updates?l=english)