From armory
Generates structured changelogs and release notes from git history and PRs by parsing conventional commits and classifying changes. Useful for preparing releases.
How this skill is triggered — by the user, by Claude, or both
Slash command
/armory:changelog-composerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Transforms raw git history and PR descriptions into polished, audience-appropriate
Transforms raw git history and PR descriptions into polished, audience-appropriate changelogs. Parses conventional commits, classifies changes by impact category, filters internal-only modifications, and produces structured release notes with PR links — following Keep a Changelog conventions.
| File | Contents | Load When |
|---|---|---|
references/conventional-commits.md | Commit type parsing, scope extraction, breaking change indicators | Repository uses conventional commits |
references/categorization-rules.md | Change classification logic, audience filtering, severity ordering | Always |
references/audience-filter.md | User-facing vs internal change detection, exclusion patterns | Always |
references/changelog-formats.md | Keep a Changelog, GitHub Releases, announcement copy templates | Format selection needed |
Collect all changes between the previous release and the current state:
git describe --tags --abbrev=0.
If no tags exist, use the initial commit or a user-specified starting point.git log <last-tag>..HEAD --oneline --no-mergesgh pr list --state merged --base main --search "merged:>YYYY-MM-DD"
or parse merge commit messages.feat:, fix:, docs:, etc.), extract type, scope, and description. See
references/conventional-commits.md.BREAKING CHANGE: in commit
bodies, ! after type (feat!:), or explicit annotations in PR descriptions.Categorize each change by its impact:
| Category | Conventional Commit Type | Indicators |
|---|---|---|
| Breaking Changes | feat!:, BREAKING CHANGE: | API removal, signature change, behavior change |
| Features | feat: | New capability, new endpoint, new command |
| Fixes | fix: | Bug correction, error handling improvement |
| Performance | perf: | Speed improvement, memory reduction |
| Documentation | docs: | README, API docs, guides |
| Internal | chore:, ci:, refactor:, test:, build: | No user-facing impact |
For repositories without conventional commits, classify by reading the commit message and changed files. Code changes to public API → Feature or Fix. Test-only changes → Internal.
Exclude internal changes by default:
Include internal changes only when:
Highlight breaking changes prominently — always at the top, always with migration guidance.
For each included change, write a human-readable description:
Assemble the changelog in the requested format, ordered by severity:
## [{version}] - {YYYY-MM-DD}
### Breaking Changes
- **`function_name` parameter renamed** — `old_param` is now `new_param`.
Migration: find/replace `old_param=` with `new_param=` in all call sites. ([#{pr}]({url}))
### Features
- **{Feature name}** — {What it enables and why it matters}. ([#{pr}]({url}))
### Fixes
- Fixed {symptom} when {condition}. ([#{pr}]({url}))
### Performance
- {Operation} is now {X}x faster / uses {X}% less memory. ([#{pr}]({url}))
### Documentation
- Added {guide/reference} for {topic}. ([#{pr}]({url}))
| Mode | Input | Output | When to Use |
|---|---|---|---|
release | Tag-to-HEAD | Full changelog entry | Preparing a versioned release |
sprint | Date range or commit range | Summary of changes | Sprint review, status update |
pr | Single PR | One-line changelog entry | PR description template |
| Problem | Resolution |
|---|---|
| No tags exist in repository | Ask for a starting commit or date. Default to the initial commit if the repository is small. |
| Repository doesn't use conventional commits | Classify by reading commit messages and changed files. Note reduced classification accuracy. |
| PR descriptions are empty or low-quality | Fall back to commit messages. Flag entries that may need manual review. |
| Ambiguous change classification | Default to "Features" for additions, "Fixes" for modifications. Mark uncertain entries for review. |
| Too many changes for a single release | Group by component/module. Consider whether the release should be split. |
| Merge commits obscure individual changes | Use --no-merges to skip merge commits. Parse individual commits within merged PRs. |
Push back if:
npx claudepluginhub mathews-tom/armory --plugin armoryGenerates human-friendly changelogs from git history, PRs, or ref ranges. Follows Keep a Changelog format and polishes commit messages.
Generates user-friendly changelogs from git commit history by scanning, categorizing (features, fixes, etc.), filtering noise, and rephrasing technical details for customers.
Generates user-friendly changelogs from git commit history by categorizing changes and rephrasing technical details for releases, updates, and app stores.