From kmp-forge
Configure and run git-cliff to generate CHANGELOG.md and GitHub Release bodies from Conventional Commits in kmp-forge-scaffolded projects. Use when setting up changelog automation, releasing a new version, or troubleshooting changelog output.
How this skill is triggered — by the user, by Claude, or both
Slash command
/kmp-forge:git-cliff-changelogThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
[git-cliff](https://git-cliff.org/) is a small Rust binary that parses Conventional Commits and generates a `CHANGELOG.md` / release body. It's our changelog tool by default for kmp-forge projects.
git-cliff is a small Rust binary that parses Conventional Commits and generates a CHANGELOG.md / release body. It's our changelog tool by default for kmp-forge projects.
brew install git-cliff
cliff.toml ships at project root via the kmp-forge overlay. Verify it has:
[git]
conventional_commits = true
tag_pattern = "v[0-9]+.[0-9]+.[0-9]+"
sort_commits = "newest"
[git.commit_parsers]
# feat → Features, fix → Fixes, chore → Chore, etc.
Full template: see overlay/root/cliff.toml.
git cliff --latest --strip header
Pipes into softprops/action-gh-release@v2 as the body input.
git cliff -o CHANGELOG.md
Commit the result with docs(changelog): regenerate. Some projects re-commit CHANGELOG.md on every release; some let CI handle release-only generation. For solo projects, regenerating manually before each release is simplest.
git cliff --unreleased
Shows everything since the last tag. Useful before deciding the semver bump.
The default commit_parsers map:
| Prefix | Group |
|---|---|
feat | Features |
fix | Fixes |
perf | Performance |
refactor | Refactor |
docs | Documentation |
chore | Chore |
build | Build |
ci | CI |
test | Tests |
Anything that doesn't match falls under "Other" (or is filtered out — config-dependent).
Commits with BREAKING CHANGE: footer or <type>!: get a BREAKING suffix in the generated entry. The cliff.toml template shipped by kmp-forge handles this automatically.
Example output:
### Features
- feat(gallery): add multi-select (abc1234) **BREAKING**
- feat(auth): support 2FA (def5678)
git cliff --unreleased to previewgit tag -a v0.3.0 -m "Release v0.3.0"git push origin v0.3.0 → triggers .github/workflows/release.ymlorhun/git-cliff-action@v3 + uploads artifactstag_pattern in cliff.toml.commit_parsers rule. Either add a parser, or fix the commit message (rebase + force-push if not yet merged).fetch-depth: 0 in the checkout step. Workflow ships with that already.The shipped release.yml runs git cliff --latest --strip header only — does not auto-update CHANGELOG.md in the repo. Maintainer commits CHANGELOG updates manually if they care about a committed file. The GitHub Release body always reflects the latest generated content.
npx claudepluginhub arthurnagy/kmp-forge --plugin kmp-forgeGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.