# How Stop Slop Detects and Removes AI Writing Patterns: A Declarative Rule-Based System

> Stop Slop uses a rule-based system to detect and remove AI writing patterns like banned phrases and clichés. Learn how this declarative system instructs language models to rewrite text for clarity and impact.

- Repository: [Hardik Pandya/stop-slop](https://github.com/hardikpandya/stop-slop)
- Tags: internals
- Published: 2026-05-26

---

**Stop Slop uses a declarative, rule-based skill system that identifies banned phrases and structural clichés in markdown reference files, then instructs language models to rewrite text with active voice and direct statements.**

The `hardikpandya/stop-slop` repository provides a transparency-first framework to detect and remove AI writing patterns from generated prose. Unlike black-box classifiers, this open-source project embeds detection logic directly into human-readable markdown files that language models interpret and apply. By codifying robotic textual hallmarks as explicit rules, Stop Slop enables systematic rewriting that eliminates AI writing patterns through direct transformation rather than simple flagging.

## The Declarative Detection Engine

Stop Slop operates as a **rule-based skill** that tells language models exactly which textual hallmarks to target. The detection logic lives entirely within markdown files, making the process fully transparent and auditable. Rather than using machine learning classifiers or statistical analysis, the system relies on explicit pattern matching against curated lists of banned constructs.

The entry point is [`SKILL.md`](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md), which contains the top-level description and quick-check rules. This file references two specialized catalogues: [`references/phrases.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md) for lexical patterns and [`references/structures.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/structures.md) for syntactic templates. Together, these four markdown assets—[`SKILL.md`](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md), [`references/phrases.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md), [`references/structures.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/structures.md), and [`references/examples.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/examples.md)—constitute the complete detection engine without requiring any executable code.

## Pattern Categories and Removal Strategies

The system categorizes AI writing patterns into three distinct groups, each with specific remediation tactics defined in the reference files.

### Banned Phrases

The [`references/phrases.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md) file maintains an exhaustive inventory of lexical crutches that signal artificial prose. These include **throat-clearing openers** like "Here's the thing:" and "It turns out", **emphasis crutches**, **business jargon**, and **all adverbs**. When the model encounters these phrases during scanning, it strips them and restates the core point directly. The catalogue also targets **vague declaratives** and **meta-commentary** that create distance between the writer and the content.

### Structural Clichés

Located in [`references/structures.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/structures.md), this catalogue captures syntactic patterns that create robotic rhythm. Key targets include **binary contrasts** ("Not because X, but because Y"), **negative listings** ("Not a X… Not a Y… A Z"), and **dramatic fragmentation** ("X. And Y. And Z."). The rules also identify **rhetorical setups** ("What if …?"), **false agency**, **narrator-from-a-distance** constructions, **passive voice**, **Wh-sentence starters**, and **rhythm-heavy patterns** like three-item lists and excessive em-dashes. The remediation strategy involves replacing these patterns with direct statements, inserting actors as subjects, and varying sentence rhythm to break mechanical cadence.

### Quick-Check Rules

The **Quick Checks** section within [`SKILL.md`](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md) provides immediate heuristics for common infractions. These sequential checks include: "Any adverb?" → delete; "Passive voice?" → add the actor as subject; "Wh-word start?" → restructure; "Em-dash?" → replace with comma/period; "Vague declarative?" → insert concrete detail. These rules apply rapidly during the initial scan to catch obvious markers before deeper structural analysis.

## The Detection and Removal Workflow

Stop Slop processes text through a four-stage pipeline that transforms AI-generated prose into human-like writing.

First, the **skill loader** adds the folder to the language model's skill set or references it in a system prompt. The model reads [`SKILL.md`](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md) and the reference files, parsing the markdown tables and bullet lists that describe each pattern.

Second, the **pattern scanner** matches input text against the enumerated rules. This involves regex-like string matching for phrases from [`references/phrases.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md) and structural template matching for clichés from [`references/structures.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/structures.md).

Third, the **rewriter engine** applies the "instead" guidance from the reference tables. For each match, it produces a cleaned version that obeys active-voice, direct-statement, and varied-rhythm principles.

Finally, the model outputs the revised text with the AI patterns removed. Because the rules are explicit and human-readable, the system can explain why specific sentences were altered, enabling full auditability of the transformation process.

## Implementation Examples

You can invoke Stop Slop through several integration methods depending on your environment.

### Claude Project Integration

Add the skill to a Claude project using the CLI:

```text

# Assume the repository is cloned at ./stop-slop

claude project add-skill ./stop-slop

```

The skill loader automatically reads [`SKILL.md`](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md) and the referenced markdown files, enabling the model to apply the patterns automatically to all subsequent interactions.

### System Prompt Usage

Reference the skill directly in a system prompt for one-off text improvement:

```text
You are Claude. Use the Stop Slop skill to improve the following paragraph.  
[SKILL.md]  
[references/phrases.md]  
[references/structures.md]  

Paragraph: "Here's the thing: building products is hard. Not because the technology is complex. Because people are complex. Let that sink in."

```

The model will detect the throat-clearing opener, the binary-contrast structure, and the emphasis crutch, then output revised text such as "Building products is hard because people are complex, not because of technology."

### Programmatic Integration

For custom applications, you can load and apply the skill programmatically:

```python
from stop_slop import Skill  # fictional import for illustration

skill = Skill.load("./stop-slop")
clean = skill.apply(
    "It turns out that most teams struggle with alignment. The uncomfortable truth is that nobody wants to admit they're confused. And that's okay."
)
print(clean)

# → "Teams struggle with alignment. Nobody admits confusion."

```

The `Skill.apply` method internally runs the same rule engine described in the markdown references, sequentially applying quick-checks and pattern-specific rewrites.

## Key Reference Files

Understanding the file structure helps you customize the detection rules for specific domains:

- **[`SKILL.md`](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md)**: Contains the top-level skill description, core rules, and the quick-check checklist that drives the initial scanning phase.
- **[`references/phrases.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md)**: Houses the exhaustive list of banned phrases and adverbs that characterize AI-generated throat-clearing and hedging.
- **[`references/structures.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/structures.md)**: Catalogues syntactic clichés with "instead" rewrites that guide the transformation toward active voice.
- **[`references/examples.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/examples.md)**: Provides before/after examples that illustrate the expected transformations for documentation and testing purposes.

These declarative assets allow the skill to evolve alongside emerging AI-writing habits simply by editing the reference files, without modifying any underlying code.

## Summary

- Stop Slop uses **declarative markdown files** ([`SKILL.md`](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md), [`references/phrases.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md), [`references/structures.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/structures.md)) rather than code to define detection rules.
- The system targets **three pattern categories**: banned phrases (lexical), structural clichés (syntactic), and quick-check rules (heuristic).
- Detection relies on **explicit pattern matching** against curated lists, making the process fully transparent and auditable.
- Removal strategies prioritize **active voice**, **direct statements**, and **varied rhythm** over the robotic patterns common in AI-generated text.
- The skill integrates with language models through **project skills**, **system prompts**, or **programmatic APIs**, requiring no executable dependencies.

## Frequently Asked Questions

### How does Stop Slop differ from AI detection tools like GPTZero?

Unlike statistical classifiers that output probability scores, Stop Slop operates as a **rule-based skill** that language models use to rewrite text. It does not predict whether text is AI-generated; instead, it explicitly removes AI writing patterns by applying curated transformation rules from [`references/phrases.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md) and [`references/structures.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/structures.md). This creates auditable, explainable edits rather than opaque predictions.

### Can I customize the banned phrases or structural rules?

Yes. Because Stop Slop stores all detection logic in human-readable markdown files, you can edit [`references/phrases.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md) to add industry-specific jargon or modify [`references/structures.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/structures.md) to target new syntactic patterns emerging from updated language models. The skill updates immediately after saving changes, with no compilation or deployment required.

### Does Stop Slop require internet access or API calls to external services?

No. The repository functions entirely through **local markdown files** that language models interpret. Once you clone `hardikpandya/stop-slop` and add it to your model's context via skills or system prompts, all detection and removal processing happens within the model's inference environment without external dependencies.

### What types of AI writing patterns does it miss?

Stop Slop specifically targets **lexical and syntactic tics** common to large language model outputs—throat-clearing phrases, passive voice, and rhythmic clichés. It does not detect semantic issues like factual hallucinations or logical inconsistencies, nor does it evaluate content quality beyond stylistic pattern matching defined in the reference files.