A taxonomy of 112 AI-writing tells, not a prompt, is what makes this skill file work
on: conorbronsdon/avoid-ai-writing
The premise here is simple and the execution is more rigorous than you'd expect: a structured set of rules, delivered as a portable SKILL.md, that teaches an AI coding agent to detect and remove the writing patterns that mark text as AI-generated. The irony is deliberate and acknowledged — the repo even ships a PROOF.md that runs its own documentation through the detector and publishes the score, including two defects the scan found in the author's own prose.
What makes this more than a prompt wrapper is the taxonomy. The vocabulary system covers 112 entries across three tiers, and the tiers are not arbitrary. Tier 1 splits into 1A frequency markers — words like delve and tapestry that are evidence about how a passage was produced — and 1B clarity edits like utilize and in order to, which are just wordiness. The split matters: a document full of 1B fixes should not score the same as one full of 1A tells, and the weighting reflects that. Tier 3 phrases flag on repetition or when three or more distinct boilerplate phrases stack in a single piece, which is the shape LLM output takes when it self-varies rather than genuinely varies.
The 69 pattern categories span territory most style guides ignore entirely: hedge-stacked predictions (could potentially create), hashtag stuffing (the threshold is six or more tags, described as near-universal in LLM social output), unfilled placeholders, chatbot citation markup tokens, and the structural shape of wall-of-text replies in GitHub issues. The versioning in the README is honest about where patterns came from — v3.4 added structural detection after vocabulary-table evasion, v3.15 added conversational-register patterns after a real maintainer complaint about an assisted-sounding issue reply.
The detector engine in detector/ is deterministic and zero-dependency, runs in Node 18 or the browser, and produces a single 0–100 score. The README is explicit that SKILL.md and the engine use different category counts on purpose — the engine adds stylometric signals like punctuation distribution and function-word entropy that work as math over a document rather than as a rule you'd look up. A detector/validate.js tool checks that rewrites haven't corrupted code blocks, YAML frontmatter, tables, or URLs, and exits with a non-zero code on preservation errors.
The scope is deliberately narrow. This skill removes AI-writing tells; it does not enforce a house style guide. The README points to Vale for that job and explains exactly why paywalled guides like Chicago and AP get no implementation here — there is nothing to check a rewrite against, so claiming compliance would fail the same standard the PROOF.md holds every other number to.
Installation paths cover Claude Code, Cowork, OpenClaw, Cursor, Hermes, Codex, and a table of fallback locations for Windsurf, Cline, Copilot, and ChatGPT Custom GPTs. An MCP server wraps the detector as two read-only tools with no rewrite capability and no network calls. The design choice to keep rewriting in the skill and scoring in the engine is consistent throughout.
A tiered, versioned, self-auditing ruleset for stripping AI writing tells — more taxonomy than prompt, and honest about exactly what it cannot check.
Sources & links
Live matches from SkillFed’s research index — a weak match is labeled, never suppressed, so an empty-looking result never falsely means “no such research exists.”