unslop-text

Detect and remove AI-writing tells from prose using a data-ranked scanner and reference catalog.

Updated Nov 29, 2025
One-click install
npx skills add https://github.com/achyutkneupane/Blog-Kit --skill unslop-text-achyutkneupane
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: unslop-text
Source: https://github.com/achyutkneupane/Blog-Kit/tree/main/.ai/skills/unslop-text
Command: npx skills add https://github.com/achyutkneupane/Blog-Kit --skill unslop-text-achyutkneupane

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Prose written or edited by AI models carries recognizable cues (em dashes, "it's not just X, it's Y" cadences, assistant boilerplate, diction memes like "delve") that readers flag as machine-generated. This Skill identifies those specific tells, ranked by how often real readers cite them, and guides their removal without swapping one default voice for another. ## Core Features & Use Cases - Deterministic scanner: A standalone Python script (standard library only) scans .md, .markdown, .mdx, .txt, .rst, and .html files, reporting each finding with file, line, matched text, data share, and fix, plus a slop score and density per 1,000 words. The exit code equals the high-severity count, so CI pipelines can gate on it. - Data-grounded tell catalog: references/tells.md ranks 21 tells by cited share from an analysis of 89,239 Reddit posts (7,984 on-topic, ~50 subreddits, 2021-2026), including structural tells a regex cannot see (uniform rhythm, sycophancy, empty fluency) for a human pass. - Deliberate-voice method: references/writing-with-intent.md pins one of four registers (casual, conversational-professional, expository, formal) plus a speaker, so fixes replace defaults with chosen voice rather than the over-corrected "anti-AI" register. - Use Case: Run the scanner on a blog draft before publishing, fix the flagged em dashes and boilerplate, then read the draft aloud against the structural catalog to catch uniform rhythm the scanner cannot see. ## Quick Start Ask the AI to audit your draft for AI-writing tells by running scripts/unslop_text_scan.py on the file, then fix the flagged lines in priority order.

Frequently Asked Questions about unslop-text

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I scan a document for AI-writing tells?

Run python3 scripts/unslop_text_scan.py followed by the file or directory path. It scans .md, .markdown, .mdx, .txt, .rst, and .html files and prints each finding with file, line, matched text, and the suggested fix, plus a slop score and density per 1,000 words.

How do I use the scanner in a CI pipeline?

Run the scanner with the --json flag for machine-readable output or --severity high to report only the strongest signals. The exit code equals the number of high-severity findings, so a CI step fails automatically when high-severity tells are present.

What AI-writing tells does the scanner detect?

It catches lexical tells: em dashes, the "not just X, it's Y" cadence, assistant boilerplate like "as an AI language model", diction memes such as delve and seamless, listicle scaffolding, hollow openers, and trailing assistant offers. Structural tells like uniform rhythm and sycophancy require a human pass using references/tells.md.

Does the scanner flag quoted text or code examples?

No. Lines starting with >, text inside double quotes, and content in backticks or fenced code blocks are skipped, so quoting a cliche to discuss it is not flagged. The em dash is the one exception and is flagged everywhere.

Can I keep a flagged word I used intentionally?

Yes. Add unslop-ignore anywhere on the line and the scanner skips it. This keeps audits trustworthy when a flagged word or a formal register is a deliberate choice rather than an unchosen default.

What are the limitations of automated AI-text detection?

The scanner is a lexical filter and cannot see the highest-value tells: uniform sentence rhythm, sycophancy, empty fluent paragraphs, and over-formal register. A clean scan means the lexical layer is clean, not that the writing reads human, so a read-aloud pass against the structural catalog is still required.