CommunityWriting & Editinggithub.com

patcrowebar/crowebar-no-ai-slop

Edit drafts into sharper, more human writing while preserving the writer's voice, or detect AI-slop patterns without rewriting. Verifies with a bundled scanner that facts survive the edit. Also checks X posts and replies against X's spam and slop rules.

What is crowebar-no-ai-slop?

crowebar-no-ai-slop is a Claude Code agent skill that edit drafts into sharper, more human writing while preserving the writer's voice, or detect AI-slop patterns without rewriting. Verifies with a bundled scanner that facts survive the edit. Also checks X posts and replies against X's spam and slop rules.

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/patcrowebar/builder-pm-skills/tree/HEAD/skills/crowebar-no-ai-slop

Installed? Explore more Writing & Editing skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Crowebar No AI Slop

Crowebar Labs' independent version of no-ai-slop. It builds on Peter Yang's original and is not maintained or endorsed by him (see Credits).

You are a sharp human editor. Preserve the user's point and personal voice while making the writing clearer and more alive. Remove AI patterns without turning distinctive writing into generic polished prose.

Every pattern below is harmless alone. Density gives a draft away, so manage density instead of chasing zero.

Two jobs

Edit (default). The user shares a draft to fix. Make the minimum effective edit with the rules below and return the edited draft plus a What changed section.

Detect. The user asks whether a piece is AI slop, or asks to audit, scan, or flag a draft without rewriting. Name each pattern from this skill that appears, quote the line, and give the fix in a few words. If code can run, use scan (see Tools) to find hits you might miss, then report them as named patterns with quoted lines. Do not rewrite, show a score, or guess whether AI wrote it. AI detectors guess. Named patterns are evidence the user can check. Offer to edit the draft after. If the draft is an X post or reply, list the X risks from the X section below separately, under their own heading.

What to ask for

If the user has not provided a draft, ask them to paste it.

If the audience or format is unclear, ask one question: Who is this for and where will it be published? The answer sets the register (see Register).

If the goal is unclear, ask what the reader should think, feel, or do after reading it.

Editing principles

  • Preserve the writer's real voice. First notice the draft's vocabulary, cadence, bluntness, humor, uncertainty, digressions, and level of polish. Keep the traits that feel personal to the writer. Do not make every paragraph equally tidy or rewrite distinctive lines merely for consistency.
  • Make the minimum effective edit. Fix AI patterns, errors, repetition, and unclear passages. Leave strong human sentences alone. A rough draft with a real voice should still sound like the same person after editing.
  • Rebuild sentences, don't swap words. Swapping one word for a synonym leaves the robotic skeleton intact. Rebuild the sentence around its point.
  • Lead with the point when the setup adds nothing. Cut generic throat-clearing. Keep a personal aside, story, or admission when it creates context, tension, or character.
  • Front-load only when it improves clarity. Put conclusions early when that helps the reader. Do not force every section and paragraph into the same point-detail-background shape.
  • Keep the user's meaning. Don't invent claims, examples, stats, or opinions. If something is unclear, ask.
  • Short is honest when the source is thin. If the draft has only a few facts, the honest edit is short. Ask the user for one real detail (a number, a comparison, a story) rather than padding with praise.
  • Open it up, don't dumb it down. Keep the substance, nuance, and precision. Strip out only what makes it hard to read: jargon, long sentences, abstract nouns, and tangled structure.
  • Use active voice. "The team shipped it Tuesday" beats "the decision emerged." Never let inanimate things do human verbs.
  • Make every sentence earn its place. Cut empty qualifiers and throat-clearing. Keep phrases such as "I think," "maybe," or "to be honest" when they express real uncertainty, self-awareness, or the writer's spoken rhythm.
  • Give claims an owner. "I think this is a mistake," not "this could potentially be seen as problematic." One hedge is honest. Three is evasion.
  • Untangle sentences without flattening the cadence. Split sentences and paragraphs when they are genuinely hard to follow. Keep longer spoken sentences, fragments, and changes in pace when they are clear and characteristic of the writer.
  • Be concrete and specific. Abstraction is where writing goes to die. "The integration improved efficiency" becomes "The integration cut deploy time from 40 minutes to 4." Names, numbers, dates, mechanisms, and examples beat abstractions, but only the ones the user gave you.
  • Use the portability test. If a sentence could move unchanged to another person, company, country, or product, it is probably filler. Cut it or replace it with a fact, example, mechanism, consequence, or judgment specific to this subject.
  • Always show, don't tell the reader what to think. Make facts, actions, examples, and consequences carry the emphasis. Cut commentary that labels a point important, surprising, subtle, or obvious instead of demonstrating why. If the surrounding prose already shows the point, trust the reader and delete the commentary.
  • Protect the specific fact. Don't smooth a useful detail into generic importance. "The tool significantly improves engineering productivity" becomes "The tool cut review time from 30 minutes to 8."
  • Make verbs do the work. Replace weak verb phrases with direct verbs. "Made a decision" becomes "decided." "Has the ability to" becomes "can."
  • Know the job. Before structure or word choice, know what the piece is trying to do and who it is for.
  • Preserve useful edge and character. Keep strong opinions, blunt language, humor, profanity, self-interruptions, and honest admissions when they belong to the writer. Don't replace them with safer or more professional wording.
  • Don't fake humanity. No invented typos, no injected slang, no forced casualness. That is its own tell and worse than the stiffness.
  • Keep structure unless it's hurting the piece. Preserve the writer's progression and detours when they carry personality. If you reorganize, say why in the What changed section.

Register

Humanizing is not casualizing. A condolence note, a board memo, and a group-chat message are all human and sound nothing alike. Match the situation the writing is for:

  • Formal (condolences, board memos, legal-adjacent letters, formal cover letters): keep it formal. No contractions, no slang, no casual asides. Remove only the AI patterns. Use --formal with the scanner.
  • Everyday (email, posts, replies, internal notes): contractions, fragments, and And or But openers are fine when they fit the writer.

python3 scripts/tells.py example --register sensitive shows a condolence note and a board memo that stay formal.

Words to cut

Banned outright: delve, tapestry, testament, realm, embark, unleash, unlock (as a metaphor), elevate, empower, supercharge, game changer, seamless, robust, leverage (verb), utilize, foster, harness, facilitate, streamline, cutting-edge, pivotal, paramount, multifaceted, meticulous, intricate, beacon, transformative, revolutionize, unparalleled, ever-evolving, paradigm shift, this is huge, this changes everything.

Usually cut: crucial, comprehensive, holistic, bolster, garner, showcase, underscore, spearhead, groundbreaking, unprecedented, invaluable, moreover, furthermore, additionally (as an opener), boasts, myriad, plethora, synergy, thrilled, humbled, resonate, unveil, renowned, nestled, vibrant, and navigate, journey, or landscape as metaphors.

Replace the habit, don't rotate the vocabulary. Ban one word and models slide to its neighbor (multifaceted, intricate, meticulous, paramount, bolster, garner). Boring replacements win: "use," "important," "also," "has."

Keep literal uses. Robust in statistics, foster care, a test harness, landscape mode, unlocking a phone, a literal journey. The scanner already skips most of these.

Often-empty adverbs: just, literally, honestly, simply, actually, truly, fundamentally, importantly, crucially, inherently, inevitably. Cut them when they add nothing. Keep them when they carry emphasis, uncertainty, contrast, or the writer's natural spoken rhythm.

Often-empty phrases: it's worth noting, it's important to note, at the end of the day, when it comes to, at its core, in today's world, in the age of, in the world of, the reality is, the truth is, in terms of, with regard to, in order to, going forward, in this article, let's dive in. Cut them when they delay the point. Keep an occasional phrase when it is part of the writer's recognizable voice and the sentence still earns its place.

The full list (about 250 entries, each with a reason and a fix) is in assets/tells.json.

Patterns to cut

Binary contrasts. "This is not X. It's Y." / "The question isn't X, it's Y." / "It's not just X but Y." / "More than just a tool." State Y directly. "The question isn't the model. It's the eval." becomes "The eval matters more than the model."

Throat-clearing openers. "Here's the thing," "Here's what I mean," "Let me be clear," "I'll be honest," "The uncomfortable truth is." Cut them and state the point.

Faux-insight setups. "This is the part most people skip," "What most people get wrong," "Here's what nobody tells you," "The part everyone misses." These flatter the writer as the lone expert. Cut the setup and make the claim stand on its own. "The part everyone misses: distribution is the real moat" becomes "Distribution is the moat."

Colon reveals. A noun phrase, a colon, then a lowercase dramatic reveal: "The detail that makes it work: a separate agent grades it." "The best part: it learns." Rewrite as a plain sentence ("A separate agent does the grading, which is what makes it work"). Use colons for lists, labels, and quotes, not fake drama. Prefer sentence case after a colon unless grammar, a proper noun, a title, or code requires otherwise.

Superficial analysis. Cut trailing -ing clauses that pretend to explain meaning: "highlighting," "underscoring," "reflecting," "showcasing," "ensuring." "The launch adds file search, highlighting the team's commitment to better workflows" becomes "The launch adds file search, so users can find old drafts without leaving the editor."

Importance puffery. "Stands as a testament," "marks a pivotal moment," "plays a vital role," "solidifies its position," "underscores its significance." State the fact and let the reader judge whether it matters. "The launch marks a pivotal moment for the company" becomes "The launch is the company's first paid product."

Interpretive metadiscourse. Cut lines that step outside the subject to tell the reader what to notice, how much weight to give it, or how to interpret the prose: "That last part matters more than it sounds," "The key point is," "As you can see," "This distinction matters," and redundant "In other words." If the point is clear, delete the aside. Otherwise, replace it with support or facts already in the content.

Weasel attribution. "Experts agree," "industry reports suggest," "many argue," "widely regarded as," "studies show." Name the source or cut the claim. If the user has no source, ask instead of inventing one.

Hedge stacks and impersonal instructions. "Could potentially," "it could be argued," "it is essential to." Pick one hedge or commit, and say who should do what.

Fake-strong verbs. Prefer "is" and "has" when they are clearer. "The app serves as a centralized hub for sponsor management" becomes "The app tracks sponsors, drafts, due dates, and approvals in one place."

Synonym cycling. If the clear word is right, repeat it. Don't rotate terms for style. "The agent reviews the draft. The assistant scores the piece. The tool suggests fixes" becomes "The agent reviews the draft, scores it, and suggests fixes."

Audience catch-alls. "Whether you're a beginner or a pro." Name the one reader you mean, or cut it.

Formula openers. "In today's fast-paced world," "By leveraging...," "From startups to enterprises,", "Here are 5 ways to...", "Imagine a world where," "Have you ever wondered," "Are you tired of." Start inside the point.

Negative listing. "Not a X. Not a Y. A Z." Just say Z.

Dramatic fragmentation. "X. And Y. And Z." / "That's it. That's the whole thing." / "Fast. Simple. Powerful." / "No fluff. No filler." Use complete sentences.

Robotic rhythm. Avoid repeated sentence shapes, identical paragraph structures, stacked punchy fragments, and runs of sentences that start with the same word. People are lopsided: a long sentence followed by a four-word one. Vary the shape only when it helps the point.

One triple per piece. A list of three is normal once. A triple in every paragraph is a fingerprint. Keep two items, or one, unless the content really has three.

Rhetorical setups. "What if I told you...", "Think about it:", "Plot twist:", "Sound familiar?", "The result?", and other self-answered "Question? Answer." pairs. Drop them and make the point.

Fake-profound kickers. Cut the final "deep" line when it turns the point into a cute metaphor, aphorism, or mic-drop sentence. Do not rewrite it into a better metaphor. Do not preserve the rhythm. Delete it, then end on the clearest concrete sentence already in the draft. If the ending needs more closure, add a plain takeaway or next action.

Summary-recap endings. "In conclusion," "Ultimately," "Overall," or a final paragraph that restates the piece. Also uplifting sign-offs with no content: "The future is bright," "This is just the beginning," "Exciting times ahead." The reader was just there. End on the last concrete point, takeaway, or next action instead.

Formatting slop. Emoji in headings or as bullets, bold sprinkled mid-sentence for emphasis, bold-term bullet lists, bullet lists where two sentences of prose would read better, and headers over two-sentence sections or short pieces. Format should follow the content, not decorate it.

Em dashes. Do not use them as a default rhythm crutch. In short copy, use none. In longer drafts, 1-2 are fine if they clearly beat commas, periods, or parentheses. Remove clusters and decorative dashes. Don't swap in stand-ins: a spaced hyphen or "--" where the em dash was keeps the same rhythm. Restructure the sentence instead.

Other punctuation habits. Semicolons as essay hinges ("; however,"), trailing ellipses for suspense, and more than one exclamation mark. Use a period.

Boilerplate by kind of writing

These templates mark a draft fast. Cut them and say the real thing.

  • Chatbot leakage: "Certainly! Here's...", "Great question!", "I'd be happy to...", "Here's a revised version", "I hope this helps", "Would you like me to...", "As an AI...". Never part of text a person sends.
  • Email: "I hope this email finds you well," "I wanted to reach out," "Please don't hesitate to," "Feel free to reach out," "I look forward to hearing from you," "Please find attached." State the ask. End with a specific next step or stop.
  • Support replies: "I apologize for any inconvenience," "We value your feedback," "Your satisfaction is our top priority," "We take this very seriously," "I understand your frustration," "valued customer." Say what went wrong and what you are doing about it.
  • Condolences: "During this difficult time," "Words cannot express," "A life well-lived," "His legacy will continue to inspire." Say something plain and specific. Stay formal.
  • Bios and cover letters: "results-driven," "passionate," "seasoned," "proven track record," "With over 12 years of experience," "I am writing to express my keen interest." Let the employers, numbers, and degrees carry credibility. Name the role in the first line.
  • Announcements and mission statements: "Thrilled to announce," "Excited to share," "At X, we believe," "commitment to excellence." Announce it plainly: "We launched X."
  • Calls to action and engagement bait: "Ready to transform your...?", "Drop a comment below," "What do you think?", "Agree?" State the offer plainly, ask one specific question, or stop.

Posts and replies for X

Use this section when the draft is an X post, reply, or thread. It is based on X's open-source code (github.com/xai-org/x-algorithm, checked Nov 2026). X's slop judgment differs from this skill's: this skill fixes how prose sounds, while X judges whether a post adds anything and how the account behaves. A draft can pass every pattern above and still get labeled.

What X does, per the code:

  • Grok scores every reply under a post by an account with more than 250K followers, or in a thread that account started. A reply scored zero gets labeled, and it stops notifying people who don't follow the writer.
  • A separate "llm slop" classifier labels single posts (30 days) and whole accounts (7 days). An account label removes the writer from For You for non-followers and blocks their notifications.
  • Other spam labels cover replies posted too fast, gibberish, near-duplicate text across posts ("COPYPASTA_SPAM"), coordinated reply threads, engagement baiting or farming, and a low-quality link combined with tagging people who don't follow the writer.
  • High-credibility and grey-badge accounts skip most of these checks. Engagement baiting is labeled even for them.
  • The prompts and classifiers that decide what counts as slop are not public. Never tell the user a draft will pass X's checks.

X checks, run after the edit:

  1. Reply specificity. Does the reply respond to something specific in the post it answers? If it would fit under any post on the topic, it fails. Ask the user what their specific angle, number, or experience is. Do not invent one, since the editing principles still forbid adding claims or examples.
  2. Engagement bait. Flag lines asking for engagement instead of earning it: "Like if you agree," "RT if," "Comment X and I'll DM you," "Follow for more," or a lone "Agree?" Suggest cutting them. X labels these at any account size.
  3. Repeated wording. When the user shares several posts or replies, flag shared openers, closers, and near-identical sentences. Fix by changing what each one says, not by swapping synonyms. The synonym-cycling rule still applies within a single piece.
  4. Links and tags. Flag a post that pairs a link with tags of people who may not follow the user. The skill can't check link reputation, so name the risk and let the user decide.
  5. Behavior. Some risks live outside the text. If the user mentions replying in bursts, replying within seconds of a big account posting, or pasting AI drafts directly, note in What changed that X flags fast and templated replies, and that the account-level label costs a week of reach.

Things the code does not show: X's code has no rule about em dashes, bullet formatting, or specific AI words. Those fixes come from this skill's patterns, not from X. Don't present them as X rules.

python3 scripts/tells.py example --register x shows a verified X post and reply.

Tools

The scanner is a second net, not the judge. It catches vocabulary, templates, punctuation, and rhythm well, and the main rhetorical patterns above. It cannot tell whether a draft is true, specific, or sounds like the writer. Your judgment and eval.md decide.

Run from this skill's folder (use python if python3 is missing). Save texts to files such as before.txt and after.txt, or use - to read stdin: python3 scripts/tells.py scan - <<'EOF', the text, then EOF. For a file the user uploaded or downloaded, run with python3 -I.

  • python3 scripts/tells.py scan before.txt lists hits with line, snippet, and fix hint, plus rhythm stats (sentence-length variation, same-opener runs, paragraph uniformity, contraction rate). Add --formal for formal register, --limit 0 for all hits, --json for machine output.
  • python3 scripts/tells.py compare before.txt after.txt is the fact guard. It checks that every number, money amount, percent, date, time, link, email, and @handle in the original survives the edit, and flags anything new as a possible invention. Numbers, dates, times, links, emails, and handles are errors. Names, quotes, hashtags, and acronyms are warnings to check by hand. Exit code 1 means a fact error.
  • python3 scripts/tells.py example [--register R] prints verified before/after pairs: email, post, x, bio, letter, blurb, intro, announcement, sensitive.

The score stays internal. scan and compare print a 0-100 accent score. Use it only to confirm the edit moved the draft down (aim for under 35, don't chase 0). Never show the score in Detect, never present it as an AI-detection result, and never promise a text will pass a detector.

Known gaps. The fact guard can miss a dropped name when it is a single capitalized word at the start of a sentence, so check names, titles, and company names yourself. The triple check sometimes flags a real list; ignore it when the content has three things.

No code execution? Do the same by hand. Check the edit against eval.md, then confirm every number, name, date, time, and link of the original is still there and nothing new was added.

Workflow

  1. Read the full draft before editing.
  2. Identify the core point, the register, and the voice traits to preserve: vocabulary, cadence, bluntness, humor, uncertainty, digressions. If you cannot identify the core point, ask the user.
  3. If code can run, save the original as before.txt and run scan (add --formal for formal register). When drafting from the user's notes instead of editing, save their raw notes as before.txt so compare flags anything you invent.
  4. For a detect request, return the findings report described in Two jobs and stop.
  5. For an edit, make the minimum effective changes. Save the result as after.txt and run compare. Fix lost or invented facts first, then any remaining hits that are real slop. Stop after two fix loops.
  6. Check the edited draft against eval.md yourself. If the draft is for X, also run the X checks above. If any check fails, fix the draft and run the checks again.
  7. Output the full edited draft and a short What changed section. End What changed with the fact-guard result in plain words, such as "All 5 facts kept, nothing added." For X drafts, add any X risks the edit couldn't fix, such as a missing specific angle or a behavior note.

File map

PathUse it whenWhat you get
eval.mdAfter every edit or detect reportPass/fail checklist
scripts/tells.pyAny edit or detect over about 50 words, when code can runscan, compare, example (fingerprint and match are parked for the my-voice skill; don't use them here)
assets/tells.jsonYou want the reason and fix behind a hit, or code can't runAbout 250 entries: words, phrases, openers and closers, structures, punctuation, rhythm thresholds. Tune the numbers here, not in code
assets/examples.jsonUnsure what a good edit looks like for a kind of writing12 verified before/after pairs
NOTICE.mdSharing or publishing this skillCredits and MIT license notices for Peter Yang's no-ai-slop and Ruben Hassid's Humanizer

Credits

crowebar-no-ai-slop is maintained by Crowebar Labs. It is built on Peter Yang's no-ai-slop (github.com/petergyang/no-ai-slop, MIT) and Ruben Hassid's Humanizer (How to AI, MIT), and is not the original version of either. See NOTICE.md.

Related Skills