Agent skill

Unslop

by Sma1lboy in Sma1lboy/rove

Strip AI writing tells from Rove's user-facing prose — README, the docs/ pages that sync to docs.rove.run, landing copy, and release notes.

MITAuto-check passedDevelopment

Install Unslop

skills CLI
$ npx skills add Sma1lboy/rove --skill unslop -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Sma1lboy/rove unslop --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Sma1lboy/rove.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/unslop .claude/skills/unslop && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
unslop
GitHub stars
168
Token cost
~1.3k tokens
SKILL.md length
533 words
Files
1
Skills in repo
13
Repo updated
First seen
Licence
MIT

At a glance

Strip AI writing tells from Rove's user-facing prose — README, the docs/ pages that sync to docs.rove.run, landing copy, and release notes.

  • Works in 7 steps: Em dashes in prose. By far the biggest.… → Inline-header lists. - Label —… → Curly quotes → straight. → …
  • The user says unslop
  • SKILL.md covers Scope in this repo, Never rewrite these, The patterns and Two failure modes this repo…, plus 1 more section
  • Calls node, bun and python3

What it does

Unslop is an agent skill from Sma1lboy/rove. Strip AI writing tells from Rove's user-facing prose — README, the docs/ pages that sync to docs.rove.run, landing copy, and release notes. Use when the user says "unslop", "洗一下文案", "这读起来像 AI 写的", or after drafting any user-facing page. Adapted for this repo from cursor/plugins pstack/skills/unslop.

Its SKILL.md is about 1.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Changelog and release notes and Humanizing AI text. The repository describes itself as: Rove — the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions. The licence is MIT.

When your agent uses it

  • The user says unslop
  • After drafting any user-facing page

Example prompts

  • “unslop”
  • “这读起来像 AI 写的”
  • “/unslop”

Requirements

  • Python 3

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Em dashes in prose. By far the biggest. Resolve each one per sentence
  2. Inline-header lists. - Label — restatement of the label becomes
  3. Curly quotes → straight.
  4. Filler. "simply", "in order to", "it is important to note that".
  5. Fancy ways to say "is" — "serves as", "stands as", "boasts".
  6. Title-case headings → sentence case. Proper nouns and defined product
  7. Sentences that say nothing specific to this project. If the line could

What it can do on your machine

Read from SKILL.md and the folder at commit 6b3ec31. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • node
    • bun
    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Unslop loads about 1.3k tokens when it runs. Until then it costs about 77 tokens; SKILL.md has 533 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~77
When it runs · the whole SKILL.md, loaded when a task matches
~1.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Sma1lboy/rove at commit 6b3ec31, republished under its MIT licence (© Sma1lboy). 533 words, ~1,311 tokens.

Download SKILL.mdSave it as .claude/skills/unslop/SKILL.md (or your agent's skills folder).
name
unslop
description
Strip AI writing tells from Rove's user-facing prose — README, the docs/ pages that sync to docs.rove.run, landing copy, and release notes. Use when the user says "unslop", "洗一下文案", "这读起来像 AI 写的", or after drafting any user-facing page. Adapted for this repo from cursor/plugins pstack/skills/unslop.
metadata.internal
true

Unslop

Rewrite text so it stops reading as machine-generated. Two halves, both required: cut the tells, then make sure something human is left.

Upstream pattern list: https://github.com/cursor/plugins/blob/main/pstack/skills/unslop/SKILL.md. This file keeps the repo-specific parts — what counts as prose here, what is data and must survive, and which surfaces are in scope.

Scope in this repo

In scope (the product's public face):

  • README.md
  • The docs/ pages listed in SECTIONS in packages/rove-docs/scripts/sync-docs.mjs (they publish to docs.rove.run)
  • packages/rove-landing/** — English copy only
  • Release notes and changeset bodies

Out of scope unless asked: docs/PLAN.md, HARNESS.md, ARCHITECTURE.md, DESIGN.md, RELEASING.md, AGENTS.md, and docs/design/**. Those are operator manuals for agents, not product surface.

Never rewrite these

The same character can be punctuation in one line and data in the next. Check before replacing:

  • Table cells meaning "not applicable" — | copilot | — | ... | in ENGINES.md and SESSIONS.md. An em dash there is the value.
  • Verbatim CLI output — e.g. the rove doctor sample in TROUBLESHOOTING.md. Quoting output means quoting it exactly.
  • Code, including placeholders — ${ev.taskId ?? "—"} in PLUGIN-SDK.md.
  • CSS/JS/HTML comments in landing files.
  • Chinese copy. —— is correct CJK punctuation, not a tell. The landing page's zh i18n dictionary keeps its em dashes.
  • A file's own established separator. PLUGIN-EVENTS.md uses · between a heading and its engine-support marks; match the file rather than inventing a new convention.

The patterns

Full list upstream. The ones that actually show up here, in order of volume:

  1. Em dashes in prose. By far the biggest. Resolve each one per sentence into a period, comma, semicolon, colon, or parens. Do not global-replace with a single substitute — swapping every — for , just trades one tic for another, and swapping for parens trades it for a different one.
  2. Inline-header lists. - **Label** — restatement of the label becomes - **Label.** <genuinely new detail>. If the text after the label only rephrases it, the line has no content; write the content.
  3. Curly quotes → straight.
  4. Filler. "simply", "in order to", "it is important to note that".
  5. Fancy ways to say "is" — "serves as", "stands as", "boasts".
  6. Title-case headings → sentence case. Proper nouns and defined product terms (Terminal Tab, Claude Code) stay capitalized.
  7. Sentences that say nothing specific to this project. If the line could appear verbatim in another tool's docs, cut it.

Then add voice back: vary sentence length, state the tradeoff instead of listing both sides neutrally, and let a sentence be blunt.

Show full SKILL.md (142 more words)Show less

Two failure modes this repo has actually hit

Both produced broken output that looked fine at a glance. Check for them.

Fragments from over-eager splitting. Turning X — y into X. y mid-clause leaves a sentence starting lowercase, or a verbless remainder. After editing, scan for it:

bash
python3 - <<'PY'
import sys
for p in sys.argv[1:]:
    lines = open(p, encoding='utf-8').read().split('\n')
    for i in range(len(lines) - 1):
        a, b = lines[i], lines[i + 1]
        if a.rstrip().endswith('.') and b[:1].islower() and b.strip() \
           and not b.startswith(('|', '-', '*', '`', '#', ' ')):
            print(f"{p}:{i+1}: {a[-50:]} || {b[:50]}")
PY

Also read each rewritten sentence whole. The scan only catches line-broken prose, not a fragment that fits on one line.

Escaping breaks in i18n strings. The landing dictionaries are single-quoted JS. Replacing agent’s with a literal ' breaks the file. Always:

bash
node --check packages/rove-landing/index.js
node --check packages/rove-landing/themes.js

Verify before claiming done

bash
bun run lint
bun run --filter @sma1lboy/rove-docs build   # the docs-site CI gate
node --check packages/rove-landing/*.js

Then confirm the em dashes that remain are all data, not prose:

bash
grep -rn "—" README.md docs/*.md packages/rove-landing/*.html

Every hit should be a table cell, CLI output, a code placeholder, a comment, or Chinese. If one is a sentence, it was missed.

Editing the landing page's English also means checking its Chinese counterpart still has the same keys:

bash
node -e '
const s = require("fs").readFileSync("packages/rove-landing/index.js", "utf8")
const keys = (b) => new Set([...b.matchAll(/'"'"'([a-zA-Z0-9._]+)'"'"':/g)].map(m => m[1]))
const zh = keys(s.split("var en =")[0].split("var zh =")[1])
const en = keys(s.split("var en =")[1].split("var dicts")[0])
console.log("zh only:", [...zh].filter(k => !en.has(k)))
console.log("en only:", [...en].filter(k => !zh.has(k)))
'

© Sma1lboy, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/unslop of Sma1lboy/rove.

Open the folder on GitHubat commit 6b3ec31

Compare with similar skills

Unslop next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Unslop compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Unslop this skillSma1lboy/rove168—~1.3kAutomated safety check: PassMIT
Human Writingkataras/jwt212—~1.9kAutomated safety check: PassMIT
Avoid AI Writingwshobson/agents40k—~1.9kAutomated safety check: PassMIT
Levyra HumanizerLUC4N3X/Levyra-deepsound590—~719Automated safety check: PassMIT
SepiaNanako0129/sepia3.1k—~3.6kAutomated safety check: PassMIT
Simple History Voicebonny/WordPress-Simple-History317—~775Automated safety check: PassNone

Similar skills

  • Human Writing

    kataras/jwt

    A skill your agent uses when writing or editing any prose in this repository - the book's preface, its chapters and epilogue, the brand kit notes, the agent skill documents, the changelog, and the…

    212 GitHub stars~1.9k tokensUpdated 27 days ago
    DevelopmentAuto-check passed
  • Avoid AI Writing

    wshobson/agents

    Audit and rewrite prose so it stops reading as machine-generated.

    40k GitHub stars~1.9k tokensUpdated 6 days ago
    DevelopmentAuto-check passed
  • Levyra Humanizer

    LUC4N3X/Levyra-deepsound

    Apply a compact final prose pass to Levyra pull request descriptions, release notes, and owner-facing writing so it sounds natural without changing facts, evidence, structure, or validation state.

    590 GitHub stars~719 tokensUpdated today
    DevelopmentAuto-check passed
  • Sepia

    Nanako0129/sepia

    Make AI-generated writing read as human-written, in fiction and in professional prose.

    3.1k GitHub stars~3.6k tokensUpdated yesterday
    Writing & ContentAuto-check passed
  • Simple History Voice

    bonny/WordPress-Simple-History

    Pär's writing voice and per-text-type rules for Simple History, on top of the humanizer skill.

    317 GitHub stars~775 tokensUpdated 3 days ago
    Writing & ContentAuto-check passed
  • Sepia

    scott-fryxell/brayness

    Make AI-generated writing read as human-written, in fiction and in professional prose.

    125 GitHub stars~2.5k tokensUpdated 13 days ago
    Writing & ContentAuto-check passed

More from Sma1lboy/rove

All 13 skills in this repo
  • Image Gen

    Sma1lboy/rove

    Generate a single image from a text prompt using the MiniMax image generation API.

    168 GitHub stars~927 tokensUpdated today
    Auto-check passed
  • Hyperframes Design

    Sma1lboy/rove

    Non-animation creative direction for HyperFrames videos. An agent skill from Sma1lboy/rove.

    168 GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Changelog Generator

    Sma1lboy/rove

    Draft Rove release notes as Changesets. An agent skill from Sma1lboy/rove.

    168 GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • File Issue

    Sma1lboy/rove

    Turn a rough idea, a bug, or a batch of unsolved problems into well-structured GitHub issue(s) and file them with gh, auto-classifying type + labels from the content (recommend, then confirm) and…

    168 GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Rove

    Sma1lboy/rove

    A skill your agent uses when controlling Rove tasks, parallel coding attempts, hosted agent sessions, task lifecycle, or the daemon-owned issue tracker from a shell.

    168 GitHub stars~8.9k tokensUpdated today
    Auto-check passed
  • Why

    Sma1lboy/rove

    A skill your agent uses for 'why does X work this way', 'why we picked Y', '为什么这么设计', design rationale, regressions, or where a magic number came from.

    168 GitHub stars~5.6k tokensUpdated today
    Auto-check passed

Categories

Questions about Unslop

What does Unslop do?

Strip AI writing tells from Rove's user-facing prose — README, the docs/ pages that sync to docs.rove.run, landing copy, and release notes. Unslop is an agent skill from Sma1lboy/rove.run, landing copy, and release notes.

When should I use Unslop?

Unslop fits situations like: the user says unslop; after drafting any user-facing page.

How do I install Unslop in Claude Code?

Run `npx skills add Sma1lboy/rove --skill unslop -a claude-code`. Or copy the skill folder (.claude/skills/unslop in Sma1lboy/rove) into .claude/skills/unslop in your project. Claude Code loads it when a task matches its description.

How do I install Unslop in Codex?

Run `npx skills add Sma1lboy/rove --skill unslop -a codex`. Or copy the skill folder (.claude/skills/unslop in Sma1lboy/rove) into .agents/skills/unslop in your project. Codex loads it when a task matches its description.

Can I use Unslop in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Sma1lboy/rove --skill unslop -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/unslop, .gemini/skills/unslop, .github/skills/unslop and .opencode/skills/unslop in your project.

What does Unslop need to run?

Going by SKILL.md and its folder, Unslop needs the command-line tools its instructions call (node, bun and python3). Our summary lists: Python 3.

Does Unslop access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Unslop safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Unslop use?

Unslop is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Unslop use?

About 1.3k tokens (SKILL.md is roughly 5.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Unslop?

Skills that share tags, products or a category with Unslop: Human Writing (kataras/jwt, 212 stars), Avoid AI Writing (wshobson/agents, 40k stars), Levyra Humanizer (LUC4N3X/Levyra-deepsound, 590 stars) and Sepia (Nanako0129/sepia, 3.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Unslop?

Sma1lboy (a GitHub user) maintains it in Sma1lboy/rove, which has 168 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on October 10, 2026.

Source: Sma1lboy/rove on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.