From beagle-core
Generates Keep a Changelog release notes from git changes since a tag. Categorizes commits/PRs by semver impact, suggests version bump, includes PR links.
How this skill is triggered — by the user, by Claude, or both
Slash command
/beagle-core:gen-release-notesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate professional release notes following the Keep a Changelog standard.
Generate professional release notes following the Keep a Changelog standard.
Input: Previous tag (e.g., v0.0.1)
$ARGUMENTS
Use extended thinking to analyze the changes thoroughly before generating release notes.
Run these commands to collect information about changes since the provided tag:
# Store the previous tag
PREV_TAG="$ARGUMENTS"
# Verify the tag exists
git tag -l "$PREV_TAG"
# Get the repo URL for PR links
git remote get-url origin
# List commits since last tag
git log ${PREV_TAG}..HEAD --pretty=format:"%h %s" --no-merges
# Get detailed diff stats
git diff ${PREV_TAG}..HEAD --stat
# List changed files by directory
git diff ${PREV_TAG}..HEAD --name-only | sort | uniq
Also gather PR information:
# Get merged PRs since the tag (requires gh CLI)
gh pr list --state merged --search "merged:>=$(git log -1 --format=%ci $PREV_TAG | cut -d' ' -f1)" --json number,title,author,labels
Categorize each change into exactly one of these groups (in this order):
| Category | Include | Exclude |
|---|---|---|
| Added | New features, new public APIs, new CLI commands | Internal utilities not exposed to users |
| Changed | Modified behavior, performance improvements, updated dependencies with user impact | Refactors with no behavior change |
| Deprecated | Features marked for future removal | - |
| Removed | Deleted features, removed public APIs | Removed internal code |
| Fixed | Bug fixes, error handling improvements | Test-only fixes |
| Security | Vulnerability patches, security hardening | - |
Exclude entirely:
Based on the changes, suggest the next version following Semantic Versioning:
Detect the tag format from existing tags (with or without v prefix).
Generate a CHANGELOG.md entry using this exact format:
## [VERSION] - YYYY-MM-DD
### Added
- **scope:** Add new feature description ([#54](REPO_URL/pull/54))
### Changed
- **Breaking:** Rename `oldName()` to `newName()` for consistency ([#145](REPO_URL/pull/145))
**Migration:** Replace all calls to `oldName()` with `newName()`.
### Deprecated
- **scope:** Deprecate `legacy_function()` in favor of `new_function()` ([#143](REPO_URL/pull/143))
### Removed
- **Breaking:** Remove deprecated `old_function()` ([#141](REPO_URL/pull/141))
### Fixed
- **scope:** Fix race condition when multiple workers access shared state ([#139](REPO_URL/pull/139))
### Security
- **deps:** Update vulnerable package to patched version ([#49](REPO_URL/pull/49))
Format requirements:
**server:**, **cli:**, **api:**Breaking changes:
**Breaking:****Migration:** block on the next line explaining exactly what users must changeTone:
Bad examples to avoid:
# BAD - Too vague
- Fixed bugs
- Performance improvements
- Updated dependencies
# BAD - Implementation-focused
- Refactored the internal state machine to use async/await
# BAD - Missing context
- Fixed #234
Good examples to follow:
# GOOD - Specific and user-focused
- **server:** Fix timeout errors when processing files larger than 100MB ([#234](URL))
- **cli:** Add `--dry-run` flag to preview changes before execution ([#235](URL))
- **api:** Improve cold-start latency from 2.3s to 0.8s by lazy-loading plugins ([#236](URL))
If CHANGELOG.md exists:
## [Unreleased] section (or at top if no Unreleased)If CHANGELOG.md doesn't exist, create it with this header:
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
After updating the changelog, provide:
Map commit prefixes to changelog categories:
| Commit Prefix | Changelog Category |
|---|---|
feat(scope): | Added |
feat!(scope): | Added (with Breaking prefix) |
fix(scope): | Fixed |
perf(scope): | Changed |
security(scope): | Security |
docs:, chore:, ci:, test:, style: | Exclude |
npx claudepluginhub existential-birds/beagle --plugin beagle-coreGenerates human-friendly changelogs from git history, PRs, or ref ranges. Follows Keep a Changelog format and polishes commit messages.
Generates structured changelogs and release notes from git history and PRs by parsing conventional commits and classifying changes. Useful for preparing releases.
Generates Markdown changelogs from git commits, parsing conventional types, suggesting semantic versions, and using Keep a Changelog format with breaking change highlights.