skills/changelog-composer/SKILL.md
Generates structured changelogs and release notes from git history and PRs, classifying breaking changes, features, fixes, performance, docs. Triggers on: "generate changelog", "write release notes", "what changed since", "prepare release", "release notes for", "diff since tag".
npx skillsauth add mathews-tom/armory changelog-composerInstall 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.
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:
testing
Manages dependent branch stacks and stacked pull requests using safe Git topology rules. Triggers on: "create stacked PRs", "publish this stack", "sync my PR stack", "rebase this stack", "merge the stack", "retarget child PRs", "split this branch into stacked PRs", "validate this stack", "cleanup stacked branches". Use when local branches or one source branch need to become a dependency-ordered PR stack with correct parent bases, validation, synchronization, merge order, and cleanup.
development
Scaffolds per-repository agent context so coding agents share the same issue tracker rules, triage label vocabulary, domain glossary, ADR layout, and handoff conventions. Triggers on: "set up project context", "configure agent docs", "create CONTEXT.md", "setup agent workflow", "agent issue tracker setup", "triage labels", "domain glossary for agents". Use when a repo needs durable context files before planning, triage, debugging, TDD, architecture review, or multi-agent implementation.
testing
Produces phased task boards from feature requests: dependency-mapped work items, parallelization flags, risk flags, edge cases, test matrices. Triggers on: "decompose this feature", "task breakdown with dependencies", "phased implementation plan", "work breakdown structure". NOT for effort estimates, use estimate-calibrator.
development
Hypothesis-driven debugging with ranked hypotheses, git bisect strategy, instrumentation planning, and minimal reproduction design. Triggers on: "debug this systematically", "root cause analysis", "bisect this bug", "rank hypotheses", "isolate this issue", "minimal reproduction". NOT for general reasoning.