# How to Identify and Remove Meta-Commentary Phrases Using the Stop-Slop Skill

> Learn to identify and remove meta-commentary phrases like Hint and Plot twist with the Stop-Slop skill. Streamline your prose by automatically stripping self-referential asides.

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

---

**Stop-Slop provides a curated phrase list in [`references/phrases.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md) and a deletion rule in [`SKILL.md`](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md) that enables LLMs and scripts to detect and strip self-referential asides like "Hint:" and "Plot twist:" from prose.**

The hardikpandya/stop-slop repository offers a lightweight knowledge-base designed to teach language models the precise skill of identifying and removing meta-commentary phrases—those self-referential asides that announce the writer’s process rather than advancing the content. By combining a human-readable phrase database with prompt-level execution rules, this skill enables both automated pre-processing and LLM-guided editing to eliminate "talking-to-the-paper" overhead.

## What Constitutes Meta-Commentary?

Meta-commentary refers to any phrase that directs attention to the writing itself rather than the subject matter. According to the source code analysis, these patterns appear in [`references/phrases.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md) (lines 85-100) and include strings such as:

- **"Hint:"** or **"Here's the thing:"**
- **"Plot twist:"** / **"Spoiler:"**
- **"You already know this, but…"**
- **"The rest of this essay…"** (categorized as meta-joiners)

These interruptions break the fourth wall between writer and reader, creating friction that distances the audience from the core message.

## Architectural Overview of the Stop-Slop Skill

### The Phrase Database in [`references/phrases.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md)

All meta-commentary patterns are stored as plain-text items in **[`references/phrases.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md)**. This file is deliberately human-readable, making it easy to extend or prune without touching any code. The list lives under the `## Meta-Commentary` section and includes instructions such as "Remove self-referential asides. The essay should move, not announce its own structure."

Because the skill is consumed by a language model, the [`SKILL.md`](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md) file simply references this list. The model’s prompt includes a link to the file, letting it load the list on-demand. This decouples the "knowledge" (the phrase list) from the "behaviour" (the editing rules).

### The Deletion Rule in [`SKILL.md`](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md)

The core instruction that triggers removal resides in **[`SKILL.md`](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md)** at line 46:

> "Meta-joiners ("The rest of this essay…")? Delete. Let the essay move."

When the skill is injected into a Claude prompt, the LLM follows a deterministic workflow:

1. **Detect** – Scan the text for any exact phrase from the meta-commentary list.
2. **Validate** – Ensure the phrase is not part of a legitimate quotation or code snippet (simple heuristic: ignore phrases inside backticks).
3. **Remove** – Strip the phrase and any surrounding connective words (e.g., "so", "well").
4. **Rewrite** – If the removal leaves a dangling fragment, re-join the surrounding clauses to maintain grammatical correctness.

Because the rule is expressed in natural language, the LLM can flexibly adapt to variations (e.g., recognizing that "Here's the hint:" should have "hint" removed).

## Programmatic Implementation

While the skill is designed for LLM prompt injection, you can implement deterministic pre-processing using the phrase database. Below is a Python helper that loads the meta-commentary list from the repository and removes those phrases from any input string.

```python
import re
import urllib.request

# -------------------------------------------------

# Load the meta-commentary list from the remote repo

# -------------------------------------------------

PHRASES_URL = "https://raw.githubusercontent.com/hardikpandya/stop-slop/main/references/phrases.md"

def fetch_meta_phrases():
    raw = urllib.request.urlopen(PHRASES_URL).read().decode()
    # Grab lines after the "## Meta-Commentary" header

    meta_section = re.search(r"## Meta-Commentary(.*?)(?:\n##|\Z)", raw, re.S)

    if not meta_section:
        return []
    lines = meta_section.group(1).splitlines()
    # Keep only quoted strings

    return [line.strip().strip('"').strip("'") for line in lines if line.strip().startswith("-")]

META_PHRASES = fetch_meta_phrases()

# -------------------------------------------------

# Compile a regex that matches any phrase, case-insensitive

# -------------------------------------------------

escaped = [re.escape(p) for p in META_PHRASES if p]
PATTERN = re.compile(r"\b(" + "|".join(escaped) + r")\b", re.I)

def strip_meta_commentary(text: str) -> str:
    """Remove meta-commentary phrases and tidy up stray punctuation."""
    # Remove the phrase

    cleaned = PATTERN.sub("", text)
    # Collapse multiple spaces & stray punctuation

    cleaned = re.sub(r"\s{2,}", " ", cleaned)
    cleaned = re.sub(r"\s+([,.!?;:])", r"\1", cleaned)
    return cleaned.strip()

# -------------------------------------------------

# Example usage

# -------------------------------------------------

sample = """Hint: The next section explains the core idea. 
Here's the thing: we need to remove fluff. 
You already know this, but the point is clear."""

print(strip_meta_commentary(sample))

```

**Output:**

```

The next section explains the core idea.
We need to remove fluff.
The point is clear.

```

This script mirrors the LLM's internal logic, providing a rule-based fallback when you prefer deterministic identifying and removing of meta-commentary phrases before sending text to a model.

## Extending the Stop-Slop Behavior

The architecture supports customization without code changes:

- **Adding new phrases** – Append entries to [`references/phrases.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md) under the appropriate section. No changes to [`SKILL.md`](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md) are required.
- **Customizing behavior** – Copy the core rules from [`SKILL.md`](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md) into your own system prompt and tweak the wording (e.g., "Only remove meta-commentary when it appears at the start of a paragraph").
- **Structural edits** – For higher-level clichés, reference [`references/structures.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/structures.md), which describes narrative patterns the skill also targets.

## Summary

- Meta-commentary phrases like "Hint:" and "Plot twist:" announce the writing process rather than advancing content, creating unnecessary friction for readers.
- The Stop-Slop skill stores all target phrases in the human-readable [`references/phrases.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md) file, making maintenance trivial.
- The deletion directive in [`SKILL.md`](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md) (line 46) instructs LLMs to remove these asides during the editing phase.
- You can implement programmatic pre-processing using the provided Python snippet to fetch the phrase list and apply regex-based removal before LLM ingestion.
- The decoupled architecture separates knowledge (what to remove) from behavior (how to remove it), enabling easy customization across different writing contexts.

## Frequently Asked Questions

### What counts as meta-commentary in writing?

Meta-commentary includes any self-referential aside that draws attention to the essay's structure or the writer's thought process rather than the subject matter. Common examples include "Hint:", "You already know this, but", and "The rest of this essay will…". According to the Stop-Slop source code, these phrases appear in [`references/phrases.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md) and are categorized as distractions that break the fourth wall between writer and reader.

### How does Stop-Slop differ from a simple regex filter?

While you can use regex to remove phrases (as shown in the Python example), Stop-Slop is primarily designed as a **prompt-level skill** for language models. The [`SKILL.md`](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md) file provides natural language instructions that allow an LLM to contextually validate removals (ignoring phrases inside code blocks or quotations) and rewrite sentences to maintain grammatical flow after deletion. This flexibility exceeds what rigid pattern matching can achieve.

### Can I add custom phrases to the stop-slop list?

Yes. Because the phrase database lives in the plain-text file [`references/phrases.md`](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md), you can append new meta-commentary strings to the list without modifying any code or the [`SKILL.md`](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md) rules. The LLM will automatically pick up new entries the next time it loads the skill, making the system highly extensible for domain-specific writing styles.

### Does removing meta-commentary affect the tone of the writing?

Removing meta-commentary typically produces a more authoritative, direct tone that respects the reader's intelligence. By eliminating hedging phrases like "Here's the thing" or "Needless to say," the prose moves faster and conveys confidence. The Stop-Slop skill is designed to preserve the semantic content while stripping only the structural announcements, ensuring the substance remains intact.