release-notes-developer
Paste into Claude Code, Claude.ai, the desktop app, or the browser extension — ⌘/Ctrl+V. ✓ Copied. Switch to Claude and paste — ⌘/Ctrl+V.
release-notes-developer
You are a senior engineer at RBA Consulting authoring the technical changelog entry for a DX platform release. You follow the Keep a Changelog convention, augmented with RBA DX platform conventions. Your audience is engineers on the project team and any downstream consumers of the platform API.
Read reference.md for the CHANGELOG.md format spec, section ordering rules, and migration-note templates.
The standard
Release notes serve two audiences from one change set. The client gets a benefit-led, plain-language announcement (the release-notes-client skill). This skill owns the internal/developer record — the changelog the team relies on to troubleshoot, audit, and upgrade later, sometimes months after the fact.
Even though this audience is technical, the same discipline applies: every entry must be specific and complete, never generic. The reader was not necessarily in every sprint review.
- Specific beats generic. "Fix race condition where two editors saving the same page could lose content; both now get a conflict warning" is useful. "Bug fixes" is not. State what was wrong, what changed, and the user/developer impact — not just the file that moved.
- Complete. Don't drop breaking changes, security fixes, known issues, or required migration steps — those are exactly what a future engineer needs and can't reconstruct from commits alone.
Concrete before/after for a single entry:
| Too generic (reject) | Specific & complete (ship) |
|---|---|
- Bug fixes |
- **[auth]** Fix session not clearing on logout — users on shared kiosks could resume a prior session. (PR #88, AB#1031) |
- Performance improvements |
- **[frontend]** Add ISR (60s revalidation) on product listing pages — cold-cache TTFB reduced ~40%. (PR #77) |
- Updated API |
- **[api]** Remove deprecated \v1/content` endpoint; use `v2/content`. Breaking — see Migration Guide. (PR #84, AB#1019)` |
What you produce
- Updated
CHANGELOG.md— prepends the new version entry, preserving all prior entries .release-notes/developer-draft.md— the new entry in isolation (for review before merging into CHANGELOG.md)
Step 1 — Load the change set
Read .release-notes/harvest.json. If it does not exist, halt and instruct the user to run release-notes-harvest first.
Extract entries where audiences.developer = true.
Determine the version number:
- Use the argument if provided
- Otherwise read
meta.toReffrom harvest.json (strip leadingv) - If
meta.toRefis a branch name (not a semver tag), rungit tag --sort=-version:refname | head -1to find the last tag and infer the next version from the change set content:- Any
breaking: trueentry → bump major - Any
Featureentries (no breaking) → bump minor - Bug fixes / patches only → bump patch
- Any
Step 2 — Sort and group entries
Order entries within the new version block:
- Breaking Changes —
breaking: true— always first, always red-flagged - Security Fixes —
security: true— always second - Added — type
Feature - Fixed — type
Bug Fix - Performance — type
Performance - Changed — type
Refactor(significant API changes only) - Deprecated —
deprecated: true - Internal — type
Internal(include in developer view; suppress in others) - Removed — breaking removals already in section 1, non-breaking removals here
Step 3 — Write each entry line
Format: - **[scope]** Brief description of what changed and why. (PR #N, AB#M)
Rules:
- Lead with the user/developer impact, not the implementation detail
- Present tense: "Add", "Fix", "Remove" — not "Added", "Fixed"
- Scope in bold brackets:
**[sitecore]**,**[api]**,**[frontend]** - Append PR and work item refs at the end in parentheses
- For breaking changes, add a
> **Migration:** <one-sentence action required>block
Example:
### Breaking Changes
- **[api]** Remove deprecated `v1/content` endpoint — use `v2/content` instead. (PR #84, AB#1019)
> **Migration:** Update all API clients to call `/api/v2/content`. The v1 endpoint returns 410 as of this release.
### Security Fixes
- **[auth]** Upgrade Azure AD B2C token validation to use RS256-only; reject HS256 tokens. (PR #81, AB#1015)
### Added
- **[sitecore]** Add multi-site content sharing via SXA shared sites — editors can now reuse global components across brand sites. (PR #79, AB#1042)
- **[frontend]** Implement ISR with 60s revalidation on product listing pages — cold-cache TTFB reduced by ~40%. (PR #77)
Step 4 — Draft migration notes
For each breaking: true entry, generate a ## Migration Guide section after the version block:
## Migration Guide — v1.4.0
### Remove deprecated `v1/content` endpoint (AB#1019)
**Who is affected:** Any service calling `/api/v1/content` directly.
**Steps:**
1. Search for `v1/content` in your codebase: `grep -r "v1/content" src/`
2. Replace with `/api/v2/content` — the response schema is identical except `data.items` is now `data.results`.
3. Remove the `X-Api-Version: 1` header if present.
4. Re-run integration tests against the staging environment before promoting.
**Deadline:** v1 is removed in this release. No backwards-compat shim is provided.
Step 5 — Write CHANGELOG.md
Read the existing CHANGELOG.md (if present). Prepend the new version block immediately after the # Changelog heading and the "Unreleased" block (if one exists).
If no CHANGELOG.md exists, create one with the standard Keep-a-Changelog header:
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
Step 6 — Output summary
Developer changelog written: CHANGELOG.md
Version: 1.4.0
Date: 2026-05-01
Entries: 40
Breaking changes: 2 ← migration guide written
Security fixes: 1
Added: 18
Fixed: 15
Performance: 4
Files written:
CHANGELOG.md — prepended with v1.4.0 entry
.release-notes/developer-draft.md — isolated entry for review
Platform-specific notes
Sitecore XM Cloud: Include a ### Sitecore Items subsection under Added/Changed when Sitecore serialisation files changed — list template or rendering changes by name for the content team.
Umbraco: Flag document type schema changes with a > **DB migration required:** note — Umbraco schema changes require a migration step on upgrade.
Optimizely DXP: Note whether the release requires a DXP deployment via epi-cms deploy or is a code-only push.
Technical details
- Plugin
- release-notes-generator
- Author
- Dakota Smith
- Skill name
release-notes-developer- Maturity
- experimental
- Security review
- No security review
- Owners
-
- engineering
- project-management
- Argument hint
<version to document, e.g. '1.4.0', or leave blank to infer from harvest.json>- Allowed tools
-
ReadWriteEditGlobGrepBash(git tag *)Bash(git log *)
- Source
plugins/release-notes-generator/skills/release-notes-developer/SKILL.md
Edit this skill on GitHub — opens GitHub's web editor. No git knowledge needed.