skills/changelog/SKILL.md
Changelog and release notes management. Keep a Changelog format, Conventional Commits auto-generation, breaking change communication, migration guides, audience-specific notes.
npx skillsauth add arbazkhan971/godmode changelogInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
/godmode:changelog/godmode:release or /godmode:ship)Examine commits, PRs, and tags since the last release:
CHANGE ANALYSIS:
Last release: <tag> (<date>)
Commands to gather data:
# Commits since last tag
git log $(git describe --tags --abbrev=0)..HEAD --oneline
If not already configured, set up Conventional Commits for automatic changelog generation:
<type>(<scope>)!: <description>
[optional body]
Types:
CONVENTIONAL COMMIT TYPES:
| Type | Description | Changelog? |
# Install commitlint
npm install --save-dev @commitlint/cli @commitlint/config-conventional
Generate or update CHANGELOG.md following the Keep a Changelog standard:
# Changelog
This file documents all notable changes to this project.
CHANGELOG RULES:
1. Changelogs are for humans, not machines
2. Include an entry for every version
Use tools to generate changelog from Conventional Commits:
# Install
npm install --save-dev conventional-changelog-cli
# Option A: standard-version (local tool)
npm install --save-dev standard-version
# .github/workflows/release-please.yml
name: Release Please
on:
Write release notes tailored to who reads them:
# v2.0.0 Release Notes
## Breaking Changes
After (v2.0):
const client = createClient({
baseUrl: 'https://api.example.com',
apiKey: 'my-api-key',
Migration: See Migration Guide below.
Node.js 18 is no longer supported. Node.js 20 LTS is now the minimum.
Failed requests are now automatically retried with exponential backoff.
Configure via the retries option (default: 3).
const client = createClient({ retries: 5, retryDelay: 1000 });
New client.stream() method for Server-Sent Events:
for await (const event of client.stream('/events')) {
console.log(event.data);
}
undici to 6.x (HTTP client)node-fetch dependency (replaced by native fetch)
#### User-Facing Release Notes
```markdown
RELEASE NOTES STRUCTURE:
For developers:
When breaking changes are introduced, communicate them thoroughly:
BREAKING CHANGE COMMUNICATION PLAN:
1. ADVANCE NOTICE (1-2 releases before)
Create detailed migration guides for breaking changes:
# Migration Guide: v1.x to v2.0
## Overview
Find all occurrences of:
createClient(url, apiKey)
Replace with:
createClient({ baseUrl: url, apiKey })
Automated: Run the codemod:
npx @<package>/codemods v2-client-init
| v1.x Method | v2.0 Replacement |
|--|--|
| client.get(path) | client.request('GET', path) |
| client.headers | client.getHeaders() |
| client.onError | client.on('error', handler) |
// Before
import { ClientOptions } from '<package>';
npm test
Check if a named import is used instead of default import:
// Wrong
import { createClient } from '<package>';
Update to Node.js 20: nvm install 20 && nvm use 20
If you need to rollback:
npm install <package>@1
### Step 8: Commit and Transition
If setting up Conventional Commits: Commit: "changelog: configure conventional commits and commitlint"
If generating changelog: Commit: "changelog: generate CHANGELOG.md for v<version>"
If writing release notes: Commit: "changelog: write release notes for v<version>"
If creating migration guide: Commit: "changelog: add migration guide for v<old> to v<new>"
Transition:
## Key Behaviors
IF breaking changes > 0: write migration guide before release.
WHEN commits don't follow conventional format: parse PR titles as fallback.
IF changelog entry count < commit count * 0.5: review for missed changes.
<!-- tier-3 -->
## Quality Targets
- Target: 100% PRs tagged with changelog category
- Generation time: <5min for release notes
- Target: 0 breaking changes without BREAKING CHANGE tag
## HARD RULES
1. **NEVER STOP** until all commits since last release are categorized and the changelog entry is written.
2. **git commit BEFORE verify** — commit the changelog/release notes, then verify formatting.
3. **Automatic revert on regression** — if the generated changelog has incorrect version numbers or dates,
revert and regenerate.
4. **TSV logging** — log every changelog generation run:
timestamp version commits_analyzed entries_generated breaking_changes status
5. **NEVER include internal-only changes** (refactor, test, chore, ci) in user-facing changelogs.
6. **NEVER backdate release entries** — use the actual publication date.
7. **ALWAYS link PRs/issues** — every entry must have a reference.
## Explicit Loop Protocol
When processing commits for changelog generation:
current_iteration = 0 unprocessed_commits = all commits since last tag changelog_entries = []
## Output Format
After each changelog skill invocation, emit a structured report:
CHANGELOG REPORT: | Last release | <tag> (<date>) |
## Keep/Discard
KEEP if: improvement verified. DISCARD if: regression or no change. Revert discards immediately.
## Stop Conditions
Stop when: target reached, budget exhausted, or >5 consecutive discards.
development
Web performance optimization. Lighthouse, bundle analysis, code splitting, image optimization, critical CSS, fonts, service workers, CDN.
development
Webhook design, delivery, retry, HMAC verification, event subscriptions, dead letter queues.
development
Vue.js mastery. Composition API, Pinia, Vue Router, Nuxt SSR/SSG, Vite optimization, testing.
development
Evidence gate. Run command, read full output, confirm or deny claim. No trust, only proof.