Skip to main content

Strip AI slop from prose. CLI + Claude Code skill for hard-locking em dashes, banned phrases, and structural cliches in markdown.

Project description

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

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

GitHub Actions

- run: uvx unsloppify docs/ --format github

Claude Code skill

Drop skills/unsloppify/ into ~/.claude/skills/, or install via the plugin marketplace once published. Then ask Claude 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

Project details


Download files

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

Source Distribution

unsloppify-0.1.0.tar.gz (30.4 kB view details)

Uploaded Source

Built Distribution

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

unsloppify-0.1.0-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: unsloppify-0.1.0.tar.gz
  • Upload date:
  • Size: 30.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for unsloppify-0.1.0.tar.gz
Algorithm Hash digest
SHA256 810f1f632dddbc67d977e05d4e3a85cbec862ded117e28c58d6726618d700a5f
MD5 3ba2320fb2288cd3674fc4aa4a7bf5f8
BLAKE2b-256 86135da8fcce4aad8b2bffe3905bb3fab5bf69378910d32921bd9ff068b3ae5c

See more details on using hashes here.

Provenance

The following attestation bundles were made for unsloppify-0.1.0.tar.gz:

Publisher: publish.yml on petems/unsloppify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: unsloppify-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for unsloppify-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0320d974745d1951b2b2f27bd6d6d0d059bd10f6ef24028a9cc889593f2d1186
MD5 a9cc614e96e9aec505f39776cb955dd4
BLAKE2b-256 22941a510cf1fcbf8b74330f20d0e9fddb4a8996d408faaa315dfb46294c7348

See more details on using hashes here.

Provenance

The following attestation bundles were made for unsloppify-0.1.0-py3-none-any.whl:

Publisher: publish.yml on petems/unsloppify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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