How to REALLY stop AI slop in your writing: the engineering fix (copy-paste prompt included)
A rule in your skill file is a suggestion your writing agent may or may not implement. The same rule in a YAML file, enforced by a script wired into your build, is deterministic. It works 100% of the time, before the AI ever passes the draft to your eyes.
Key Takeaways
- A writing rule kept in a skill file or system prompt has no enforcement, because the model that drops it is also the model that grades whether it was followed.
- Move the rules into a machine-readable file, let a script return the verdict as an exit code, and fire that script from your editor or CI rather than from the prompt.
- Block at the point of no return. Editor hooks report; only the publish or deploy step can refuse.
- Graphite found 86% of articles ranking in Google and 82% of articles cited by ChatGPT and Perplexity are human-written, so the quality bar is doing commercial work.
- This article failed its own checker three times before passing, once for quoting the sentence that created the rule.
I had a rooftop dinner with friends last night, and people are still complaining about em dashes and "this is X, not Y" as the tell for AI writing.
I get why people still run into this. Every one of those patterns is public by now, identified and shared a hundred times over. Knowing them has not been enough.
Fixing that takes engineering.
None of my writing rules live in a prompt, hoping to be remembered. They sit in a YAML file. A Python script reads that file and returns pass or fail. My editor runs the script on everything I write, whether I ask it to or not. The script decides, and the model doesn't get a vote.
Below is the prompt that builds the whole thing, then the reasoning behind it.
The cheat sheet: build it yourself
This is the prompt I would hand a colleague. Paste it into Claude Code, Codex or Copilot. It interviews you on your own rules first, then builds the checker, the tests, the hook wiring, the publish-time block, and the loop that turns every miss you catch into a new rule.
Do not skip the interview. It is the step that decides whether the checker catches anything you actually care about.
Everything below is the reasoning. If you only wanted the tool, you already have it.
Why your AI ignores the rules you wrote in your skill file
The rules you wrote in your SKILL.md are competing with everything else in the model's context, and they hold no special standing there. Sooner or later they get dropped. Then the same model that dropped them tells you the draft is clean, because nothing outside the model ever read the output.
Your rules are advice, and the thing taking the advice is also the thing grading it.
That is why longer banned-word lists keep failing. You can write the rule perfectly and still watch it get ignored on a long session, because writing it down was never the part that binds.
This matters commercially, not just aesthetically. Graphite analysed 65,000 URLs published between 2020 and 2025 and found that 86% of articles ranking in Google Search are human-written, and 82% of articles cited by ChatGPT and Perplexity are human-written. AI-generated articles briefly passed human ones in November 2024, then settled back to roughly level, and they tend to rank lower when they do appear. The engines are still disproportionately citing work that reads like a person wrote it.
The five controls
These follow the life of one rule, from writing it down to it blocking a deploy.
1. Put every rule in one machine-readable file. Every rule gets an ID, a pattern, a severity, and the content types it applies to. Mine holds about 111 of them. Any readable summary is generated from that file rather than maintained beside it. The moment two lists disagree, the model stops treating either as authoritative and follows whichever it reads first.
2. Make the checker a program, and make it accurate. The script returns pass or fail as an exit code, and reads the rule file rather than hardcoding anything. Calibration matters as much as coverage. Thresholds are tuned per content type: hard caps for a short post, rates per thousand words for long articles, per-slide scoring for decks. Before I calibrated mine it threw 80 restricted-word violations at a 14,000-word audit document that was mostly quoting the client's own copy. That is how a tool teaches people to ignore it.
3. Let the environment run it, not the model. A PostToolUse hook fires the checker on every content file written. Without hooks, a git pre-commit hook plus a CI job cover the same ground. Running the check stops being something you have to remember when the session gets long. This is the single biggest lever against being ignored, because you removed the choice.
4. Block at the point of no return. Editor hooks can report, but they cannot stop anything. So the real refusal lives where work leaves your control: publish, deploy, send, export. One standing rule sits next to it. Whatever produced the work never issues its own pass. I learned that one the hard way, when an agent ran a post-scoped checker against a 31-slide deck, noticed the mismatch, and passed itself anyway on a targeted read. The slop shipped.
5. Make it survive other people. The rules get their own tests: saved files with known verdicts, one you approved, one you rejected, one deliberately bad. Re-run them after every rule edit, so tightening one pattern cannot quietly break another. The kit installs into any project with one script, so teammates get updates by pulling rather than by reading a doc.
What almost everyone else is missing: it's the enforcement layer
The most popular answer to AI slop is a skill file called stop-slop, in the screenshot below. It carries 15,500 stars and 1,100 forks, which makes it the most widely shared anti-slop artifact on GitHub. The pattern library inside it is genuinely sharp.
It also contains no executable code. The repository is markdown: SKILL.md plus reference files for phrases, structures and examples. No releases published. The model reads the rules, scores its own draft on five dimensions from 1 to 10, and the instruction is "below 35/50: revise".
That gap is worth sitting with. What gets starred, forked and shared is not what a working content practitioner actually runs. What is being distributed is a suggested rulebook.
Don't get me wrong, that is a good rulebook to minimise AI slop. It has no way to enforce itself, because the thing being graded is doing the grading.
An enforcement layer is the part that sits outside the model: it reads the finished output, applies the rules without being able to negotiate, and can stop the next step from happening. Run any rulebook against the five controls and you can see precisely where it stops.
| Control | Rulebook alone | What the enforcement layer adds |
|---|---|---|
| 1. Rules as machine-readable data | Written as prose for a model to read. | A format a program can execute, so the rules apply the same way twice. |
| 2. A program returns the verdict | The model scores itself 1 to 10 across five dimensions. | An exit code from something that was not involved in the writing. |
| 3. The environment fires it | Applies when the model chooses to invoke it. | A hook or CI job, so it runs when a long session makes it most necessary. |
| 4. Block at the point of no return | Nothing to block on. | Publish and deploy refuse to run on a failure. |
| 5. Survives other people | Rules can be weakened with nothing to notice. | Fixtures with known verdicts, so a rule edit cannot quietly break another. |
What the gate caught on this article
I ran this piece through the same checker while writing it. It failed three times before the draft ever reached my eyes.
That is the part that changes your day. Three rounds of slop were caught and fixed before I read a word of it. I never had to tell the model it had used a banned reveal, wait for a rewrite, then read the rewrite to see whether it had introduced something new. That loop, spotting the pattern, naming it, asking for a fix, checking the fix, is the work I used to do by hand on every draft. It now runs without me, and I only see what is left.
The first fired on a banned buzzword I had quoted as an example of a banned buzzword. The checker cannot tell the difference between using a word and citing one.
The second is the good one. To explain how the system learns, I quoted the exact sentence that created one of my rules, and the rule fired on it. The article was flagged for quoting its own origin story.
I repunctuated the example rather than loosening the rule, because a failing check does not get argued with inside the deliverable.
Then the human read caught two more things no regex can see: a balanced aphorism in the closing line, and a three-item list inside a sentence. Both are written in my rules. Neither is detectable by pattern matching, which is why a green check is the first gate and never the whole gate.
Every run gets logged. On this file that is 16 so far, three of them failures. The log answers "was this actually checked", which is a question no amount of good intentions can settle.
What this system will not do for you
Write these down when you build yours. A green check is worth much less if people read it as approval.
It cannot see tone. Pattern matching catches banned words and structures. Whether a paragraph sounds like a person still needs your eyes.
It is language-bound. English regex does nothing for your Chinese content.
It starts weak. Version one catches your obvious rules. It gets good by absorbing every miss, which takes a few months of real use.
That is a narrower promise than it sounds, and still worth having. Build the first version this week with the prompt above, then add a rule every time you catch something it missed. If you want help wiring this into a content operation rather than a personal workflow, that is the kind of system Novastacks builds for clients, and the same thinking shows up in our study of what makes a page win across engines.
Frequently asked questions
Why does AI ignore my instructions?
Because an instruction in a prompt or skill file has no special standing. It competes with everything else in the model's context and gets dropped as the session grows. The same model then assesses its own compliance, so nothing outside the model ever checks the output. The fix is to move the rule into a program that returns a pass or fail verdict independently.
Why is ChatGPT ignoring my custom instructions?
Custom instructions are context, not enforcement. They are weighed against the current task, the conversation history and any other instructions in play, and long sessions make it worse. If a rule genuinely must hold every time, it needs to be checked by something outside the model, such as a script wired into your editor or your publishing step.
How do I stop AI slop in my writing?
Keep your banned words, phrases and structural patterns in one machine-readable rules file. Have a small script scan each draft against that file and exit non-zero when it finds a violation. Fire the script automatically on every file you write, and make your publish step refuse to run on a failure. Then add a rule every time you catch something the script missed.
Do AI content detectors solve this?
No, and a rules checker is a different thing. A detector guesses whether a whole document was machine-written and produces false positives at rates that make it unsafe to act on. A deterministic checker makes no authorship claim. It reports which named rule matched at which line, so every finding can be checked by eye in a second.
Sources
- Graphite, AI Content in Search and LLMs, analysis of 65,000 URLs published 2020 to 2025.
- Axios, AI-written web pages haven't overwhelmed human-authored content, study finds, 14 October 2025.
- Charlie Guo, The Field Guide to AI Slop, on detector reliability.
- Momentic, 34 types of AI slop you should avoid in your content, on tell co-occurrence.
- hardikpandya, stop-slop, a skill file that self-rates against a 35 of 50 threshold.
- petergyang, no-ai-slop, whose evaluation checks are answered by the model itself.
Want this wired into your content operation?
We design and run AI search systems for brands that need their quality bar enforced, not just documented.