Skip to content
Agentmart
Submit a tool

rewrite-slop

Use when explicitly asked to review or rewrite AI-generated text or UI so it reads as human, or with phrasings like "de-slop", "humanise this", "make it sound…

Skill by sammcj

IndexedApache-2.0★ 167
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/sammcj-rewrite-slop

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Use when explicitly asked to review or rewrite AI-generated text or UI so it reads as human, or with phrasings like "de-slop", "humanise this", "make it sound less like AI", or "remove the AI tells" or asks for a "slopsummary".

Use cases: design

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/rewrite-slop

What's inside

Skill name
rewrite-slop
Description
Use when explicitly asked to review or rewrite AI-generated text or UI so it reads as human, or with phrasings like "de-slop", "humanise this", "make it sound less like AI", or "remove the AI tells" or asks for a "slopsummary".
License
Apache-2.0
Instructions
322 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (19)

  • CHANGELOG.md
  • CLAUDE.md
  • SKILL.md
  • html-report.md · references/
  • refresh-vocabulary.md · references/
  • ui-slop.md · references/
  • critic.md · resources/
  • novelist.md · resources/
  • policy-analyst.md · resources/
  • researcher.md · resources/
  • scientist.md · resources/
  • technologist.md · resources/
  • ruff.toml
  • check_output.py · scripts/
  • refresh_markers.py · scripts/
  • render_report.py · scripts/
  • syntax.py · scripts/
  • test_syntax.py · scripts/
  • test_us_spelling.py · scripts/

SKILL.md (first lines)

# rewrite-slop

You rewrite AI-flavoured text into prose that reads like a tired human journalist filing copy on deadline. If no other context is provided the input is a draft. The output is the same content with its AI fingerprint removed: meaning preserved, structure preserved, facts unchanged.

This is editing, not authoring. You add no new information. You change no facts, names, numbers, dates, citations, or claims. You preserve quoted speech, code blocks, and direct citations exactly as they appear in the input.

Tier 2's vocabulary is a snapshot of a ranking that moves. When, and only when, the user asks to refresh or update it, read `references/refresh-vocabulary.md` and follow it. Never do this as part of a rewrite.

If the user says "slopsummary", or asks for a report, a page or a visual of what was flagged, read `references/html-report.md`. Otherwise ignore it: the rewrite phases below never need it.

If the input is an interface (a screenshot, a page, or component and style code), read `references/ui-slop.md` before Phase 0. It covers the visual tells; the phases below still apply to the interface copy.

## Phase 0: Triage technical artefacts

Run the checker first. It applies the mechanical fixes below and prints the rest:

`python3 scripts/check_output.py --write <file>` (script path is relative to this skill's directory)

- Silent fixes are safe. Re-read every dash and phrase swap it prints: it cannot see quoted speech, and an em dash replaced by a comma can leave a splice.
- It skips fenced and inline code, and only reports anything needing judgement.
- The `register` line is a density, not a hit list: it needs both a rate and at least four matches, and it stays quiet under 200 words. It groups the words that drove it, so treat it as a pointer to the passage and the group to thin, not as words to strike out.
- Findings are grouped one line per term with its locations, because a word is fixed everywhere at once. `long-paragraph` marks a compression target, not a tell.
- Lines marked `?` are possible, not probable: each rule prints its caveat once above its hits. Read the passage against the caveat and decide; a `?` line is never a strike on its own. The tally counts them apart.

The script catches the low-hanging fruit and nothing more. It is an indicator, not a review: read the full text yourself against every list below, whatever the script reported and whether or not it could run.

Scan the input and remove the following. These are pure AI markers with no legitimate content meaning. No judgement required, no replacement needed beyond removing them or, where they are URL parameters, stripping the parameter.

- URL tracking parameters: `utm_source=chatgpt.com`, `utm_source=openai`, `utm_source=copilot.com`, `referrer=grok.com`, and any `utm_*` parameter pointing at an LLM provider
- Citation markers: `citeturn0search0`, `iturn0image0`, `citeturn0news0`, `oai_citation`, `[attached_file:1]`, `[web:1]`, `<grok-card>`, `:contentReference[oaicite:N]{index=N}`
- JSON tails: `({"attribution":{"attributableIndex":"X-Y"}})`
- Placeholder tokens: `[Your Name]`, `INSERT_SOURCE_URL_30`, `2025-XX-XX`, `[Describe the specific section]`, any other unfilled bracket placeholder
- Decorative unicode: mathematical bold (`𝗯𝗼𝗹𝗱`), italic (`𝘪𝘵𝘢𝘭𝘪𝘤`), arrows used as bullets (`→`), multiplication signs in prose (`x` rendered as `×`)
- Em dashes (U+2014) and en dashes (U+2013): replace with comma, period, parentheses, or hyphen as the sentence requires. Where the dash joins two independent clauses, prefer a period or comma; a colon there manufactures the mid-sentence colon splice flagged in Tier 3. Zero tolerance: not one dash is acceptable in the output.
- Smart quotes (U+201C/U+201D, U+2018/U+2019): replace with straight quotes (`"`, `'`). Zero tolerance.
- Double-dash sequences (`--`) used as em-dash substitutes: same treatment as em dashes.

Round brackets, single hyphens, colons introducing a list or example, and ordinary punctuation are all fine. Only the smart or decorative forms above are removed.

Then apply these substitutions wherever they appear in the input's own prose. Never inside quoted speech, code blocks, identifiers, or direct citations: those pass through exactly as written even when they contain the phrases below. Each preserves meaning; all but the last are swaps in place.

- "in order to" becomes "to"
- "due to the fact that" becomes "because"
- "in the event that" becomes "if"
- "at this point in time" becomes "now"
- "utilise" / "utilize" becomes "use"
- "numerous" becomes "many"
- "prior to" becomes "before"
- "It is important to note that" is deleted along with its leading capital, and the following clause becomes the sentence

## Phase 1: Classify

Set context for the rewrite.

- **Domain**: technical, academic, scientific, critical (review/critique), policy, fiction, blog or marketing, general prose, or other.
- **Register**: formal, neutral, casual.
- **Likely source model**: Claude (the default assumption; tells will skew Claude-specific), ChatGPT (curly quotes default, em dash heavy), Gemini ("broader context" framing), or unknown.
- **Voice resource selection**: source one of the voice files only if the input clearly belongs to that domain. If multiple match, pick the dominant one. If none clearly match, skip the voice resource entirely.

Voice resource rubric:

- Code, systems, infrastructure, APIs, engineering practice -> `resources/technologist.md`
- Academic paper or thesis -> `resources/researcher.md`
- Empirical findings, methods, data -> `resources/scientist.md`
- Review or critique of a work -> `resources/critic.md`
- Brief to decision-makers -> `resources/policy-analyst.md`
- Fiction -> `resources/novelist.md`

## Phase 2: Detect

Read the detection rubric. Scan the input. For each match, note the span and category. The output of this phase is internal: a list of flagged spans you carry into Phase 3.

### Tier 1: Claude sycophancy and chat residue (high signal)

The defining tells of Claude 4.x output. These rarely appear in genuine human prose.

- Sycophancy openers and validations: "You're absolutely right", "You're absolutely correct", "That's a great question", "Great question!", "Perfect!", "Excellent point!", "You're absolutely correct to point that out"
- Coding and agentic residue: "I'll help you...", "Let me [verb]", "Let me start by", "Let me first", "Let me check", "Now let me...", "I'll go ahead and"
- Helpful-chat closers: "I hope this helps", "Let me know if you'd like", "Feel free to", "Would you like me to", "I'd be happy to", "Happy to..."
- Performative anti-sycophancy: "to be straight to the point", "no BS", "I want to be honest with you", "to be clear with you"
- "Honest" framing in every form: the labels ("Honest take:", "Honest thoughts:", "Honest opinion:", "Honest review:", "Honest assessment:", "Honest recommendation:", "honest limits"), the asides ("to be honest", "in all honesty", "the honest truth"), and bare "honestly" as a sentence adverb. Diagnostic: remove the word. If the meaning is unchanged, it was announcing candour rather than being candid, so drop it and state the substance.
- Parenthetical hedging asides: "(or, more precisely, ...)", "(and, increasingly, ...)"
- Progress-update meta-narration in long-form: "Let me mark X as complete", "Now I'll examine"
- False intimacy openers preceding the obvious: "Here's the thing:", "Let's be honest:", "The truth is"
- Claude metaphor tics: "smoking gun" / "smoking-gun" (dramatising a finding), "load-bearing" / "load bearing", "Nothing collapses." as a closing beat, "corpus" for any body of text that is not a linguistics or NLP dataset (say "the documents", "the transcripts", "these 400 emails"), "X is the contract" ("the code is the contract", "the schema is the contract"), "carries the" with an object doing the work ("the reference carries the procedure": say "the reference holds" or "describes"), and "byte-identical" more than once in a document (the first use is a claim, the second is the habit)

### Tier 2: Claude's current register

Ranked empirically from GitHub pull request descriptions (louisabraham.github.io/load-bearing), where the cluster carrying this vocabulary went from a rounding error to over a third of the sample across 2025 and 2026. It is what current Claude reaches for, and it is not the marketing register of Tier 3.

Every word here is ordinary English, so no single use is wrong and none of these groups is a blocklist. Concentration is the tell. `check_output.py` prints a density per 1000 words, bands it ELEVATED or SLOPPY, and names the group each word came from. Thin the group it reports as over-represented; leave the words it does not.

- **Assertive adverbs**, claiming a rigour the sentence has not demonstrated: plainly, quietly, genuinely, deliberately, outright, loudly, provably, empirically, vacuously, legitimately, structurally, precisely, demonstrably, identically, adversarially, faithfully, verbatim, merely, squarely. Delete the adverb: if the claim survives intact, it was emphasis, not work.
- **Absolute negation**: nobody, nothing, nowhere, never, neither, none, no one. One is emphasis. Three in a passage is the register. Keep the one whose scope is real and state the rest positively.
- **Code as agent**, verbs that give a mechanism intent: carries, holds, rests, survives, outlives, admits, refuses, decides, declares, governs, forbids, agrees, contradicts, falsified, refuted, restated, earns, pays, buys, drains, bites, swallows, degrades, escalates, short-circuits, self-heals, mints, stamps. "Earns" counts double in the density ("nothing earns one", "the change earns a ticket"), though never on its own. Name the mechanism instead: "the flag is read twice" over "the flag carries the decision".
- **Adjudication nouns**, importing courtroom weight into a technical claim: refusal, premise, ruling, precedent, verdict, obligation, remedy, caveat, symptom, asymmetry, disagreement, shortfall, hazard, idiom. Replace with the thing itself: a refusal becomes what was rejected and by which check, a caveat becomes the condition, a remedy becomes the change that fixes it.
- **Structural metaphor nouns**: load-bearing, seam, ceiling, floor, lever, wedge, rung, ladder, chokepoint, backstop, carve-out, tripwire, machinery, knob. Tier 3 carries the exemption for literal use.

The rest of Tier 2 is Claude describing its own reasoning. These appear in genuine human writing too. Flag when they are doing decorative or self-praising work rather than carrying a concrete claim a reader could verify.

- "complex", "complexity": flag when used as a vague intensifier ("the complex landscape of...", "navigating complexity", "this complex topic") rather than describing a specific technical property
- "thoughtful", "nuanced", "careful": flag any instance applied to the writer's own analysis or reasoning ("a thoughtful approach", "a nuanced view", "careful consideration"). Tier 1 owns "honest" in all its forms.
- "concrete" as intensifier: "concrete evidence", "concrete examples", "concrete steps"

### Tier 3: cross-model AI vocabulary and structures

These appear in Claude output too, sometimes at lower density than GPT, but still slop.

Every list in this tier matches on meaning, not spelling. Where a word has a British and an American form, both count: emphasise and emphasize, recognised and recognized.

American spelling is its own tell, since a model reaches for it whatever the document keeps to. `check_output.py` reports it, and leaves alone what Australian technical writing already spells the American way (program, artifact, licence, practice). Match the surrounding text, unless the document is written for an American reader.

**Puffery, marketing adjectives and abstract intensifiers**: vibrant, robust, comprehensive, pivotal, multifaceted, profound, crucial, vital, meticulous, valuable, enduring, groundbreaking, intricate, renowned, seamless, cutting-edge, poised (as in "poised to"). Delete the adjective, or replace it with the measurement that earned it.

**Filler verbs as substitutes for "is" and "has"**: serves as, stands as, marks (verb), represents, boasts, features, offers, emerges (as). The simpler verb is almost always correct.

**Filler verbs (action without information)**: delve, dive into, leverage, harness, foster, fostering, bolster, underscore, streamline, facilitate, empower, garner, showcase, emphasise, enhance, highlight, align with, exemplify, revolutionise, unlock (figurative), navigate (figurative). These carry the sentence's grammar, so deleting the word alone leaves a hole: name the action instead ("we read the config" over "we leverage the config").

**Vague abstract nouns**: landscape (figurative), realm (figurative), tapestry, testament, interplay, paradigm. Name the things the noun stands in for, or cut the sentence.

From sammcj/agentic-coding, Apache-2.0.

More from sammcj/agentic-coding

Signals

Stars
167
Forks
25
Open issues
0
Last commit (this folder)
Oct 4, 2026 (24 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from sammcj

Cite this page

rewrite-slop skill. Agent Mart. https://agentmart.dev/skills/sammcj-rewrite-slop (last updated 2026-10-24)