From skillry-devops-and-release
Use when you need to generate concise release notes, known issues, migration notes, and operator actions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/skillry-devops-and-release:61-release-notes-generatorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate structured, audience-appropriate release notes from git commit history, PR descriptions, and changelog entries. Categorize changes by conventional commit type (`feat`, `fix`, `breaking`, `perf`, `deps`, `docs`), surface known issues and workarounds, write migration notes for breaking changes, and list required operator actions (run migration, rotate secret, update config). Produce outp...
Generate structured, audience-appropriate release notes from git commit history, PR descriptions, and changelog entries. Categorize changes by conventional commit type (feat, fix, breaking, perf, deps, docs), surface known issues and workarounds, write migration notes for breaking changes, and list required operator actions (run migration, rotate secret, update config). Produce output ready for a GitHub Release, a CHANGELOG.md update, or a customer-facing email — for human review, never auto-tagged or auto-pushed.
git log <previous-tag>..HEAD --oneline. With no previous tag, use a date range.feat: to New Features; fix: to Bug Fixes; perf: to Performance; breaking: / feat!: / BREAKING CHANGE: footer to Breaking Changes (mandatory migration note); deps: / chore(deps): only if user-visible or security-relevant; docs:/test:/ci:/refactor: generally omitted from customer notes. Categorize non-conventional commits by reading the message; flag ambiguous ones.package.json / pyproject.toml.# Commits since the last tag, grouped by conventional type
PREV=$(git describe --tags --abbrev=0 2>/dev/null)
git log "${PREV}..HEAD" --pretty="%s" | grep -E "^feat(\(|:|!)" # features
git log "${PREV}..HEAD" --pretty="%s" | grep -E "^fix(\(|:)" # fixes
git log "${PREV}..HEAD" --pretty="%s" | grep -E "^perf(\(|:)" # performance
git log "${PREV}..HEAD" --pretty="%s%n%b" | grep -iE "BREAKING CHANGE|!:" # breaking
# Current version to validate the proposed bump
node -p "require('./package.json').version" 2>/dev/null \
|| grep -m1 '^version' pyproject.toml
# PR numbers referenced in the range (for enrichment links)
git log "${PREV}..HEAD" --pretty="%s" | grep -oE "#[0-9]+" | sort -u
## [vX.Y.Z] — YYYY-MM-DD
### Breaking Changes
- **[Component]** Old behavior vs. new behavior.
**Migration**: `command to run` or code change required.
**Compatibility window**: until vX+1.0.0 (if applicable).
### New Features
- **Feature name**: What users can now do. ([#PR](link))
### Bug Fixes
- Fixed [symptom the user experienced]. ([#issue](link))
### Performance
- [Component] is now X% faster under [condition].
### Known Issues
- [Symptom]. Workaround: [steps]. Fix planned for [version].
### Operator Actions Required
1. Run database migration: `npm run db:migrate`
2. Add new env var: `NEW_VAR=value`
3. Rotate `API_SECRET` — format changed.
### Dependencies
- Updated [package] to [version] — resolves [CVE-XXXX-XXXX].
| Commit prefix | Section | Include in customer notes? | Drives semver |
|---|---|---|---|
feat: | New Features | yes | minor |
fix: | Bug Fixes | yes | patch |
perf: | Performance | yes | patch |
feat!: / BREAKING CHANGE: | Breaking Changes | yes (with migration) | major |
deps: / chore(deps): | Dependencies | only if CVE or behavior change | patch if security |
refactor: / test: / ci: / chore: | — | no | none |
docs: | — | only if user-facing docs | none |
The highest-impact change type present sets the version bump: any breaking change forces a major even if everything else is a patch.
A raw commit log fragment:
a1b2c3 refactor(db): swap to pgbouncer connection pool
d4e5f6 fix(auth): handle expired refresh token without 500
9a8b7c feat!: require API clients to send X-Api-Version header
Translated for a customer-facing release:
### Breaking Changes
- **API requests** now require an `X-Api-Version` header.
**Migration**: add `X-Api-Version: 2` to all requests. Unversioned
requests are rejected with 400. **Compatibility window**: none — effective this release.
### Bug Fixes
- Fixed a server error that occurred when a session's refresh token expired;
the app now prompts a clean re-login. (#412)
The refactor(db) commit is omitted entirely — pgbouncer is an implementation detail with no user-visible behavior change (if it did change latency, it would become a perf: entry: "API responses are faster under load"). The feat!: drives the major version bump and gets a mandatory migration note; the fix: describes the symptom the user saw, not "null check added".
chore: update lockfile bury the real changes.Return the release-notes Markdown block above for the target audience: a version header, Breaking Changes (with migration steps) first, then New Features, Bug Fixes, Performance, Known Issues, Operator Actions, and Dependencies. Include the proposed semver version with a one-line justification of the bump level, and note any ambiguous commits that need author clarification.
CHANGELOG.md or the package.json version without explicit user instruction.Done means the full commit range was categorized by type, breaking changes have migration steps, user-facing entries describe value/symptoms (not implementation), operator actions are listed, the semver bump is justified, and the output is ready for human review — not auto-published.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub fluxonlab/skillry --plugin skillry-devops-and-release