From agents
Generate changelogs, release notes, and migration guides from git history. Parse conventional commits. Use for releases. NOT for git ops (git-workflow) or doc sites (docs-steward).
npx claudepluginhub wyattowalsh/agents --plugin agentsThis skill uses the workspace's default tool permissions.
Generate changelogs, release notes, breaking change summaries, migration guides, and version bump recommendations from git history.
data/breaking-change-patterns.jsondata/changelog-formats.jsonevals/generate-changelog.jsonevals/implicit-trigger.jsonevals/negative-control.jsonevals/release-notes.jsonevals/version-bump.jsonreferences/changelog-conventions.mdreferences/commit-parsing.mdscripts/changelog-formatter.pyscripts/commit-classifier.pyCreates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Generate changelogs, release notes, breaking change summaries, migration guides, and version bump recommendations from git history.
Scope: Changelog and release documentation only. NOT for git operations (git-workflow), documentation sites (docs-steward), or code review (honest-review).
| $ARGUMENTS | Mode |
|---|---|
Empty / generate | Generate changelog from recent commits |
release <version> | User-facing release notes for specific version |
breaking | Breaking change detection and summary |
migration <from> <to> | Migration guide between two versions |
bump | Semantic version recommendation based on changes |
| Unrecognized input | Ask for clarification, show mode menu |
| Term | Definition |
|---|---|
| conventional commit | Commit following type(scope): description format |
| change type | Classification: feat, fix, refactor, perf, docs, chore, test, ci, build, style |
| breaking change | Backward-incompatible change, marked by ! or BREAKING CHANGE: footer |
| scope | Component affected, in parentheses after type |
| changelog entry | Formatted line item in a changelog section |
| release notes | User-facing summary of changes for a version |
| migration guide | Step-by-step instructions to upgrade between versions |
| semver bump | major (breaking), minor (feat), patch (fix) recommendation |
| unreleased | Changes since the last tagged version |
Default mode. Produces a Keep a Changelog formatted document.
Run the commit classifier script:
uv run python skills/changelog-writer/scripts/commit-classifier.py [--since <tag-or-date>] [--until <ref>] [--path <dir>]
Parse the JSON output. The script classifies each commit by conventional type and detects breaking changes.
Run the changelog formatter script:
uv run python skills/changelog-writer/scripts/changelog-formatter.py --input <classified-json> [--format keepachangelog|github|simple]
The script converts classified commits to formatted markdown. Default format: Keep a Changelog.
Format reference: read references/changelog-conventions.md
release <version> produces polished, user-facing release notes.
Determine the range: last tag to HEAD (or between two tags if version already tagged).
git log --oneline <previous-tag>..<version-or-HEAD>
Run commit-classifier.py with the appropriate --since and --until flags. Group by user impact, not commit type:
Rewrite technical commit messages into user-facing language. Reference: read references/changelog-conventions.md, section "Release Note Style."
breaking scans for backward-incompatible changes.
Run the commit classifier with breaking-change focus:
uv run python skills/changelog-writer/scripts/commit-classifier.py --breaking-only [--since <tag>]
For each breaking change:
Use patterns from data/breaking-change-patterns.json for language-specific detection.
Output a breaking changes report with severity ranking (high/medium/low) based on blast radius and migration effort.
migration <from> <to> generates step-by-step upgrade instructions.
Run commit classifier between the two versions:
uv run python skills/changelog-writer/scripts/commit-classifier.py --breaking-only --since <from> --until <to>
For each breaking change, produce:
Order steps by dependency (changes that must happen first go first).
Structure as a numbered checklist. Include a pre-migration checklist (backup, test suite green) and post-migration verification steps.
Reference: read references/changelog-conventions.md, section "Migration Guide Structure."
bump recommends the next semantic version.
Run the commit classifier:
uv run python skills/changelog-writer/scripts/commit-classifier.py --since <last-tag>
Read the suggested_bump field from the JSON output.
Present the recommendation with evidence:
| Bump | Reason |
|---|---|
| major | Breaking changes detected: list them |
| minor | New features without breaking changes |
| patch | Bug fixes and non-functional changes only |
Show the commit evidence supporting the recommendation. If commits are ambiguous (non-conventional format), flag uncertainty and ask for confirmation.
Load ONE reference at a time.
| File | Content | Read When |
|---|---|---|
references/changelog-conventions.md | Keep a Changelog format, release note style, migration guide structure, semver decision tree | Formatting output in any mode |
references/commit-parsing.md | Conventional commits parsing rules, breaking change detection heuristics | Understanding classifier output or edge cases |
| Data File | Content | Used By |
|---|---|---|
data/changelog-formats.json | Format templates (Keep a Changelog, GitHub Releases, simple) | changelog-formatter.py |
data/breaking-change-patterns.json | Language-specific breaking change detection patterns | commit-classifier.py, Mode 3 enrichment |
| Script | Purpose |
|---|---|
scripts/commit-classifier.py | Parse git log, classify by conventional type, detect breaking changes |
scripts/changelog-formatter.py | Convert classified commits JSON to formatted changelog markdown |
git log and git tag — this skill reads onlycommit-classifier.py before formatting — do not manually parse git log