versioninglisted
Install: claude install-skill rokokol/versioning-skill
# versioning
A version is a promise: someone installed exactly this one, and can report a bug against it. A changelog is the other half of that promise — it tells that person what changed between the thing they have and the thing they are being offered
Both go wrong in the same way, by claiming more than the repository can back. A version badge on something that has no releases; an `Unreleased` section that never closes; an entry describing a refactor nobody outside could observe; a heading nobody can match to anything they installed. The rules below exist to keep the claim true
[`check-changelog.sh`](check-changelog.sh) beside this file decides the machine-checkable half, and it takes **any** changelog, so the rules can be enforced in the repository they are handed to rather than remembered
## The first question: does this repository have a version?
Ask whether someone can install a particular one and report a bug against it
- **Yes** — a shipped artifact. It carries a `VERSION` file, numbered changelog headings, git tags, and a release ritual. See [references/versioning.md](references/versioning.md) and [references/release.md](references/release.md)
- **No** — a repository that is only ever read at whatever revision is checked out: a skill, a prompt library, a docs-only repo, a dotfiles tree. It has no version to be wrong about, so it carries no `VERSION` file, no version badge, and no install line pinned to a tag. Its changelog is **dated**
Getting this wrong is not