Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Format and write git commit messages using a structured type-based format (fea, fix, ref, ai, oth). Use when the user asks to commit, stage, create a commit message, or summarize code changes. Do NOT use for merge commits, revert operations, work-in-progress commits, or when user specifies a custom format.
.claude/skills/marco-souza-git-commit-formatter/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 389% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -2% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 33% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 35% | 0% |
| case-10 | ✓→✓ | = Same ✓ | -15% | 0% |
Format all commit messages using this specification.
> Note: This skill uses simplified types (fea, fix, ref, ai, oth) rather than full Conventional Commits (feat, fix, refactor, chore, docs, etc.) for brevity in AI-generated messages.
<type>(optional scope): <description>All lowercase except proper nouns. No period at the end.
| Type | Use when | |------|----------| | fea | Adding a new feature | | fix | Fixing a bug | | ref | Refactoring or restructuring code | | ai | AI-related changes (prompts, models, agents) | | test | Adding or correcting tests | | oth | Documentation, config, or anything else |
BREAKING CHANGE: <description>fea: add user authentication flow
fix(api): handle null response from downstream service
ref: extract validation logic into shared helper
ai: update system prompt for code review skill
oth: update README with setup instructionsfea(api)!: remove legacy authentication endpoint
BREAKING CHANGE: /api/v1/auth endpoint removed. Use /api/v2/auth instead.User: "Commit my changes"
Agent:
git diff --cached — sees staged changesfea(auth): add JWT token refresh flowfea(auth): add JWT token refresh flow?"git commit -m "fea(auth): add JWT token refresh flow"git status)git diff --cached to see staged changesgit commit -m "<message>"If git diff --cached is empty, check git diff for unstaged changes. Ask the user if they want to:
git add -Agit add <files>git diffIf git status shows "not a git repo", initialize with git init or alert the user.
If git commit fails (e.g., pre-commit hook rejection), surface the error and ask if the user wants to:
git commit --no-verify| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 3,213 | 1,531 | -52% | 1 | 1 | 0% | 559 | 967 | +73% | 0 | 0 | — |
case-02 | fail→pass | 1,675 | 3,100 | +85% | 1 | 1 | 0% | 273 | 1,334 | +389% | 0 | 0 | — |
case-03 | fail→fail | 2,283 | 2,450 | +7% | 1 | 1 | 0% | 437 | 1,085 | +148% | 0 | 0 | — |
case-04 | fail→pass | 5,856 | 1,958 | -67% | 1 | 1 | 0% | 1,079 | 1,053 | -2% | 0 | 0 | — |
case-10 | pass→pass | 8,602 | 2,789 | -68% | 1 | 1 | 0% | 1,394 | 1,187 | -15% | 0 | 0 | — |
case-05 | fail→fail | 5,057 | 2,464 | -51% | 1 | 1 | 0% | 976 | 1,260 | +29% | 0 | 0 | — |
case-06 | pass→pass | 5,365 | 3,013 | -44% | 1 | 1 | 0% | 1,000 | 1,311 | +31% | 0 | 0 | — |
case-07 | pass→pass | 6,525 | 3,365 | -48% | 1 | 1 | 0% | 1,328 | 1,444 | +9% | 0 | 0 | — |
case-08 | pass→pass | 6,827 | 2,394 | -65% | 1 | 1 | 0% | 1,383 | 1,182 | -15% | 0 | 0 | — |
case-09 | pass→pass | 6,022 | 2,266 | -62% | 1 | 1 | 0% | 1,244 | 1,171 | -6% | 0 | 0 | — |
case-11 | fail→fail | 3,546 | 3,176 | -10% | 1 | 1 | 0% | 622 | 1,367 | +120% | 0 | 0 | — |
case-12 | pass→pass | 4,729 | 3,288 | -30% | 1 | 1 | 0% | 965 | 1,414 | +47% | 0 | 0 | — |
case-13 | pass→pass | 5,263 | 2,992 | -43% | 1 | 1 | 0% | 834 | 1,282 | +54% | 0 | 0 | — |
case-14 | pass→pass | 4,295 | 2,738 | -36% | 1 | 1 | 0% | 830 | 1,261 | +52% | 0 | 0 | — |
case-15 | pass→pass | 3,893 | 1,838 | -53% | 1 | 1 | 0% | 656 | 1,057 | +61% | 0 | 0 | — |
case-16 | pass→pass | 2,978 | 2,934 | -1% | 1 | 1 | 0% | 535 | 1,247 | +133% | 0 | 0 | — |
case-17 | fail→pass | 5,290 | 3,010 | -43% | 1 | 1 | 0% | 1,004 | 1,333 | +33% | 0 | 0 | — |
case-18 | fail→fail | 4,450 | 2,572 | -42% | 1 | 1 | 0% | 833 | 1,226 | +47% | 0 | 0 | — |
case-19 | fail→pass | 4,137 | 1,932 | -53% | 1 | 1 | 0% | 768 | 1,036 | +35% | 0 | 0 | — |
case-20 | pass→pass | 4,751 | 3,616 | -24% | 1 | 1 | 0% | 978 | 1,389 | +42% | 0 | 0 | — |
case-21 | pass→pass | 3,736 | 3,209 | -14% | 1 | 1 | 0% | 749 | 1,354 | +81% | 0 | 0 | — |
case-22 | pass→pass | 8,348 | 4,604 | -45% | 1 | 1 | 0% | 1,704 | 1,672 | -2% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +18 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.