Avoid AI Writing
Audit and rewrite content to remove AI writing patterns ("AI-isms"). Use this skill when asked to "remove AI-isms," "clean up AI writing," "edit writing for AI patterns," "audit writing for AI tells," or "make this sound less like AI." Supports a detect-only mode, an edit-in-place mode for files, an optional voice profile (casual / professional / technical / warm / blunt), and an iterate-to-convergence pass.
Rank
62
Safety
84
Downloads
4.1k
Updated
Oct 9, 2026
Version
1.0.0
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 4.1K downloads reported by the source. Last updated 10/9/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 9, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 9, 2026
- Adoption signal
- 4.1K downloadsadoption · observed Oct 9, 2026
- Latest release
- 1.0.0release · observed Aug 22, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s172m2zdbgh5vmfq5p93bfnx9583g6wp:avoid-ai-writing- Install using `clawhub skill install s172m2zdbgh5vmfq5p93bfnx9583g6wp:avoid-ai-writing` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/conorbronsdon/avoid-ai-writing before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-conorbronsdon-avoid-ai-writing/snapshot"
Documentation
CLAWHUB
143,776 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
plugins/avoid-ai-writing/skills/avoid-ai-writing/SKILL.md
---
name: avoid-ai-writing
description: Audit and rewrite content to remove AI writing patterns ("AI-isms"). Use this skill when asked to "remove AI-isms," "clean up AI writing," "edit writing for AI patterns," "audit writing for AI tells," or "make this sound less like AI." Supports a detect-only mode, an edit-in-place mode for files, an optional voice profile (casual / professional / technical / warm / blunt), and an iterate-to-convergence pass.
version: 3.23.0
license: MIT
compatibility: Any AI coding assistant that supports agentskills.io SKILL.md format (Claude Code, Cursor, VS Code Copilot, Hermes Agent, OpenHands, etc.) or OpenClaw. No external tools or APIs required.
metadata:
author: Conor Bronsdon
tags: writing editing voice quality
agentskills_spec: "1.0"
openclaw:
emoji: "\u270D\uFE0F"
---
# Avoid AI Writing — Audit & Rewrite
You are editing content to remove AI writing patterns ("AI-isms") that make text sound machine-generated.
## What this skill is and isn't
This is a **writing-quality tool**, not a verdict. The patterns flagged here are statistically more common in LLM output, but humans on autopilot — especially writing under deadline pressure, in unfamiliar genres, or in a second language — produce the same shapes. Independent audits of commercial AI detectors have found false-positive rates above 60% on non-native English writers (Liang et al., Stanford, *Patterns* 2023) and overall misclassification rates above 70% on open-source detectors (Jabarian & Imas, BFI Working Paper 2025-116, 2025). Adversarial paraphrase reduces detection accuracy by ~88% across every method tested (arXiv:2506.07001, 2025).
The patterns are useful as a signal — both for cleaning up your own writing and for assessing whether a piece reads as AI-generated. Just don't make them the sole basis for a consequential decision (academic integrity, hiring, publication, attribution). Several rules here also fire on second-language writing, deadline-pressed humans, and technical genres that compress vocabulary by design. Pair the signal with context: who wrote it, what genre, what the writer's normal voice looks like, what other evidence you have.
In short: signals, not proof. Worth acting on; not worth ruining someone's day over.
## Modes
This skill operates in one of three modes:
**`rewrite`** (default) — Flag AI-isms and rewrite the text to fix them.
**`detect`** — Flag AI-isms only. No rewriting. Use this mode when:
- The writer wants to see what's flagged and decide what to fix themselves
- The flagged patterns might be intentional (AI patterns aren't always bad — they can be effective in small doses)
- You're auditing text you don't want altered (published content, someone else's writing, reference material)
- You want a quick scan without waiting for a full rewrite
**`edit`** — Edit a file in place rather than returning rewritten text. Use this when the writer points you at a file ("clean up `draft.md`", "fix the AI-isms in this filSKILL.md
---
name: avoid-ai-writing
description: Audit and rewrite content to remove AI writing patterns ("AI-isms"). Use this skill when asked to "remove AI-isms," "clean up AI writing," "edit writing for AI patterns," "audit writing for AI tells," or "make this sound less like AI." Supports a detect-only mode, an edit-in-place mode for files, an optional voice profile (casual / professional / technical / warm / blunt), and an iterate-to-convergence pass.
version: 3.23.0
license: MIT
compatibility: Any AI coding assistant that supports agentskills.io SKILL.md format (Claude Code, Cursor, VS Code Copilot, Hermes Agent, OpenHands, etc.) or OpenClaw. No external tools or APIs required.
metadata:
author: Conor Bronsdon
tags: writing editing voice quality
agentskills_spec: "1.0"
openclaw:
emoji: "\u270D\uFE0F"
---
# Avoid AI Writing — Audit & Rewrite
You are editing content to remove AI writing patterns ("AI-isms") that make text sound machine-generated.
## What this skill is and isn't
This is a **writing-quality tool**, not a verdict. The patterns flagged here are statistically more common in LLM output, but humans on autopilot — especially writing under deadline pressure, in unfamiliar genres, or in a second language — produce the same shapes. Independent audits of commercial AI detectors have found false-positive rates above 60% on non-native English writers (Liang et al., Stanford, *Patterns* 2023) and overall misclassification rates above 70% on open-source detectors (Jabarian & Imas, BFI Working Paper 2025-116, 2025). Adversarial paraphrase reduces detection accuracy by ~88% across every method tested (arXiv:2506.07001, 2025).
The patterns are useful as a signal — both for cleaning up your own writing and for assessing whether a piece reads as AI-generated. Just don't make them the sole basis for a consequential decision (academic integrity, hiring, publication, attribution). Several rules here also fire on second-language writing, deadline-pressed humans, and technical genres that compress vocabulary by design. Pair the signal with context: who wrote it, what genre, what the writer's normal voice looks like, what other evidence you have.
In short: signals, not proof. Worth acting on; not worth ruining someone's day over.
## Modes
This skill operates in one of three modes:
**`rewrite`** (default) — Flag AI-isms and rewrite the text to fix them.
**`detect`** — Flag AI-isms only. No rewriting. Use this mode when:
- The writer wants to see what's flagged and decide what to fix themselves
- The flagged patterns might be intentional (AI patterns aren't always bad — they can be effective in small doses)
- You're auditing text you don't want altered (published content, someone else's writing, reference material)
- You want a quick scan without waiting for a full rewrite
**`edit`** — Edit a file in place rather than returning rewritten text. Use this when the writer points you at a file ("clean up `draft.md`", "fix the AI-isms in this filcorpus/README.md
# Human-control corpus This repo asserts things about false positives. The tiering exists "to reduce false positives on words that are fine in isolation but suspicious in clusters." The tolerance matrix relaxes rules per register. `SKILL.md` opens by saying the patterns are "signals, not proof." None of that had ever been measured. This corpus is how it gets measured. ## The design Every document here was written by a person. So every flag the detector raises on it is a false positive, by construction. There is no labelling step, no judge, and no model in the loop: the ground truth is provenance. **The corpus is hash-only.** `manifest.json` records what a document is, where it came from, its license, its register, and the sha256 of the exact text that was measured. The text is never committed. Public-domain sources are fetched into a gitignored `cache/`; anything private stays wherever it already lives and contributes only its hash. That keeps the measurement auditable without republishing anyone's writing. Borrowed from `devswha/patina`, which uses the same pattern for its Korean human controls. ```bash node scripts/corpus.js list # what's in the manifest node scripts/corpus.js fetch # populate cache/ node scripts/corpus.js verify # cache still matches recorded hashes node scripts/fp-measure.js # the measurement ``` `verify` fails loudly on a hash mismatch rather than re-recording. A source that changed under us invalidates the measurement it backs, and that should be an argument, not a silent update. ## Register is the unit of analysis Not a label of convenience. Patina's Korean human-control pilot measured false positives from 4.0% on chat updates to 34.0% on technical how-to prose inside a single language. A single aggregate rate would have been set almost entirely by the worst register and would have hidden the finding. This repo's tolerance matrix already asserts that registers differ. The register buckets are what let that assertion be checked instead of assumed. ## Current contents Two sources, chosen for different reasons. **Nine public-domain works, 1788 to 1907**, sliced to 6,000 words each. Their provenance is beyond argument: nothing written in 1859 was machine-generated. That is also their limitation, and it is severe. Nobody runs this tool over *Walden*. On its own, this leg can only show the detector is not firing wildly on formal English prose. **Twenty-five blog posts by this repo's maintainer, 2019 to December 2022**, read from **Project Gutenberg's equivalent for the web**: `web.archive.org` captures taken before 2023. Written before ChatGPT, in the register the tool is actually pointed at, by someone whose authorship is not in question. This is the leg that produced the useful findings. Reading them from the archive rather than the live site is deliberate. The live site has been rebuilt and its posts edited since; the median archived capture is only **0.92 similar** to its currently published
cursor-rules/README.md
# Cursor Rule — avoid-ai-writing Drop-in [Cursor](https://cursor.sh) rule that ports the [`avoid-ai-writing`](../SKILL.md) skill to Cursor's `.mdc` rule format. Functionally identical to the upstream skill — same tier vocabulary, same context profiles, same detect / rewrite modes. ## Install Copy `avoid-ai-writing.mdc` into your project's `.cursor/rules/` directory: ```sh 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 ``` By default the rule activates on `.md`, `.mdx`, `.txt`, `.rst`, and `.adoc` files (via the `globs` field in the frontmatter). Edit the globs in the rule file if you want it on other file types — or set `alwaysApply: true` if you want it on every Cursor session. ## Trigger phrases Once installed, ask Cursor: - *"Remove AI-isms from this section."* - *"Audit this draft for AI writing patterns."* - *"Make this sound less like AI."* - *"Run avoid-ai-writing in detect mode."* (flag without rewriting) ## Old Cursor projects If you're on a Cursor version that still uses `.cursorrules` (single file at repo root), you can append `avoid-ai-writing.mdc`'s body (the part below the `---` frontmatter) directly to your existing `.cursorrules` file. Modern Cursor projects should prefer the `.cursor/rules/*.mdc` layout. ## Updating This file is generated from [`SKILL.md`](../SKILL.md) by [`scripts/sync-cursor-rules.sh`](../scripts/sync-cursor-rules.sh): Cursor-specific frontmatter (with the version derived from SKILL.md), plus three portability rewrites for spans that reference files in this repo — a copied-out rule can't run `node detector/validate.js`, so that check becomes a manual one. CI regenerates the rule on every SKILL.md change and fails when the committed copy drifts, so the two can no longer diverge silently. (They did once: this port sat at v3.16.0 while SKILL.md reached v3.22.3, which is what bought the guard.) Don't edit the `.mdc` by hand — edit SKILL.md and re-run the script.
detector/README.md
# Detector engine
`patterns.js` is the executable expression of this skill's pattern rules — a
zero-dependency, build-step-free detection engine that scores text for
AI-writing tells. It runs identically in Node (`>=18`) and in the browser.
The skill's `SKILL.md` is the human-readable catalog of rules; this engine is
the deterministic, testable implementation of the regex-detectable subset, plus
stylometric and AI-tool-fingerprint detectors that don't make sense as prose.
See [`CATEGORIES.md`](./CATEGORIES.md) for the rule ↔ category mapping that keeps
the two in sync.
## Run it
```bash
npm test # pattern, category-contract, and preservation tests (no deps)
# or directly:
node detector/patterns.test.js
```
```js
const AIDetector = require("./detector/patterns.js");
const result = AIDetector.analyzeText("Your text here…");
console.log(result.score, result.label, result.issues.length);
```
In the browser, load `patterns.js` as a plain script — it self-registers as a
global `AIDetector` (the `module.exports` block is guarded and only runs under
CommonJS).
## `analyzeText(text, options?)` → result
| Field | Type | Meaning |
|---|---|---|
| `score` | `0–100` | 0 = clean, 100 = heavy AI |
| `label` | string | `Minimal` / `Some` / `Strong` / `Heavy` (or `Empty` / `Too short` / `Text too long`) |
| `issues[]` | `{type, text, severity, …}` | one entry per detected pattern; `type` keys map to [`CATEGORIES.md`](./CATEGORIES.md) |
| `stats` | object | `wordCount`, per-tier counts, `contextMode`, `denseAIVocab`, normalization flags, etc. |
| `document_classification` | string | trinary `HUMAN_ONLY` / `MIXED` / `AI_ONLY` (shape mirrors GPTZero for swap-in) |
| `class_probabilities` | `{human, mixed, ai}` | sums to exactly 1.0 |
| `confidence_category` | `low` / `medium` / `high` | |
| `highlight_sentence_for_ai` | region[] | sentence spans with byte offsets + per-region score, for UI highlighting |
`options.contextMode` accepts `general` (default) or `technical`; technical mode
suppresses flags that are legitimate in code-adjacent prose (e.g. Title Case
headers). Invalid modes fall back to `general` and set `stats.contextModeFallback`.
## `validate(original, rewritten, options?)` → result
`validate.js` checks that a rewrite kept its hands off the things `SKILL.md`
says not to touch. Edit mode writes to files, so a violation there is silent
and destructive.
```js
const { validate, formatResult } = require("./detector/validate.js");
const result = validate(originalText, rewrittenText);
if (!result.ok) console.error(formatResult(result));
```
```bash
node detector/validate.js before.md after.md # exits 1 on a preservation error
```
**Errors** (the rewrite altered content it had no business touching): fenced
code modified or dropped, YAML frontmatter changed, blockquote reworded, table
cell changed, inline code removed, URL or file path lost, heading count or
nesting changed, and `residual-grew` when the rewrite introduces more flagged
patAionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/conorbronsdon/skills/avoid-ai-writing",
"sourceUrl": "https://clawhub.ai/conorbronsdon/skills/avoid-ai-writing",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T06:03:55.776Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-conorbronsdon-avoid-ai-writing/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-conorbronsdon-avoid-ai-writing/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T06:03:55.776Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "4.1K downloads",
"href": "https://clawhub.ai/conorbronsdon/avoid-ai-writing",
"sourceUrl": "https://clawhub.ai/conorbronsdon/avoid-ai-writing",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T06:03:55.776Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.0.0",
"href": "https://clawhub.ai/conorbronsdon/avoid-ai-writing",
"sourceUrl": "https://clawhub.ai/conorbronsdon/avoid-ai-writing",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-08-22T02:34:08.261Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-conorbronsdon-avoid-ai-writing/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-conorbronsdon-avoid-ai-writing/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.0.0",
"description": "Initial ClawHub release",
"href": "https://clawhub.ai/conorbronsdon/avoid-ai-writing",
"sourceUrl": "https://clawhub.ai/conorbronsdon/avoid-ai-writing",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-08-22T02:34:08.261Z",
"isPublic": true
}
]
}Record generated Oct 9, 2026.
