From memstack
Generates formatted CHANGELOG.md from git commit history by categorizing conventional commits into Added, Fixed, Changed, and Breaking sections using Keep a Changelog format.
npx claudepluginhub cwinvestments/memstack --plugin memstackThis skill uses the workspace's default tool permissions.
*Produces a formatted CHANGELOG.md from git commit history, grouped by type and ready for release.*
Generates CHANGELOG.md from git commit history following Keep a Changelog format. Groups changes by type (Added, Changed, Fixed), supports conventional commits, links commits/PRs, maintains semantic versioning.
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.
Generates user-facing changelogs from git commits by scanning history, categorizing changes like features and fixes, and translating technical details to customer-friendly notes. Use for release notes, product updates, and app store submissions.
Share bugs, ideas, or general feedback.
Produces a formatted CHANGELOG.md from git commit history, grouped by type and ready for release.
| Trigger | Status |
|---|---|
| User says "generate changelog" or "update changelog" | ACTIVE |
| User says "what changed" or "release notes" | ACTIVE |
| User says "write changelog" or "changelog since" | ACTIVE |
| User wants to view git log only | NOT this skill — use git commands directly |
| User wants a diary entry | NOT this skill — use Diary |
Ask the user or infer from context:
| Parameter | Default | Example |
|---|---|---|
| Since tag/date | Last tag or last 7 days | v3.3.0, 2026-03-01 |
| Until | HEAD | v3.4.0, HEAD |
| Format | Keep a Changelog | Conventional, custom |
# Find the last tag
git describe --tags --abbrev=0 2>/dev/null || echo "No tags found"
# Get commits since last tag (or date)
git log --oneline --no-merges $(git describe --tags --abbrev=0 2>/dev/null || echo "HEAD~50")..HEAD
Parse each commit message and classify by prefix:
| Prefix | Category | Changelog Section |
|---|---|---|
feat: / feature: | Features | ### Added |
fix: / bugfix: | Bug Fixes | ### Fixed |
docs: | Documentation | ### Changed |
refactor: | Refactoring | ### Changed |
perf: | Performance | ### Changed |
test: | Tests | (omit unless user requests) |
chore: / build: / ci: | Maintenance | (omit unless user requests) |
BREAKING CHANGE or !: | Breaking | ### Breaking Changes |
| No prefix | Uncategorized | ### Other |
Follow Keep a Changelog format:
## [version] - YYYY-MM-DD
### Breaking Changes
- Description of breaking change ([commit-hash])
### Added
- New feature description ([commit-hash])
### Fixed
- Bug fix description ([commit-hash])
### Changed
- Refactor/improvement description ([commit-hash])
Writing rules:
# Check if CHANGELOG.md exists
ls CHANGELOG.md 2>/dev/null
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/),
and this project adheres to [Semantic Versioning](https://semver.org/).
## [version] - YYYY-MM-DD
...
Changelog entry for [version] ([date]):
- [N] features added
- [N] bugs fixed
- [N] changes
- [N] breaking changes
Ready to write to CHANGELOG.md? (prepend / overwrite / clipboard only)