Skip to main content

unslopify

Audit and rewrite text to remove AI-writing patterns. A deterministic Python core finds the named failures. An agent skill runs the rewrite loop until a fresh-context judge cannot tell a model touched the text.

Install

pip install unslopify

30 seconds

$ unslopify draft.md
draft.md:1: [scene-setting] "In today's fast-paced digital world"
    A weather-report opener about today's fast-moving world before the actual topic.
draft.md:1: [inflated-contrast] "is not just"
    A plain statement dressed up as a reveal by denying a smaller version of itself first.

FAIL draft.md: 2 findings, 0 mechanics, 0 bank

Before:

In today's fast-paced digital world, this release is not just an
update. It is a testament to our team's unwavering commitment,
ensuring a seamless experience for every user.

After:

This release fixes the checkout crash and cuts page load from 3 s
to 1 s. Both changes came out of the June incident review.

What it checks

Four categories of named types. unslopify types prints all of them with definitions and examples.

  • formula: manufactured rhythm. Inflated contrast, negative parallelism, slogan fragments, stock triads, fake authority, canned conclusions, AI vocabulary clusters, significance inflation.
  • substance: claims a reader cannot verify. Empty abstraction, tacked-on benefits, process instead of reason, unsupported claims.
  • wording: buried points. Bureaucratic phrasing, hedge stacks, unexplained jargon, copula avoidance, overlong sentences.
  • structure: packaging that delays the point. Scene-setting, request restatement, meta-announcements, redundant conclusions, over-structure.

Types are contextual signals with severities and thresholds, not a banned-word list. Mechanical checks run alongside: em and en dashes, curly quotes, sentence length, semicolon density, and 4-word phrases repeated inside one document.

CLI

unslopify DRAFT.md              # audit; exit 0 pass, 1 findings
unslopify - < draft.txt         # audit stdin
unslopify DRAFT.md --json       # full report as JSON
unslopify DRAFT.md --brief      # rewrite instructions for a model or human
unslopify DRAFT.md --fix        # apply safe mechanical fixes only
unslopify DRAFT.md --bank       # also check the cross-document phrase bank
unslopify commit DRAFT.md --id blog-2026-08   # bank a finished document
unslopify types                 # print the rubric

The phrase bank lives at ~/.unslopify/phrase_bank.jsonl (override with UNSLOPIFY_HOME). Committing a finished document banks its 8-word phrases, and future drafts that reuse any of them fail the --bank check. This is what stops a writer, or an agent, from developing stamps.

Agent skill

SKILL.md turns any harness that supports skills into the full rewrite loop: audit, rewrite against named findings, judgment pass, uniqueness gate, fresh-context judge, final PASS. It also defines an always-on mode that applies the writing rules to every reply.

Install:

  • Claude Code: copy SKILL.md into ~/.claude/skills/unslopify/, then invoke with /unslopify.
  • Cursor: paste the rules from SKILL.md Mode 1 into a project or user rule, and use the CLI in the terminal for audits.
  • Codex / other: include SKILL.md in the system context and expose the unslopify CLI.

Library

from unslopify import audit_text, build_brief, profile_from_sample

report = audit_text(open("draft.md").read(), source="draft.md")
print(report.verdict, report.counts_by_category)
print(build_brief(report))          # instructions for the rewrite pass
voice = profile_from_sample(open("my_writing.md").read())

All models are Pydantic v2. report.model_dump_json() gives a stable, versioned record of every audit, which is also the hook for analytics in hosted deployments.

Pipeline

pipeline

The always-on mode is simpler: a standing rule loads the skill, and the skill's writing rules apply to every outgoing message.

always-on

Design notes

  • The audit is deterministic. Same text in, same report out, no model calls, no network. Judgment-only types (meaning loss, jargon the regexes miss) are the agent's job and are marked as such in the rubric.
  • The judge must be fresh. A model that watched the rewrite approves its own choices, so the skill requires a separate context for the final read.
  • Voice is preserved, not replaced. The optional VoiceProfile measures the author's sentence lengths, contraction rate, and first-person rate, and the rewrite aims at those numbers.

Further reading on plain technical writing: Google developer documentation style guide.

License

MIT.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

unslopify-0.1.0.tar.gz (440.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

unslopify-0.1.0-py3-none-any.whl (22.6 kB view details)

Uploaded Python 3

File details

Details for the file unslopify-0.1.0.tar.gz.

File metadata

  • Download URL: unslopify-0.1.0.tar.gz
  • Upload date:
  • Size: 440.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for unslopify-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e21b4cdbe174e88a6ebe6f4265049881b5e487452741b2b3ee6cec4edee8dda6
MD5 19442be936818ec26a96b9c67f70abfb
BLAKE2b-256 182799adc2bc265f50189c845304df1bdd5942367c543121cdf4f5e4770992a7

See more details on using hashes here.

File details

Details for the file unslopify-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: unslopify-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 22.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for unslopify-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aca4769e6e537ce44efc78860078fc5e7f906079fd5b67897475557b36586663
MD5 91224ddab47a3f9389c2d856c46c9ada
BLAKE2b-256 986fdfd4e84beb1f9d330d2761f5266aec8a0da171f2e123df76bfcf5e637206

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page