Loading...
Loading...
Generates structured changelogs and release notes from git history and PR descriptions. Classifies changes into breaking, features, fixes, performance, and docs. Filters internal-only changes, detects breaking changes, and produces human-readable entries linked to source PRs. Triggers on: "generate changelog", "write release notes", "compose changelog", "what changed since", "changes since last release", "prepare release", "release notes for", "changelog for", "summarize changes", "diff since tag". Use this skill when preparing a release and needing to summarize changes for users.
npx skill4agent add mathews-tom/praxis-skills changelog-composer| File | Contents | Load When |
|---|---|---|
| Commit type parsing, scope extraction, breaking change indicators | Repository uses conventional commits |
| Change classification logic, audience filtering, severity ordering | Always |
| User-facing vs internal change detection, exclusion patterns | Always |
| Keep a Changelog, GitHub Releases, announcement copy templates | Format selection needed |
git describe --tags --abbrev=0git log <last-tag>..HEAD --oneline --no-mergesgh pr list --state merged --base main --search "merged:>YYYY-MM-DD"feat:fix:docs:references/conventional-commits.mdBREAKING CHANGE:!feat!:| Category | Conventional Commit Type | Indicators |
|---|---|---|
| Breaking Changes | | API removal, signature change, behavior change |
| Features | | New capability, new endpoint, new command |
| Fixes | | Bug correction, error handling improvement |
| Performance | | Speed improvement, memory reduction |
| Documentation | | README, API docs, guides |
| Internal | | No user-facing impact |
## [{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 |
|---|---|---|---|
| Tag-to-HEAD | Full changelog entry | Preparing a versioned release |
| Date range or commit range | Summary of changes | Sprint review, status update |
| 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 |