Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate clear, conventional commit messages from git diffs. Use when writing commit messages, reviewing staged changes, or preparing releases.
.claude/skills/thedecipherist-commit-messages/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 43% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 24% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 77% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 74% | 0% |
| case-22 | ✗→✓ | ▲ Improved | 43% | 0% |
Generate consistent, informative commit messages following the Conventional Commits specification.
git commit commandgit diff --staged to see what's being committed<type>(<scope>): <description>
[optional body]
[optional footer(s)]| Type | Description | Example | |------|-------------|---------| | feat | New feature | feat(auth): add OAuth2 login | | fix | Bug fix | fix(api): handle null response | | docs | Documentation only | docs(readme): add setup instructions | | style | Formatting, no code change | style: fix indentation | | refactor | Code change, no new feature/fix | refactor(db): extract query builder | | perf | Performance improvement | perf(search): add result caching | | test | Adding/fixing tests | test(auth): add login unit tests | | build | Build system changes | build: update webpack config | | ci | CI configuration | ci: add GitHub Actions workflow | | chore | Maintenance tasks | chore(deps): update dependencies | | revert | Revert previous commit | revert: feat(auth): add OAuth2 |
The scope should be a noun describing the section of the codebase:
auth, api, db, ui, configsearch, checkout, dashboardBREAKING CHANGE: for breaking changesFixes #123 to close issuesRefs #456 to reference without closingfeat(search): add fuzzy matching support
Implement Levenshtein distance algorithm for typo tolerance
in search queries. Configurable via FUZZY_THRESHOLD env var.fix(cart): prevent duplicate items on rapid clicks
Add debounce to add-to-cart button and check for existing
items before insertion.
Fixes #234feat(api)!: change response format to JSON:API
BREAKING CHANGE: API responses now follow JSON:API spec.
All clients need to update their parsers.
- Wrap data in `data` object
- Move metadata to `meta` object
- Add `links` for paginationrefactor(auth): consolidate authentication logic
- Extract JWT handling to dedicated service
- Move session management from controller to middleware
- Add refresh token rotation
This prepares for the upcoming OAuth2 integration.When generating a commit message:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 6,493 | 4,548 | -30% | 1 | 1 | 0% | 1,125 | 1,611 | +43% | 0 | 0 | — |
case-02 | fail→fail | 5,436 | 3,357 | -38% | 1 | 1 | 0% | 885 | 1,392 | +57% | 0 | 0 | — |
case-03 | fail→pass | 7,744 | 4,330 | -44% | 1 | 1 | 0% | 1,249 | 1,549 | +24% | 0 | 0 | — |
case-04 | pass→pass | 9,515 | 9,567 | +1% | 1 | 1 | 0% | 1,513 | 2,280 | +51% | 0 | 0 | — |
case-05 | pass→pass | 7,348 | 5,371 | -27% | 1 | 1 | 0% | 1,160 | 1,755 | +51% | 0 | 0 | — |
case-06 | pass→pass | 8,180 | 7,525 | -8% | 1 | 1 | 0% | 1,319 | 1,998 | +51% | 0 | 0 | — |
case-07 | fail→fail | 3,135 | 4,323 | +38% | 1 | 1 | 0% | 536 | 1,613 | +201% | 0 | 0 | — |
case-08 | pass→pass | 5,328 | 3,606 | -32% | 1 | 1 | 0% | 852 | 1,425 | +67% | 0 | 0 | — |
case-09 | fail→pass | 5,453 | 4,262 | -22% | 1 | 1 | 0% | 902 | 1,595 | +77% | 0 | 0 | — |
case-10 | fail→fail | 4,609 | 5,825 | +26% | 1 | 1 | 0% | 770 | 1,800 | +134% | 0 | 0 | — |
case-11 | pass→pass | 4,983 | 3,221 | -35% | 1 | 1 | 0% | 852 | 1,353 | +59% | 0 | 0 | — |
case-12 | pass→pass | 3,902 | 3,614 | -7% | 1 | 1 | 0% | 718 | 1,426 | +99% | 0 | 0 | — |
case-13 | fail→pass | 5,782 | 6,000 | +4% | 1 | 1 | 0% | 1,062 | 1,844 | +74% | 0 | 0 | — |
case-14 | fail→fail | 3,058 | 4,742 | +55% | 1 | 1 | 0% | 513 | 1,646 | +221% | 0 | 0 | — |
case-15 | fail→fail | 5,247 | 4,259 | -19% | 1 | 1 | 0% | 927 | 1,582 | +71% | 0 | 0 | — |
case-16 | fail→fail | 4,851 | 5,456 | +12% | 1 | 1 | 0% | 821 | 1,740 | +112% | 0 | 0 | — |
case-17 | pass→pass | 5,619 | 4,952 | -12% | 1 | 1 | 0% | 968 | 1,673 | +73% | 0 | 0 | — |
case-18 | pass→pass | 6,238 | 3,589 | -42% | 1 | 1 | 0% | 1,065 | 1,468 | +38% | 0 | 0 | — |
case-19 | fail→fail | 8,047 | 5,579 | -31% | 1 | 1 | 0% | 1,300 | 1,758 | +35% | 0 | 0 | — |
case-20 | pass→fail | 6,071 | 5,718 | -6% | 1 | 1 | 0% | 974 | 1,807 | +86% | 0 | 0 | — |
case-21 | pass→pass | 4,371 | 3,732 | -15% | 1 | 1 | 0% | 783 | 1,541 | +97% | 0 | 0 | — |
case-22 | fail→pass | 7,265 | 5,182 | -29% | 1 | 1 | 0% | 1,196 | 1,707 | +43% | 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.