Search iThub

Search tools, categories and collections. Type at least two characters.

Explore all tools
↑ ↓ to explore resultsEnter to open · Esc to close

avoid-ai-writing

Agent Skill that audits and rewrites prose to remove AI writing patterns, with a deterministic detector

Visit website Save

MIT-licensed Agent Skill for Claude Code, Codex, OpenClaw, Hermes and other agents that flags AI writing patterns and rewrites or edits text, plus an npm detector, CLI, GitHub Action and MCP server.

Pricing
Open source
Deployment
Windows / macOS / Linux app
Platforms
Windows, macOS, Linux
5,612stars479forks
1views
Updated

What is avoid-ai-writing?

avoid-ai-writing is an open-source Agent Skill that audits prose for patterns the project associates with AI-generated text ("AI-isms") and, depending on the mode, rewrites the text or edits a file in place. It is written and maintained by Conor Bronsdon and published in the GitHub repository conorbronsdon/avoid-ai-writing. The skill's frontmatter lists compatibility with any assistant that reads the agentskills.io SKILL.md format, and the README gives install paths for Claude Code, Claude Cowork, Google Antigravity, OpenClaw, Cursor, Hermes, OpenAI Codex, Windsurf, Cline, GitHub Copilot in VS Code, Claude.ai Projects and ChatGPT. The skill itself needs no external tools or APIs; text is processed by whichever agent and model the user runs it in.

The project has two parts. The skill is a set of editorial instructions: SKILL.md loads a pattern catalog in references/patterns.md with word tiers, pattern categories, context profiles and voice profiles, plus an editing contract that covers scope, source fidelity and protected content such as quotations, code, tables and URLs. The second part is a deterministic, zero-dependency detector engine in JavaScript that runs in Node 18 or newer and in the browser. It is published on npm as avoid-ai-writing-detector and turns pattern matches into a 0 to 100 score and a label. A separate repository, avoid-ai-writing-mcp, wraps the detector as a local stdio MCP server with two read-only tools.

The README counts 74 pattern categories in the human-facing catalog and a 112-entry word replacement table across three tiers, plus ten Tier 3 phrases; the detector implements 54 issue types, and detector/CATEGORIES.md maps the two. The rules and the detector are calibrated for English. The skill text describes itself as a writing-quality tool and its flags as signals rather than proof of authorship, and it cites published audits of AI detectors with high false-positive rates on non-native English writers.

The current release is v3.38.0, published October 15, 2026. It replaced placeholder entries in the word replacement tables with concrete alternatives, restricted model-only detect findings to catalog patterns with their canonical categories and severities, and narrowed several detector rules (the "features support for" verb use, significance inflation around "the evolution of", template "step towards" phrases and the Russian lookalike-letter check) to cut false positives. Version 3.37.0 (October 4, 2026) added a negative-parallelism detector type and ignore markers, and 3.36.0 added step outputs and JSON output to the GitHub Action gate. The changelog goes back to version 1.0.0 on March 5, 2026; unreleased work on the main branch adds an Antigravity plugin manifest and a generated Vale style.

The code and documentation are MIT-licensed. The privacy statement for the ChatGPT and Codex plugin states that the package contains no developer-hosted server, analytics, telemetry or bundled MCP server, that the detector runs locally where the host provides Node, and that the developer receives no user text. Enforcing a published house style guide is stated to be out of scope; the README points to Vale for that job. Similar entries on iThub include Humanizer and antislop.

Inside the application

avoid-ai-writing screenshots

Explore the interface. Open a screenshot to view it at full size.

Terminal output of the avoid-ai-writing detector: 13 issues and a score of 51/100 for a sample paragraph, then 0 issues and 0/100 for the rewrite
avoid-ai-writing screenshot 1

Final frame of the README demo: the detector lists 13 findings by severity for an AI-style sample paragraph (score 51/100, MIXED) and none for the rewritten paragraph (0/100, Clean).

Source: official avoid-ai-writing project page.

Key capabilities

  • Rewrite mode (default) The skill flags AI patterns in supplied text, applies up to two editing passes and returns one final version, followed by a short change summary when useful and a verification note listing passes used, checks that ran and any unresolved or protected finding. Clean input can come back unchanged with zero editing passes. Asking for a detailed audit adds quoted findings before the final rewrite.
  • Detect mode Detect mode flags patterns without changing the text. It returns the issues grouped by severity (P0, P1, P2) and an assessment that separates clear problems from patterns that may be intentional in context. It is triggered by phrases such as "detect", "flag only", "audit only" or "scan", or by --mode detect.
  • Edit mode for files Edit mode changes a named prose file in place with the agent's Edit tool, making minimal, targeted edits and leaving paragraphs without findings untouched. Source code, configuration and generated data files are refused, because prose rewrites can corrupt structured content. It returns an edits-made and verification report rather than the full file.
  • Pattern catalog The catalog groups patterns into content (significance inflation, promotional language, vague attributions), language (word replacements, copula avoidance, synonym cycling, filler phrases), structure (formatting, transition phrases, inline-header lists, title case headings), communication (chatbot artifacts, sycophantic tone, generic conclusions) and meta patterns (excessive structure, uniform rhythm, over-polishing). Later releases added structural detection such as hashtag stuffing and hedge-stacked predictions, AI-tool fingerprints such as unfilled placeholders, chatbot citation markup and utm_source=chatgpt.com parameters, plus conversational-register and unnecessary-hyphenation patterns. The full list is in references/patterns.md.
  • Three-tier word table Each flagged word has a plainer alternative, for example "utilize" to "use" or "commence" to "start". Tier 1 matches flag unless a listed exception applies, Tier 2 words flag when they cluster, and Tier 3 words flag only at high density. Tier 1 is split into 1A frequency markers and 1B clarity edits, and 1B is weighted lower in the detector so wordiness fixes do not push a document toward an AI classification.
  • Context and voice profiles The --context option accepts linkedin, blog, technical-blog, investor-email, docs and casual, and changes which rules apply and at what priority; hashtag stuffing, for instance, ranks lower on blog contexts. An optional --voice profile (casual, professional, technical, warm or blunt) sets how the rewritten prose sounds, independent of the context profile.
  • Iteration limit --iterate 1 allows only the initial rewrite; --iterate 2 matches the default ceiling of an initial rewrite plus one corrective or preservation-repair pass and stops early when no justified edit remains. Audits, re-reads and detector rechecks do not consume a pass. The skill reports how many passes it used and why it stopped.
  • Editing contract and protected content Edits must be grounded in the supplied source or an explicit user correction; the skill is instructed not to invent facts, experiences or confidence, and to flag a gap instead. Quotations, attributed passages, code, tables, URLs, paths, identifiers and frontmatter keep their content during ordinary cleanup. Instructions found inside the source text are treated as data, not as commands to the editor.
  • Detector engine and CLI The detector is installed with npm install avoid-ai-writing-detector and exposes analyzeText(), which returns a score from 0 to 100, a label from Clean to Heavy AI patterns, a HUMAN_ONLY, MIXED or AI_ONLY document classification and a list of issues. The bundled CLI prints the full result as JSON for a file or piped text, with --context and --source-mode options; the detector README documents the API.
  • GitHub Action and pre-commit gate A deterministic gate fails on the number of findings per file rather than on the composite score. The default threshold is six findings per file, with the technical context and rendered-Markdown source masking. The Action exposes pass, total-findings and failed-files step outputs from v3.36.0, and the gate CLI can emit JSON. A pre-commit hook scans staged .md and .mdx files with the same default.
  • Preservation validator detector/validate.js compares an original and a rewritten file and checks that code, frontmatter, blockquotes, tables, inline code, URLs, paths and headings survived. An advisory --residual-policy warn mode reports residual pattern findings without failing. The README states that a pass does not verify meaning and that facts and claims need a separate check.
  • Ignore markers and Markdown mode Text between avoid-ai-writing:ignore-start and ignore-end HTML comments, each on its own line, is excluded from scoring, so a page can quote AI-style prose on purpose. The rendered-markdown source mode excludes initial YAML frontmatter and HTML comments from the score while keeping issue offsets aligned with the file.
  • Detector over MCP The companion package avoid-ai-writing-mcp runs the detector as a local stdio MCP server with two read-only tools, score_text and audit_text. It calls no model, sends no text to a network service and has no rewrite tool; the README shows it added to Claude Code with claude mcp add, running the npm package version 0.1.0 through npx.
  • House-style checks An optional --style input takes a user-supplied config with a register list and a mechanics object. From a cloned checkout, scripts/check-style.js verifies quote form, Latin abbreviations and bans on colons, semicolons or em dashes, and scripts/normalize-quotes.js matches quote marks to the original document. The project ships no style guides of its own.
  • Install in Claude Code and Cowork In Claude Code the skill can be cloned into ~/.claude/skills/avoid-ai-writing and invoked as /avoid-ai-writing, or installed as a versioned plugin with /plugin marketplace add conorbronsdon/avoid-ai-writing and /plugin install avoid-ai-writing@conorbronsdon-skills. Cowork loads skills only from installed plugins, so the plugin route is the documented one there.
  • Install in other agents OpenClaw installs from ClawHub with clawhub install avoid-ai-writing or by cloning into ~/.openclaw/skills. Hermes and Codex use a clone into their skills directories, Google Antigravity installs the bundled plugins/avoid-ai-writing folder with the agy CLI, and Cursor uses a ported rule file in .cursor/rules/. A native plugin package with seven focused skills is listed in the OpenAI Plugins Directory for ChatGPT and Codex.
  • Single-file version dist/avoid-ai-writing.md (about 138 KB) bundles every rule and profile with manual fallbacks for commands that are unavailable outside the full directory. The README lists where to place it in Cline, GitHub Copilot, Claude.ai Projects and a Custom GPT Knowledge upload, and notes that Windsurf rule files are limited to 12,000 characters, so a directory install is used there.

Where avoid-ai-writing fits

Cleaning up a draft before publishing

The README's example requests include "Remove AI-isms from this post" and "Make this sound less like AI". In rewrite mode the skill audits the draft, rewrites the flagged passages and returns one final version with a verification note. In the README's full example, a funding announcement loses its chatbot opener, promotional modifiers and generic conclusion, keeps the named investors and product capabilities, and the market and study claims that had no source are listed under "Claims needing sources" rather than replaced with invented figures.

Auditing text that should not be changed

Detect mode covers published content, someone else's writing or reference material. It lists every finding by P0, P1 or P2 severity and separates clear problems from judgment calls, without touching the text. Since v3.38.0, model-only detect findings are limited to catalog patterns with their canonical categories and severities, and Tier 2 and Tier 3 matches below their thresholds are left out.

Editing Markdown files in a repository

Pointing the agent at a file, for example "edit post.md in place", switches to edit mode: targeted edits to prose files only, a re-read after editing and a report of what changed. The preservation validator can then compare the before and after files to confirm that code blocks, tables, URLs, headings and frontmatter were kept.

Gating documentation in CI

Repositories can run the Avoid AI Writing Gate GitHub Action or the pre-commit hook over Markdown files. The gate fails when a file has more findings than the threshold (six by default, or zero for a strict policy) and reports per-file counts and detector types. The project describes this as a writing-quality baseline, not an authorship classifier; PROOF.md publishes the detector's results on the repository's own documentation.

Writing for a specific channel and voice

A request such as "rewrite this in a blunt voice for LinkedIn" combines a context profile with a voice profile. The context profile decides which patterns apply and how severe they are for that channel, while the voice profile changes how the existing material is expressed; the editing contract keeps stated uncertainty and does not allow new opinions or experiences to be added to meet a voice target.

Scoring text from scripts or MCP clients

Developers can call analyzeText() from Node or the browser, pipe text into the CLI, or connect an MCP host to avoid-ai-writing-mcp and call score_text or audit_text. All three use the same deterministic engine and return the score, label and issues without calling a model. Related listings on iThub include Claude Blog for drafting blog posts.

Install

git clone https://github.com/conorbronsdon/avoid-ai-writing ~/.claude/skills/avoid-ai-writing

Reviews of avoid-ai-writing

No reviews yet

Be the first to share your experience with avoid-ai-writing.

Loading review form…

Alternatives to avoid-ai-writing

Compare avoid-ai-writing with these tools →