engineering/skills/changelog-generator/SKILL.md
Produce consistent, auditable release notes from Conventional Commits. Separates commit parsing, semantic-bump logic, and changelog rendering for automated releases with editorial control. Use when cutting a release, generating CHANGELOG.md from git history, computing the next semantic version from commits, automating release notes in CI, or planning a hotfix/rollback. Examples: 'generate the changelog for v1.4.0', 'what version bump do these commits require', 'we need an emergency hotfix process'.
npx skillsauth add alirezarezvani/claude-skills changelog-generatorInstall 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.
Tier: POWERFUL
Category: Engineering
Domain: Release Management / Documentation
Use this skill to produce consistent, auditable release notes from Conventional Commits. It separates commit parsing, semantic bump logic, and changelog rendering so teams can automate releases without losing editorial control.
major, minor, patch) from commit streamAdded, Changed, Fixed, etc.)python3 scripts/generate_changelog.py \
--from-tag v1.3.0 \
--to-tag v1.4.0 \
--next-version v1.4.0 \
--format markdown
git log v1.3.0..v1.4.0 --pretty=format:'%s' | \
python3 scripts/generate_changelog.py --next-version v1.4.0 --format markdown
python3 scripts/generate_changelog.py --input commits.txt --next-version v1.4.0 --format json
CHANGELOG.mdpython3 scripts/generate_changelog.py \
--from-tag v1.3.0 \
--to-tag HEAD \
--next-version v1.4.0 \
--write CHANGELOG.md
When the user has not decided the next version, derive it instead of guessing:
git log v1.3.0..HEAD --oneline | \
python3 scripts/version_bumper.py --current-version 1.3.0 --output-format json
Output JSON contains recommended_version, bump_type (major/minor/patch/none), and with --include-commands the exact git tag commands. Feed recommended_version into generate_changelog.py --next-version. Pre-releases: add --prerelease alpha|beta|rc. Input must be real git log --oneline output (hex hashes); a sample lives at assets/sample_git_log.txt.
python3 scripts/commit_linter.py --from-ref origin/main --to-ref HEAD --strict --format text
Or file/stdin:
python3 scripts/commit_linter.py --input commits.txt --strict
cat commits.txt | python3 scripts/commit_linter.py --format json
Supported types:
feat, fix, perf, refactor, docs, test, build, ci, choresecurity, deprecated, removeBreaking changes:
type(scope)!: summaryBREAKING CHANGE:SemVer mapping:
majorfeat -> minorpatchpython3 scripts/generate_changelog.py --help
--inputpython3 scripts/commit_linter.py --help
--strict mode on violationsfeat(api): ...) in multi-package repos.[Unreleased] section for manual curation when needed.When a release goes wrong, classify before acting (full procedures in references/hotfix-procedures.md):
| Severity | Definition | SLA | Approval | |---|---|---|---| | P0 — Critical | Outage, data loss, exploited vulnerability | Fix deployed ≤ 2h; emergency deploy bypasses normal gates | Engineering Lead + On-call Manager | | P1 — High | Major feature broken, significant user impact | Fix deployed ≤ 24h; expedited review | Engineering Lead + Product Manager | | P2 — Medium | Minor issues, limited impact | Next release cycle | Standard PR review |
Hotfix branch comes from the last stable tag, contains the minimal fix only, and gets its own patch-bump changelog entry via the workflow above.
Pre-commit to these thresholds before tagging; roll back when any fires:
| Trigger | Threshold | |---|---| | Error rate spike | > 2x baseline within 30 min | | Performance degradation | > 50% latency increase | | Feature failure | Core functionality broken | | Security incident | Vulnerability being exploited | | Data corruption | Database integrity compromised |
Prefer feature-flag disable over code rollback; database rollbacks only for non-destructive migrations (forward-only migrations preferred). See references/hotfix-procedures.md.
Use this release flow for predictability:
Security section.commit_linter.py --strict on all PRs.CHANGELOG.md on main branch.development
Use when someone wants to run a weekly review, close open loops, audit stalled projects and commitments, get their system back to trusted, restart a lapsed review habit, or says "/cs:weekly-review". Walks David Allen's three-phase loop — GET CLEAR, GET CURRENT, GET CREATIVE — with deterministic scripts that inventory open loops, gate the checklist with named gaps, and score commitment health 0-100.
development
Use when someone wants to decide whether a meeting is worth calling, price a meeting in dollars, build a timeboxed agenda with desired outcomes, or turn messy meeting notes into owned action items — or says "should this be a meeting", "/cs:meeting-prep", or "/cs:meeting-actions". Runs a cost gate (ASYNC / NOT-READY / MEET), builds a decision-first agenda, and extracts an owner + due-date checklist that flags every orphan.
development
Convert a rambling description of a desired outcome into one polished, autonomous /goal prompt ready to paste into a fresh session. Use when the user says "/fable-goal", "turn this into a goal prompt", "write me a fable prompt", "write the prompt that builds X", or rambles about something they want made and asks for the prompt that makes it happen. The output is a single copy-paste prompt, never the build itself. Do NOT use when the user wants the thing built right now in this session — only when they want the PROMPT that will make it happen in a fresh session.
development
Use when someone wants to plan a deep work day, time-block their calendar or task list, budget or cut shallow work, protect focus hours, track deep-work sessions and streaks, run an end-of-day shutdown ritual, or says "/deep-work" or "/time-block". Classifies tasks deep vs shallow, builds an energy-first time-blocked schedule that refuses deep demand past the 4-hour ceiling, batches shallow work into at most two windows, and logs focus sessions against a weekly target.