Skill

Rewrite PR comments to sound human, not corporate-AI

Rewrites code review comments to sound like a direct human teammate, cutting corporate hedging and empty praise.

Works with github

79
Spark score
out of 100
Updated 27 days ago
Version unslop-v0.6.2

Add to Favorites

Why it matters

Transform verbose, hedge-filled code review comments into direct, actionable feedback that reads like it came from a human teammate-cutting throat-clearing and politeness padding while keeping the fix concrete and the tone kind.

Outcomes

What it gets done

01

Strip corporate hedging and throat-clearing from review comments

02

Format feedback with exact line numbers, severity prefixes, and concrete fixes

03

Convert multi-paragraph politeness into terse, scannable observations

04

Preserve technical precision while removing performative softening

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/ag-unslop-review | bash

Overview

Unslop Review

This skill rewrites or generates code review comments in a direct, line-referenced format (location, severity prefix, observation, concrete fix), stripping corporate hedging and empty praise so comments read like a human teammate wrote them. Use it whenever PR review comments need writing or de-slopping - it only produces comment text, never commits, pushes, or approves anything itself.

What it does

Rewrites or generates code review comments so they read like a teammate wrote them, not a politeness engine - direct on the issue, concrete on the fix, kind on the human. Triggers on /unslop-review, /review, "review this PR," "humanize review," "de-slop this comment," or automatically when reviewing pull requests.

The default comment shape is L<line>: <severity prefix> <observation>. <fix>. (multi-file: <file>:L<line>: ...; a line range: L88-140: ...), with optional severity prefixes used when severity matters: bug: for code that's broken or will break, risk: for something that works today but is fragile (performance, race conditions, missing tests), nit: for style/naming/dead-code/while-you're-here items, and q: for a genuine question rather than a hidden complaint - e.g. a real example given in the skill's source: "L42: bug: findUser returns undefined when no match. Guard before user.email or early-return 404."

It drops throat-clearing ("I noticed that...", "It seems like..."), 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..."), restating the diff instead of making a point, and bare opinions with no fix attached ("This is bad" with no suggestion). It keeps exact line numbers/ranges, identifiers in backticks, a concrete fix or question, and a "why" only when the fix isn't self-evident. Tone is human, not corporate - calibrated uncertainty ("I think", "probably") is fine, performative softening is not.

Security findings (CVE-class, auth, secrets), architecture disagreements needing real discussion, onboarding context for a new contributor, and cases where the honest answer is "this is fine" get a short paragraph of full prose instead of a one-liner, then the rest of the review resumes terse. If a change is solid with nothing concrete to flag, the entire comment is just LGTM on its own line, no boilerplate around it.

When to use - and when NOT to

Use it whenever code review comments need writing or an existing corporate-toned draft needs de-slopping into something a teammate would actually say. It only produces comment text - no commits, no git push, no auto-approve, no linter runs - and severity must stay honest (never downgrade a bug to a nit just to soften the message).

Inputs and outputs

Input is a diff/PR to review or an existing draft comment to rewrite. Output is paste-ready review comments - one per line, or a clearly separated list - each following the L<line>: <severity> <observation>. <fix>. shape, or a bare LGTM when there's nothing to flag.

Integrations

Format-only tooling around standard PR review workflows (line-referenced comments with severity prefixes) - no direct integration with a specific git host or CI system beyond producing comment text ready to paste into one.

Who it's for

Reviewers who want direct, specific, human-sounding PR feedback (location, issue, concrete fix) without the corporate hedging and empty praise that make automated or template-driven review comments feel evasive.

Source README

Unslop Review

When to Use

Use this skill when you need 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...

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.

Limitations

  • Use this skill only when the task clearly matches its upstream source and local project context.
  • Verify commands, generated code, dependencies, credentials, and external service behavior before applying changes.
  • Do not treat examples as a substitute for environment-specific tests, security review, or user approval for destructive or costly actions.

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.