Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Rewrites commit messages so they sound like a careful human engineer wrote them. Strips AI/marketing slop ("comprehensive solution", "robust implementation", "leverage", "enhance", "seamlessly", "This commit..."). Keeps Conventional Commits format. Subject ≤72 chars (aim ≤50), imperative mood. Body only when "why" isn't obvious from the subject. Use when user says "humanize commit", "de-slop commit message", "make this commit sound human", "/unslop-commit", "/commit", "write a commit", or pastes
.claude/skills/bilal140202-unslop-commit/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 148% | 0% |
| case-01 | ✓→✗ | ▼ Worse | 334% | 0% |
| case-02 | ✓→✓ | = Same ✓ | -1% | 0% |
| case-08 | ✓→✓ | = Same ✓ | 42% | 0% |
Generate or rewrite commit messages so they read like a real engineer wrote them at the end of a real day. Conventional Commits format. Direct, specific, no template English. Why over what.
/unslop-commit, /commit, "write a commit", "commit message", "humanize this commit", "de-slop this commit". Auto-trigger when the user has staged changes and asks for a commit message.
<type>(<scope>): <imperative summary>feat, fix, chore, refactor, docs, test, perf, build, ci, revert.add, fix, move, remove — not added, fixes, fixing.: unless the project capitalizes.- for two or more independent points. Single paragraph for one thought.Closes #42, Refs #17. No BREAKING CHANGE: unless truly breaking — and then write it.Co-authored-by: if you need attribution)feat: implement a comprehensive, robust solution for user profile retrieval with enhanced error handlingfeat(api): return profile fields the mobile client actually needsBad:
fix: fixed the bug
This commit addresses an issue where the application was not working correctly
in some edge cases. We've improved the logic to handle these scenarios.Good:
fix(checkout): ignore stale cart id from localStorage
Stale cart ids came from tabs that hadn't refreshed after a deploy. Server
now treats unknown ids as empty cart instead of 500.
Closes #842feat(api)!: rename /v1/orders to /v1/customer-orders
The old route stays in place until the next major release but logs a
deprecation warning. Internal services have been migrated.
BREAKING CHANGE: third-party integrations using /v1/orders directly need
to switch to /v1/customer-orders by 2026-07-01.
Closes #1290git commit, stage, or amend.docs(readme): fix typo), keep it trivial. Don't pad.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→fail | 2,129 | 5,447 | +156% | 1 | 1 | 0% | 429 | 1,861 | +334% | 0 | 0 | — |
case-02 | pass→pass | 8,317 | 3,975 | -52% | 1 | 1 | 0% | 1,513 | 1,492 | -1% | 0 | 0 | — |
case-08 | pass→pass | 5,412 | 4,048 | -25% | 1 | 1 | 0% | 1,102 | 1,563 | +42% | 0 | 0 | — |
case-03 | pass→pass | 13,036 | 9,366 | -28% | 1 | 1 | 0% | 2,714 | 2,763 | +2% | 0 | 0 | — |
case-04 | pass→pass | 3,944 | 4,858 | +23% | 1 | 1 | 0% | 768 | 1,752 | +128% | 0 | 0 | — |
case-05 | fail→fail | 4,499 | 3,528 | -22% | 1 | 1 | 0% | 943 | 1,567 | +66% | 0 | 0 | — |
case-06 | fail→pass | 7,452 | 3,512 | -53% | 1 | 1 | 0% | 1,327 | 1,460 | +10% | 0 | 0 | — |
case-07 | pass→pass | 4,023 | 3,444 | -14% | 1 | 1 | 0% | 693 | 1,465 | +111% | 0 | 0 | — |
case-09 | pass→pass | 7,176 | 4,048 | -44% | 1 | 1 | 0% | 1,258 | 1,522 | +21% | 0 | 0 | — |
case-10 | pass→pass | 8,895 | 3,883 | -56% | 1 | 1 | 0% | 1,591 | 1,533 | -4% | 0 | 0 | — |
case-11 | pass→pass | 6,047 | 3,970 | -34% | 1 | 1 | 0% | 1,203 | 1,548 | +29% | 0 | 0 | — |
case-12 | pass→pass | 4,938 | 1,914 | -61% | 1 | 1 | 0% | 903 | 1,172 | +30% | 0 | 0 | — |
case-13 | pass→pass | 5,191 | 4,026 | -22% | 1 | 1 | 0% | 1,012 | 1,571 | +55% | 0 | 0 | — |
case-14 | pass→pass | 6,372 | 3,837 | -40% | 1 | 1 | 0% | 1,122 | 1,482 | +32% | 0 | 0 | — |
case-15 | pass→pass | 9,048 | 5,243 | -42% | 1 | 1 | 0% | 1,539 | 1,770 | +15% | 0 | 0 | — |
case-16 | pass→pass | 5,952 | 4,247 | -29% | 1 | 1 | 0% | 1,071 | 1,555 | +45% | 0 | 0 | — |
case-17 | pass→pass | 3,034 | 2,936 | -3% | 1 | 1 | 0% | 579 | 1,313 | +127% | 0 | 0 | — |
case-18 | fail→pass | 2,830 | 2,370 | -16% | 1 | 1 | 0% | 506 | 1,257 | +148% | 0 | 0 | — |
case-19 | pass→pass | 5,300 | 1,986 | -63% | 1 | 1 | 0% | 990 | 1,153 | +16% | 0 | 0 | — |
case-20 | pass→pass | 7,563 | 3,280 | -57% | 1 | 1 | 0% | 1,324 | 1,463 | +10% | 0 | 0 | — |
case-21 | pass→pass | 8,069 | 5,135 | -36% | 1 | 1 | 0% | 1,417 | 1,780 | +26% | 0 | 0 | — |
case-22 | pass→pass | 7,288 | 3,863 | -47% | 1 | 1 | 0% | 1,148 | 1,541 | +34% | 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 +5 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.