Use this when the user asks you to write, suggest, or improve a git commit message based on a diff or staged changes. Triggered by phrases like "write a commit message", "commit this", "what should the commit message be", or after the user runs git diff and asks for a message.
86%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Write commit messages that follow the Conventional Commits specification. A good message lets a future reader understand why a change happened without reading the diff.
<type>(<scope>): <subject>
<body>
<footer>Pick exactly one:
| Type | Use when |
|---|---|
feat | Adding new user-facing functionality |
fix | Fixing a bug |
chore | Maintenance that doesn't change behavior (deps, tooling) |
docs | Documentation-only change |
refactor | Restructuring code without changing behavior |
test | Adding or fixing tests |
perf | Performance improvement |
build | Build system or external dependency changes |
ci | CI/CD configuration |
style | Formatting, whitespace — no code change |
revert | Reverting a previous commit |
If a change fits multiple types, pick the one a reader would find most load-bearing. feat and fix take priority over refactor when both apply.
Optional parenthetical that narrows where the change lives. Good scopes: auth, api, cli, db, ui, or a module/package name (parser, billing). Skip the scope if the change is cross-cutting or if a scope would be noise.
BREAKING CHANGE: <description> for any breaking change. Required when the change is breaking, even if the type is feat or fix.Closes #123, Refs #456 for issue tracking.Co-authored-by: Name <email> for pair/mob work.fix(auth): extend JWT expiry to match session length
Users were being logged out mid-session because the JWT TTL (15m)
was shorter than the session cookie TTL (24h). Align JWT TTL with
session TTL and add a background refresh 2m before expiry.
Closes #412feat(cli): add --dry-run flag to publish command
Lets users preview what would be published without touching the
registry. Useful during PR review and for CI gates.refactor(parser): extract token normalization into its own modulefixed bug ← not imperative, no type, no detail
feat: Updated the thing. ← vague, trailing period, "updated" not "update"
fix(auth): fixed the JWT expiry bug because users were being logged out mid-session
← runs past 72 chars, restates itself
chore: wip ← never commit wip messagesAsk the user before writing the message if:
BREAKING CHANGE.Closes #N.Otherwise, just write the message.
neil-tessl/neil-tile-repo-01
a8d0e23
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.