← All reviews
Certificate ID
RV-23
Published
10 Sep 2026
Founder-tested

conorbronsdon / avoid-ai-writing

Tested by @balajiloganathan. Reviewed by RepoVerifier.

One run, on one machine, by the tester named above. Your results may differ on a different setup.

3900 GitHub stars at review

Result: Solid

01 Claim tested

Unlike most agent-skill repos, this one ships a real, zero-dependency detection engine alongside the prompt, with a genuine regression-tested suite (150+ tests, many tied to real GitHub issue numbers) and a self-published PROOF.md that reports its own false-positive research — including a paragraph-level ROC-AUC of 0.501, a coin flip, disclosed without being asked. That level of self-critique is rare and worth crediting directly. But testing the detector against fresh, non-fixture text surfaced real gaps between what the README's flagship demo claims and what the shipped code actually catches: the demo's own emoji-bullet example scores clean, and the "chatbot opener" pattern misses its own signature phrase ("Certainly!") outside the exact fixture wording.

02 Measurements

Criteria as recorded for this run.
CriterionRecorded
Notesclaim_accuracy docked for the demo/shipped-code mismatch on the emoji-bullet pattern and the opener-pattern miss; maintenance_activity and documentation_quality scored high for the issue-linked regression tests and the self-published PROOF.md limitations. Adjust to your standard 25-point rubric if the category set differs.
Claim Accuracy3
Core Functionality4
Install Reliability5
Maintenance Activity5
Documentation Quality4

Recorded before the five-criterion scorecard.

03 Environment

test_type
hybrid: deterministic code (npm test, self-scan, preservation validator) + direct detector queries against fresh and canonical text
node_version
v20.19.6
install_result
EBADENGINE warning on Node <22.20.0, install completed successfully anyway
self_scan_result
all docs under CI budget; PROOF.md's own committed snapshot is intentionally stale, gated by live script not file text
test_suite_result
8/8 suites pass, 150+ individual assertions, many tied to real GitHub issue numbers
repo_version_tested
3.33.2
detector_recall_test
isolated chatbot-opener, chatbot-closer, and emoji-bullet patterns individually against both custom and README's own literal example text; opener and emoji-bullet patterns did not fire in either case; closer pattern fired only on the exact README phrasing
preservation_validator_result
27/27 cases pass

As reported by the tester.

The version of the repo tested is recorded only if the tester listed it.

04 Observations

The claim

> "Skill that audits and rewrites content to remove AI writing patterns. > Use it with your favorite agents including Claude Code, OpenClaw, Codex, > and Hermes."

The README backs this with a demo claiming "35+ AI tells" caught in one paragraph, and a bundled deterministic scoring engine separate from the prompt-only skill.

What it is

A dual-artifact repo: SKILL.md (the agent-facing prompt, 69 documented pattern categories) plus detector/ (a standalone Node scoring engine, zero dependencies, 54 type categories — intentionally a different count from the prompt catalog, mapped in detector/CATEGORIES.md). Also ships an MCP server wrapper, Cursor rule port, and a style-guide compatibility layer for external linters like Vale.

Environment

  • Cloned fresh from main; detector/patterns.js v3.33.2
  • Node v20.19.6 (repo floor: >=18, satisfied)

What we verified directly

1. Test suite: passes clean, and it's real regression coverage, not padding. npm test runs 8 suites — pattern fixtures, categories anti-drift contract, preservation validator, corpus helpers, style checker, quote normalizer — all green. Many test names cite specific GitHub issue numbers (#62, #67, #69, #73, #77, #107, #109, #123), confirming these were written against real bugs, not synthesized for show.

2. Preservation validator: all 27 cases pass. detector/validate.js correctly errors on edited code blocks, altered file paths, dropped URLs, touched frontmatter, and changed table cells, while passing ordinary prose rewrites and cosmetic fixes (heading case, emoji removal) as warnings rather than hard errors. This is the mechanism that would catch a rewrite corrupting structured content — verified working, not just documented.

3. Self-published limitations: unusually candid. PROOF.md runs the detector against the project's own docs and reports the result including unflattering findings — a real detector bug (em-dash carve-out gaps, now fixed as #67) and, more importantly, a false-positive study against 875 human / 779 machine paragraphs showing paragraph-level ROC-AUC of 0.501 (chance) and 0.623 at document level, with the explicit conclusion that "the composite score cannot reliably separate machine text from human text." One inaccuracy worth noting: the README's About text says PROOF.md documents "two defects"; the file actually documents four findings, one of which is a real detector bug and the rest are honest writing-quality critiques — a minor undersell, not an oversell.

4. Install path: works, but the version floor is a soft warning, not a hard gate. The documented npx [email protected] add ... command requires Node >=22.20.0; on Node 20.19.6 it printed an EBADENGINE warning and then completed installation successfully anyway to both .agents/skills/ and .claude/skills/. Worth documenting precisely rather than assuming the warning meant failure.

5. Detector recall against fresh text: mixed, and this is the finding that matters most. We built a synthetic AI-sounding paragraph covering several claimed pattern categories at once, then isolated each one against both our own phrasing and the README's own literal example text:

| Pattern | Our phrasing | Their own exact demo phrasing | |---|---|---| | Chatbot closer ("feel free to reach out...") | Missed (paraphrased) | Fired correctly, severity: critical | | Chatbot opener ("Certainly!") | Missed | Also missed, even above the word-count floor, in a real sentence | | Emoji-bulleted list with bold labels | Missed | Also missed — tested with the README's own demo text verbatim, scored 0 / Clean | | Vague attribution, significance inflation, tier-1 vocabulary, em dash, "In order to" | Caught correctly | — |

The closer-pattern gap is explainable and fair: the detector appears to match specific known phrasings rather than the semantic category, so a worded-differently chatbot sign-off slips through. That's a legitimate, disclosable brittleness, not a defect.

The emoji-bullet miss is a different class of finding: it reproduces against the project's own flagship README example, word for word. The demo that's meant to prove the tool's range doesn't fully hold up against the shipped code.

Caveats

  • The detector is a pattern-density diagnostic, not an AI-authorship classifier — the project says this itself, clearly, in PROOF.md. A review or any downstream use that treats the score as "percent chance this was written by AI" would misrepresent what the maintainer explicitly disclaims.
  • Vocabulary-tier and structural rules (dashes, filler phrases, attribution, inflation) tested reliably in our sample. Phrase-anchored rules (chatbot artifacts) are narrower than the README's framing suggests, and at least one — the emoji-bulleted list pattern — did not fire on the project's own canonical example.
  • Everything that runs as code (tests, preservation validator, self-scan, install) is machine-verified and reproducible. The one gap is between the README's illustrative prose and the actual detector's current behavior on that same illustrative text — a documentation/code sync issue, not a broken engine.

Verdict: SOLID (with caveats)

Real code, a genuinely deep regression suite tied to real issues, a working preservation guard, and unusually honest self-published limits — that's a stronger evidentiary floor than most repos in this category. It's not a clean SOLID because the flagship demo doesn't fully reproduce against the shipped detector, and one advertised pattern (chatbot openers) missed its own signature phrase in direct testing. Genuinely useful tool, oversold in one specific, documented, testable way.

05 Evidence

Founder's own run.

For maintainers: README badge

Shows this result and its publish month. Links back to this record.

RepoVerifier: SOLID
[![RepoVerifier: SOLID](https://repoverifier.dev/reviews/conorbronsdon-avoid-ai-writing/badge.svg)](https://repoverifier.dev/reviews/conorbronsdon-avoid-ai-writing)
<a href="https://repoverifier.dev/reviews/conorbronsdon-avoid-ai-writing"><img src="https://repoverifier.dev/reviews/conorbronsdon-avoid-ai-writing/badge.svg" alt="RepoVerifier: SOLID" height="20"></a>

Paste this in your repo’s README. Links back to the full review.

This review follows RepoVerifier Standard v1.0. Read the standard →