sloptrim README

The project's README from github.com/seyedehsanhadi/sloptrim. As one markdown file: README.md.

sloptrim

A local detector for AI-writing patterns. It scores the first 262,144 characters of extracted prose in files saved through supported file-edit tools, and asks for the flagged spans to be fixed. Plain text is accepted up to 512 KB, supported archives up to 4 MB. Python standard library only, no network, no model. Prose only, never code.

test Version License Dependencies Tests Python

Install · What it does · Measured · Limits · Patterns · Ethics

[!IMPORTANT] This is a command-line tool and an agent plugin. There is no website and no hosted version. Nothing you write is uploaded, there is no account, and no text ever leaves your machine. Any site offering a service under this name is unrelated to this project.

A recorded session. The contract arrives at session start, again on the prompt, and again inside a subagent. A saved file scores 45 and its patterns are named. After the fix the next read is clean at 15. The same text saved as a .docx scores the same, read out of the zip. Every hook latency is measured.
A recorded session, not a mock-up. record/session_capture.py fires the real hooks with the payloads Claude Code sends and writes record/session.json; record/anim.py draws it. The hook lines, the scores and the milliseconds come from that capture; the grey labels beside them are narration. The prose being scored is record/draft.md, a short piece written for the recording.

Install

Paste into Claude Code, Codex, Cursor, or any coding agent:

Install the sloptrim plugin from https://github.com/seyedehsanhadi/sloptrim

Restart, then run /sloptrim doctor. It answers with four [OK] lines.

Explicit commands, and installing without the marketplace
/plugin marketplace add seyedehsanhadi/sloptrim
/plugin install sloptrim@sloptrim
git clone https://github.com/seyedehsanhadi/sloptrim.git ~/.claude/skills/sloptrim
mkdir -p ~/.claude/commands
cp ~/.claude/skills/sloptrim/install/sloptrim-command.md ~/.claude/commands/sloptrim.md

Do not skip the mkdir. On a fresh machine ~/.claude/commands does not exist yet and the copy fails with "No such file or directory". In PowerShell the last two lines are New-Item -ItemType Directory -Force $HOME/.claude/commands and Copy-Item. The copy puts /sloptrim in the / menu, because Claude Code does not scan a skill folder's own commands/. A marketplace install needs no such step. Either way the router also answers to /sloptrim:sloptrim.

What it does

The score is 0-100 against 71 documented patterns. 62 of them have a detector; the other 9 need a reading and are worked during the rewrite. Of the 62, 50 can move the score and 12 are reported as writing advice and count for nothing: most of them because measurement showed they mark formal register rather than machine authorship, the rest because they are typographic habits.

Formats 20, including .docx, .pptx, .xlsx, OpenDocument, .epub, .ipynb, LaTeX; the first 262,144 characters of extracted prose is scored
Runs in Claude Code, on save. Other agents via /sloptrim init, which writes the contract to AGENTS.md, and .cursor/rules/
Needs Node for the hooks, Python 3.9 or newer for the detector, nothing else
Suite 142 Python tests and 72 hook checks, with CI configured for Linux, Windows and macOS, against Python 3.9 and 3.13 (macOS on 3.13)
Does not see A file written by a Bash command, which reaches disk without passing Write or Edit
Command Effect
/sloptrim full Contract + guard (default)
/sloptrim strict Flags at 20 instead of 40, and asks for a character scrub
/sloptrim lite / off Contract only / nothing
/sloptrim check <file> Score a file, name the tells, no rewrite
/sloptrim init Write the contract to ./AGENTS.md and a Cursor rule to ./.cursor/rules/
/sloptrim doctor Diagnose the install
python scripts/detect.py draft.docx    # JSON: patterns, metrics, 0-100 score

A score lands in one of five bands: clean, light tells, mixed, heavy tells, pervasive tells. The guard nudges above 40, or above 20 in strict mode.

Measured

Sloptrim's public matched benchmark uses five separate 30-human/30-machine arms from the Human Detectors release, pinned at commit afcf03d. Each arm is matched by prompt and scored separately. AUC is a ranking measure, not accuracy at Sloptrim's guard threshold.

machine arm ROC-AUC bootstrap 95% CI default TPR / FPR
GPT-4o 0.946 0.876–0.992 46.7% / 0%
Claude 3.5 Sonnet 0.842 0.729–0.936 3.3% / 0%
o1-pro 0.877 0.771–0.957 23.3% / 6.7%
paraphrased GPT-4o 0.838 0.735–0.929 6.7% / 3.3%
humanized o1-pro 0.762 0.648–0.871 0% / 3.3%
Public matched benchmark ROC-AUC: GPT-4o 0.946, Claude 3.5 Sonnet 0.842, o1-pro 0.877, paraphrased GPT-4o 0.838, humanized o1-pro 0.762.

Across these arms, Sloptrim achieved ROC-AUC 0.762–0.946. Confidence intervals use 10,000 paired prompt-cluster bootstrap resamples. The public result record pins the source hash; the harness refuses any other file. The benchmark texts are not redistributed here.

git clone https://github.com/jenna-russell/human_detectors.git
git -C human_detectors checkout afcf03d14d2da4a038d8d0fafa5ec779dd858181
python scripts/benchmark_frontier.py PATH_TO_HUMAN_DETECTORS_JSON

What it cannot do

It cannot prove whether a model wrote something. The public arms show that the score often ranks these machine samples above matched human samples. The threshold results show why that is not the same as a dependable yes/no classifier: sensitivity changes sharply with model, prompt, formatting and threshold.

It is not an authorship classifier and must not be used as one. A score says something about writing, never about a person. Read ETHICS.md.

License

Apache-2.0 (full text, NOTICE). Cite with CITATION.cff.

sloptrim (seyedehsanhadi/sloptrim)

Searching Database…

What is this?Sloptrim is a local detector for AI-writing patterns: it scores prose files your coding agent saves against documented stylistic tells, using only Python's standard library with no network calls or ML model.
Is this a hosted service or something I run locally?It is purely a command-line tool and Claude Code agent plugin: there is no website, no hosted version, and nothing you write ever leaves your machine.
What do I need installed besides my coding agent?You need Node for the hooks and Python 3.9 or newer for the detector itself; nothing else is required.
Will it catch everything my agent writes?No: it never sees files written by a Bash command since those reach disk without going through Write or Edit, and it only scores the first 262,144 characters of extracted prose per file.
How accurate is the AI-writing detection?Across five benchmark arms (GPT-4o, Claude 3.5 Sonnet, o1-pro, paraphrased and humanized variants), Sloptrim scored ROC-AUC between 0.762 and 0.946, but the authors stress AUC is a ranking measure, not a guaranteed yes/no accuracy at the guard threshold.
Which file formats can it score besides Markdown?It handles about 20 formats, including .docx, .pptx, .xlsx, OpenDocument files, .epub, .ipynb notebooks and LaTeX, scoring up to the first 262,144 characters of extracted prose.
Can it prove a specific piece of writing was AI-generated?No, the authors explicitly say it cannot prove whether a model wrote something and must not be used as an authorship classifier; a score reflects writing style, never a person.
What's the difference between full and strict mode?/sloptrim full (the default) applies the writing contract plus a guard that nudges above a score of 40, while /sloptrim strict lowers that threshold to 20 and also asks for a character scrub.
Size
0.8 MB
Stars
396
Updated
CommitOct 05
Age
2mo
Commits · 90 Days