Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

deslop

A writing procedure that goes after AI written content where it actually differs from human writing: in the decisions, not the words.

Researchers took a batch of AI-written stories and ran them through a professional style-editing pipeline: new vocabulary, reworked sentence rhythm, the em dashes gone. Then they handed the results to a classifier that judges authorship from narrative structure alone and ignores wording entirely.

It still caught them. Its accuracy fell from 95.5 out of 100 to 93.9.

Rewriting every sentence in the text bought 1.6 points. That is the entire territory the humanizers operate in — and the decisions underneath the prose, the ones nobody was editing, survive paraphrase, translation, and even summarization.

deslop works on the rest. It is a procedure a model runs before and during writing: it installs the commitments a real author has and a model doesn't, makes the model's own defaults visible so they can be vetoed by name, and requires every departure from those defaults to justify itself. The whole thing was reverse-engineered out of 27 papers measuring what separates machine text from human text, and it ended up a process rather than a style guide because most of what those papers measure is not style.

Install

You use Do this
ChatGPT, Gemini, a local model, your own API calls Paste skill/PORTABLE_PROMPT.md into custom instructions or the system prompt
Codex CLI / ChatGPT desktop unzip dist/deslop-codex.zip -d ~/.agents/skills/
Codex web / cloud unzip dist/deslop-codex-web.zip -d .agents/skills/ inside your repo, then commit — the cloud runner only sees what is checked in
Claude Code / Claude desktop unzip dist/deslop-claude.zip -d ~/.claude/skills/
claude.ai Upload dist/deslop-claude-web.zip under Settings → Capabilities → Skills
Anything else dist/deslop-universal.zip, or read skill/SKILL.md directly

All the packages carry the same payload and differ only in their install notes. Test with "write me a 400-word op-ed arguing that open-plan offices were a mistake." You should get a ledger and a null draft before you get a sentence of prose. If prose comes first, it didn't load.

What it actually does

The central mechanism is the null draft. Before writing anything, the model writes the piece as it would be written if nobody cared — about 150 words, naming its own opening move, its structure, the three images it reaches for first, its ending, and the sentence where it would state the theme outright.

That artifact is the model's default field made visible. It is the veto list going in and the comparison object coming out. It takes about thirty seconds, and it is model-agnostic by construction, because the model generating it is the distribution being enumerated. Nothing has to be shipped in a list that goes stale with the next release.

Around it:

  • A ledger, written before any prose exists: the job, the reader, the stance and what it is against, the particulars only this author can supply, and three to five things this specific piece will not do.
  • A three-part test on every departure from the default. Breaks — name what the reader loses if you revert to the obvious version. Paid — name the earlier line that sets it up. Owned — name the commitment it serves. Departures that fail any of the three go back.
  • Regeneration instead of revision. A section that fails is rewritten from the gist with the draft closed, never polished in place. Asking a model to improve its own text moves the text toward the model's centre; at least one detector works by exploiting exactly that.
  • A hard cap of three to six departures in a short piece, which is the part people find backwards.

Keeping the default is usually the right answer

Human writers are not unusual all the time. In the largest narrative comparison in the corpus, humans supply 24.7% of the rarest decile of decisions — rarity concentrated at load-bearing points, not spread evenly through the text.

A procedure that departs everywhere produces uniform strangeness, and expert readers reject that for the same reason they reject uniform blandness: neither one shows evidence of anybody choosing. So the breaks test spends most of its time sending unmotivated departures back to the default, and the skill treats an unremarkable sentence in an unremarkable place as a success.

The research

27 papers, searched 8 August 2026. The review and the paper manifest are in research/; the PDFs are not redistributed, but every entry has its identifier.

The anchor is Russell et al., StoryScope (COLM 2026): 10,272 prompts, six sources, 61,608 stories, 304 extracted features. Narrative features alone — no vocabulary, no sentence statistics — separate human from AI at 93.2% macro-F1. (That metric combines how often the classifier is right when it accuses with how much it catches. 100 is perfect and roughly 50 is a coin toss, so 93.2 means structure alone is close to giving the game away. The 95.5 and 93.9 in the opening are the same scale.)

A sample of what those features look like:

Model Human
Narrator states the theme outright 77% 52%
Emotion embodied in bodily metaphor 81% 38%
Emotion named plainly ("she was afraid") 8% 29%
Single causal track, no subplot 79% 57%
Genuinely negative arc 1.3% 14.6%

None of those are words. All of them are decisions, which is why the procedure runs top-down — decisions, then register, then surface — rather than the other way round.

The finding that survives across the whole corpus is variance compression. Model outputs cluster tightly around themselves and converge with each other, at every level from function words to plot shape, while human writing is dispersed. Worth being precise about what that implies: the dispersion includes bad writing as well as good, so "more human" is not the same as "better." The procedure therefore aims at committed and situated writing rather than at human-sounding writing. There is no human centroid available to imitate, and a tool that imitated one would only produce a new tight cluster with better manners.

What it refuses to do

Detectors are not the target, and never will be. No invisible characters, no seeded typos, no writing tuned against a classifier, no detector score cited as evidence in either direction. Detectors measure conventionality rather than authorship: they falsely accuse non-native English writers at rates near 60%, and one paraphrase pass drops true-positive rates from 99.3% to 9.7%. "Undetectable" and "good" are different projects, and this is only the second one.

Your life does not get invented for you. Every particular carries a tag — given, sourced, or marked-as-invented-in-the-text — and there is no fourth tag. Fiction invents freely because the genre marks it. A personal essay doesn't, so nothing in one may imply the author saw, said, or was told something they didn't. Of everything here this is the failure that matters most in practice, because models write fluent, publishable, wholly fabricated first-person testimony, and no amount of style editing touches it.

No verdict on quality. The procedure closes by reporting which choices it made and what each one cost, then stops. Models can locate flawed passages roughly as well as experts can, and cannot rank competent drafts at all. Floors are automated. Ceilings are not.

What isn't known

None of this has been evaluated. No blinded judges, one model family, one author. Every number above is from the literature; not one of them is a measurement of this tool. This README was itself written with the procedure, which makes it a demonstration and not evidence.

docs/EVALUATION.md sets out four tests that run on compute alone and that could each falsify something load-bearing:

  • hide the null draft from the drafting step and see whether the output changes at all
  • remove the paid test and see whether anything downstream moves
  • run one brief across many users and check whether their outputs converge — if the procedure makes everyone's writing similar, it has swapped one attractor for another and failed at the only thing it is for
  • a placebo ledger, full of commitments that don't fit the brief, to find out how much of the effect is ceremony

The third one gates deployment, and it is the one most likely to get skipped, because every individual output will look better whether or not the distribution moved.

If you run any of these, open an issue. Negative results especially.

What's in here

Path What it is
skill/ The skill itself. SKILL.md is self-sufficient; references/ adds depth on demand; PORTABLE_PROMPT.md compresses the whole thing into one pasteable page
dist/ Packaged zips for Claude, Codex, and everything else
packaging/ Per-platform install notes and build.sh, which rebuilds dist/ from skill/
research/ The literature review and the 27-paper manifest
examples/ Three briefs written twice, with and without the procedure, plus one null draft
docs/ The evaluation plan, the worked demonstration and its critique, and the design notes — including the two places the underlying theory turned out to need correcting

License

MIT. See LICENSE.

About

A writing procedure that goes after AI written content where it actually differs from human writing: in the decisions, not the words. Reverse-engineered from 27 papers.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages