From release-automation
Generate changelog entries from commits for any project type
How this skill is triggered — by the user, by Claude, or both
Slash command
/release-automation:changelog-updateThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generates changelog entries from git commits, categorizes changes into Added/Changed/Fixed/Breaking sections following configurable changelog format (default: keep-a-changelog), and updates or creates the changelog file for any project type.
Generates changelog entries from git commits, categorizes changes into Added/Changed/Fixed/Breaking sections following configurable changelog format (default: keep-a-changelog), and updates or creates the changelog file for any project type.
Requires:
detect-project-type skillUse configuration from detect-project-type:
changelog_file - Path to changelog file (default: CHANGELOG.md)changelog_format - Format to use (default: keep-a-changelog)tag_pattern - For finding commits since last tagUse changelog_file from configuration:
changelog_file="CHANGELOG.md" # from config, can be:
# - CHANGELOG.md (standard)
# - HISTORY.md (alternative)
# - CHANGES.rst (Python projects)
# - NEWS.md (GNU projects)
# - {package}/CHANGELOG.md (monorepos)
Check if file exists. If not, create with initial structure based on format:
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/).
Get commits since last release tag:
if [ -n "$last_tag" ]; then
git log ${last_tag}..HEAD --oneline --no-merges
else
# First release - get all commits
git log --oneline --no-merges
fi
For monorepo projects, optionally filter commits by package directory:
# Filter commits that touched this package only
git log ${last_tag}..HEAD --oneline --no-merges -- packages/my-lib/
Parse each commit message and categorize:
Added (new features):
feat: or feat(scope):Changed (modifications to existing features):
refactor: prefixFixed (bug fixes):
fix: or fix(scope):Breaking Changes:
BREAKING CHANGE: in body! after type (e.g., feat!:)Uncategorized:
chore:, docs:, test:, style:) → skip or place in "Changed"Generate entry following this format:
## Version {version} - {date}
### Breaking Changes
- Description of breaking change 1
- Description of breaking change 2
### Added
- New feature description 1
- New feature description 2
### Changed
- Change description 1
- Change description 2
### Fixed
- Bug fix description 1
- Bug fix description 2
Formatting rules:
Read existing changelog file, parse structure, and insert new entry:
Create a commit message from the changelog content:
Release {scope} v{version}
{changelog-entry-body}
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
Return:
{
"changelog_path": "plugins/daily-carry/CHANGELOG.md",
"new_entry": "## Version 1.2.0 - 2026-01-12\n\n### Added\n- New deployment skill\n\n### Fixed\n- Version detection logic",
"commit_message": "Release plugin:daily-carry v1.2.0\n\nAdded:\n- New deployment skill\n\nFixed:\n- Version detection logic\n\nCo-Authored-By: Claude Sonnet 4.5 <[email protected]>",
"categories": {
"added": 1,
"changed": 0,
"fixed": 1,
"breaking": 0
},
"file_created": false
}
Input:
plugin:daily-carry1.2.0daily-carry-v1.1.0Commits:
feat: add deploy-otterstack command
fix: correct git push error handling
docs: update README with examples
Generated Entry:
## Version 1.2.0 - 2026-01-12
### Added
- Add deploy-otterstack command
### Fixed
- Correct git push error handling
Output:
{
"changelog_path": "plugins/daily-carry/CHANGELOG.md",
"new_entry": "## Version 1.2.0 - 2026-01-12\n\n### Added\n- Add deploy-otterstack command\n\n### Fixed\n- Correct git push error handling",
"commit_message": "Release plugin:daily-carry v1.2.0\n\nAdded:\n- Add deploy-otterstack command\n\nFixed:\n- Correct git push error handling\n\nCo-Authored-By: Claude Sonnet 4.5 <[email protected]>",
"categories": {
"added": 1,
"changed": 0,
"fixed": 1,
"breaking": 0
},
"file_created": false
}
Input:
marketplace2.0.0Commits:
feat!: change marketplace schema structure
BREAKING CHANGE: marketplace.json now requires plugins array with explicit versions
Generated Entry:
## Version 2.0.0 - 2026-01-12
### Breaking Changes
- marketplace.json now requires plugins array with explicit versions
### Added
- Change marketplace schema structure
Input:
variants1.2.0Generated Entry:
## Version 1.2.0 - 2026-01-12
- Update Android and TypeScript variants with new git workflow patterns
Commit Message:
Release variants v1.2.0
Update Android and TypeScript variants with new git workflow patterns
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
Input:
plugin:new-plugin1.0.0Generated Entry:
## Version 1.0.0 - 2026-01-12
### Added
- Initial release of new-plugin
This skill is invoked by the /release command in Phase 3. The command will:
npx claudepluginhub jayteealao/agent-skills --plugin release-automationGenerates or refreshes CHANGELOG.md from conventional git commits in Keep a Changelog format. Incremental mode appends new commits; --from-scratch regenerates from tags/full history.
Analyzes git commit history to generate changelogs with semantic versioning, conventional commit categorization, and formats like Keep a Changelog, Conventional, or GitHub. Use for CHANGELOG.md updates, release notes, and version bumps.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.