unslop-review — Claude Code skill: what it does, how to install
Rewrites pull request review comments to remove AI throat-clearing and polite fluff. Keeps feedback direct with line numbers and concrete fixes.
npx skills add MohamedAbdallah-14/unslop --skill unslop-review -a claude-codeWhat unslop-review does
This skill strips corporate fluff and artificial politeness from code reviews. It cuts opener phrases like "I noticed that..." along with empty praise before critique. Every comment gets straight to the point.
The standard output follows L<line>: <severity prefix> <observation>. <fix>. Optional prefixes flag severity: bug: marks broken logic, while risk: flags fragile code. Minor style tweaks get nit:, and genuine inquiries use q:. Multi-line issues use range syntax like L88-140:. When a pull request needs no changes, the skill outputs a plain LGTM.
Detailed explanations are reserved for security vulnerabilities and architectural debates. The tool focuses strictly on drafting comments. It will not commit files or run linters.
What it helps with
- strip robotic hedging and polite padding from PR comments
- format feedback into concise line numbers and concrete fixes
- categorize issues using
bug:,risk:,nit:, andq:tags - generate clean comments ready to paste into pull requests
Example prompts for the agent
- Review this PR with
/unslop-review - De-slop this code review comment and give me a concrete fix
- Format these review notes using line numbers and severity prefixes
How to install unslop-review
1Skills CLI (Vercel)
npx skills add MohamedAbdallah-14/unslop --skill unslop-review -a claude-code2Manually: put the files in place
~/.claude/skills/unslop-review/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/unslop-review/
1Skills CLI (Vercel)
npx skills add MohamedAbdallah-14/unslop --skill unslop-review -a codex2Manually: put the files in place
.agents/skills/unslop-review/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add MohamedAbdallah-14/unslop --skill unslop-review -a cursor2Manually: put the files in place
.cursor/skills/unslop-review/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install MohamedAbdallah-14/unslop unslop-review2Manually: put the files in place
.github/skills/unslop-review/SKILL.md1Skills CLI (Vercel)
npx skills add MohamedAbdallah-14/unslop --skill unslop-review -a gemini-cli2Platform CLI
gemini skills install https://github.com/MohamedAbdallah-14/unslop --path skills/unslop-reviewManually: put the files in place
.devin/skills/unslop-review/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add MohamedAbdallah-14/unslop --skill unslop-review -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-review
How do you install unslop-review in Claude Code?
Run npx skills add MohamedAbdallah-14/unslop --skill unslop-review -a claude-code in your terminal. You can also save the file directly to ~/.claude/skills/unslop-review/SKILL.md.
What does the standard unslop-review output look like?
Comments follow the pattern L<line>: <severity prefix> <observation>. <fix>. When reviewing across files, it prepends the path as <file>:L<line>:.
Does unslop-review execute Git actions or linters?
No, the skill produces review comments only. It does not commit code, trigger linter checks, or submit pull request approvals.
Source text
SKILL.md · MIT
---
name: unslop-review
description: >
Rewrites code review comments so they read like a human teammate wrote them.
Cuts corporate-AI throat-clearing ("I noticed...", "I was wondering if perhaps...",
"It might be worth considering..."). Each comment is direct: location, the issue, a concrete fix.
Use when user says "humanize review", "de-slop PR comment", "make this feedback sound human",
"review this PR", "code review", "/review", "/unslop-review". Auto-triggers when reviewing PRs.
---
# Unslop Review
## Purpose
Rewrite or generate PR review comments that sound like a teammate, not a politeness engine. Direct on the issue, concrete on the fix, kind on the human.
## Trigger
`/unslop-review`, `/review`, "review this PR", "code review", "humanize review", "de-slop this comment", "make this feedback sound human". Auto-trigger when reviewing pull requests.
## Format
Default shape: `L<line>: <severity prefix> <observation>. <fix>.`
Severity prefixes (optional but use them when severity matters):
- `bug:` — code is broken or will break
- `risk:` — works today, fragile tomorrow (perf, race, missing test)
- `nit:` — style, naming, dead code, "while you're here"
- `q:` — genuine question, not a hidden complaint
Multi-file: `<file>:L<line>: <severity> <observation>. <fix>.`
Range: `L88-140: ...` when the issue spans lines.
## Rules
### Drop
- Throat-clearing: "I noticed that...", "It seems like...", "It looks like to me..."
- Stacked hedging: "I was wondering if perhaps we might want to potentially..."
- Polite-padding: "I would kindly suggest...", "just a small suggestion..."
- Per-comment praise: "Nice work on this function but...", "Great pattern, however..."
- Restating the diff: "Here on line 42 you have a function called `getUser` which returns..."
- Bare opinion without a fix: "This is bad" with no suggestion
### Keep
- Exact line numbers and ranges
- Identifiers in backticks: `findUser`, `req.body.id`
- Concrete fix or concrete question
- "Why" only when the fix isn't obvious
### Tone
Human, not corporate. "This throws if X" not "It may potentially be worth considering that this could throw under certain conditions." Calibrated uncertainty is fine ("I think", "probably") — performative softening is not.
### Auto-clarity (use full prose, not one-liners)
- Security findings (CVE-class, auth, secrets)
- Architecture disagreements that need a real discussion
- Onboarding context for a new contributor
- When the answer is genuinely "this is fine"
In those cases use a short paragraph, then resume terse for the rest.
## Examples
### Bad → good
- Bad: `I would kindly suggest that we might want to potentially consider adding a null check here as it could maybe lead to issues in some scenarios.`
- Good: `L42: bug: \`findUser\` returns undefined when no match. Guard before \`user.email\` or early-return 404.`
- Bad: `Great work on this implementation! However, I think we could potentially enhance readability by considering a refactor of this function.`
- Good: `L88-140: nit: this function does validation, I/O, and mapping. Splitting them would make the happy path easier to follow. Happy to pair on a cut if helpful.`
- Bad: `I noticed that there's no retry logic here which could be problematic.`
- Good: `L23: risk: no retry on 429. Wrap the call in \`withBackoff(3)\` so we don't drop legitimate requests.`
- Bad: `This implementation leverages a robust caching strategy.`
- Good: (delete — empty praise. If the caching is genuinely interesting, explain why specifically.)
### Approval
If the change is solid and you have nothing concrete: `LGTM` on its own line. No boilerplate.
## Boundaries
- Comments only. No commits, no `git push`, no auto-approve, no linter runs.
- Output is paste-ready: one comment per line, or a clearly separated list.
- Severity must be honest. Don't downgrade a `bug` to a `nit` to soften the message.
© MohamedAbdallah-14 · MIT · MohamedAbdallah-14/unslop