Skip to main content

Humanize markdown and text files — strip AI-isms while preserving code, URLs, headings, and technical content.

Project description

unslop CLI

Humanize Markdown and text files from the command line. unslop removes common AI tells, varies rhythm, and preserves code, URLs, headings, tables, blockquotes, and YAML frontmatter.

Use it for docs, memory files, posts, bios, cover letters, and other prose where voice matters. Do not use it for secrets, legal text, medical advice, runbooks, or anything where exact wording matters more than readability.

Install

pipx install unslop
# or
uv tool install unslop

For a one-off local checkout:

cd unslop
python3 -m scripts.cli --deterministic README.md

Quick Start

unslop --deterministic doc.md

Deterministic mode is local-only. No API key, no subprocess, no network call.

unslop doc.md

LLM mode uses ANTHROPIC_API_KEY when set, otherwise falls back to claude --print if the Claude CLI is installed. Before any LLM call, the CLI refuses secret-like content such as private keys and common API token shapes. Use --deterministic for sensitive local files.

Common Commands

unslop --deterministic --diff doc.md          # preview changes
unslop --deterministic --dry-run --json doc.md
unslop --deterministic --report audit.json doc.md
unslop --mode full doc.md
unslop --no-structural --no-soul doc.md       # extra conservative
cat draft.md | unslop --stdin --deterministic

What Files Work

Type Action
.md, .markdown, .txt, .rst Humanize prose
.py, .js, .ts, .json, .yaml, etc. Skip as code/config
*.original.md, *.original.txt Skip as backups
Mixed prose + code Humanize prose; preserve protected regions
Sensitive paths (.env, *.pem, ~/.ssh/) Refuse

What Stays Exact

  • Fenced code blocks
  • Indented code blocks
  • Inline backticks
  • URLs and markdown links
  • Headings
  • Markdown tables
  • Blockquotes
  • YAML frontmatter

Deterministic mode validates these after rewriting. If preservation fails, the command exits non-zero and does not overwrite the file.

Backups And Sidecars

In file mode, unslop writes FILE.original.md before overwriting the target. If --strip-reasoning removes hidden reasoning traces, the stripped content is written to FILE.reasoning.md; those sidecars are gitignored by the repo template because they can contain process notes you did not mean to publish.

Why This Exists

Project memory files, READMEs, resumes, and draft posts often get polished by assistants until they all sound the same. unslop is a cleanup pass: remove the stock phrases, keep the facts, keep the code, and make the text readable again.

Part Of The Unslop Plugin

Skill What it does
unslop Live assistant-output humanization
unslop-file File rewrite command
unslop-commit Commit messages without AI tone
unslop-review Direct PR review comments
unslop-help Quick reference

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

unslop-0.5.6.tar.gz (66.8 kB view details)

Uploaded Source

Built Distribution

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

unslop-0.5.6-py3-none-any.whl (72.9 kB view details)

Uploaded Python 3

File details

Details for the file unslop-0.5.6.tar.gz.

File metadata

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

File hashes

Hashes for unslop-0.5.6.tar.gz
Algorithm Hash digest
SHA256 d0cd3b333536013f625e5f01516efd56daef3c763860146bdef88a0648b5dd06
MD5 41b91034af2a70b8e07112c3a3d897df
BLAKE2b-256 76a7dd69030191172eac4a07a4306cac759bcfcdcf7dc477f78c65a42f069693

See more details on using hashes here.

Provenance

The following attestation bundles were made for unslop-0.5.6.tar.gz:

Publisher: publish.yml on MohamedAbdallah-14/unslop

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

File details

Details for the file unslop-0.5.6-py3-none-any.whl.

File metadata

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

File hashes

Hashes for unslop-0.5.6-py3-none-any.whl
Algorithm Hash digest
SHA256 7b31d2a4d394fd3f0a3a20ef9d1f50efec7ae68e0f2bd3ece1e63857abe57356
MD5 37f2b46a6ea7a4620a586e8c70f162cb
BLAKE2b-256 b09d0f3ea13c8c7fa9198c6d6c2c7f88c04ff8c902a3fd590df569caaf4313af

See more details on using hashes here.

Provenance

The following attestation bundles were made for unslop-0.5.6-py3-none-any.whl:

Publisher: publish.yml on MohamedAbdallah-14/unslop

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