unslop-commit — Claude Code skill: what it does, how to install
Cleans AI buzzwords and template filler from commit messages. Keeps messages within Conventional Commits limits and focuses strictly on why changes were made.
npx skills add MohamedAbdallah-14/unslop --skill unslop-commit -a claude-codeWhat unslop-commit does
The skill rewrites staged changes and draft commits into the Conventional Commits format. It strips template prefixes like "This commit..." and filler adverbs. Subject lines stay under 72 characters. Every summary verb uses the imperative mood.
It generates a body only when the subject line cannot explain the full reason for the change. Security fixes and breaking changes always receive explanatory notes. For routine edits, the output stays brief. The skill never runs git commit or modifies history; it outputs raw text in a fenced block.
What it helps with
- strip marketing jargon and filler adverbs from commit messages
- format draft commits to meet Conventional Commits rules
- document breaking changes and issue references cleanly
- enforce short imperative subjects without extra padding
Example prompts for the agent
- /unslop-commit: clean up this draft: feat: add error handling for auth
- Write a commit message for my staged changes via /commit
- Make this commit message sound direct and concise
How to install unslop-commit
1Skills CLI (Vercel)
npx skills add MohamedAbdallah-14/unslop --skill unslop-commit -a claude-code2Manually: put the files in place
~/.claude/skills/unslop-commit/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/unslop-commit/
1Skills CLI (Vercel)
npx skills add MohamedAbdallah-14/unslop --skill unslop-commit -a codex2Manually: put the files in place
.agents/skills/unslop-commit/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add MohamedAbdallah-14/unslop --skill unslop-commit -a cursor2Manually: put the files in place
.cursor/skills/unslop-commit/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install MohamedAbdallah-14/unslop unslop-commit2Manually: put the files in place
.github/skills/unslop-commit/SKILL.md1Skills CLI (Vercel)
npx skills add MohamedAbdallah-14/unslop --skill unslop-commit -a gemini-cli2Platform CLI
gemini skills install https://github.com/MohamedAbdallah-14/unslop --path skills/unslop-commitManually: put the files in place
.devin/skills/unslop-commit/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add MohamedAbdallah-14/unslop --skill unslop-commit -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about unslop-commit
How to install unslop-commit in Claude Code?
Run npx skills add MohamedAbdallah-14/unslop --skill unslop-commit -a claude-code in your terminal.
What does unslop-commit do?
It rewrites commit drafts to match Conventional Commits standards, stripping filler words and wordy descriptions.
Does unslop-commit run Git commands automatically?
No. It does not run git commit, git add, or git amend. The skill outputs raw text inside a fenced code block for you to paste.
Source text
SKILL.md · MIT
---
name: unslop-commit
description: >
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 a draft commit to clean up.
Auto-triggers when staging changes.
---
# Unslop Commit
## Purpose
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.
## Trigger
`/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.
## Rules
### Subject line
- Format: `<type>(<scope>): <imperative summary>`
- Scope optional. Types: `feat`, `fix`, `chore`, `refactor`, `docs`, `test`, `perf`, `build`, `ci`, `revert`.
- Imperative mood: `add`, `fix`, `move`, `remove` — not `added`, `fixes`, `fixing`.
- ≤50 chars when possible. Hard cap 72.
- No trailing period.
- Lowercase after `:` unless the project capitalizes.
### Body (only when subject can't carry it)
- Add for: non-obvious "why", breaking changes, migrations, security context, data integrity.
- Wrap at 72 chars. Bullets `-` for two or more independent points. Single paragraph for one thought.
- End with refs: `Closes #42`, `Refs #17`. No `BREAKING CHANGE:` unless truly breaking — and then write it.
### Never include
- Template prefixes: "This commit...", "This change...", "We are...", "I have..."
- Marketing verbs: comprehensive, robust, enhance, leverage, seamless, holistic
- Filler adverbs: just, really, basically, simply, actually
- Restating the filename when scope already names it
- "As requested by..." (use `Co-authored-by:` if you need attribution)
- AI attribution unless the project requires it
- Emoji unless project convention says so
### Auto-clarity (always include body)
- Breaking changes
- Security fixes
- Data migrations
- Reverts (cite the reverted commit)
## Examples
### Bad → good (slop subject, no body)
- Bad: `feat: implement a comprehensive, robust solution for user profile retrieval with enhanced error handling`
- Good: `feat(api): return profile fields the mobile client actually needs`
### Bad → good (vague body)
Bad:
```
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 #842
```
### Breaking change
```
feat(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 #1290
```
## Boundaries
- Output the message only, in a single fenced block, ready to paste.
- Do not run `git commit`, stage, or amend.
- If the change is genuinely trivial (`docs(readme): fix typo`), keep it trivial. Don't pad.
- Never invent context the user didn't provide. If the "why" isn't clear, ask, or omit the body.
© MohamedAbdallah-14 · MIT · MohamedAbdallah-14/unslop