commit-message
Skill0 starsChanged 13 days agoMITView on GitHub
Write a Conventional Commits message from a real diff. Use when a user asks to write, fix, or review a commit message, or to turn a set of changes into a clear commit. Works from the actual diff and the files it touches, never from a vague summary, and refuses messages that say nothing.
- Commits and pushes
62 other projects use a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- AcademySoftwareFoundation/OpenImageIOtheir own version, first seen Nov 9, 2026
- mab-go/xmind-mcptheir own version, first seen Nov 8, 2026
- danielvm-git/bigpowerstheir own version, first seen Nov 6, 2026
- drinkspiller/skillstheir own version, first seen Nov 6, 2026
- mattiacerutti/supernovatheir own version, first seen Nov 2, 2026
- mergisi/awesome-openclaw-agentstheir own version, first seen Nov 1, 2026
Used with
Projects with it also use pr-description, changelog and 9 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.
MicrosoftSkillpr-description
Draft Nacelle PR titles, pull request descriptions, commit titles, commit descriptions, and squash commit messages. Use when asked for PR or commit wording, a branch summary, or a PR description that can be used in a commit. Omit validation sections from commit bodies and remove filler.
Also in 9 projects that use this
HashiCorpSkillchangelog
Add a `.changelog/<PR_NUMBER>.txt` entry for a GitHub Pull Request, commit, and push.
Also in 3 projects that use this
GitHubSkillrefactor
Surgical code refactoring to improve maintainability without changing behavior. Covers extracting functions, renaming variables, breaking down god functions, improving type safety, eliminating code smells, and applying design patterns. Less drastic than repo-rebuilder; use for gradual improvements.
Also in 3 projects that use this
GoogleSkillcode-review
Adversarial systems, concurrency, memory-model, and architecture code review protocol. Use this skill whenever asked to review code, PRs, diffs, or branches in Filament.
Also in 7 projects that use this
GoogleSkillgrilling
Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.
Also in 3 projects that use this
OpenAISkillbrainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
Also in 3 projects that use this
- +2 more from google
Other versions62 projects use a version of this.
Word for word · 0
None found.
Edited · 1
- KateChubarova/ClaudeSkillBuilder★ 014% same
Wrote their own version · 61
- zulip/zulip★ 26ksame name
- mergisi/awesome-openclaw-agents★ 4.1ksame name
- AltraMayor/f3★ 3.4ksame name
- github/copilot-cli-for-beginners★ 2.9ksame name
- AcademySoftwareFoundation/OpenImageIO★ 2.4ksame name
- sheshbabu/zen★ 1.2ksame name
- s-kostyaev/ellama★ 963same name
- tektoncd/operator★ 606same name
- danielvm-git/bigpowers★ 288same name
- rshdhere/vibecheck★ 213same name
51 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.
The file
We split this skill into the rules it gives an agent
11 rules. 0 are common, 11 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 51 edited versions we read keep these.
11
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Write a commit message a stranger can trust: what changed, why, and whether anything breaks — derived from the diff itself.
- Distinctive: line 13
Use it when the user asks to:
- Distinctive: line 14
Write a commit message for changes they have already made.
- Distinctive: line 22
Do not use it to describe changes you have not seen.
- Distinctive: line 24
Do not use it as a release-notes writer, a changelog writer, or a code reviewer.
- Distinctive: line 26
Do not use it to commit anything by itself.
- Distinctive: line 28
Do not use it to invent a reason for a change.
- Distinctive: line 155
Every claim in the message must be traceable to a line in the diff.
- Distinctive: line 158
Never invent a ticket number, an issue link, a test result, or a reason the diff does not show.
- Distinctive: line 160
Never claim tests pass unless they were actually run, and never claim a change is safe, minor, or non-breaking without checking the diff …
- Distinctive: line 163
Never run git commit, git push, or any command that records the change.
“Common” is measured: kept by at least 6 in 10 of the 51 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
commit-message
Write a commit message a stranger can trust: what changed, why, and whether anything breaks — derived from the diff itself.
When to use this skill
Use it when the user asks to:
- Write a commit message for changes they have already made.
- Fix a vague commit message ("fixed stuff", "updates", "wip") into one that says what actually changed.
- Review a commit message against the diff it describes.
- Split one large set of changes into separate, honest commits.
When NOT to use it
- Do not use it to describe changes you have not seen. Read the diff first; a summary from memory is not a diff.
- Do not use it as a release-notes writer, a changelog writer, or a code reviewer. Those are separate jobs with their own rules.
- Do not use it to commit anything by itself. This skill writes the message; the user runs the commit, after reading the message.
- Do not use it to invent a reason for a change. If the diff does not show why, say so and ask — do not fill the gap with a guess.
Workflow
1. Read the real diff, in this order
- List every file the diff touches, with added and removed lines.
- Group the changes by what they do, not by which file they sit in. One behaviour change is one commit; a mixed diff is split, not summarised into one blurry message.
- Note anything the diff alone cannot explain: a ticket number, a user-visible reason, a test result. Those stay out of the message unless the user supplies them.
2. Pick the type and the scope from the diff
Types, and what each one means:
feat— a new user-facing capability.fix— a bug fix for existing behaviour.docs— documentation only.style— formatting only; no behaviour change.refactor— code restructured with no behaviour change.perf— a performance improvement.test— tests only.chore— build, tooling, or maintenance with no product change.build— build system or dependency changes.ci— continuous-integration configuration only.revert— undoing an earlier commit (name that commit).
Scope is the area the diff actually touches, in one lowercase word
taken from the changed paths: auth for src/auth/, billing for
src/billing/, docs for documentation files. If the diff spans
several unrelated areas, that is a sign it should be split, not a
reason to drop the scope.
3. Write the subject line
Format: type(scope): subject, all lowercase except proper nouns,
no trailing full stop, 72 characters or fewer.
The subject must name the change in the imperative mood ("add", "fix", "remove", "raise") and must be checkable against the diff: a reader with the diff in front of them should be able to point at the lines that prove the subject true. Subjects that fail this test — "fix stuff", "update code", "various changes", "wip" — are refused, with the exact reason, not rewritten into a prettier version of the same vagueness.
4. Add a body only when the diff needs explaining
A body is two to four lines, and it explains why the change was made and what it changes for the reader, never a line-by-line retelling of the diff (the diff already shows that). Leave the body out entirely when the subject plus the diff is already clear — a one-line typo fix needs no body.
5. Flag breaking changes in the footer, never in passing
A change is breaking when it removes or renames a public function, changes a file format, drops a supported option, or changes behaviour a caller depends on. Mark it exactly like this:
BREAKING CHANGE: <what breaks and what the caller must do instead>A breaking change is never hidden inside the body, and a non-breaking change never carries the flag. If the diff might break something but you cannot tell from the diff alone, say that plainly and ask the user — do not guess either way.
6. Report in this fixed format
- The message, in a code block, ready to paste.
- One line per refused draft, if any, naming the draft and the exact rule it broke.
- Anything the message deliberately leaves out (a ticket number, a test result, a reason not visible in the diff), listed by name, with why it was left out.
Good examples
A bug fix, scope taken from the changed path:
fix(auth): reject expired tokens instead of refreshing themA new feature with a body that explains why:
feat(billing): add monthly usage summary to the invoice page
Customers asked for a single place to see what they used before
paying. The summary reads the same usage records the invoice
already totals, so the two can never disagree.A breaking change, flagged in the footer:
feat(api): rename list_users to list_customers
BREAKING CHANGE: list_users is removed. Callers must use
list_customers, which takes the same arguments.Bad examples (do not write like this)
fix stuff
It names no area, no behaviour, and no fix. Nothing in a diff could prove or disprove it.
update code and improve things
Two vague verbs, no subject, no scope. A reader cannot tell what was updated or what improved.
feat: added new feature
The type is right and everything else is missing: no scope, no feature named, and the past tense where the imperative belongs.
fix(auth): fix the bug and also update the docs and bump deps
Three unrelated changes in one message. Split it into three commits, one message each.
Output rules
- Output one message per commit, each in its own code block.
- Every claim in the message must be traceable to a line in the diff. If it cannot be traced, leave it out and list it as deliberately omitted.
- Never invent a ticket number, an issue link, a test result, or a reason the diff does not show.
- Never claim tests pass unless they were actually run, and never claim a change is safe, minor, or non-breaking without checking the diff for callers it affects.
- Never run
git commit,git push, or any command that records the change. Writing the message is the whole job; committing is the user's decision, after reading it.
Limits and safety rules
- This skill reads diffs and file paths only. It sends nothing anywhere, stages nothing, and commits nothing.
- It does not rewrite history, amend a commit, or force-push. A message for an already-made commit is a suggestion for the next one, not a rewrite of the past.
- It does not work from a remembered or summarised change. If there is no diff, the report says so and stops at that fact; it does not invent one.
- Local fixture diffs (see
examples/sample-diff.diff) cannot prove a live reason or a live test result. A walkthrough run on fixtures marks those items as deliberately omitted, exactly as the sample messages do.
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
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.

