{
  "markdown": "# unpolish-ai-writing\n\nRemoves signs of AI-generated writing from text using two methods:\n\n- Detect and remove common signs of AI writing \n- Optionally adds sparse typing errors informed by researched human error patterns.\n\n## How it works\n\n### Step 1 (Default): AI detection & cleanup\n\n- Detect common AI writing patterns (view NOTES.md for more info)\n\n**Selected examples**\n\n| Pattern | Before | After |\n| --- | --- | --- |\n| Not-X-it's-Y | \"It's not just X — it's Y\" | State Y directly |\n| Rule of three | \"skilled, attentive, and precise\" | Keep the real details; drop the slogan beat |\n| Empty significance / magic adverb | \"quietly transformative\", \"truly special\" | Cut, or name what actually changed |\n| Invented concept label | \"the X paradox/trap/creep\" (made-up jargon label) | Plain description, or drop the label |\n| Copula dodge | \"stands as a testament to…\" | \"is…\" |\n| Em-dash habit | \"worth it—even with the queue—\" | Periods, commas, or a shorter sentence |\n| Punchy fragment stack | \"Less busywork. More impact. Better focus.\" | One concrete sentence |\n\n### Step 2 (Optional): human-like writing errors\n\nSame cleaned input always gets the same typos. “Reroll” changes the seed so you get a different set. About one error per 600 words, and often none.\n\n1. Convert the input draft (plus a reroll phrase, if asked) into a hash value\n2. Use that number to decide how many imperfections to add (Poisson from word count)\n\n![Poisson distribution of number of errors by word count](./video/poisson.gif)\n\n3. If the count is above zero, hash again once per imperfection to pick type and placement, using a weighted distribution\n\n![Distribution of imperfection type](./video/tape.gif)\n\n| Type | Example |\n| --- | --- |\n| Misspelling / wrong word | `could have` → `could of`, `affect` → `effect` |\n| Dropped apostrophe | `don't` → `dont`, `I'm` → `Im` |\n| Missing end punctuation | last sentence loses its `.` or `?` |\n| Uncapitalized sentence start | `The` → `the` |\n| Extra space | `I think` → `I  think` |\n| Keyboard slip | `the` → `teh`, `should` → `shuild` |\n\n\n## Usage\n\nInvoke the skill however your agent harness exposes installed skills. Common forms include a slash command or a direct request:\n\n```\n/unpolish-ai-writing\n\n[paste your text here]\n```\n\n```\nPlease unpolish this text: [your text]\n```\n\nPoint it at a file and the skill rewrites it in place:\n\n```\nUnpolish the prose in docs/launch-post.md\n```\n\nTo add typing errors:\n\n```\nUnpolish this and add imperfections: [your text]\n```\n\n\n\n## Full example\n\n**Input:**\n\n> The barbers are incredibly skilled, attentive to detail, and actually take the time to understand exactly what you’re after. My son’s haircut was sharp, clean, and done with precision—easily one of the best he’s ever gotten. They don’t rush appointments, and you can tell they take pride in their work.\n>\n> The shop itself is clean, stylish, and welcoming. It’s clear they care about creating a great experience from start to finish. Whether you’re in for a quick trim or a full grooming session, you’re in great hands here.\n>\n> Highly recommend this place to anyone looking for top-quality service and a fresh, confident look every time. I won’t be going anywhere else!\n\n**Output** (strip + imperfections):\n\n> The barbers listen to what you're after and they don't rush. my son's haircut was sharp and clean, one of the best he's gotten. You can tell they take pride in the work.\n>\n> The shop is clean and easy to walk into. Quick trim or a longer appointment, both are fine.\n>\n> I won't be going anywhere else.\n\n**What it caught:**\n\n- Stacked rule-of-three beats (“incredibly skilled, attentive to detail, and actually take the time…”, “sharp, clean, and done with precision”, “clean, stylish, and welcoming”)\n- Em dash\n- Empty experience padding (“from start to finish”, “you’re in great hands”)\n- Signposted wrap-up (“Highly recommend… top-quality service…”)\n\n**Imperfections:** `uncapitalized_start (My → my)`\n\n\n## Install\n\nThe skill is `[SKILL.md](./SKILL.md)` plus `[references/](./references/)` (typing-error recipe, loaded only when asked).\n\n### Skills CLI\n\nInstall globally with the cross-agent skills CLI:\n\n```bash\nnpx skills add wilu222/unpolish-ai-writing --global\n```\n\nUpdate an existing install:\n\n```bash\nnpx skills update unpolish-ai-writing --global\n```\n\nOmit `--global` for a project-local install. Start a new agent session or reload skills after installation.\n\n### Claude Code plugin\n\n```\n/plugin marketplace add wilu222/unpolish-ai-writing\n/plugin install unpolish-ai-writing@unpolish-ai-writing\n```\n\nThe skill is then invoked as `/unpolish-ai-writing:unpolish-ai-writing`.\n\n### Manual\n\n```bash\n# Claude Code\nmkdir -p ~/.claude/skills/unpolish-ai-writing/references\ncp SKILL.md ~/.claude/skills/unpolish-ai-writing/\ncp -R references ~/.claude/skills/unpolish-ai-writing/\n\n# Cursor\nmkdir -p ~/.cursor/skills/unpolish-ai-writing/references\ncp SKILL.md ~/.cursor/skills/unpolish-ai-writing/\ncp -R references ~/.cursor/skills/unpolish-ai-writing/\n```\n\n\n\n## Credits\n\nPattern research informed by [avoid-ai-writing](https://github.com/conorbronsdon/avoid-ai-writing) and [humanizer](https://github.com/blader/humanizer). Sources for a few extra tells and the typing-error rate are in NOTES.md\n\n## License\n\nMIT — see [LICENSE](./LICENSE).",
  "bytes": 5288,
  "sha": "0a99a64485d6c3403a5d0e7876c57c0bd62c021bd21ae8b24d0c1c38abdcbd5c",
  "repo_slug": "wilu222/unpolish-ai-writing",
  "fonte": "repo",
  "truncated": false,
  "api": "https://api.agentalog.com/api/listings/skl_wilu222_unpolish_ai_writing_unpolish_ai__daad6e6f/readme"
}