{"slug": "show-hn-anti-ai-slop-a-4-staged-skill-to-detect-and-remove-any-ai-writing-slop", "title": "Show HN: Anti-AI-slop: a 4 staged skill to detect and remove any AI writing slop", "summary": "A developer released a four-stage \"anti-AI-slop\" skill for coding agents including Claude Code and Codex that detects and removes AI writing tells from drafts. The tool runs four gates: Gate 1 strips invisible characters such as zero-width spaces and bidi controls, Gate 2 is a Python linter that scores drafts out of 100 and requires 90 with no serious findings, Gate 3 uses a second agent to catch fabricated facts, connections, and changed meaning, and Gate 4 is left incomplete in the source. The skill targets 17 structural patterns, 2 rhetorical habits, 8 vocabulary and filler categories, 10 formatting tells, and 4 fidelity failures.", "body_md": "A skill for Claude Code, Codex, and other coding agents that removes AI-writing tells from a draft and then checks the result before handing it back.\n\n1. **Negative parallelism.** \"It isn't a pricing problem. It's a trust problem.\"\n2. **Throat-clearing openers.** \"Here's the thing,\" \"Let me be honest\"\n3. **Faux-insight setups.** \"What most teams get wrong,\" \"The part nobody mentions\"\n4. **Rhetorical setups.** \"Think about it:\" \"Sound familiar?\"\n5. **Colon reveals.** \"The clever part: it retries on its own.\"\n6. **Trailing -ing analysis.** \"...adds dark mode, underscoring its focus on users\"\n7. **Importance puffery.** \"stands as a testament to,\" \"cannot be overstated\"\n8. **Telling the reader what to think.** \"As you can see,\" \"The key takeaway here is\"\n9. **Fake-strong verbs.** \"serves as a unified layer,\" \"has the ability to\"\n10. **False agency.** \"The consensus emerged.\" \"The data tells us\"\n11. **Dramatic fragments.** \"That's it. That's the product.\"\n12. **Fake-profound endings.** \"And we're just getting started.\"\n13. **Recap endings.** \"In conclusion,\" \"To sum up\"\n14. **Vague declaratives.** \"The stakes are high.\" \"The implications are significant.\"\n15. **Stacked hedges.** \"could potentially,\" \"it might be argued that\"\n16. **Half-and-half framing.** \"Pricing is half the story. The other half is...\"\n17. **Stiff wording.** \"only when the cheaper option will not do\"\n\n1. **Contrast on every claim.** \"a settings change rather than a code change,\"\n\"instead of waiting.\" One is fine. Three in a short post gets flagged.\n2. **Too many rhetorical questions** that the post answers itself\n\n1. **AI vocabulary.** \"delve,\" \"leverage,\" \"seamless,\" \"tapestry,\" and about 120 more\n2. **Empty phrases.** \"at its core,\" \"in today's fast-paced world,\" and about 100 more\n3. **Canned openers.** \"Moreover,\" \"Ultimately,\" \"In essence\"\n4. **Chatbot leftovers.** \"Great question,\" \"Hope this helps,\" \"feel free to\"\n5. **Unsourced claims.** \"studies show,\" \"experts agree\"\n6. **Vague crowds.** \"most companies,\" \"we all know\"\n7. **Filler words.** \"truly,\" \"basically,\" \"incredibly\"\n8. **Sweeping words.** \"everyone,\" \"nobody,\" \"always\"\n\n1. **Same-length sentences** four times in a row\n2. **Short punchy sentences** stacked four deep\n3. **Em dashes** everywhere\n4. **Emoji used as headings or bullets**\n5. **Lists of three** used for rhythm, over and over\n6. **Adjective stacks.** \"powerful and intuitive\"\n7. **Random bold** in the middle of sentences\n8. **Headings over one or two sentences**\n9. **Title Case Headings**\n10. **Invisible characters** like zero-width spaces\n\n1. **Made-up facts.** A number, source, or quote the original never had\n2. **Made-up connections.** A time frame, a cause, or a reaction added while smoothing\na sentence, like \"over several quarters\" or \"the feature customers ask about most\"\n3. **Synonym cycling.** \"The agent reviews the draft. The assistant scores it. The\ntool suggests fixes.\"\n4. **Changed meaning.** A dropped caveat, a claim made stronger than the original, or\nan argument that stops making sense after the cuts\n\nYou give your agent a draft. It rewrites it, and then the draft has to get through four gates before you see it:\n\n1. **Gate 1: invisible characters.** Removes zero-width spaces, hidden tag characters,\nbidi controls, and odd spacing that come along with pasted AI text. Emoji and\nnon-Latin text are left alone.\n2. **Gate 2: the linter.** A Python script scores the draft out of 100 against\neverything in the list above that a script can find. That covers sentence templates,\nAI vocabulary, empty phrases, chatbot leftovers, unsourced claims, contrast habits,\nrhythm, and formatting. It skips code and quotes, gives the same score every time,\nand needs 90 with no serious findings.\n3. **Gate 3: a second agent.** It gets the original and the rewrite, but not the first\nagent's reasoning. It catches what a script can't: made-up facts, made-up\nconnections, changed meaning, dropped caveats, synonym cycling, and any slop the\nlinter missed.\n4. **Gate 4, optional: another model.** The same review, run by Gemini 3.8 Flash by\ndefault through[LiteLLM](https://github.com/BerriAI/litellm) . You can swap in any\nprovider or add several, and each one reports a human score and its cost.\n\nIf a check fails, the draft goes back for another pass, up to two times. Anything still unresolved is listed for you instead of hidden.\n\nThe second reviewer is there because the linter can't tell a real fact from an invented one. In testing, rewrites that scored 100 on the linter still had details the original never mentioned.\n\nBy default the skill assumes a model wrote the draft and cuts hard. If you say you wrote it yourself, it keeps your voice and only fixes the obvious tells.\n\nFor Claude Code:\n\n```\ngit clone https://github.com/misbahsy/anti-ai-slop.git\ncp -r anti-ai-slop/skills/anti-ai-slop ~/.claude/skills/\n```\n\nFor other agents, copy `skills/anti-ai-slop` into whatever folder your agent loads\nskills from.\n\nThe checks need Python 3.8 or newer. The optional model review also needs LiteLLM:\n\n```\npip install litellm\n```\n\nThe first time you ask for a model review, the agent asks where your API key is stored and runs everything for you. It saves where the key lives, never the key itself.\n\nJust ask your agent:\n\n- \"De-slop this blog post before I publish it.\"\n- \"ChatGPT wrote this email. Make it sound like me.\"\n- \"Does this read as AI-written? Point out the patterns but don't rewrite it.\"\n- \"Clean this up and have another model check it.\"\n\nYou get back the edited draft plus a short list of what changed, including anything it cut because there was no source for it.\n\n```\npython3 skills/anti-ai-slop/scripts/sanitize.py draft.md --fix\npython3 skills/anti-ai-slop/scripts/slopcheck.py draft.md\npython3 skills/anti-ai-slop/scripts/grade.py original.md rewrite.md\n```\n\n`slopcheck.py` exits with 0 on a pass and 1 on a fail, so it works in a pre-commit\nhook or CI.\n\nIf the linter flags something you want to keep, add a comment to that line:\n\n``` php\nOur leverage ratio fell to 2.1x. <!-- slop-ignore W1 -->\npython3 skills/anti-ai-slop/tests/test_slopcheck.py\npython3 skills/anti-ai-slop/tests/test_credentials.py\npython3 skills/anti-ai-slop/tests/test_grade.py\n```\n\nNo network or API keys needed. One of the tests checks that the skill's own docs pass the linter.\n\nEverything the linter looks for lives in `skills/anti-ai-slop/scripts/rules.json`. Add\na word, phrase, or pattern there and rerun the tests. If the clean test file drops\nbelow 95, the new rule is flagging normal writing.\n\n- [no-ai-slop](https://github.com/petergyang/no-ai-slop) by Peter Yang\n- [stop-slop](https://github.com/hardikpandya/stop-slop) by Hardik Pandya\n- [slop-cop](https://github.com/howshannon/slop-cop) by Shannon Tran\n- [clearmode](https://github.com/eugeniughelbur/clearmode) by Eugeniu Ghelbur\n\nMIT", "url": "https://wpnews.pro/news/show-hn-anti-ai-slop-a-4-staged-skill-to-detect-and-remove-any-ai-writing-slop", "canonical_source": "https://github.com/misbahsy/anti-ai-slop", "published_at": "2026-09-14 06:11:01+00:00", "updated_at": "2026-09-14 06:32:51.401852+00:00", "lang": "en", "topics": ["ai-tools", "ai-agents", "generative-ai", "developer-tools"], "entities": ["Claude Code", "Codex"], "alternates": {"html": "https://wpnews.pro/news/show-hn-anti-ai-slop-a-4-staged-skill-to-detect-and-remove-any-ai-writing-slop", "markdown": "https://wpnews.pro/news/show-hn-anti-ai-slop-a-4-staged-skill-to-detect-and-remove-any-ai-writing-slop.md", "text": "https://wpnews.pro/news/show-hn-anti-ai-slop-a-4-staged-skill-to-detect-and-remove-any-ai-writing-slop.txt", "jsonld": "https://wpnews.pro/news/show-hn-anti-ai-slop-a-4-staged-skill-to-detect-and-remove-any-ai-writing-slop.jsonld"}}