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
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.
About
Use cases: design
Reviews
Write a reviewNo 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
- 0.740score
release-debrief
Sam McLeod (adapted from Arjen Schwarz)
Summarises the delta between a tool's latest release and the last summary the user saw.
SkillBFreshness: B★ 167Claude Code - 0.732score
extract-wisdom
sammcj
Extract wisdom, insights, and actionable takeaways from YouTube videos, blog posts, articles, or text files.
SkillAFreshness: A★ 167Claude Code - 0.732score
ambitious-model-use
sammcj
Use when the user asks to be more ambitious with an AI task: aim at the outcome behind it, work it like a field-leading expert from raw data, or bring in…
SkillAFreshness: A★ 167Claude Code +9 - 0.732score
ai-changelog
sammcj
Set up an AI-driven changelog system in any project, code or not.
SkillAFreshness: A★ 167Claude Code +9 - 0.729score
retro
sammcj
Retrospective on a coding session that proposes changes to the agent's environment (checks, pointers, steering, tooling) so the next run goes better.
SkillAFreshness: A★ 167Claude Code +9 - 0.728score
skill-creator-primer
sammcj
You **MUST** load this skill before the skill-creator skill AND before making ANY change to, or conducting a review of ANY Agent Skill.
SkillAFreshness: A★ 167Claude Code +9 - 0.728score
deferred-task-execution
sammcj
Delays execution of a task until a specified time or after a duration.
SkillAFreshness: A★ 167Claude Code +9 - 0.727score
prompt-enhancer
sammcj
Transform poor or overly simple prompts with expert-level framing.
SkillAFreshness: A★ 167Claude Code +9 - 0.727score
find-docs
sammcj
Retrieves up-to-date documentation, API references and code examples for any developer technology.
SkillAFreshness: A★ 167Claude Code +9 - 0.727score
backlog
sammcj
Capture single backlog items, or list and triage an existing project backlog.
SkillAFreshness: A★ 167Claude Code +9 - 0.727score
creating-development-plans
sammcj
Creates structured development plans with phased task breakdowns, requirements, and QA checklists.
SkillAFreshness: A★ 167Claude Code +9 - 0.727score
systematic-debugging
sammcj
Applies a modified Fagan Inspection methodology to resolve persistent bugs and complex issues.
SkillAFreshness: A★ 167Claude Code +9
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
- Repository
- github.com/sammcj/agentic-coding
- Website
- smcleod.net
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from sammcj
- 0.732score
extract-wisdom
sammcj
Extract wisdom, insights, and actionable takeaways from YouTube videos, blog posts, articles, or text files.
SkillAFreshness: A★ 167Claude Code - 0.732score
ambitious-model-use
sammcj
Use when the user asks to be more ambitious with an AI task: aim at the outcome behind it, work it like a field-leading expert from raw data, or bring in…
SkillAFreshness: A★ 167Claude Code +9 - 0.732score
ai-changelog
sammcj
Set up an AI-driven changelog system in any project, code or not.
SkillAFreshness: A★ 167Claude Code +9 - 0.729score
retro
sammcj
Retrospective on a coding session that proposes changes to the agent's environment (checks, pointers, steering, tooling) so the next run goes better.
SkillAFreshness: A★ 167Claude Code +9 - 0.728score
deferred-task-execution
sammcj
Delays execution of a task until a specified time or after a duration.
SkillAFreshness: A★ 167Claude Code +9 - 0.728score
skill-creator-primer
sammcj
You **MUST** load this skill before the skill-creator skill AND before making ANY change to, or conducting a review of ANY Agent Skill.
SkillAFreshness: A★ 167Claude Code +9
Cite this page
rewrite-slop skill. Agent Mart. https://agentmart.dev/skills/sammcj-rewrite-slop (last updated 2026-10-24)