Unslop
Humanize AI-generated prose. Audit it first. Rewrite only when the user wants a rewrite.
When to Use
- User asks to "humanize", "de-slop", or "make it sound human"
- Editing AI-generated drafts, emails, articles, social posts
- Text contains AI patterns (throat-clearing, binary contrasts, em-dash abuse, emphasis crutches)
- User says text "sounds like AI" or "sounds robotic"
- Reviewing content before publishing
- User pastes text and asks to "clean it up" or "make it natural"
Arguments
| Argument | Description | Default |
|---|---|---|
--preset | Voice style: crisp, warm, expert, story | crisp |
--strict | Fail if rubric score < 32/40 | false |
--audit-only | Flag AI patterns without rewriting | false |
| Input | Text to transform (argument, file path, or stdin) | required |
Modes
This skill has two modes:
rewrite(default) — diagnose, rewrite, then validate the rewriteaudit-only— diagnose and assess the text without rewriting it
Trigger audit-only mode when the user says "audit only," "flag only," "scan this," "just detect," "don't rewrite," or passes --audit-only.
Voice Presets
| Preset | Style | Best For |
|---|---|---|
crisp | Short, direct, no fluff | Technical writing, documentation |
warm | Friendly, conversational | Emails, blog posts |
expert | Authoritative, confident | Thought leadership, articles |
story | Narrative flow, show don't tell | Case studies, personal posts |
Read the selected preset file from presets/ (e.g., presets/crisp-human.md) before writing. Each preset has specific voice rules, structural patterns, and a quality checklist.
Workflow
Pass 1: Diagnosis
Before rewriting anything, understand what's wrong. This prevents blind rewriting that loses meaning.
- Read the relevant references based on what you see in the input:
- references/taboo-phrases.md — the complete catalog of banned phrases and newer structural families, with regex patterns for detection. This is the authoritative list; read it on first use and refer back for edge cases. - references/rubric.md — 8 scoring criteria (directness, rhythm, verbs, trust, authenticity, density, fact preservation, template avoidance), 5 points each. - references/fact-preservation.md — rules for what must survive transformation unchanged (numbers, names, dates, URLs, quotes, technical terms).
- Extract constraints from the input — facts that must survive if you rewrite:
python3 scripts/extract_constraints.py <<< "$INPUT"This outputs JSON with every number, date, name, URL, and quote that must appear in your output. - Scan for AI patterns:
python3 scripts/banned_phrase_scan.py <<< "$INPUT"This returns violations grouped by category and severity (hard = always an AI tell, soft = context-dependent). Quoted examples, markdown blockquotes, and code snippets are ignored by default so you don't flag illustrative bad writing in docs. If you explicitly need to audit quoted examples too, run:python3 scripts/banned_phrase_scan.py --include-quoted <<< "$INPUT" - Read the selected preset from
presets/and note its voice rules. - Identify: audience, content type, tone target. A LinkedIn post needs different treatment than a technical doc.
Pass 2: Reconstruction
Skip this pass in --audit-only mode.
Rewrite the text. The references you read in Pass 1 are your guide — don't duplicate their rules here, just apply them.
Core principles (the why behind the rules):
- Em-dashes are the #1 AI punctuation tell. Default to zero. Use periods, commas, or parentheses instead. If one is absolutely necessary, max one per several paragraphs.
- AI text delays the point. Cut everything before the actual claim. "Here's the thing:" is throat-clearing. "Let that sink in." is an emphasis crutch. Just state the thing.
- AI inflates significance. "Stands as a testament to" means "is". "Pivotal moment" is almost never pivotal. Replace inflation with the specific fact.
- AI avoids commitment. "It's worth noting that" hedges. "Some experts argue" hides behind unnamed sources. Make claims directly or cite specifically.
- Facts are sacred. Every number, name, date, and URL from the original must appear in your output unchanged. Style is negotiable; accuracy is not.
- Shorter is almost always better. If cutting a sentence doesn't change the meaning, cut it. AI pads; humans compress.
Follow the preset voice characteristics for sentence length, paragraph structure, and tone. Refer to references/edit-library.md for 24 before/after transformation examples if you need guidance on specific pattern types.
For guidance on adding genuine human voice (not just removing AI tells), read references/personality-guide.md. Clean text that's still anonymous and voiceless scores a 3/5 on authenticity — aim for 4+.
Validation
Only run this section when you rewrote the text.
After rewriting, verify your work:
- Fact preservation — confirm all constraints survived:
python3 scripts/validate_preservation.py original.txt transformed.txt - Remaining AI patterns — check your output is clean:
python3 scripts/banned_phrase_scan.py <<< "$OUTPUT" - Readability metrics — check rhythm and variance:
python3 scripts/readability_metrics.py <<< "$OUTPUT" - Change percentage — flag if >40% changed (may indicate over-editing):
python3 scripts/diff_check.py original.txt transformed.txt - Score against rubric — 8 criteria x 5 points = 40 max. Passing: 32/40 (80%). See
references/rubric.mdfor detailed scoring.
Output Format
Adapt output to the context. For a quick fix, just return the cleaned text. For a thorough review, include validation:
Audit Only (--audit-only or user asks for flag-only scan):
## Issues Found
- [Quoted issue, category, why it reads as AI]
## Assessment
- [Which issues are clear problems]
- [Which issues are judgment calls or context-dependent]Minimal (default for short text / quick fixes):
[The humanized text]Detailed (for --strict mode or when user asks for analysis):
## Transformed Text
[The humanized version]
## Validation
- Constraints: [X]/[Y] preserved
- AI patterns: [N] remaining (was [M])
- Readability: Grade [X], sentence variance [Y]
- Change: [X]% from original
- Score: [X]/40
## Changes Made
- [List of major transformations applied]Quick Examples
Input:
Here's the thing: building products is hard. Not because the technology is complex. Because people are complex. Let that sink in.
Output (crisp):
Building products is hard. Not the technology. The people.
Input:
In today's fast-paced business environment, it's becoming increasingly important for organizations to leverage their core competencies while navigating the complex landscape of digital transformation.
Output (crisp):
Companies need to use their strengths while going digital.
Reference Files
Located in this skill's directory. Read them as needed — don't front-load everything into context.
| File | When to Read |
|---|---|
references/taboo-phrases.md | First use, then for edge cases. Expanded pattern catalog with detection regex, newer structural families, and quote-exemption rules. |
references/rubric.md | When scoring output or in --strict mode. 8 criteria, detailed rubrics. |
references/edit-library.md | When unsure how to transform a specific pattern. 24 before/after examples. |
references/fact-preservation.md | When input has lots of data, names, or quotes. Constraint rules. |
references/personality-guide.md | When output is clean but soulless. How to add genuine voice. |
presets/*.md | After preset selection. Voice-specific rules, patterns, checklists. |
assets/examples/*.md | For extended before/after examples by content type (article, LinkedIn, sales). |
Scripts
All scripts accept stdin or file path arguments and output JSON. Run from the skill directory.
| Script | Purpose | When to Run |
|---|---|---|
scripts/extract_constraints.py | Extract must-preserve facts | Before rewriting |
scripts/banned_phrase_scan.py | Detect AI patterns with severity | Before and after rewriting |
scripts/validate_preservation.py | Verify facts survived | After rewriting |
scripts/readability_metrics.py | Sentence variance, grade level | After rewriting |
scripts/diff_check.py | Change percentage | After rewriting |
scripts/wiki_sync.py | Sync with Wikipedia AI patterns | On /unslop --wiki-sync |
Maintenance Commands
| Command | Action | |
|---|---|---|
/unslop --add-phrase "phrase" | Add banned phrase | |
| `/unslop --add-structure "pattern\ | fix"` | Add structural pattern |
/unslop --list-phrases | List all banned phrases | |
/unslop --list-structures | List structural patterns | |
/unslop --wiki-sync | Sync with Wikipedia for new AI patterns |
Wiki Sync (/unslop --wiki-sync)
Syncs pattern rules with Wikipedia's Signs of AI writing page. Run periodically to pick up new patterns.
Steps:
- Check for updates:
python3 scripts/wiki_sync.py check(exit 0 = no updates) - Get structured diff:
python3 scripts/wiki_sync.py diff(JSON output with change type, section, words) - For each new word/phrase: add to
references/taboo-phrases.mdin the matching section, and add toscripts/banned_phrase_scan.pyBANNED_PHRASES dict with category, severity, and suggestion. - Verify:
python3 scripts/banned_phrase_scan.py < /dev/null(confirm no syntax errors)
Only add phrases that are genuine AI writing tells for general prose. Skip Wikipedia-specific patterns (broken wikitext, DOI issues, etc.).
Key Principles
- Diagnosis before writing — understand what's wrong before fixing
- Facts are sacred — never sacrifice accuracy for style
- Presets guide, don't constrain — adapt to content type
- When in doubt, cut — shorter is almost always better
- Quoted examples are exempt by default — don't flag illustrative bad writing unless the user explicitly wants that
- Validation is mandatory — run the scripts, especially fact preservation