agentleFS
binay-pybinay-py/claude-skills/skills/release-notes/SKILL.md

release-notes

Skill1 starsChanged 6 days agoMITView on GitHub

Draft release notes and a Keep-a-Changelog CHANGELOG.md section from git history — last tag..HEAD by default, grouped into Breaking/Added/Changed/Fixed/Removed/Security/Docs from Conventional Commits or, for free-form messages, from the first word ("Add", "Fix", "Remove"…); skips merges, wip, fixup! and version-bump commits, merges duplicate subjects, links PR/MR numbers and commit SHAs for GitHub and GitLab remotes, lists authors and Co-authored-by contributors, and suggests the next semver bump. Use when cutting a release, writing a GitHub release body, or starting or updating a CHANGELOG.

  • Commits and pushes

180 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use brainstorm-experiments-existing, brainstorm-ideas-new and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • skytiger6724Skill

    brainstorm-experiments-existing

    Design experiments to test assumptions for an existing product — prototypes, A/B tests, spikes, and other low-effort validation methods. Use when validating assumptions, testing feature ideas cheaply, or planning product experiments.

    Also in 6 projects that use this

  • skytiger6724Skill

    brainstorm-ideas-new

    Brainstorm feature ideas for a new product in initial discovery from PM, Designer, and Engineer perspectives. Use when starting product discovery for a new product, exploring features for a startup idea, or doing initial ideation.

    Also in 6 projects that use this

  • 45ckSkill

    pestle-analysis

    Also in 6 projects that use this

  • About-IntelligenceSkill

    positioning-ideas

    Brainstorm product positioning ideas differentiated from competitors.

    Also in 6 projects that use this

  • About-IntelligenceSkill

    product-name

    Brainstorm 5 unique, memorable product names with rationale aligned to brand values and target audience.

    Also in 6 projects that use this

  • +7 more from skytiger6724

The file

We split this skill into the rules it gives an agent

1 rule. 0 are common, 0 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 166 edited versions we read keep these.

  • 0

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Run it without --write and read the summary.

    line 29

“Common” is measured: kept by at least 6 in 10 of the 166 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

release-notes

scripts/release-notes.mjs is zero-dependency Node 22+. It only reads git, except with --write. It never creates tags, commits or pushes.

node release-notes.mjs                                  # last tag..HEAD, printed
node release-notes.mjs --version 1.4.0                  # header ## [1.4.0] - today (default: ## [Unreleased])
node release-notes.mjs --from v1.2.0 --to v1.3.0
node release-notes.mjs --format github --version 1.4.0  # GitHub release body + "Full Changelog" compare link
node release-notes.mjs --version 1.4.0 --changelog CHANGELOG.md --write
node release-notes.mjs --cwd path/to/repo --repo-url none

The notes go to stdout; a summary goes to stderr: range, kept/skipped counts, commit style detected, link base, groups, and the suggested bump (major if anything is breaking, minor if anything was added, else patch, computed from the last semver tag).

What it does

  • Range: the latest tag reachable from --to up to --to. If --to is itself tagged, it describes that tag (previous tag..tag) and uses its version. No tags: the whole history, and it says so.
  • Grouping: feat → Added, fix → Fixed, perf → Performance, refactor → Changed, docs, test, build/ci, chore. type!: or a BREAKING CHANGE: footer → Breaking, with the footer text under the bullet. Free-form subjects are grouped by their first word (Add/New → Added, Fix → Fixed, Remove/Delete/Drop → Removed, Update/Improve/Refactor/Rename → Changed, Docs/README → Docs); anything else lands in Changed. A leading area: becomes a bold scope.
  • Skipped: merge commits, wip, fixup!/squash!, "Initial commit", and subjects that are only a version (v1.0.1, Bump version to 1.0.0, chore(release): 1.2.1). Identical subjects are listed once.
  • Links: from git remote get-url origin (https, ssh and git@host: forms; credentials in the URL are dropped). GitHub: #12 → /pull/12. GitLab: !7 → merge request, #7 → issue. Other hosts get plain text.
  • --write: inserts the section into the changelog below [Unreleased] and above the newest version, creating the file with the standard Keep-a-Changelog header if missing. It refuses if that version is already present (so re-running is a no-op), regenerates an existing [Unreleased] section in place, and saves CHANGELOG.md.bak before changing anything.

How Claude should use it

  1. Run it without --write and read the summary. Confirm the range and the version with the user; offer the suggested bump.
  2. Rewrite the bullets for users. The output is commit subjects, which describe what the developer did. Turn them into what changed for the person using the project: merge related commits into one bullet, drop internal noise (refactors, CI, tests, typo fixes) unless it affects users, explain breaking changes with what to do about them, and keep the PR/commit links. Don't invent changes that aren't in the commits.
  3. Show the rewritten section. Only after the user agrees, write it: run with --write to create the section, then edit the bullets in the file (or paste the rewritten text directly).
  4. Tagging and publishing are the user's call. Give them the commands (git tag v1.4.0 && git push origin v1.4.0, gh release create v1.4.0 --notes-file …); don't run them.

Limits

  • It sees commit messages only. Squash-merged PRs show their squash subject; a PR merged with a merge commit shows its individual commits, and the merge commit (with the PR number) is skipped, so those bullets have no PR link.
  • First-word grouping is a guess. "Make X faster" goes to Changed, "Handle Y" to Fixed. That is why step 2 exists.
  • Contributors are git author names, not GitHub usernames, so there are no @mentions.
  • Release date is today (override with --date YYYY-MM-DD). No compare-link references are added at the bottom of CHANGELOG.md.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.