Skip to main content

unsloppify

Strip AI slop from your prose. A fast CLI prose linter for markdown, plus a Claude Code skill and output-style for the judgment calls a regex can't make.

uvx unsloppify draft.md            # report findings, exit 1 if any
uvx unsloppify draft.md --fix      # rewrite safe deterministic fixes in place
uvx unsloppify docs/ --format json # recursive scan, JSON output

Why this exists

Existing Claude skills like stop-slop and anti-ai-slop-writing ask Claude to scan your prose for tells. That works, but it costs tokens and Claude can miss obvious cases.

unsloppify splits the work:

Tier Examples Handled by
1. Punctuation em dashes, smart quotes, ellipsis chars CLI, auto-fixed
2. Banned phrases delve into, tapestry, In today's fast-paced world CLI, flagged or auto-fixed
3. Structures binary contrasts, false agency, parataxis Skill (LLM judgment)

Run the CLI first to nuke the obvious stuff. Let the skill handle the rest.

Install

uvx unsloppify --help               # one-shot, no install
pipx install unsloppify             # persistent CLI
uv add --dev unsloppify             # as a dev dep in a uv project

Usage

CLI

unsloppify FILE [FILE...]           # lint one or more files / directories
  --fix                             # apply safe fixes in place
  --format {text,json,github}       # output format (default: text)
  --severity {error,warning,info}   # minimum severity to report
  --rules PATH                      # add custom rules YAML
  --list-rules                      # print bundled rule catalogue

Exit codes: 0 clean, 1 findings present, 2 invocation error.

Pre-commit

Works with pre-commit and prek:

repos:
  - repo: https://github.com/petems/unsloppify
    rev: v0.1.1
    hooks:
      - id: unsloppify

With prek:

prek install
prek run --all-files

The hook creates a Python 3.11 environment. If your Git config uses a global core.hooksPath, make sure that global hook runner chains into .git/hooks/pre-commit, or Git will not invoke the generated hook.

GitHub Actions

- run: uvx unsloppify docs/ --format github

Claude Code skill

Two ways to install:

Plugin marketplace (recommended for Claude Code):

/plugin marketplace add petems/unsloppify
/plugin install unsloppify@unsloppify

Skills CLI (works with Claude Code, Codex, Cursor, and other agents):

npx skills add petems/unsloppify

Then ask the agent to "unsloppify this draft" and it will invoke the CLI first for the deterministic catches, then do a judgment pass on structures.

Claude Code output style

cp output-styles/unsloppified.md ~/.claude/output-styles/ then /output-style unsloppified. Claude's own responses will avoid em dashes, banned phrases, and structural cliches.

Rule catalogue

unsloppify --list-rules

Or browse src/unsloppify/rules/*.yaml directly. Rules are versioned with the package.

Credit

The vocabulary lists and structural patterns are adapted from MIT-licensed upstream skills. See THIRD_PARTY_NOTICES.md.

License

MIT

Metadata

Release files for unsloppify 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for unsloppify 0.1.1
File Size Uploaded Provenance
unsloppify-0.1.1.tar.gz 49.3 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for unsloppify 0.1.1
File Interpreter ABI Platform
unsloppify-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 69.2 kB

Release files / unsloppify-0.1.1.tar.gz

Download URL unsloppify-0.1.1.tar.gz
Size 49.3 kB
Tags Source
SHA-256 checksum
How to use checksums
ae72a97c3581bb24c2090ace073a712b4cb3055a8dce70475682a7154c682e09
BLAKE2b-256 checksum
How to use checksums
053740a33a8034ed73eb98a0cc0cbe6f10c888cecf52f82af8b6c57287f515ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 16, 2026.

Transparency log

Release files / unsloppify-0.1.1-py3-none-any.whl

Download URL unsloppify-0.1.1-py3-none-any.whl
Size 19.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5f1874dd7306492dc4f0af3af7ff246b79ecf3080cdd9720d633ba772c589c26
BLAKE2b-256 checksum
How to use checksums
f405c52dba2ab5fca182fba1c76b1f7336a9b115057a2fd62644a328adb60a63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 16, 2026.

Transparency log

Security for unsloppify 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for unsloppify-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 16, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page