Keep a real CHANGELOG.md in Keep-a-Changelog format: what earns an entry, Unreleased discipline, release hygiene, and the changelog as a contract for downstream consumers.
./install.sh changelog-disciplinename: "changelog_discipline" description: "Keep a real CHANGELOG.md in Keep-a-Changelog format: what earns an entry, Unreleased discipline, release hygiene, and the changelog as a contract for downstream consumers." metadata: { "includeInPrompt": true }
Maintain the project's release-facing record of what changed, when, and whether it breaks consumers. This covers one artifact, the CHANGELOG. General prose craft and doc-set structure belong elsewhere. Trigger this when starting a changelog, reviewing one before a release, or deciding whether a change deserves an entry.
org/repo with the real project path and delete sections you don't need for a release.markdown
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
### Changed
### Deprecated
### Removed
### Fixed
### Security
## [1.0.0] - 2026-09-26
### Added
- ...
[Unreleased]: https://github.com/org/repo/compare/v1.0.0...HEAD
[1.0.0]: https://github.com/org/repo/releases/tag/v1.0.0
Unreleased section is a staging area that fills up continuously. On release day you rename it, add the version and date, and start a fresh empty one.Changed or Removed and are flagged in plain language, e.g. BREAKING: config key \timeout_ms\ renamed to \timeout\``.YYYY-MM-DD), link the version heading to its tag, and refresh the [Unreleased] compare link to point at the new tag. Then run the pre-release diff check in Operating Rules before announcing.Unreleased section always present, dated and tag-linked version sections, entries grouped by type.- Added --json flag to export (#42).BREAKING: prefix and a one-line migration note. A breaking change buried in a long Changed list is a broken contract.[YANKED] or fix an outright error. Corrections to the story of a release go in a new entry under Unreleased.Security, kept factual and minimal until the issue is patched everywhere, then expanded.bash
# Everything merged since the last release tag: check each commit
# against the changelog before you cut the release. If the repo has no
# tags yet, replace "${last_tag}..HEAD" with HEAD and check every commit.
last_tag=$(git describe --tags --abbrev=0)
git log "${last_tag}..HEAD" --oneline --no-merges
publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e
No ratings yet — be the first to rate it.