unslop
Post-process AI-generated text through the unslop CLI to strip AI writing patterns before publishing
unslop — Strip AI Writing Patterns via CLI
Overview
unslop is a CLI tool that post-processes text to remove AI writing patterns programmatically. Unlike skills that ask the agent to avoid AI-isms, unslop runs as a deterministic pipeline step: pipe text in, get clean text out. Use it as a final pass before committing docs, publishing posts, or sending any AI-generated content to production.
The --deterministic flag makes output reproducible — same input always produces same output. The --stdin flag reads from stdin, enabling shell pipeline composition.
When to Use This Skill
- When you have AI-generated text ready to publish and want a final cleanup pass
- When working in a shell pipeline where text quality needs to be enforced automatically
- When writing commit hooks or CI steps that validate content before it ships
- When you need reproducible text normalization across multiple runs
Setup
Install once:
pipx install unslop
# or
uv tool install unslop
Verify:
unslop --version
How It Works
Step 1: Pipe Text Through unslop
Standard cleanup (may vary slightly between runs):
echo "This leverages cutting-edge AI to deliver robust solutions." | unslop --stdin
Deterministic cleanup (same input → same output every run):
echo "This leverages cutting-edge AI to deliver robust solutions." | unslop --stdin --deterministic
Step 2: Use in Shell Pipelines
Pipe the output of any command through unslop:
cat draft.md | unslop --stdin --deterministic > clean.md
Or chain with other tools:
cat draft.md | unslop --stdin --deterministic | pbcopy # macOS: copy clean text to clipboard
Step 3: Integrate into Commit Hooks or CI
Add to a pre-commit hook or CI step to enforce quality gates on any generated content before it ships:
# In .git/hooks/pre-commit or a CI script
CONTENT=$(cat docs/changelog.md)
CLEANED=$(echo "$CONTENT" | unslop --stdin --deterministic)
if [ "$CONTENT" != "$CLEANED" ]; then
echo "Changelog contains AI writing patterns. Run: cat docs/changelog.md | unslop --stdin --deterministic > docs/changelog.md"
exit 1
fi
Examples
Example 1: Clean a Draft Document
cat blog-post-draft.md | unslop --stdin --deterministic > blog-post-final.md
Example 2: Inline Cleanup During Writing
# Write content, pipe through unslop, write result back
cat README.md | unslop --stdin > README.clean.md && mv README.clean.md README.md
Example 3: Validate Before Submitting a PR
# Check if any generated docs need cleanup
for f in docs/*.md; do
ORIGINAL=$(cat "$f")
CLEANED=$(echo "$ORIGINAL" | unslop --stdin --deterministic)
[ "$ORIGINAL" != "$CLEANED" ] && echo "Needs cleanup: $f"
done
Best Practices
- ✅ Use
--deterministicin CI and automation to ensure reproducible output - ✅ Run on the final draft, not intermediate iterations
- ✅ Combine with the
avoid-ai-writingskill for both generation-time guidance and post-processing - ❌ Don't run on code files — unslop targets prose, not source code
- ❌ Don't skip review after unslop: automated cleanup can occasionally change meaning; read the output
Limitations
- Processes prose only — not code, JSON, or structured data
- Does not catch factual errors or substantive writing issues
- Some replacements may not fit every context; review the output before publishing
- Requires Python tooling such as
pipxoruvfor standalone CLI installation
Security & Safety Notes
- unslop reads from stdin and writes to stdout — no file system side effects by default
--deterministicmode is local and does not make LLM API calls- Default LLM mode may use
ANTHROPIC_API_KEYor the Claude CLI; use--deterministicfor sensitive local files and CI gates - Safe to run in CI pipelines and commit hooks when pinned to deterministic mode