Productivity/no-slop

Write Without the Slop

Write and revise human-facing prose in a plain, precise, professional register, stripping the tells that mark text as AI-generated. Builds sentences with ASD-STE100 Simplified Technical English, the controlled language behind aerospace maintenance manuals, then checks them against a tells table and a bundled linter. Use when writing or editing a README, blog post, doc, PR or commit message, email, release note, changelog, error message, runbook, or any copy a person will read. Also use when the user asks to make text sound less like AI, remove AI slop, cut the marketing voice, write plain or controlled technical English, reduce over-structuring or list-itis, make wording inclusive or accessible, tighten, de-fluff, or professionalize a draft, or when reviewing prose you just generated before handing it over. Extends to writing inside code. Code comments, commit messages, PR descriptions, test names, error and log messages, and markdown formatting like headings, bold, emoji, and badges.

  • #writing
  • #editing
  • #controlled-language

Install

$npx skills@latest add saschb2b/skills --skill no-slop
View on GitHub
Trust card
7/13uncommonexecutable-L1

Signed, graded provenance for this skill. Integrity, authorship, capability, and freshness as evidence you weigh, not a verified badge.

Trust layers
Provenance
bydid:web:saschb2b.com
digest
expires2027-07-30
Verify it yourself
$python scripts/card.py verify skills/productivity/no-slop/CARD.md --bundle skills/productivity/no-slop

The register

Target voice: a German professional writing English at C2 level. Precise, direct, structurally clean. Reserved rather than enthusiastic. Clarity and exactness over flourish or warmth.

This is a register, not an accent. Do not introduce Germanisms, false friends, or grammar errors. Near-native English, just without the bubbly American default.

Most "AI slop" is not wrong, it is over-written. Too warm, too balanced, too eager to summarize itself. Strip that and the text gets shorter and better. The goal is prose that reads like a competent person wrote it on purpose.

How to apply

  • Writing new prose (README, docs, email, post, commit or PR message, release note): hold the register while drafting. Then read once against the two tables below, construction first, then the tells.
  • Revising a draft, or your own output before you hand it over: run the slop pass. Scan for the tells in the table, fix each, then read once more for structure and stance. See prose.md for before/after rewrites.
  • Writing inside code (a comment, commit message, PR description, test name, error or log string): apply the same register. Then check the matching sibling file under Beyond prose below.
  • Match the surrounding text. A codebase, a thread, or a doc has an established voice. These rules sharpen prose. They do not override a house style the user already follows.

Build the sentence right

Build with the construction rules first, then check against the tells. Order matters. Given only a list of forbidden words, Claude cut measured slop by 3%. Given a whole writing system, it cut 74%. A banned-word list treats symptoms, so reach for it last.

The system is ASD-STE100 Simplified Technical English, standardized by the aerospace industry in 1986 for maintenance manuals that had to survive a non-native reader. Its mechanical rules are the ones that catch slop, and they are the subset below.

RuleWrite thisNot this
One name for one thingthe cache, then the cache againthe cache, then the store, then the layer
One meaning per word"fall" means to move down"traffic fell" for a decrease
The short common worduse, start, help, make sure, before, after, about, get, show, alsoutilize, commence, facilitate, ensure, prior to, subsequent to, regarding, obtain, demonstrate, additionally
Active voice, actor namedthe parser reads the filethe file is read
One verb per actionanalyze the logperform an analysis of the log
No stacked auxiliariesthis improves throughputit may help to improve throughput
Simple tense over progressivethe job writes the indexthe job is writing the index
Plain verb over phrasalstart, contact, read, deployspin up, reach out, dive into, roll out
One idea per sentence, capped20 words for an instruction, 25 for descriptiona 40-word coordinated chain
No semicolonstwo sentencesone sentence, spliced
Condition before commandif the cache is cold, warm it firstwarm the cache first if it is cold
One topic per paragraphsix sentences maximum, steps as a numbered lista step buried in a paragraph

Three modes. Strict covers procedures, runbooks, install and migration steps, error and log messages, and deprecation notices. Every rule applies, the cap is 20 words, contractions expand. STE-flavored is the default everywhere else, for READMEs, docs, posts, PR bodies, and email. Keep the sentence, verb, and paragraph discipline, cap at 25 words, and leave contractions and the register above intact. House-style mode applies when the text ships into a surface with an established style, most often the Microsoft Writing Style Guide. There the house wins, so contractions, em dashes, and a warmer voice are correct. Do not pick it because the text is technical, only because the destination follows that style. Every other tell stays in force.

The full rule set, the mode split, the places STE and no-slop disagree, and the measured evidence are in ste.md. The Microsoft mechanics and the three conflicts are in microsoft-style.md.

The tells (kill on sight)

TellFix
Em dash for drama or asideperiod, comma, colon, or parentheses
"not X, but Y" / "it's not just X, it's Y"state Y plainly
Rule-of-three that isn't load-bearing ("fast, clean, and reliable")keep the one term that carries weight
Throat-clearing opener ("In today's world", "When it comes to")delete, start at the point
Summary that restates the body ("In conclusion", "Ultimately")delete, or end on the last real point
Transition filler ("Moreover", "Furthermore", "It's worth noting")delete, the next sentence stands on its own
Forced enumeration ("Here are three reasons"), or list-itis where prose belongsmake the points in prose, reserve lists for parallel independent items
Padding a list to a round number ("5 tips" with two filler entries)keep only the real items
Reflexive hedging ("It's important to note that", "arguably", "may potentially")cut, or make the qualification real and specific
Validation or flattery ("Great question", "You're absolutely right")answer the thing
Slop vocabulary (delve, leverage, navigate, realm, landscape, tapestry, intricate, robust, seamless, crucial, vital, foster, harness)the plain word
Category noun where a specific one exists ("the relevant component")name the thing ("the auth middleware")
Numbers on an unordered setbullets, since numbers imply sequence or rank
Expletive opener ("There are three options")put the subject first ("Three options exist")
Link text that says nothing ("click here", "read more")describe the destination
Directional-only reference ("above", "below", "on the left")name the thing, since a screen reader has no left
Significance inflation ("stands as a testament", "marks a pivotal moment")state the plain fact, drop the importance claim
Inflated copula ("boasts", "serves as", "features" where "is" or "has" fits)restore the plain verb
Vague authority ("studies show", "experts agree", "it is widely regarded")name the source, or cut the claim
Participle-chain tail ("..., further cementing its legacy")end the sentence at the fact
False inclusivity ("Whether you're a beginner or an expert")say who it is actually for
Chatbot scaffolding ("Let's dive in", "As you can see", "Happy coding!")delete, start and end at the content
Negative-space hype ("Say goodbye to X", "Gone are the days of Y")state what the thing does

The tables catch phrases. These habits decide whether the fix lands. Lead with the point, so the first sentence carries it. When you cut a vague phrase, replace it with a fact rather than a quieter adjective. A hedged rewrite is the same slop at lower volume.

Do not dodge a listed word into something more contorted, and rephrase the sentence instead of reaching for a thesaurus. Match the medium, since an email is not a slide deck and a prose post is not API docs.

Default to prose. Reach for a list only when the items are genuinely parallel and independent, meaning steps, options, or criteria. When ideas connect or need context, write the paragraph.

Check the draft

Read once against the rules above. Then run the linter. Paths below are relative to this skill's directory, so resolve slop-lint.mjs next to this SKILL.md.

sh
node slop-lint.mjs README.md # a file, flavored mode
node slop-lint.mjs --strict runbook.md # procedures, 20-word cap
echo "$draft" | node slop-lint.mjs # prose you have not written to a file yet

Run it in three cases. You edited a prose file, so lint before and after and report the delta. You are about to hand over a draft longer than a paragraph, so pipe it through stdin first. The user asked for a slop pass by name, so show them the score. Skip it for a one-line commit message, and skip it when node is unavailable, since the rules above stand on their own.

The score is violations per 100 words across the construction rules and the tells. Read it as a delta, never as a grade. Lint the draft, revise, lint again, and the drop is the signal. An absolute number only compares against another version of the same text, and a document that quotes slop on purpose scores high while being correct. Under about 50 words the number is noise, so trust it on longer text.

Two rules stay a human read, because a checker cannot know that "the cache" and "the store" are the same component. One name for one thing, and one meaning per word.

Beyond prose

The register and the tells apply wherever you write, not only in essays and docs. Each surface carries its own slop, with the tells and rewrites in a sibling file:

  • Formatting (headings, bold, lists, emoji, badges, smart quotes). See formatting.md.
  • Code comments that narrate the diff or restate the code. See code-comments.md. That page is the register pass. comment-stinky is the deep version. It covers whether a comment should exist at all, what it should say instead, and the write-time gate. Use it when the task is about the comments themselves rather than the prose sounding generated.
  • Commit messages and PR descriptions that restate the diff instead of the reason for it. See commits-and-prs.md.
  • Strings in code (test names, error and log messages). See code-strings.md.
  • Prose that breaks for assistive technology, or that excludes a reader by assuming who they are. Neither reads as slop, both are defects, and volume production introduces them fast. See inclusive-and-accessible.md.

One rule carries across all of them. Match the surrounding work: a file's comment density, a repo's commit history, a doc's heading style. These rules sharpen the writing, they do not override a house style.

Don't over-correct

The rules remove warmth that was not earned. They do not require coldness. Watch the second-order slop they can create:

  • Clipped to the point of robotic. Vary sentence length. A run of five-word sentences is its own tell.
  • Avoidance that produces a worse word. "Strong" is fine when you mean strong. The rule targets "robust" as a reflex, not the idea behind it.
  • Cutting a transition that was doing real work. Drop filler, keep the connective a reader needs to follow the logic.
  • Banning contrast itself. A real contrast sometimes needs "but". The target is the inflated "not just X, it's Y" cadence, not the word.
  • Strict STE where it does not belong. The 20-word cap and the expanded contraction are right in a runbook. In a blog post they read as stiff rather than precise. Default to flavored, and escalate only when a misreading costs something.
  • Chasing the score. The linter counts what it can match. A text can reach zero violations and still say nothing, because these rules fix the form of slop and never the substance.
  • Treating every list as slop. A real sequence of steps or set of options belongs in a list. The target is the list used as a substitute for thinking, not the list itself. An accurate count ("the twelve construction rules") is fine. A padded or announced-then-listed one is not.

When in doubt, read it aloud. If it sounds like a person explaining something they understand, keep it. If it sounds like a brochure, fix it.