release-notes
Skill1 starsChanged 6 months agoMITView on GitHub
Generate release notes from all commits/PRs merged since the latest published GitHub release. Reuses .github/release-drafter.yml (categories, version-resolver, template, exclude-labels) when present; falls back to Conventional Commits grouping otherwise.
- Commits and pushes
We split this skill into the rules it gives an agent
14 rules. 0 are common, 3 are distinctive, and 11 are very specific to this project.
0
Common
Most of the 146 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 23
Not the latest tag, and not a draft — release-drafter and gh both distinguish drafts from published releases, and the user asked …
- Very specific: line 29
If gh isn't available or the repo has no GitHub remote, fall back to git describe --tags --abbrev=0 and tell the user this can't …
- Very specific: line 30
If there are no releases yet, treat this as the first release: gather commits from the repo root (git rev-list --max-parents=0 HEAD) to …
- Very specific: line 34
Check for .github/release-drafter.yml (or the path referenced by a custom config-name in .github/workflows/release-drafter.yml, if the …
- Very specific: line 43
If no config exists, don't invent one — fall back to the Conventional Commits grouping in step 4b and say so in the output ("no …
- Very specific: line 47
Prefer PR-level data over raw commits — it's what release-drafter itself uses (labels, author, PR number), and this repo's …
- Very specific: line 54
If gh isn't available, or the repo merges via direct pushes to the default branch rather than PRs (check git log --merges — few/no merge …
- Very specific: line 83
If version-resolver is defined, apply it: find the highest-priority label present across all included changes (major > minor > patch) and …
- Very specific: line 84
If no config, use the same precedence via Conventional Commit types: any !/BREAKING CHANGE → major, any feat → minor, otherwise → patch.
- Very specific: line 89
If a template exists in the config, fill in $CHANGES (grouped per category-template/change-template), $CONTRIBUTORS (minus …
- Distinctive: line 97
Publish: only if the user explicitly asks — never publish (non-draft) a release without that explicit ask, and never overwrite an existing …
- Very specific: line 101
Not for setting up Release Drafter itself (workflow, config, labels) — that's the release-drafter-setup skill.
- Distinctive: line 102
Not for choosing a versioning/branching strategy — it resolves *a* next version from existing config or Conventional Commits, it doesn't …
- Distinctive: line 103
Not a substitute for running the actual Release Drafter GitHub Action in CI — this is for on-demand/local generation (e.g., previewing …
“Common” is measured: kept by at least 6 in 10 of the 146 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.
Files
Release Notes — generate from commits since the last published release
Use when asked to "generate release notes", "write a changelog for this release", "draft the next release notes", or "what's changed since the last release". This produces the notes text (and optionally a GitHub draft release) — it does not set up Release Drafter itself; use the release-drafter-setup skill for that.
When to Use
- User wants release notes / a changelog for everything merged since the last published release.
- Repo has
.github/release-drafter.ymland the user wants notes that match its categories/format without waiting for the Action to run (e.g. running it locally, or the repo doesn't push tomainin a way that triggers the workflow). - Repo has no Release Drafter config at all — fall back to a Conventional-Commits-based summary.
Procedure
1. Find the latest published release
Not the latest tag, and not a draft — release-drafter and gh both distinguish drafts from published releases, and the user asked specifically for "since the latest published release".
gh release list --exclude-drafts --limit 1 --json tagName,publishedAt,isLatest- If
ghisn't available or the repo has no GitHub remote, fall back togit describe --tags --abbrev=0and tell the user this can't distinguish a published release from a tag that only exists locally or backs a draft. - If there are no releases yet, treat this as the first release: gather commits from the repo root (
git rev-list --max-parents=0 HEAD) toHEAD.
2. Detect Release Drafter config
Check for .github/release-drafter.yml (or the path referenced by a custom config-name in .github/workflows/release-drafter.yml, if the default doesn't exist). If found, read and reuse, verbatim, whatever it defines:
categories— label → section-title mappingversion-resolver— label → major/minor/patch mapping, plusdefaultexclude-labels/include-labelstemplate,change-template,category-template,no-changes-templateautolabeler— regex/glob rules, used in step 4 if a PR has no real labels yetexclude-contributors
If no config exists, don't invent one — fall back to the Conventional Commits grouping in step 4b and say so in the output ("no release-drafter.yml found, grouped by commit type").
3. Gather what changed since that release
Prefer PR-level data over raw commits — it's what release-drafter itself uses (labels, author, PR number), and this repo's release-drafter-setup/release-drafter skills already assume a PR-based workflow:
gh pr list --state merged --base <default-branch> --search "merged:>=<published_at_date>" \
--json number,title,author,labels,url,mergedAtIf gh isn't available, or the repo merges via direct pushes to the default branch rather than PRs (check git log --merges — few/no merge commits is a signal), fall back to raw commits instead:
git log <last-tag>..HEAD --pretty=format:'%H%x09%an%x09%s'Either way, exclude merge commits of Release Drafter's own draft-release bookkeeping, if any, and drop anything matching exclude-labels/skip markers already configured.
4. Categorize
4a. Config present (PR data available): for each merged PR, match its real labels against categories. If a PR has no labels yet (common when generating notes ahead of the Action running), simulate autolabeler: test the PR title/branch/changed files against the configured regex/glob rules and assign the resulting label before categorizing. Apply exclude-labels/include-labels exactly as release-drafter would.
4b. No config, or no PR data (raw commits): group by Conventional Commit type prefix, using the same section names as this repo's own release-drafter-setup default config for consistency:
| Prefix | Section |
feat | 🚀 Features |
fix | 🐛 Bug Fixes |
security | 🔐 Security updates |
chore, refactor, style | ⚠️ Maintenance |
docs | 📄 Documentation |
deps, build | 🧩 Dependency Updates |
perf | (Performance, if the repo's config has no equivalent, add one) |
| anything else / no prefix | Other Changes |
A type!: or BREAKING CHANGE: footer always goes in a leading "Breaking Changes" section regardless of its other type.
5. Resolve the next version
- If
version-resolveris defined, apply it: find the highest-priority label present across all included changes (major > minor > patch) and bump the previous version's corresponding component. Usedefaultwhen nothing matches. - If no config, use the same precedence via Conventional Commit types: any
!/BREAKING CHANGE→ major, anyfeat→ minor, otherwise → patch. - Base the bump on the previous published release's version, not on any version string in the working tree (package.json, etc.) unless the user says those are out of sync and should be used instead.
6. Render
- If a
templateexists in the config, fill in$CHANGES(grouped percategory-template/change-template),$CONTRIBUTORS(minusexclude-contributors),$PREVIOUS_TAG,$RESOLVED_VERSION,$OWNER/$REPOSITORYexactly as release-drafter would render them, so the output matches what the Action would have produced. - Otherwise, use a plain default: one
##heading per category in the order defined (or the table order from step 4b), each entry as- $TITLE (#$NUMBER) @$AUTHORor- $SUBJECT ($SHORT_SHA)for raw commits, plus a full-changelog compare link (https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...$NEW_TAG) when a GitHub remote is known.
7. Present, don't auto-publish
Show the rendered notes to the user. Creating or publishing an actual GitHub release is a repo-visible action — confirm before doing either:
- Draft only (safe default if asked to "create" it):
gh release create <tag> --draft --title <title> --notes-file <file>. - Publish: only if the user explicitly asks — never publish (non-draft) a release without that explicit ask, and never overwrite an existing draft's content without showing the diff first.
Non-Goals
- Not for setting up Release Drafter itself (workflow, config, labels) — that's the
release-drafter-setupskill; this skill only consumes an existing config. - Not for choosing a versioning/branching strategy — it resolves a next version from existing config or Conventional Commits, it doesn't decide the project's versioning policy.
- Not a substitute for running the actual Release Drafter GitHub Action in CI — this is for on-demand/local generation (e.g., previewing notes, or repos where the Action hasn't run yet), not a replacement for it.
Other versions160 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 160
- tw93/Mole★ 73ksame name
- makeplane/plane★ 61ksame name
- tabler/tabler★ 42ksame name
- pnpm/pnpm★ 37ksame name
- quasarframework/quasar★ 27ksame name
- dotnet/core★ 22ksame name
- zauberzeug/nicegui★ 16ksame name
- adobe/react-spectrum★ 16ksame name
- espanso/espanso★ 15ksame name
- formbricks/formbricks★ 13ksame name
150 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects 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.
skytiger6724Skillbrainstorm-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 5 projects that use this
skytiger6724Skillbrainstorm-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 5 projects that use this
45ckSkillpestle-analysis
Also in 5 projects that use this
launchapp-devSkillinterview-script
Create a structured user interview script with warm-up, core exploration, and wrap-up sections. Use when preparing for user research interviews to ensure consistent, insightful conversations.
Also in 6 projects that use this
- +8 more from skytiger6724
In this repository36 other files it gives its agents.
- skills/backend-best-practices/AGENTS.mdAGENTS.md
- adr-writerSkill
- application-healthchecksSkill
- backend-best-practicesSkill
- bspec-prd-discoverySkill
- bspec-story-implementationSkill
- bspec-story-reviewSkill
- bspec-story-syncSkill
- bspec-technical-architectureSkill
- bspec-workflowSkill
- conventional-commitsSkill
- copier-scaffoldSkill
- devenvSkill
- direnvSkill
- docker-composeSkill
- dockerfileSkill
- docker-setupSkill
- docs-writerSkill
- github-actions-dockerSkill
- gitleaks-setupSkill
- golang-developmentSkill
- golang-slogSkill
- golang-testingSkill
- playwright-devenvSkill
- project-webappSkill
- readme-writerSkill
- release-drafter-setupSkill
- release-drafterSkill
- renovate-pr-triageSkill
- renovate-setupSkill
- structured-loggingSkill
- summarize-articleSkill
- summarize-youtube-videoSkill
- tailwind-v4Skill
- vicinae-extensionsSkill
- zensical-setupSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
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.

