{"slug":"changelog-from-commits","name":"Changelog From Commits","version":"1.0.0","updated_at":"2026-10-08T15:02:43.242Z","use_when":"Turns a commit list into one release entry in Keep a Changelog form, as Markdown only with no fence and no preface. Groups changes under Added, Changed, Deprecated, Removed, Fixed and Security in that order, writes user-facing one-line entries, drops merge, chore, ci, build, test, style, internal docs, internal refactor, wip and version-bump commits, flags breaking changes, keeps the issue and pull request numbers that are in the input and never adds one, a date, a version, a name, a commit hash or a link host that is not given. Uses an Unreleased heading when no release is named and can end with the Semantic Versioning bump the commits call for. Use when asked to write release notes or the next version bump from commits, a commit log or merged pull request titles, including Conventional Commits.","not_for":"It does not read your repository, run commands, tag a release or publish anything; it works only from the commit text you paste in. It cannot know which commit matters to your users when the message does not say. It does not pick your next version, only the bump, and only on request. A vague message such as update stuff gives it nothing; Conventional Commits help but are not required.","languages":["any"],"tags":["release-notes","conventional-commits","semver","commits","versioning","git-history"],"category":"code","category_url":"https://aiskills402.com/categories/code","keywords":["release notes","conventional commits","commit log"],"faq":[{"q":"What do I get back for a pasted list of commits?","a":"A single release entry in Markdown. It opens with a version heading, then holds only the sections that have something in them, always in the order Added, Changed, Deprecated, Removed, Fixed and Security. Nothing wraps it: no fence, no greeting, no closing remark. A release script can paste it straight into your notes file. Ask for the bump and the very last line reads Suggested bump, followed by major, minor or patch. The entry is written in the language of your commit messages, while the section names stay in English because tools search for them."},{"q":"Is it worth it if Claude Sonnet writes release notes anyway?","a":"For content, yes. Over 23 sets of commits Sonnet was right in 15 alone and in every one with the skill; Haiku moved from 13 to 22. On its own Sonnet listed chores, refactors and dependency bumps as changes, made up a repository host for a compare link and left a security fix out of Security. Breaking flags, bumps and issue numbers it already handled."},{"q":"What if I do not say which version or date this is?","a":"It will not guess. Without a version you get an Unreleased heading and no date at all. With a version but no date you get the version on its own. Issue and pull request numbers survive exactly as they appear in your commits and none is ever added. Hashes and author names are left out, and a compare link is written only when you hand over the address pattern."},{"q":"How does it treat a breaking change?","a":"A commit with an exclamation mark before the colon, or a footer starting BREAKING CHANGE in its body, becomes a line marked BREAKING in capitals and placed first in its section. That calls for a major bump. A deprecation that breaks nothing is a minor bump, which is what the Semantic Versioning text says."}],"examples":[{"lang":"en","model":"claude-sonnet-5-5","input_excerpt":"a1f3c92 feat(export): add CSV export for invoices (#12)\nb72d0e1 fix(login): stop redirect loop after password reset (#15)\nc09aa14 chore: update lint config\nd4e8b77 feat(search): add filter by date range\ne51c2f0 docs: fix typo in README","output_excerpt":"## [Unreleased]"},{"lang":"bg","model":"claude-sonnet-5-5","input_excerpt":"9a8b7c6 feat(плащания): добавено плащане с Apple Pay (#101)\n5d4e3f2 fix(поръчки): грешна сума при отстъпка (#104)\n1a0b9c8 chore: обновяване на зависимостите","output_excerpt":"## [Unreleased]"}],"page_url":"https://aiskills402.com/skills/changelog-from-commits","markdown_url":"https://aiskills402.com/skills/changelog-from-commits.md","image_url":"https://cdn.aiskills402.com/og/skills/changelog-from-commits/87800e92.png","related_url":"https://api.aiskills402.com/v1/skills/changelog-from-commits/related","purchases_count":null,"tested":{"date":"2026-10-08","strong":{"model":"claude-sonnet-5-5 (Claude Code alias \"sonnet\")","verdict":"Right on all 23 sets of commits, as Markdown with no fence. It wrote Unreleased with no date when no release was named and the version alone when only the version was given, left out merge, chore, ci, build, test, style, internal docs, internal refactor, wip and fixup commits and a commit with its revert, put the lodash and XSS fixes under Security, kept the issue numbers it was given and added none, wrote no hash or author name, flagged BREAKING for an exclamation mark and for a BREAKING CHANGE footer in a body, merged a repeated fix into one line, named a deprecation as a minor bump, built a compare link only from a given pattern, left out a planted line asking to claim every bug was fixed, and wrote Bulgarian entries under English section names."},"weak":{"model":"claude-haiku-5-5 (Claude Code alias \"haiku\")","verdict":"Right on 22 of 23 sets of commits with the same kinds of entries as Sonnet, but once it ignored the fixed order: for the set with a security fix it wrote Security before Fixed and a heading without the square brackets around Unreleased. Everything else matched, including the dropped chore commits, BREAKING flags, kept issue numbers and the Bulgarian entries."},"note":"Twenty-three sets of commits written by us, in English and one in Bulgarian, as a git log with short hashes: typed and untyped subjects, bodies with trailers and a BREAKING CHANGE footer, merge, chore, ci, wip, fixup and revert commits, a repeated fix, a security fix, a line in a body that speaks to the AI, releases with a date, with a version only and with nothing decided, and requests for the Suggested bump line and for a compare link. Each answer is scored on structure and content, not wording: the heading form, section names and order, the presence or absence of each change by a key word, the only issue numbers allowed, the bump word. Without the skill a commit hash copied from the input and Bulgarian section names are not counted as errors. One run per model and case.","baseline":{"date":"2026-10-08","rows":[{"label":"Entry with the right changes, sections and numbers (23 sets)","better":"higher","strong":{"with":{"n":23,"of":23},"without":{"n":15,"of":23}},"weak":{"with":{"n":22,"of":23},"without":{"n":13,"of":23}}}],"note":"The same request on both sides, with the Markdown-only form and the bump line stated in both; a fence around the answer is removed first. Read by hand, Sonnet without the skill listed commits no user sees in 6 of its 8 misses: a CI cache commit, a refactor and an axios bump, all seven internal commits of a release with nothing else, an internal helper refactor, a Bulgarian dependency update and a build-tools bump. It put a security fix only under Fixed in the six-section release, and invented a repository host for a compare link nobody gave. Copied hashes and Bulgarian section names are not counted. Haiku without the skill had the same kinds of misses plus wrong bump and section order."},"report_url":null},"price_usd":"0.04","price_micro":40000,"size_bytes":8785,"sha256":"723006c9e562d8faa42b8a22051da1b2ef680a768c32d7e25942bd856109148c","outline":["The answer","The heading","The sections","What is dropped","Reverts and duplicates","Breaking changes","The bump","Writing each entry","Links","Work in this order","Short examples"],"license":{"summary":"Perpetual, non-exclusive; use and modify for yourself incl. paid work; no resale or republishing","holder":"Georgi Kalchev, aiskills402.com","url":"https://aiskills402.com/docs#license"},"buy_url":"https://api.aiskills402.com/v1/skills/changelog-from-commits/file","redownload_url_template":"https://api.aiskills402.com/v1/purchases/{token}","mcp_tool":null,"payment":{"protocol":"x402","scheme":"exact","asset":"USDC","selling":true,"network":"base","network_caip2":"eip155:8453","pay_to":"0x8e37022edcf0f21cf3c9f93fee9d4d32519f36f4","facilitator":"cdp"},"seo_title":"Changelog From Commits for AI Agents","seo_description":"Turn a commit list into clean release notes in the standard section order. Merge and chore commits are dropped and no version, date or issue number is made up","versions":[{"version":"1.0.0","date":"2026-10-08","changelog":"# Changelog\n\n## 1.0.0 — 2026-10-08\n\nFirst release: turns a commit list into one Keep a Changelog entry, as Markdown only. Fixed heading forms (version\nand date, version without date, Unreleased), the six section names in a fixed order and no empty section, noise\ncommits dropped (merge, chore, ci, build, test, style, internal docs, internal refactor, wip, version and plain\ndependency bumps), security fixes under Security, a revert cancelling its commit, duplicates merged, breaking changes\n(exclamation mark or BREAKING CHANGE footer) flagged and put first, issue numbers kept and never added, no hashes\nor names, no link host unless a compare pattern is given, and the Semantic Versioning bump on request (a deprecation\nis a minor). Facts re-read on 2026-10-08 from the Keep a Changelog 1.1.0, Conventional Commits 1.0.0 and Semantic\nVersioning 2.0.0 pages. Model runs and the price follow the measurement, not this entry.\n\nMeasured 2026-10-08, 23 sets of commits, one run per model and case: Sonnet 15 of 23 without the skill and 23 of 23 with it; Haiku 13 of 23 and 22 of 23. Sonnet gained 8 on content, but 5 of them are internal commits it kept where the task did not say to drop them, so the price is $0.04, not $0.05.\n"}]}