Unslop
Edit text to remove AI patterns and add human voice.
When this skill activates
Any time text is written for a human reader, not for a parser. In lt projects that means:
- Linear tickets, ticket comments, and review handoffs
- Commit messages (body), MR/PR descriptions, changelog entries
- READMEs, migration guides, ADRs, inline code comments
- QA test instructions and manual re-test handoffs
- Customer-facing copy: offers (
lt-offers), showcases (lt-showroom), release notes - The body of skills, commands, and agents in this plugin
- Chat answers to the user
Also activates on request: "unslop", "entschwurbeln", "das klingt nach KI", "mach das menschlicher".
Where this does not apply
Do not rewrite these. Cutting a pattern here breaks something or misrepresents someone.
- Code identifiers, API field names, generated files (
types.gen.ts,sdk.gen.ts), schema descriptions that a consumer parses - Conventional-Commit subject lines, semantic-release footers, CI output, log lines. These are machine-read and stay terse. "Add soul" is for prose, never for a commit subject.
- Quoted upstream text: release notes from a dependency, an error message, a customer email, an excerpt from a third-party doc. Quote it as it stands.
- Customer documents in their original language. Translating or restyling them changes the record.
Process
- Scan for the patterns below.
- Rewrite. Preserve meaning, match intended tone.
- Add soul (see next section).
- Self-audit: "What makes this obviously AI generated?" Fix remaining tells.
Adding soul
Removing patterns is half the job. Sterile, voiceless writing is just as obvious.
- Have opinions. React to facts instead of neutrally listing pros and cons.
- Vary rhythm. Short sentences. Then longer ones that take their time. Mix it up.
- Acknowledge complexity. "Impressive but also kind of unsettling" beats "impressive."
- Use "I" when it fits. First person isn't unprofessional.
- Let some mess in. Perfect structure looks machine-made.
- Be specific. Not "this is concerning" but "there's something unsettling about agents churning away at 3am."
Patterns to detect and fix
Content
- Puffery. "pivotal moment", "testament to", "evolving landscape", "setting the stage for", "indelible mark", "deeply rooted". Cut puffery, state what happened.
- Name-dropping. Listing media outlets without context. Pick one, say what was said.
- Superficial -ing phrases. "highlighting...", "ensuring...", "reflecting...", "showcasing...", "fostering...". Delete or expand with real sources.
- Promotional language. "nestled", "vibrant", "breathtaking", "groundbreaking", "renowned", "stunning", "must-visit". Use neutral descriptions.
- Vague attributions. "Experts believe", "Industry reports suggest", "Some critics argue". Name the source or delete.
- Formulaic challenges. "Despite challenges... continues to thrive." Replace with specific facts.
Language
- AI vocabulary. Additionally, crucial, delve, enduring, enhance, fostering, garner, interplay, intricate, landscape (abstract), pivotal, showcase, tapestry (abstract), testament, underscore, vibrant. Replace with plain words.
- Fancy ways to say "is". "serves as", "stands as", "boasts", "features". Just say "is" or "has".
- "Not just X, but Y." State the point directly instead.
- Rule of three. Forcing ideas into groups of three. Use the natural number.
- Synonym cycling. Protagonist, main character, central figure, hero all in one paragraph. Pick one, repeat it.
- False ranges. "from X to Y" where X and Y aren't on a meaningful scale. List topics directly.
Style
- Em dash overuse. Avoid em dashes entirely. Use periods or commas only (no parentheses, no en dashes, no hyphen-as-dash substitutes). Em dashes are an AI tell, and reaching for parentheses instead just trades one tell for another. If a thought needs separation, end the sentence or use a comma.
- Colon overuse. Colons are fine before a list or example. Not as mid-sentence connectors. "If you're coming from traditional automation: instead of registering event handlers, you describe conditions" adds nothing with the colon. Rewrite to let the point stand on its own without comparison framing. "Describing when the scheduler should fire works best as plain English." Same meaning, no crutch punctuation.
- Boldface overuse. Don't bold every proper noun or acronym.
- Inline-header lists. The tell is a bold label and colon that restates the line: "Performance: Performance improved...". Convert those to prose. A bold lead-in that ends in a period, names the item, and is followed by genuinely new detail ("Schema in TypeScript. Tables live in one file.") is fine, not a tell.
- Title case headings. Use sentence case.
- Decorative emojis. Remove from headings and bullets.
- Curly quotes. Replace with straight quotes. German prose is the exception, see pattern 38.
Communication artifacts
- Chatbot phrases. "I hope this helps!", "Let me know if...", "Of course!", "Certainly!", "Found the smoking gun!" Remove.
- Cutoff disclaimers. "While specific details are limited..." Find sources or remove.
- Sycophantic tone. "Great question! You're absolutely right!" Respond directly.
Filler
- Filler phrases. "In order to" becomes "To". "Due to the fact that" becomes "Because". "It is important to note that" gets deleted.
- Excessive hedging. "could potentially possibly be argued that it might" becomes "may".
- Generic conclusions. "The future looks bright." State specific plans or facts.
Jargon
- Abstract metaphor nouns. Substrate, wedge, vector, locus, vantage, nexus, primitive (as noun), harness (as metaphor), surface (as in "API surface"), bedrock, scaffolding (as metaphor), modality, paradigm, gold-plating, ratchet (as metaphor), evacuate (for moving code), endgame, north star, flywheel. These read as technical but usually have a plainer concrete word. "Substrate" becomes "base". "Wedge in" becomes "add". "Vector" becomes "way" or "method". "Gold-plating" becomes "more than the job needs". "Ratchet" becomes the mechanism's real name or "a limit that only tightens". "Evacuate" becomes "move out". "Endgame" becomes "the last phase". Pick the concrete word.
Plain speech
- Say what it does, not how it feels. "the database stays close at hand", "SQL you can read", "types that follow your schema" name a feeling. The fix names the mechanism or a number: "
.toSQL()returns the exact string sent to the database", "a column rename fails the build". Ask what the sentence tells the reader to do or know, then write that. If you can't restate it as a concrete instruction, fact, or number, cut it. One more check: if the sentence could appear unchanged in another project's docs, it says nothing about this one. Cut it. - Shorten or split dense sentences. If the reader has to backtrack to parse a sentence, break it in two or drop clauses. One idea per sentence.
- Active voice. Prefer it. Catch "is/are/was/were + past participle" and name the actor: "queries are validated" becomes "the compiler validates queries", "the file is parsed by the loader" becomes "the loader parses the file". Passive is fine only when the actor is unknown or genuinely doesn't matter.
- Cut adverbs, or use a stronger verb. "runs quickly" becomes "is fast" or the number. "significantly improves" becomes the measured delta. An adverb propping up a weak verb means the verb is wrong.
- Prefer the plain word. "utilize" becomes "use", "leverage" becomes "use", "facilitate" becomes "help", "numerous" becomes "many", "in the event that" becomes "if". The fancier synonym is rarely clearer.
German text
Patterns 1 to 31 apply to German too. These are the tells that only show up there. Linear tickets, customer copy, and chat answers to the user are usually German, so this section carries most of the weight in daily work.
- Nominalstil. The strongest German AI tell. A verb turned into an "-ung" noun, then propped up by erfolgen, durchführen, vornehmen, gewährleisten, ermöglichen, darstellen. "Die Durchführung der Prüfung erfolgt automatisch" becomes "Die Prüfung läuft automatisch". "Eine Anpassung der Konfiguration ist erforderlich" becomes "Die Konfiguration muss angepasst werden", better "Passe die Konfiguration an". Find the verb hiding in the noun and use it.
- Floskeln. "In der heutigen schnelllebigen Zeit", "spielt eine entscheidende Rolle", "ist nicht mehr wegzudenken", "ein wichtiger Meilenstein", "wegweisend", "ganzheitlich", "maßgeblich", "revolutionär", "State of the Art". Say what happened instead.
- Füllwörter und Streckformen. "Es ist wichtig zu beachten, dass" gets deleted. "Aufgrund der Tatsache, dass" becomes "Weil". "Im Rahmen von" becomes "Bei". "Zum jetzigen Zeitpunkt" becomes "Jetzt". "In der Lage sein zu" becomes "können". "Eine Vielzahl von" becomes "viele". "Diesbezüglich", "dahingehend", "seitens" get cut or replaced.
- Aufzählungs-Konnektoren. "Darüber hinaus", "Des Weiteren", "Zudem", "Ferner" at the start of every second sentence. Cut most of them. If the order is clear from the content, no connector is needed.
- Zusammenfassungs-Reflex. "Zusammenfassend lässt sich sagen", "Insgesamt zeigt sich", "Abschließend bleibt festzuhalten", "Die Zukunft bleibt spannend". Cut. A German summary paragraph that repeats the text above adds nothing.
- Höflichkeitsfloskeln. "Gerne!", "Sehr gute Frage!", "Ich hoffe, das hilft!", "Selbstverständlich!", "Kein Problem!". Answer directly.
- Typografie. Straight quotes are right in code, commit messages, and identifiers. In German prose „so“ is correct orthography and stays. The em dash "—" is not German punctuation at all: correct German uses a spaced en dash "–", but overusing it is the same tell as pattern 13, so prefer a period or comma. Never strip umlauts or ß to write "fuer" or "loeschen".
Self-audit before shipping
Run these three checks on the finished text:
- Grep your own output for the worst offenders.
Additionally,crucial,showcase,underscore,—,Zusammenfassend,Es ist wichtig,Darüber hinaus. - Read the first sentence of every paragraph in a row. If they all have the same shape, vary them.
- Ask whether any sentence would survive unchanged in a different project's docs. If yes, it says nothing. Cut it.
Related skills
writing-qa-test-instructionsskill. Applies these rules to manual re-test handoffs.developing-claude-pluginsskill. Skill, command, and agent bodies are prose and go through this skill before release.lt-offers:creating-offersandlt-showroom:creating-showcasesskills. Customer-facing copy, where German patterns 32 to 38 matter most./lt-dev:git:commit-messageand/lt-dev:git:mr-descriptioncommands. The body is prose, the subject line stays terse.
Attribution
Adapted from the unslop skill in the pstack plugin by Lauren Tan, MIT licensed.
Source: https://github.com/cursor/plugins/tree/main/pstack/skills/unslop
The upstream licence text is kept next to this file in LICENSE.
Patterns 1 to 31 are upstream. The lt sections, the German set, and the self-audit are additions.