Strategies for Removing Passive Voice from Writing: A Complete Guide to the Stop-Slop Skill
The most effective strategy for removing passive voice from writing involves using pattern-matching rules that identify hidden actors and rewrite sentences to place the subject first, as implemented in the declarative Stop-Slop repository.
The hardikpandya/stop-slop repository provides a lightweight, language-agnostic framework for eliminating passive voice from prose through declarative markdown instructions. This open-source skill enables large language models (LLMs) like Claude to detect passive constructions and apply specific rewrite strategies that restore clarity and energy to writing. Understanding these strategies for removing passive voice from writing helps content creators produce more direct, engaging text across any domain.
How the Stop-Slop Repository Detects Passive Voice
The core architecture relies on a minimal scaffold of markdown files that define detection patterns and replacement rules. Unlike complex software libraries, this skill operates through simple text-based instructions that any LLM can interpret.
The Core Instruction Framework
The entry point resides in [SKILL.md](https://github.com/hardikpandya/stop-slop/blob/main/SKILL.md), which establishes high-level behavioral categories including "Passive Voice" and directs the model to supporting reference files. This file functions as the system prompt that drives the LLM's text transformation behavior.
Pattern Matching in structures.md
The heart of the detection logic lives in [references/structures.md](https://github.com/hardikpandya/stop-slop/blob/main/references/structures.md), which contains a table mapping passive constructions to their active-voice replacements. The file explicitly states:
“Every sentence needs a subject doing something. Passive voice hides the actor and drains energy.”
Specific patterns (lines 95-105) include transformations such as:
- "X was created" → "Someone created X"
- "Mistakes were made" → "Someone made mistakes"
Each entry includes a "Fix" column that describes how to rewrite the sentence so the actor appears front-and-center, eliminating the ambiguity of passive construction.
Practical Implementation Strategies
Integrating these strategies requires loading the skill folder and invoking the rewrite rules through standard LLM interfaces.
Claude Project Integration
To apply passive voice removal within a Claude project, load the skill as a system resource:
[System]
You are Claude. Load the skill from the folder `stop-slop`.
When you detect any sentence matching a pattern from `references/structures.md`,
replace it according to the provided fix.
When processing text like:
The data was analyzed by the team, and the results were presented to the board.
The model applies the structural rules and outputs:
The team analyzed the data, and they presented the results to the board.
Direct API Usage
For programmatic implementation, reference the skill in API calls:
payload = {
"model": "claude-2",
"system_prompt": "Load skill from ./stop-slop",
"user_prompt": "Rewrite to eliminate passive voice:\n\nThe prototype was built in two weeks."
}
response = claude_api.generate(payload)
print(response.text) # -> "The team built the prototype in two weeks."
Complementary Phrase Elimination
The repository includes [references/phrases.md](https://github.com/hardikpandya/stop-slop/blob/main/references/phrases.md) as a supplementary strategy. This file defines phrase-level bans—such as filler adverbs—that often accompany passive constructions. Removing these weakens the tendency toward passive voice while improving overall sentence vigor.
Key Files for Passive Voice Removal
The following components work together to provide complete passive voice detection and elimination:
| Component | Purpose | Key Content |
|---|---|---|
SKILL.md |
System instruction entry point | High-level categories directing passive voice removal |
references/structures.md |
Passive pattern database | Table of passive sentences with specific active-voice fixes |
references/phrases.md |
Phrase-level filtering | List of filler words and weak adverbs to eliminate |
README.md |
Implementation guide | Quick-start instructions for Claude integration |
Because the repository contains only declarative markdown under an MIT license, it integrates into any workflow accepting raw text prompts without additional dependencies.
Summary
- Pattern matching in
references/structures.mdprovides the foundational strategy for identifying passive constructions through specific syntactic patterns. - Actor restoration requires rewriting sentences to place the subject before the verb, transforming "X was created" into "Someone created X."
- System prompt integration allows immediate deployment in Claude projects or API calls by loading the
stop-slopskill folder. - Complementary phrase bans in
references/phrases.mdeliminate filler language that enables passive voice habits. - The declarative markdown architecture makes these strategies language-agnostic and require no programming beyond text prompts.
Frequently Asked Questions
What is the most reliable method for detecting passive voice in large documents?
According to the hardikpandya/stop-slop source code, the most reliable method involves pattern matching against structural templates defined in references/structures.md. These templates identify specific constructions like "was analyzed by" or "were presented to" and trigger automatic rewrites that restore the actor to the subject position.
Can these passive voice removal strategies work with languages other than English?
Yes. Because the Stop-Slop repository uses declarative markdown files rather than code libraries, the strategies are language-agnostic. Users can modify the patterns in references/structures.md to match passive constructions in Spanish, German, or other languages while maintaining the same fix-column methodology for active-voice conversion.
How does the Stop-Slop skill handle ambiguous cases where the actor is unknown?
The references/structures.md file addresses this through specific rewrite rules that insert generic actors like "Someone" or "The team" when the original text uses passive voice to hide responsibility. For example, "Mistakes were made" becomes "Someone made mistakes," ensuring every sentence maintains an active subject even when the specific actor remains unidentified.
Is programming experience required to implement these passive voice removal strategies?
No programming experience is required. The skill operates through markdown files and system prompts. Users simply load the stop-slop folder as a skill resource in Claude or include the file contents in their system prompts. The logic is purely declarative, requiring only text-based configuration rather than code implementation.
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 →