How to Identify and Remove Meta-Commentary Phrases Using the Stop-Slop Skill
Stop-Slop provides a curated phrase list in references/phrases.md and a deletion rule in 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 (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
All meta-commentary patterns are stored as plain-text items in 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 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
The core instruction that triggers removal resides in 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:
- Detect – Scan the text for any exact phrase from the meta-commentary list.
- Validate – Ensure the phrase is not part of a legitimate quotation or code snippet (simple heuristic: ignore phrases inside backticks).
- Remove – Strip the phrase and any surrounding connective words (e.g., "so", "well").
- 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.
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.mdunder the appropriate section. No changes toSKILL.mdare required. - Customizing behavior – Copy the core rules from
SKILL.mdinto 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, 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.mdfile, making maintenance trivial. - The deletion directive in
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 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 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, you can append new meta-commentary strings to the list without modifying any code or the 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.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →