changelog

Installation
SKILL.md

nurb changelog

One surface: site/changelog.html, the static page behind nurb.app/changelog. One <article class="release"> per released version, newest first. There is no build step and no data file; the HTML is the data.

Releases are the unit. A nurb release is a version bump merged to main; desktop/scripts/release.sh tags it and publishes it as a GitHub release. Final releases use the same spelling everywhere (v1.0.0); prerelease git tags use PEP 440 (v1.0.0a1) while the app and changelog use SemVer (v1.0.0-alpha.1). The changelog entry for a version is written from the commits merged between one git tag and the next, filtered hard.

Step 1: Find the gap

The newest id="vX.Y.Z" in site/changelog.html is the high-water mark in SemVer spelling. Map prereleases to PEP 440 before looking for their git tag: v1.0.0-alpha.1 maps to v1.0.0a1, beta to b, and rc loses only the hyphen and dot (v1.0.0-rc.1 to v1.0.0rc1).

grep -m1 'id="v' site/changelog.html
git fetch --tags && git tag --sort=-v:refname | head -20

Every tagged release newer than the high-water mark needs an entry. If the user describes a feature in free text instead, write that one entry into the version it shipped in (or the pending version if it hasn't shipped yet) and skip the sweep.

When /release invokes this before the bump PR merges, the newest version has no tag or GitHub release yet. Write its entry anyway: source it from the PRs merged since the last release (gh pr list --state merged --base main --json title,number,mergedAt) plus whatever the release branch itself ships, date it today, and write the version as plain text, like every entry already on the page. The entry lands as part of the release PR, so commit it there instead of leaving it uncommitted.

Installs
135
Repository
shpigford/nurb
GitHub Stars
632
First Seen
Aug 2, 2026