skills/git-keep-a-changelog/SKILL.md
Create or update CHANGELOG.md from git history using Keep a Changelog 1.1.0 style. Use when the user asks to create/update changelog, draft release notes, or mentions SemVer-aware summaries. Trigger phrases: "finalize", "ready to release", "rtr", "release" (especially with version branches like v0.3.1/...), "yolo", "auto". Reads full commit bodies and diffs, creates compliant structure with required SemVer highlights, infers versions from branches, must ask a mandatory Yes / No / Custom confirmation question before including pending staged, unstaged, or untracked worktree changes in a concrete release draft (bypassed in yolo/auto mode — all changes included automatically), edits directly for review, preserves prose wrapping, avoids commit-log dumps.
npx skillsauth add codebeltnet/agentic git-keep-a-changelogInstall 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.

This skill creates or updates CHANGELOG.md directly using the Keep a Changelog 1.1.0 structure. It is git-aware, changelog-focused, and optimized for a human-readable release summary rather than generated release-note noise.
Read FORMS.md when pending worktree changes require user confirmation and the host supports native structured input controls. If native structured input is unavailable, use the deterministic plain-text fallback defined there. FORMS.md is not used in yolo/auto mode — see Yolo / Auto Mode below.
When the user's request contains yolo or auto (case-insensitive, anywhere in the message), the skill operates in full-autonomy mode:
Yes / No / Custom gate.CHANGELOG.md directly, then stop for user review.CHANGELOG.md does not exist, create a compliant one before populating it.v0.3.0/, use that to target a concrete release heading.## [Unreleased].major, minor, or patch.Added, Changed, Deprecated, Removed, Fixed, Security., and end the last bullet in each section with ..Yes / No / Custom prompt. Exception: in yolo/auto mode, include all pending changes automatically without asking.These checkpoints cannot be skipped or bypassed, even when the user's opening request sounds like a shortcut.
## [1.2.3], present the confirmation question before drafting or writing the changelog entry. Bypassed in yolo/auto mode — all pending changes are included automatically.major, minor, or patch., except the final bullet in each populated section, which must end with . Do not finish the edit until this is consistent.Every updated changelog entry must begin with a short human-written highlight paragraph directly below the heading.
That highlight must:
major, minor, or patch releaseExample shape:
## [0.3.0] - 2026-03-16
This is a minor release focused on grouped git visual summaries,
validator hardening, and clearer changelog automation guidance.
### Added
...
When the history clearly carries migration risk or upgrade caveats, add an advisory block such as:
> [!WARNING]
> Upgrading to this release requires ...
Only add callouts when the commits or diff justify them.
Explicit instructions such as staged only, include unstaged changes, or exclude untracked can refine the changelog scope after the Step 3 confirmation gate has been presented and answered.
include everything, all changes, commit manually, or don't ask.major, minor, or patch classification.The Step 3 confirmation gate exists to prevent silent inclusion of worktree changes in a permanent release entry. It is a required safety checkpoint, not optional friction.
Exception — yolo/auto bypasses the gate by design. When the user explicitly passes yolo or auto, they are granting full autonomy. That is not a vague hint like include everything — it is a deliberate, recognized mode. Skip Step 3, include all pending changes, and proceed.
Silent inclusion of pending changes in a changelog is a production risk. The gate ensures the release scope is intentional, visible, and explicitly confirmed before the draft becomes part of the project's recorded release history.
Use the most explicit range the user gave you.
main, then master.Helpful commands:
git status --short --branch
git rev-parse --abbrev-ref HEAD
git rev-parse --abbrev-ref --symbolic-full-name @{upstream}
git merge-base HEAD @{upstream}
git merge-base HEAD main
git merge-base HEAD master
Determine whether to write a concrete release section or update [Unreleased].
When the user asks to "finalize", "ready to release", "rtr", "release", "publish", or "ship" (or similar release-intent words):
v0.3.0/feature-name.## [X.Y.Z] - YYYY-MM-DD (today's date) for that extracted version.Otherwise:
v0.3.0/feature-name, target ## [0.3.0] - YYYY-MM-DD.v from the visible changelog heading, but keep tag comparisons in vX.Y.Z form.## [Unreleased].This is a required checkpoint. Do not proceed to Step 4 until this step is complete.
After resolving the target heading, check whether the worktree contains changes that are not part of the committed history yet.
If yolo/auto mode is active: skip this entire step. Include all pending changes (staged, unstaged, untracked) automatically and proceed to Step 4.
## [1.2.3], you must ask a direct confirmation question before drafting the changelog entry.all changes, include everything, commit manually, or don't ask do not bypass this gate.FORMS.md for this confirmation flow, but keep the prompt text and Yes / No / Custom meaning identical to the plain-text path.I found pending changes not yet committed for release 1.2.3: 4 staged, 2 unstaged, 1 untracked. Include them in the changelog draft? Yes / No / Custom
Custom or asks for detail.Yes means include the pending changes in addition to the committed range.No means use committed history only.Custom means let the user narrow the scope, for example staged only or exclude untracked.Yes / No / Custom order, same meaning, and the same follow-up scope question only when Custom is chosen.## [Unreleased], use the same short prompt when pending worktree changes are relevant to the user's request. Do not silently fold them into the draft unless the user explicitly asked for current worktree coverage.Helpful commands:
git status --short --branch
git diff --cached --stat
git diff --stat
git ls-files --others --exclude-standard
Read enough git history to understand what the release actually changed.
--oneline.Helpful commands:
git log --reverse --format=medium <range>
git log --reverse --stat --format=medium <range>
git diff --stat <base>..HEAD
git diff <base>..HEAD
git diff --cached
git diff
git ls-files --others --exclude-standard
Infer the SemVer class from the actual change set.
major when the release includes breaking removals, required migration, incompatible contract changes, or other true breaking behavior.minor when the release adds meaningful new capabilities without breaking existing consumers.patch when the release is primarily fixes, service updates, docs, validation, maintenance, dependency work, or other non-breaking refinement.Do not over-classify from dramatic wording in a commit subject. The net effect matters more than the phrasing of one commit.
Write the release highlight first, then the populated sections.
Added, Changed, Deprecated, Removed, Fixed, and Security., except the final bullet in a populated section, which must end with ..Preserve the file's existing structure while editing.
CHANGELOG.md is missing, create it with the standard title, intro paragraph, ## [Unreleased], and compare-link footer before inserting release content.## [Unreleased] and above older releases.## [Unreleased], keep the heading and update only its content.[Unreleased] should compare from the newest released version to HEAD, and that released version should compare from the previous version tag to the new tag.After updating CHANGELOG.md, stop and let the user review the file. Do not commit, tag, push, or create a release unless the user asks.
CHANGELOG.md scaffold when the file is missing.Yes / No / Custom question before including pending worktree changes (or skips Step 3 entirely and includes all changes when yolo/auto mode is active).CHANGELOG.md does not exist yet.yolo or auto is intentional, not silent)., / final . pattern.Added / Changed / Fixed headings.documentation
Generate source-grounded repository digest markdown from deterministic local evidence bundles. Use when the user asks to create, refresh, or complete repo/package digests, family or project overview pages, .bot/digests output, digest workspace workflows, or result/Index.md plus result/{PackageName}.md files for any repository URL. The skill runs its bundled .NET file-based evidence generator over a git clone, separates authoritative XML evidence from Markdown prompts and reading aids, writes package digests first, then writes the overview from completed package digests, and enforces complete-read grounding and no-invention rules even when file output is capped.
testing
Turn many commits into a curated grouped squash summary compatible with the opinionated wording style of git-visual-commits. Use when the user asks to squash a branch into a concise summary, write a squash-and-merge summary, summarize this branch, summarize a commit range or PR as grouped lines, clean up noisy commit history, or asks for a curated summary without committing. For normal squash-and-merge requests, default to the full current feature branch from merge-base to HEAD against the base branch, not the same-named tracking remote, and do not ask for yolo because the skill is read-only. Returns grouped lines only, preserves identifiers, merges overlap, drops noise, and avoids changelog wording.
development
Initialize a folder as a git repository following scaled trunk-based development. Sets up an empty main branch (seed commit only), creates a versioned feature branch, and enforces a PR-first workflow where content only reaches main through pull requests. Use this skill when the user wants to initialize a git repo, set up a new repository, start a project with proper git workflow, or mentions "trunk-based", "PR workflow", "branch protection", "git init", or wants to follow GitHub PR best practices. ALWAYS use this skill when asked to initialize or set up a git repository.
development
Adds runner-agnostic guardrails on top of Anthropic's skill-creator for creating, modifying, and benchmarking skills across Codex, GitHub Copilot, Opus, and similar agents. Use whenever skill work must follow temp-workspace isolation, valid `iteration-N/eval-name/{config}/run-N/` benchmark layout, honest measured-vs-simulated labeling, UTF-8-safe artifact generation, and repo-managed skill sync/README update rules. Treat requests like "turn this workflow into a skill", "benchmark this skill", "compare with_skill and without_skill", "why is aggregate_benchmark.py showing zeros", or "make this skill robust across agents" as automatic triggers.