Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 33 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
# Stop Slop

A skill for removing AI tells from prose.
A skill for removing AI tells from prose. Register-aware — works across casual, professional, academic, technical, and narrative writing.

<img width="3840" height="2160" alt="G-Yg4RVbIAAhVxW" src="https://github.com/user-attachments/assets/902afc15-1f40-4a9d-af24-8cd67afb8ebf" />

## What this is

AI writing has patterns. Predictable phrases, structures, rhythms. Once you notice them, you see them everywhere. This skill teaches Claude (or any LLM) to avoid them.
AI writing has patterns. Predictable phrases, structures, rhythms. Once you notice them, you see them everywhere. This skill teaches Claude (or any LLM) to avoid them — and replaces them with clear, specific, human-sounding prose.

## Skill Structure
## Skill structure

```
stop-slop/
├── SKILL.md # Core instructions
├── SKILL.md # Core instructions (register detection → slop removal → scoring)
├── references/
│ ├── phrases.md # Phrases to remove
│ ├── structures.md # Structural patterns to avoid
│ └── examples.md # Before/after transformations
│ ├── phrases.md # 200+ phrases to cut or replace (AI vocabulary, chatbot artifacts, jargon)
│ ├── structures.md # 14 structural patterns to avoid (format slop, synonym cycling, -ing clauses)
│ ├── positive.md # What good writing does (specificity, active voice, rhythm, voice)
│ ├── registers.md # Per-register rules (academic, technical, narrative, casual, professional)
│ └── examples.md # 14 before/after transformations across all registers
├── README.md
├── CHANGELOG.md
└── LICENSE
```

Expand All @@ -33,29 +36,44 @@ stop-slop/

## What it catches

**Banned phrases** — Throat-clearing openers, emphasis crutches, business jargon. See `references/phrases.md`.
**Phrases** — Throat-clearing openers, emphasis crutches, business jargon, AI vocabulary (delve, tapestry, multifaceted), chatbot artifacts, copula avoidance, significance inflation, sycophantic tone. See `references/phrases.md`.

**Structural clichés** — Binary contrasts, dramatic fragmentation, rhetorical setups. See `references/structures.md`.
**Structures** — Binary contrasts, dramatic fragmentation, rhetorical setups, format slop (emoji headings, inline-header lists), superficial -ing clauses, synonym cycling, rule-of-three overuse, generic conclusions, knowledge-cutoff disclaimers. See `references/structures.md`.

**Stylistic habits** — Tripling, immediate question-answers, metronomic endings.
**What to do instead** — Be specific, use simple constructions, active voice, vary rhythm, have a voice, trust readers, acknowledge complexity. See `references/positive.md`.

## Register awareness

Different writing contexts tolerate different patterns. The skill detects register from context and adjusts rules:

| Register | Key adjustments |
|----------|----------------|
| Academic | Hedging OK when expressing epistemic uncertainty. Passive OK when agent unknown. |
| Technical | Bullets and headers OK. Promotional adjectives still flagged. |
| Narrative | Rhythm variation is a feature. Em dashes valid. Synonym cycling still flagged. |
| Casual | All rules at full force. |
| Professional | Similar to casual, tolerates more structure. |

See `references/registers.md` for full details.

## Scoring

Rate 1-10 on each dimension:
Rate 1-10 on each dimension (adjusted for register):

| Dimension | Question |
|-----------|----------|
| Directness | Statements or announcements? |
| Rhythm | Varied or metronomic? |
| Trust | Respects reader intelligence? |
| Authenticity | Sounds human? |
| Authenticity | Sounds human, not generated? |
| Density | Anything cuttable? |
| Specificity | Claims backed by evidence? |

Below 35/50: revise.
Below 42/60: revise.

## Author
## Sources

[Hardik Pandya](https://hvpandya.com)
Based on [hardikpandya/stop-slop](https://github.com/hardikpandya/stop-slop) by [Hardik Pandya](https://hvpandya.com). Enhanced with register-aware rules, positive writing guidance, and expanded pattern coverage synthesized from Antislop (Paech et al., ICLR 2026), Wikipedia AI Cleanup patterns, and Strunk's *Elements of Style*.

## License

Expand Down
81 changes: 58 additions & 23 deletions SKILL.md
Original file line number Diff line number Diff line change
@@ -1,53 +1,88 @@
---
name: stop-slop
description: Remove AI writing patterns from prose. Use when drafting, editing, or reviewing text to eliminate predictable AI tells.
metadata:
trigger: Writing prose, editing drafts, reviewing content for AI patterns
author: Hardik Pandya (https://hvpandya.com)
description: Remove AI writing patterns from prose. This skill should be used when drafting, editing, or reviewing text to eliminate predictable AI tells. Register-aware — handles casual, professional, academic, technical, and narrative writing.
---

# Stop Slop

Eliminate predictable AI writing patterns from prose.
Eliminate predictable AI writing patterns. Produce clear, specific, human-sounding prose across any register.

## Core Rules
## Step 1: Detect register

1. **Cut filler phrases.** Remove throat-clearing openers and emphasis crutches. See [references/phrases.md](references/phrases.md).
Infer the register from context before applying rules. Different registers tolerate different patterns.

2. **Break formulaic structures.** Avoid binary contrasts, dramatic fragmentation, rhetorical setups. See [references/structures.md](references/structures.md).
| Signal | Register |
|--------|----------|
| Citations, methodology, "we hypothesize" | `academic` |
| API docs, READMEs, changelogs, error messages | `technical` |
| Fiction, essays, memoir, creative nonfiction | `narrative` |
| Blog posts, social media, emails | `casual` |
| Reports, proposals, business comms | `professional` |

3. **Vary rhythm.** Mix sentence lengths. Two items beat three. End paragraphs differently.
If the user specifies a register, use it. See [references/registers.md](references/registers.md) for per-register acceptable vs. flagged patterns.

4. **Trust readers.** State facts directly. Skip softening, justification, hand-holding.
## Step 2: Remove slop

5. **Cut quotables.** If it sounds like a pull-quote, rewrite it.
Apply these rules, adjusted for register:

## Quick Checks
1. **Cut filler phrases and AI vocabulary.** Remove throat-clearing openers, chatbot artifacts, significance inflation, and words that appear 100-1,000x more in LLM output than human text. See [references/phrases.md](references/phrases.md).

Before delivering prose:
2. **Break formulaic structures.** Avoid binary contrasts, dramatic fragmentation, format slop, synonym cycling, rule-of-three overuse, and generic conclusions. See [references/structures.md](references/structures.md).

- Three consecutive sentences match length? Break one.
- Paragraph ends with punchy one-liner? Vary it.
- Em-dash before a reveal? Remove it.
- Explaining a metaphor? Trust it to land.
3. **Use simple constructions.** Prefer "is" over "serves as." Prefer "has" over "boasts." Prefer "use" over "leverage." Active voice. Positive form.

4. **Be specific.** Replace vague claims with dates, names, numbers, sources. "Significant improvement" becomes "latency dropped from 340ms to 90ms."

5. **Vary rhythm.** Mix sentence lengths. Two items in a list beat three. End paragraphs differently from each other.

6. **Trust readers.** State facts. Skip softening, justification, hand-holding. If a metaphor needs explaining, rewrite the metaphor.

7. **Have a voice.** React to facts, don't just report them. Acknowledge complexity. Let personality through.

## Scoring
See [references/positive.md](references/positive.md) for what good writing does (not just what to avoid).

Rate 1-10 on each dimension:
## Step 3: Score

Rate 1-10 on each dimension, adjusted for register:

| Dimension | Question |
|-----------|----------|
| Directness | Statements or announcements? |
| Rhythm | Varied or metronomic? |
| Trust | Respects reader intelligence? |
| Authenticity | Sounds human? |
| Authenticity | Sounds human, not generated? |
| Density | Anything cuttable? |
| Specificity | Claims backed by evidence? |

Below 42/60: revise.

Below 35/50: revise.
**Register adjustments** (see [references/registers.md](references/registers.md)):
- `academic`: Do not penalize precise hedging or longer qualified sentences
- `technical`: Consistent structure in reference docs is not a rhythm flaw
- `narrative`: Indirection and dramatic rhythm variation are valid techniques

## Examples
## Quick checks

Before delivering prose:

See [references/examples.md](references/examples.md) for before/after transformations.
- Three consecutive sentences match length? Break one.
- Paragraph ends with punchy one-liner? Vary it.
- Em-dash before a reveal? Remove it.
- Explaining a metaphor? Trust it to land.
- "Serves as," "stands as," "represents"? Rewrite with "is."
- -ing clause at end of sentence adding no information? Delete it.
- Three-item list? Try two items or one.
- Different words for the same thing in adjacent sentences? Pick one term and reuse it.

## Reference files

| File | Purpose |
|------|---------|
| [phrases.md](references/phrases.md) | Words and phrases to cut or replace |
| [structures.md](references/structures.md) | Structural patterns to avoid |
| [positive.md](references/positive.md) | What good writing does |
| [registers.md](references/registers.md) | Per-register rules and tolerances |
| [examples.md](references/examples.md) | Before/after transformations (all registers) |

## License

Expand Down
139 changes: 139 additions & 0 deletions references/examples.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,142 @@
> "The best teams optimize for learning, not productivity."

**Changes:** Direct claim. No rhetorical scaffolding.

---

# Register-Specific Examples

## Academic

### Example 6: Significance Inflation + Vague Attribution

**Register:** `academic`

**Before:**
> "Scholars have long debated the relationship between Minoan and Semitic cultures, a multifaceted topic that underscores the importance of cross-cultural analysis. It is well-established that trade networks facilitated linguistic exchange, fostering a vibrant tapestry of shared cultural elements. This pivotal finding has profound implications for our understanding of Bronze Age connectivity."

**After:**
> "Gordon (1966) and Astour (1967) proposed cognate links between Linear A sequences and West Semitic lexemes. Trade networks between Crete and the Levant are attested by LM I pottery at Ugarit and Canaanite amphora handles at Kommos. These finds suggest regular contact, though the degree of linguistic exchange remains unresolved."

**Changes:** Named specific scholars. Replaced "well-established" with cited evidence. Cut "multifaceted," "tapestry," "pivotal," "profound"—all AI vocabulary. Replaced "fostering" -ing clause with concrete archaeological evidence.

---

### Example 7: Academic Hedging Done Right vs. Wrong

**Register:** `academic`

**Before (wrong hedging):**
> "It could potentially be argued that the evidence may suggest a possible connection between the Minoan and Phoenician writing systems, which could have implications for further research."

**After (precise hedging):**
> "The sign correspondence between Linear A *AB 04* and Proto-Sinaitic *bet* suggests a shared graphic ancestor, though the sample size (n=7 secure parallels) limits statistical confidence."

**Changes:** Hedging should express genuine epistemic uncertainty with specifics, not stack qualifiers. "Could potentially be argued that... may suggest a possible" is four layers of nothing. One precise hedge ("suggests... though") with a stated reason ("sample size") is stronger.

---

## Technical

### Example 8: Promotional Adjectives + Buzzwords

**Register:** `technical`

**Before:**
> "Our cutting-edge, robust authentication module leverages state-of-the-art JWT handling to deliver a seamless, enterprise-grade security experience. This groundbreaking approach enhances the overall security posture of your application."

**After:**
> "The auth module uses RS256-signed JWTs with automatic key rotation every 24 hours. Tokens expire after 15 minutes. Refresh tokens are stored in HttpOnly cookies with SameSite=Strict."

**Changes:** Removed every promotional adjective. Replaced "leverages" with "uses." Replaced vague claims with specific configuration. "Cutting-edge," "robust," "seamless," "enterprise-grade," "groundbreaking"—none of these tell you what the code does.

---

### Example 9: Format Slop — Inline-Header Vertical List

**Register:** `technical`

**Before:**
> **Key Features:**
> - **Blazing Fast Performance:** Our module processes requests with minimal latency
> - **Effortless Integration:** Simply drop in the middleware and you're good to go
> - **Rock-Solid Reliability:** Built to handle millions of requests without breaking a sweat

**After:**
> The middleware processes requests in under 2ms at p99 (benchmarked on a 4-core VM with 1,000 concurrent connections). Add it to your Express pipeline with `app.use(authMiddleware())`. No configuration required for default settings.

**Changes:** Replaced inline-header vertical list with prose. Removed promotional adjectives ("blazing fast," "effortless," "rock-solid"). Added a benchmark instead of asserting performance. Described integration concretely instead of vaguely.

---

### Example 10: -ing Clauses in Technical Docs

**Register:** `technical`

**Before:**
> "The database migration adds a composite index on (user_id, created_at), ensuring reliability and enhancing query performance while showcasing the team's commitment to scalability."

**After:**
> "The migration adds a composite index on (user_id, created_at). The `GET /users/:id/events` query drops from 340ms to 12ms on a table with 2M rows."

**Changes:** Cut all three -ing clauses. They claimed outcomes without evidence. The after version gives the benchmark.

---

## Narrative

### Example 11: Synonym Cycling + Rule of Three

**Register:** `narrative`

**Before:**
> "The archaeologist descended into the chamber. The researcher paused at the threshold. The scholar steadied herself against the wall. The academic took a breath. Innovation, curiosity, and determination drove her forward."

**After:**
> "She descended into the chamber, paused at the threshold, and steadied herself against the wall. She took a breath and kept moving."

**Changes:** "Archaeologist," "researcher," "scholar," "academic"—four names for one person. Pick one and reuse it (or use a pronoun). Cut the rule-of-three abstract nouns. People don't think in triads of virtues; they just act.

---

### Example 12: Generic Positive Conclusion

**Register:** `narrative`

**Before:**
> "As the sun set over the ancient ruins, she realized that the journey had changed her in ways she couldn't fully articulate. The future looked bright, full of endless possibilities. And maybe that was enough."

**After:**
> "She sat on the broken wall and watched the sun go down. She didn't know what she'd found. She wasn't sure she wanted to."

**Changes:** Cut "the future looked bright" and "endless possibilities"—generic positive closers. Cut "maybe that was enough"—false profundity. The rewrite lets ambiguity exist without announcing it.

---

## Professional

### Example 13: Business Jargon + Throat-Clearing

**Register:** `professional`

**Before:**
> "I wanted to circle back and take a step back to unpack the current landscape. Moving forward, we need to lean into the challenges and double down on our commitment to synergy across cross-functional teams."

**After:**
> "Three problems from last quarter's review are still open. I'll send specifics by Thursday with a proposed owner for each."

**Changes:** Seven jargon phrases in two sentences, zero information. The rewrite says what's happening, when, and who's responsible.

---

### Example 14: Chatbot Artifacts in Professional Writing

**Register:** `professional`

**Before:**
> "Great question! I'd be happy to help with that. Here is an overview of the quarterly results. It's worth noting that revenue increased significantly. I hope this helps! Let me know if you have any questions."

**After:**
> "Q4 revenue was $2.3M, up 18% from Q3. Full breakdown attached."

**Changes:** Stripped five chatbot artifacts. Replaced "significantly" with a number. Professional writing respects the reader's time.
Loading