Audit & rewrite content to remove AI writing patterns. A practical skill for any AI agent. Supports detect-only and edit-in-place modes, plus voice profiles.

A portable writing skill for Claude Code, OpenClaw, Hermes, and any other agentskills.io-compatible agent. Audits and rewrites content to remove AI writing patterns ("AI-isms").
Three modes: - Rewrite (default) — flags AI patterns and rewrites the text to fix them. A built-in second pass catches patterns that survived the first edit. - Detect — flags AI patterns without rewriting. Shows which flags are real problems vs. judgment calls. Useful when patterns might be intentional, when auditing content you don't want altered, or when you just want a quick scan. - Edit — edits a file in place (via the Edit tool) with minimal, targeted changes, preserving passages that are already human. Returns an edits-made + verification report, not the full file.
An optional voice profile (casual / professional / technical / warm / blunt) sets how the prose should sound, independent of the audience context profile.
Input:
Certainly! Acme Analytics, a vibrant startup nestled in the heart of Boulder's thriving tech ecosystem, has secured $40M in Series B funding — marking a watershed moment for the observability landscape. The platform serves as a unified hub, featuring real-time dashboards, boasting sub-second queries, and presenting a seamless integration layer. Moreover, experts believe Acme is poised to disrupt the market. In conclusion, the future looks bright!
Output:
Acme Analytics raised a $40M Series B led by Sequoia. The Boulder-based startup makes an observability platform that runs queries in under a second and plugs into existing monitoring stacks without custom integration work.
What it caught: chatbot opener ("Certainly!"), promotional language ("vibrant," "nestled," "thriving"), significance inflation ("watershed moment"), copula avoidance ("serves as," "featuring," "boasting"), 4 word replacements, vague attribution ("experts believe"), filler ("Moreover"), generic conclusion ("the future looks bright"), over-polished uniformity. 15+ AI tells in one paragraph.
A one-shot "make this sound human" prompt catches the obvious stuff. This skill is different:
SKILL.md; this count is enforced against it in CI.SKILL.md runs in Claude Code, Cowork (as a plugin), OpenClaw, and Cursor (as a ported rule). See the install paths below.Option 1: Clone into skills directory
git clone https://github.com/conorbronsdon/avoid-ai-writing ~/.claude/skills/avoid-ai-writing
Option 2: Copy the file directly
Download SKILL.md and place it in any directory that Claude Code can read. Reference it in your CLAUDE.md:
- Editing for AI patterns → read `path/to/avoid-ai-writing/SKILL.md`
Option 3: Use as a slash command
Create a command file (e.g., ~/.claude/commands/clean-ai-writing.md):
---
description: Audit and rewrite content to remove AI writing patterns
---
$ARGUMENTS
Read and follow the instructions in ~/.claude/skills/avoid-ai-writing/SKILL.md
Then use /clean-ai-writing <your text> in Claude Code.
Cowork loads skills only from installed plugins — it doesn't scan ~/.claude/skills/, so a bare clone (the Claude Code steps above) won't be discovered there. This repo doubles as a single-plugin marketplace, so install it as a plugin instead:
/plugin marketplace add conorbronsdon/avoid-ai-writing
/plugin install avoid-ai-writing@conorbronsdon-skills
/reload-plugins # or restart the session, to activate the skill
In the Cowork desktop app, do the same from Customize → Plugins → Add marketplace from GitHub (conorbronsdon/avoid-ai-writing), then install avoid-ai-writing. The skill auto-triggers from phrases like "remove AI-isms." New releases arrive when the plugin's version is bumped — run /plugin marketplace update to pull them.
The same plugin install works in Claude Code if you'd rather have a versioned, updatable plugin than the file clone above.
Prefer not to install a plugin? Copy
SKILL.mdinto a folder connected to your Cowork session and tell the agent to follow./SKILL.md— works as a one-off, no auto-trigger.
Option 1: Install from ClawHub
clawhub install avoid-ai-writing
Option 2: Clone into skills directory
git clone https://github.com/conorbronsdon/avoid-ai-writing ~/.openclaw/skills/avoid-ai-writing
Drop the ported rule into your project's .cursor/rules/:
mkdir -p .cursor/rules
curl -o .cursor/rules/avoid-ai-writing.mdc \
https://raw.githubusercontent.com/conorbronsdon/avoid-ai-writing/main/cursor-rules/avoid-ai-writing.mdc
See cursor-rules/README.md for activation globs and trigger phrases. Functionally identical to the Claude Code skill — same tier vocabulary, same context profiles, same modes.
Drop the skill into Hermes's skills directory — it then appears automatically as /avoid-ai-writing, no registration needed:
mkdir -p ~/.hermes/skills/writing/avoid-ai-writing
curl -o ~/.hermes/skills/writing/avoid-ai-writing/SKILL.md \
https://raw.githubusercontent.com/conorbronsdon/avoid-ai-writing/main/SKILL.md
Codex reads Agent Skills in the same SKILL.md format. Put it in .agents/skills/ at the repo root, or ~/.agents/skills/ to use it across all your projects:
mkdir -p .agents/skills/avoid-ai-writing
curl -o .agents/skills/avoid-ai-writing/SKILL.md \
https://raw.githubusercontent.com/conorbronsdon/avoid-ai-writing/main/SKILL.md
The same SKILL.md (or the Cursor .mdc port) drops into most tools' rules/skills location:
| Tool | Where to put it |
|---|---|
| Windsurf | .windsurf/rules/avoid-ai-writing.md |
| Cline | .clinerules/avoid-ai-writing.md |
| GitHub Copilot (VS Code) | paste into .github/copilot-instructions.md |
| Claude.ai Projects | paste SKILL.md into the project's custom instructions |
| ChatGPT Custom GPTs | paste SKILL.md into the GPT's Instructions field |
Once installed, ask your assistant to clean up AI writing:
In rewrite mode (default), the skill returns four sections:
In detect mode, the skill returns two sections:
Trigger detect mode with: "detect," "flag only," "audit only," "just flag," "scan," or similar.
Representative examples from the catalog — not the exhaustive list (that's
SKILL.md). The skill's human-facing prose catalog and the detector engine use different counts on purpose: the engine implements 44typecategories because it splits the vocabulary tiers and adds stylometric/fingerprint signals (punctuation distribution, function-word entropy, bypass-trick detection) that work as math over a document rather than as a rule you'd look up. The two are mapped indetector/CATEGORIES.md; don't "fix" one count to match the other.
| # | Pattern | Before | After |
|---|---|---|---|
| 1 | Significance inflation | "marking a pivotal moment in the evolution of..." | "was founded in 2019 to solve X" |
| 2 | Notability name-dropping | "cited in NYT, BBC, and Wired" | "In a 2024 NYT interview, she argued..." |
| 3 | Superficial -ing analyses | "symbolizing... reflecting... showcasing..." | Replace with specific facts or cut |
| 4 | Promotional language | "nestled within the breathtaking region" | "is a town in the Gonder region" |
| 5 | Vague attributions | "Experts believe it plays a crucial role" | "according to a 2019 survey by Gartner" |
| 6 | Formulaic challenges | "Despite challenges... continues to thrive" | Name the challenge and the response |
| 7 | Novelty inflation | "He introduced a term I hadn't heard before" | "He walked through how X works in practice" |
| # | Pattern | Before | After |
|---|---|---|---|
| 8 | Word/phrase replacements (3 tiers) | "leverage... robust... seamless... utilize" | "use... reliable... smooth... use" |
| 9 | Copula avoidance | "serves as... features... boasts" | "is... has" |
| 10 | Synonym cycling | "developers... engineers... practitioners... builders" | "developers" (repeat the clear word) |
| 11 | Template phrases | "a [adj] step towards [adj] infrastructure" | Describe the specific outcome |
| 12 | Filler phrases | "In order to," "Due to the fact that" | "To," "Because" |
| 13 | False ranges | "from the Big Bang to dark matter" | List the actual topics |
| 14 | Parenthetical hedging | "tools (like X and Y)" | Name them directly or cut |
| # | Pattern | Before | After |
|---|---|---|---|
| 15 | Formatting | Em dashes (— and --), bold overuse, emoji headers, bullet-heavy | Commas/periods, prose paragraphs |
| 16 | Sentence structure | "It's not X, it's Y" + hollow intensifiers + hedging | Direct positive statements |
| 17 | Structural issues | Uniform paragraphs, formulaic openings, too-clean grammar | Varied length, lead with the point |
| 18 | Transition phrases | "Moreover," "Furthermore," "In today's [X]" | "and," "also," or restructure |
| 19 | Inline-header lists | "Speed: Speed improved by..." | Write the point directly |
| 20 | Title case headings | "Strategic Negotiations And Partnerships" | "Strategic negotiations and partnerships" |
| 21 | Numbered list inflation | "Here are 7 reasons why..." | Cut to the 2-3 that matter |
| 22 | False concession | "While X has limitations, it's still remarkable" | State the real tradeoff |
| 23 | Rhetorical question openers | "What if there were a better way to...?" | Lead with the claim |
| # | Pattern | Before | After |
|---|---|---|---|
| 24 | Chatbot artifacts | "I hope this helps! Let me know if..." | Remove entirely |
| 25 | "Let's" constructions | "Let's explore," "Let's break this down" | Just start with the point |
| 26 | Cutoff disclaimers | "While details are limited in available sources..." | Find sources or remove |
| 27 | Generic conclusions | "The future looks bright," "Only time will tell" | Specific closing thought or cut |
| 28 | Emotional flatline | "What surprised me most," "I was fascinated to discover" | Earn the emotion or cut the claim |
| 29 | Reasoning chain artifacts | "Let me think step by step," "Breaking this down" | State conclusion, then evidence |
| 30 | Sycophantic tone | "Great question!", "You're absolutely right!" | Remove entirely |
| 31 | **Acknowledgment |
$ claude mcp add avoid-ai-writing \
-- python -m otcore.mcp_server <graph>