commit
Skill1 starsChanged 3 months agoMITView on GitHub
Write and create Git commits in house style — Conventional Commits plus a standard prose convention. Use when committing changes, drafting or amending a commit message, or whenever the user asks you to commit.
188 other projects use a version of this.
Adopted by
Most recently taken up by
- daledesilva/obsidian_inktheir own version, first seen Nov 9, 2026
- thoughtbot/rails-consultanttheir own version, first seen Nov 8, 2026
- pedrohcgs/claude-code-my-workflowtheir own version, first seen Nov 8, 2026
- jisuzzzz/haechitheir own version, first seen Nov 8, 2026
- dirien/yet-another-agent-harnesstheir own version, first seen Nov 8, 2026
- denysdovhan/skillstheir own version, first seen Nov 8, 2026
Used with
Projects with it also use validate-plan, act-on-feedback 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.
shawn-dumasSkillvalidate-plan
Validate an orchestration plan after pre-flight certification. Runs adversarial review, deep review (verify prompt data against codebase), and PoC gate for risky approaches. Auto-invoked by orchestrate-* skills at Step 8.
Also in 5 projects that use this
MicrosoftSkillact-on-feedback
Act on user feedback attached to the current session. Use when the user submits feedback on the session's changes via the Submit Feedback button.
Also in 3 projects that use this
decocmsSkilladd-mcp-tools
Guide for adding new MCP tools with consistent patterns for schemas, tool definitions, registry updates, and Better Auth integration
Also in 3 projects that use this
MicrosoftSkillgenerate-run-commands
Generate or modify run commands for the current session. Use when the user wants to set up or update run commands that appear in the session's Run button.
Also in 3 projects that use this
mitsuhikoSkilloebb-scotty
Austrian rail travel planner (ÖBB Scotty). Use when planning train journeys in Austria, checking departures/arrivals at stations, or looking for service disruptions. Covers ÖBB trains, S-Bahn, regional trains, and connections to neighboring countries.
Also in 3 projects that use this
mitsuhikoSkillpi-share
Load and parse session transcripts from shittycodingagent.ai/buildwithpi.ai/buildwithpi.com/pi.dev (pi-share) URLs. Fetches gists, decodes embedded session data, and extracts conversation history.
Also in 3 projects that use this
Other versions188 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 188
- microsoft/vscode★ 195ksame name
- TryGhost/Ghost★ 56ksame name
- ToolJet/ToolJet★ 41ksame name
- ShareX/ShareX★ 41ksame name
- openai/symphony★ 27ksame name
- ccusage/ccusage★ 19ksame name
- ryoppippi/ccusage★ 19ksame name
- windmill-labs/windmill★ 18ksame name
- EverMind-AI/EverMemOS★ 14ksame name
- EverMind-AI/EverOS★ 14ksame name
178 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.
In this repository6 other files it gives its agents.
- skill-creatorSkill
- multi-reviewSkill
- recapSkill
- sweep-commentsSkill
- tourSkill
- write-proseSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 7 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 168 edited versions we read keep these.
7
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
- could be automatic: a setting could enforce it
- Distinctive: line 9
Write every commit as a Conventional Commit that also follows a standard prose convention.
- Distinctive: line 23
Keep it concise and under 72 characters.
- Distinctive: line 66
Check the untracked list before staging broadly.
- Very specific: line 77
If the surrounding commits are signed, yours must be too — git log --format='%h %G?' shows this.
- Distinctive: line 81
After committing, confirm the commit holds what you intended and nothing more: git show --stat HEAD for the file list, git status to see …
- Distinctive: line 103
Do not prepend the model name with the company name:
- Distinctive: line 110
If applicable, the following email addresses should be listed in angle brackets after the model name:
- Distinctive: line 148
If project commits are signed, but you don't have access to a signing mechanism, proceed with unsigned commits.
“Common” is measured: kept by at least 6 in 10 of the 168 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
Write and create a commit
Write every commit as a Conventional Commit that also follows a standard prose convention. Shape:
type(scope): summary
Optional body explaining why, hard-wrapped at 72 columns.
Co-Authored-By: <agent name and version> <noreply address>Subject line
type(scope): summary— include the scope when the change is local to one area.- Imperative mood ("add", "drop", "correct"), lowercase after the colon, no trailing period.
- Keep it concise and under 72 characters.
- Describe the change and its intent, not the files touched.
Types
Pick the type that names the change's intent, not the one matching the largest part of the diff.
feat— a new user-facing capabilityfix— a bug fixdocs— documentation onlystyle— formatting/whitespace, no change in meaning or behaviorrefactor— a code change that neither adds a feature nor fixes a bugperf— a change that improves performancetest— adding or correcting testsbuild— build system, tooling, or dependenciesci— continuous integration config or pipelineschore— maintenance that touches neither src nor testsrevert— reverts a previous commit
Body
Include a body whenever the change isn't self-evident from the subject. It explains the why — the reasoning, the constraint, the tradeoff — not the what the diff already shows.
- Separate it from the subject with one blank line, and hard-wrap at 72 columns.
- A body that walks area by area through what changed has become a diff summary. The diff is already in the commit — cut the tour and keep the reasoning.
- Reference the decision record or acceptance criteria that motivated the change (e.g.
ADR-0011,AC #4) when one applies. - Genuinely trivial commits (a one-line chore, a typo fix) need no description in the body, but it should still contain an attribution trailer (see below).
Make the commit
The message is half the job. These steps decide what the commit actually contains.
Scope it to one change
A commit records one logical change. When the working tree holds several — a fix plus an unrelated rename, a feature plus a drive-by cleanup — split them into separate commits rather than one mixed commit. A reader reverting a bug fix should not lose an unrelated refactor with it. If the work genuinely cannot be separated, say so in the body rather than pretending it is one thing.
Read the diff before writing the message
Run git status and git diff (plus git diff --staged when anything is already staged) and read them. Write the message from what the diff shows, never from your memory of what you set out to do — the two diverge more often than they don't, and the diff is what ships.
Stage deliberately
- Stage explicit pathspecs. Reach for
git add -Aorcommit -aonly after readinggit status, and never when it would sweep in files you did not touch. - Check the untracked list before staging broadly. Build output, editor scratch files, credentials, and local config get committed by accident this way; if something untracked should never be committed, add it to the project's ignore file instead.
- Confirm the branch is the one you mean to commit to (
git branch --show-current). Where a project has a policy about which branches take direct commits, follow the project's, not a default.
When a hook rejects the commit
A failing pre-commit hook is a finding, not an obstacle. Read its output and fix the cause. Do not reach for --no-verify — if a hook genuinely must be bypassed, that is the user's call to make, so ask.
A hook that reformats files leaves the fix unstaged, so the commit records the unformatted version. Re-stage and re-read git diff --staged before retrying.
Keep the repo's signing behavior
If the surrounding commits are signed, yours must be too — git log --format='%h %G?' shows this. When signing fails, stop and report it rather than committing unsigned; an unsigned commit in a signed history is a change to the repo's guarantees, not a detail.
Verify what landed
After committing, confirm the commit holds what you intended and nothing more: git show --stat HEAD for the file list, git status to see what remains uncommitted. Report anything left behind rather than leaving the user to discover it.
Amending and rewriting
Amend freely while a commit is local. Once it is pushed it is shared history, and changing it means a force-push — propose the replacement message and let the user decide. git log --format='%h %s' @{u}..HEAD shows which commits are still yours to rewrite.
Breaking changes
Mark a breaking change with ! before the colon (feat(server)!: ...) and add a BREAKING CHANGE: footer describing the break.
Prose conventions
A commit message is prose and should be written in a style cohesive with the project voice; use the write-prose skill when composing the message.
Attribution
End every commit you author with a Co-Authored-By trailer, after a blank line, that identifies you — the authoring coding agent — by name. Fill in your own identity:
Co-Authored-By: <agent name and version>Do not prepend the model name with the company name:
- Good:
Claude Fable 5.1 - Bad:
Anthropic Claude Fable 5.1,Anthropic: Claude Fable 5.1
Email address
If applicable, the following email addresses should be listed in angle brackets after the model name:
- Anthropic models:
noreply@anthropic.com - OpenAI models:
noreply@openai.com
Other models should omit the email address.
Examples:
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>Co-Authored-By: GPT 5.6 Sol <noreply@openai.com>Examples
feat(config): read the frontmatter map without parsing the body
Only the scalars and flat lists in the frontmatter are parsed and the
body stays opaque, per ADR-0011, so a document whose body is malformed
still yields its metadata. Absent fields read as absent rather than
erroring, so partial documents don't crash reads.
Co-Authored-By: Example Agent 1.0 <noreply@example.com>chore: drop the stale dependency lockfile
Co-Authored-By: Some AgentSigning
If project commits are signed, but you don't have access to a signing mechanism, proceed with unsigned commits; it is the user's responsibility to sign them before pushing to a Git forge.
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.

