From carl-tools
Generate user-facing changelog entries from git history — plain language, audience-segmented, with optional CHANGELOG.md update.
How this skill is triggered — by the user, by Claude, or both
Slash command
/carl-tools:changelog-writerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turns git commits into changelog entries humans want to read. Covers the gap between "git log --oneline" (too technical) and "nothing" (too common).
Turns git commits into changelog entries humans want to read. Covers the gap between "git log --oneline" (too technical) and "nothing" (too common).
Ask or infer:
git log $(git describe --tags --abbrev=0)..HEAD if tags exist, else git log HEAD~20..HEAD.[NEXT VERSION].# Check if tags exist
git describe --tags --abbrev=0 2>/dev/null && \
echo "Use: git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:'%H %s' --no-merges" || \
echo "No tags found — use: git log HEAD~20..HEAD --pretty=format:'%H %s' --no-merges"
Run:
git log <range> --pretty=format:"%H %s" --no-merges
For each commit, also read the full diff summary:
git show --stat <SHA>
Group commits by type if using conventional commits (feat, fix, docs, chore, refactor, perf, test, build, ci). Otherwise, read the commit message and classify by likely intent.
For each commit, decide:
Affects users? → Include in "Users" section
Affects developers integrating or extending? → Include in "Developers" section
Affects deployment, configuration, or operations? → Include in "Operators" section
Internal only? → SKIP (refactors, test changes, CI changes, code style)
| Raw commit | Translated entry |
|---|---|
fix: resolve null pointer in UserService.processPayment | Fixed a bug that caused payment processing to fail for some users. |
feat: add dark mode toggle to settings panel | You can now switch to dark mode in Settings. |
perf: replace O(n²) sort in feed ranking | Feeds with many items now load significantly faster. |
chore: upgrade postgres driver to 16.x | (Operators) Updated database driver — no action required unless pinning the old version. |
feat: add /v2/webhooks endpoint with retry logic | (Developers) New: /v2/webhooks endpoint with automatic retry on failure. See API docs. |
refactor: extract PaymentGateway interface | SKIP — internal only. |
Rules for writing:
## [NEXT VERSION] - YYYY-MM-DD
### For Users
- **New:** [feature description]
- **Fixed:** [bug fix description]
- **Changed:** [behavior change and why]
### For Developers
- **Breaking:** [what changed, how to migrate]
- **New:** [new API/hook/event]
### For Operators
- **Action required:** [what to do before deploying]
- **New config:** [variable name and purpose]
Omit the markdown headers. Write short prose paragraphs instead of bullet lists. Friendly tone, no technical filler.
# Changelog header (or top of file).Before presenting, check:
If any check fails, revise before presenting.
<anti_patterns>
| Don't | Do instead |
|---|---|
| Include commit SHAs or branch names in the Users section | Write about what the user experiences, not what the developer did |
| Write "Various improvements and bug fixes" | Name the specific fix or improvement, or skip it |
| Put refactors and test changes in any audience section | Internal changes have no changelog entry |
| Use function names, file names, or class names in the Users section | Translate to user experience: "payment processing" not "UserService.processPayment" |
| Write passive vague entries ("Performance has been improved") | Name the scenario: "Large dashboards now load in under 2 seconds" |
| Produce a Developers section entry without migration guidance for breaking changes | Always include "Before: X. After: Y. To migrate: Z." |
| Produce an Operators section entry without the exact variable name or command | Be specific: REDIS_MAX_CONNECTIONS=50 not "configure Redis appropriately" |
| Cover 0 commits in a section when none qualify | Omit the section entirely if it has no entries |
</anti_patterns>
<success_criteria>
The changelog is complete when:
</success_criteria>
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub carlkibler/agent-skills --plugin ralph-loop