Deslop
Two domains, one skill. Pick the mode from the request; do not mix them unless
the user asks for both.
| Mode |
When |
Output |
| Code (default for branches/diffs) |
Branch cleanup, file path, "deslop this PR" |
Minimal code edits + 1–3 sentence summary |
| Write |
Pasted draft, "edit this", "humanize", "less AI" |
Full edited draft + short What changed |
| Detect |
"Is this AI?", audit/scan/flag without rewrite |
Pattern list with quoted lines; no rewrite |
If the request is ambiguous and no draft or path is present, ask once whether
they mean code on the branch or a prose draft.
Mode: Code
Check the requested change scope and remove code slop introduced there. Discover the repository's default branch instead of assuming main. Use its merge-base for branch changes and include staged, unstaged, and relevant untracked work when those are part of the request.
Step 1: Get changed files
# Set review_base to the verified merge-base commit for the requested branch review.
git diff --name-only "$review_base" --
git ls-files --others --exclude-standard
If an argument was provided, focus only on that file.
Read the new and modified code with fresh eyes.
Step 2: For each file, compare with original
For each changed file:
- Read the current version
- Read the original from the verified base:
git show "$review_base:<filepath>". A newly added file has no base version; compare with neighboring code instead.
- Compare style, patterns, and conventions. Look for bugs, confusion, and
drift from the file's existing voice.
Step 3: Remove slop
Edit to remove:
Unnecessary comments
- Comments explaining obvious code (
// increment counter)
- Comments that were not in the original and add no value
- Comments inconsistent with the file's existing style
- Redundant JSDoc/docstrings on simple functions
Defensive over-engineering
- Try/catch around code that cannot throw
- Null checks on values already validated upstream
- Defensive checks in internal/trusted paths
- Unnecessary
|| [] or ?? {} defaults not present in similar code
Type hacks
as any or as unknown casts
@ts-ignore / @ts-expect-error without a clear reason
! non-null assertions that hide real issues
Style inconsistencies
- Verbose patterns when the file is terse
- Naming that does not match the rest of the file
- Extra blank lines or formatting drift from original
Over-abstraction
- Helpers used only once
- Unnecessary intermediate variables
- Overly generic code for a specific use case
General
- Fix real bugs or confusion you uncover while cleaning
Step 4: Report
Output ONLY a 1–3 sentence summary. No bullet points, no file lists, no long
explanations.
Example: "Removed 4 redundant comments and 2 unnecessary null checks. Simplified
error handling in auth.ts."
Mode: Write
You are a sharp human editor. Preserve the user's point and personal voice.
Remove AI patterns without turning distinctive writing into generic polished
prose.
Before editing
- If there is no draft, ask them to paste it.
- If audience/format is unclear, ask once: who is this for and where is it
published?
- If the goal is unclear, ask what the reader should think, feel, or do.
Editing principles
- Preserve the writer's real voice. Notice vocabulary, cadence, bluntness,
humor, uncertainty, digressions, polish. Keep what feels personal. Do not make
every paragraph equally tidy.
- Minimum effective edit. Fix AI patterns, errors, repetition, unclear
passages. Leave strong human sentences alone.
- Lead with the point when setup adds nothing. Keep personal asides when
they add context, tension, or character.
- Keep the user's meaning. Do not invent claims, examples, stats, or
opinions. Ask if something is unclear.
- Open it up; do not dumb it down. Keep substance and precision. Strip
jargon, tangled structure, and empty abstraction.
- Active voice. Prefer human subjects and direct verbs.
- Every sentence earns its place. Cut empty qualifiers. Keep "I think,"
"maybe," "to be honest" when they express real uncertainty or spoken rhythm.
- Be concrete. Names, numbers, dates, mechanisms beat abstractions.
- Preserve useful edge. Strong opinions, humor, blunt language stay when
they belong to the writer.
- Keep structure unless it is hurting the piece. If you reorganize, say why
in What changed.
Load the full pattern catalog from writing.md. After editing,
check the draft against eval.md. If any check fails, fix and recheck.
Write workflow
- Read the full draft.
- Identify the core point and 3–5 voice signals to preserve (internal only).
- Make the minimum effective changes using writing.md.
- Self-check with eval.md; fix failures.
- Output the full edited draft and a short What changed section.
Mode: Detect
Name each pattern from writing.md that appears. For each:
- Pattern name
- Quoted line
- Fix in a few words
Do not rewrite, score the draft, or claim AI authorship. Detectors guess; named
patterns are evidence. Offer to edit after.
For detect self-checks, use the detect section of eval.md.
Routing summary
/deslop → Code (branch vs main)
/deslop path/to/file → Code (that file)
/deslop → Write (when draft is in the message)
[draft here]
/deslop is this AI slop? → Detect
[text]
Also accept natural language: "deslop this branch", "clean AI slop from this
post", "does this read as AI?".
1---2name: deslop3description: Remove AI slop from code or writing. Use for branch code cleanup (redundant comments, defensive over-engineering, type hacks, over-abstraction) or for prose drafts that need less AI-sounding language while preserving voice. Also use when the user asks whether writing reads as AI, to audit or scan for slop patterns without rewriting. Triggers: deslop, no-ai-slop, remove AI slop, clean up this branch, is this AI, less AI-sounding, humanize this draft.4---56# Deslop78Two domains, one skill. Pick the mode from the request; do not mix them unless9the user asks for both.1011| Mode | When | Output |12|------|------|--------|13| **Code** (default for branches/diffs) | Branch cleanup, file path, "deslop this PR" | Minimal code edits + 1–3 sentence summary |14| **Write** | Pasted draft, "edit this", "humanize", "less AI" | Full edited draft + short **What changed** |15| **Detect** | "Is this AI?", audit/scan/flag without rewrite | Pattern list with quoted lines; no rewrite |1617If the request is ambiguous and no draft or path is present, ask once whether18they mean code on the branch or a prose draft.1920---2122## Mode: Code2324Check the requested change scope and remove code slop introduced there. Discover the repository's default branch instead of assuming `main`. Use its merge-base for branch changes and include staged, unstaged, and relevant untracked work when those are part of the request.2526### Step 1: Get changed files2728```bash29# Set review_base to the verified merge-base commit for the requested branch review.30git diff --name-only "$review_base" --31git ls-files --others --exclude-standard32```3334If an argument was provided, focus only on that file.3536Read the new and modified code with fresh eyes.3738### Step 2: For each file, compare with original3940For each changed file:41421. Read the current version432. Read the original from the verified base: `git show "$review_base:<filepath>"`. A newly added file has no base version; compare with neighboring code instead.443. Compare style, patterns, and conventions. Look for bugs, confusion, and45 drift from the file's existing voice.4647### Step 3: Remove slop4849Edit to remove:5051**Unnecessary comments**5253- Comments explaining obvious code (`// increment counter`)54- Comments that were not in the original and add no value55- Comments inconsistent with the file's existing style56- Redundant JSDoc/docstrings on simple functions5758**Defensive over-engineering**5960- Try/catch around code that cannot throw61- Null checks on values already validated upstream62- Defensive checks in internal/trusted paths63- Unnecessary `|| []` or `?? {}` defaults not present in similar code6465**Type hacks**6667- `as any` or `as unknown` casts68- `@ts-ignore` / `@ts-expect-error` without a clear reason69- `!` non-null assertions that hide real issues7071**Style inconsistencies**7273- Verbose patterns when the file is terse74- Naming that does not match the rest of the file75- Extra blank lines or formatting drift from original7677**Over-abstraction**7879- Helpers used only once80- Unnecessary intermediate variables81- Overly generic code for a specific use case8283**General**8485- Fix real bugs or confusion you uncover while cleaning8687### Step 4: Report8889Output ONLY a 1–3 sentence summary. No bullet points, no file lists, no long90explanations.9192Example: "Removed 4 redundant comments and 2 unnecessary null checks. Simplified93error handling in auth.ts."9495---9697## Mode: Write9899You are a sharp human editor. Preserve the user's point and personal voice.100Remove AI patterns without turning distinctive writing into generic polished101prose.102103### Before editing104105- If there is no draft, ask them to paste it.106- If audience/format is unclear, ask once: who is this for and where is it107 published?108- If the goal is unclear, ask what the reader should think, feel, or do.109110### Editing principles111112- **Preserve the writer's real voice.** Notice vocabulary, cadence, bluntness,113 humor, uncertainty, digressions, polish. Keep what feels personal. Do not make114 every paragraph equally tidy.115- **Minimum effective edit.** Fix AI patterns, errors, repetition, unclear116 passages. Leave strong human sentences alone.117- **Lead with the point** when setup adds nothing. Keep personal asides when118 they add context, tension, or character.119- **Keep the user's meaning.** Do not invent claims, examples, stats, or120 opinions. Ask if something is unclear.121- **Open it up; do not dumb it down.** Keep substance and precision. Strip122 jargon, tangled structure, and empty abstraction.123- **Active voice.** Prefer human subjects and direct verbs.124- **Every sentence earns its place.** Cut empty qualifiers. Keep "I think,"125 "maybe," "to be honest" when they express real uncertainty or spoken rhythm.126- **Be concrete.** Names, numbers, dates, mechanisms beat abstractions.127- **Preserve useful edge.** Strong opinions, humor, blunt language stay when128 they belong to the writer.129- **Keep structure** unless it is hurting the piece. If you reorganize, say why130 in **What changed**.131132Load the full pattern catalog from [writing.md](writing.md). After editing,133check the draft against [eval.md](eval.md). If any check fails, fix and recheck.134135### Write workflow1361371. Read the full draft.1382. Identify the core point and 3–5 voice signals to preserve (internal only).1393. Make the minimum effective changes using [writing.md](writing.md).1404. Self-check with [eval.md](eval.md); fix failures.1415. Output the full edited draft and a short **What changed** section.142143---144145## Mode: Detect146147Name each pattern from [writing.md](writing.md) that appears. For each:148149- Pattern name150- Quoted line151- Fix in a few words152153Do not rewrite, score the draft, or claim AI authorship. Detectors guess; named154patterns are evidence. Offer to edit after.155156For detect self-checks, use the detect section of [eval.md](eval.md).157158---159160## Routing summary161162```163/deslop → Code (branch vs main)164/deslop path/to/file → Code (that file)165/deslop → Write (when draft is in the message)166 [draft here]167/deslop is this AI slop? → Detect168 [text]169```170171Also accept natural language: "deslop this branch", "clean AI slop from this172post", "does this read as AI?".