TVL AI Skills

AI Writing Detector Skill

tvl-detect-ai-writing reads a LinkedIn post, article, draft, or X reply and finds the formulaic patterns that make writing sound machine-made. It marks the exact phrases, explains why each one fires, returns a Pattern Score from 0 to 10, and runs a deterministic pre-scan for the tells a regex can catch. It never rewrites your text.

The score

One number, six bands

The report opens with a Pattern Score. It reflects how templated the structure, phrasing, and rhythm read. Whether the idea itself is any good stays a separate question, and the skill leaves that one to you.

0-2Natural, specific, human writing
5-6Noticeable patterns; readers may sense templating
9-10Strongly AI-patterned across structure, phrasing, and rhythm
ScoreReading
0-2Natural, specific, human writing. A single em dash or one list of three is style, not a tell.
3-4Mostly natural with isolated formulaic elements. One slogan closer on its own stays here.
5-6Noticeable patterns. Readers may sense a template even without naming it.
7-8Heavily templated. Multiple tells stack across the piece.
9-10Strongly AI-patterned. The structure, phrasing, and rhythm all read as generated.
What it detects

The pattern taxonomy

The skill scores against a fixed set of tells drawn from 2023 to 2026 detection research. These are the categories it marks phrase by phrase.

Negative correction

The strongest structural tell. Flagged in both variants, and escalated when it opens two or more paragraphs.

not X but Ynot just X, but Yit is not X, it is YX is no longer YX used to be Y, now Z

Artificial tension and slogans

Engagement bait dressed as insight, and final lines engineered to sound memorable.

the real shift isthis changes everythingread that againlet that sink inthat is the unlock

Generic bridges and announcements

Transitions that add structure without information, and sentences that only promise what comes next.

the point iswhat this means in practicethree things matter herelet me explainhere are the implications

Template openers

Thought-leader hooks and engineered rhythm devices in the first sentence of a post or a paragraph.

Most teams still XUntil 2024, X did YTake X.Consider Y.On scope-creep:Bottom line:

Focal-word lexicon

Words empirically overused by alignment-trained models. Near-deterministic when paired with another tell.

delveunderscoreintricaterealmtapestrymeticulousgroundbreaking

Density signals

Judged by frequency across the whole text, so a single appearance stays under the threshold and unflagged.

em dashes >1 / 75 wordshashtagsdiscourse openers >1 / 5 sentencestricolons >1 / 100 words

Reply mode for X and Twitter

For short replies the register rules invert. Lowercase, fragments, contractions, and a missing final period are normal human texture and are never flagged, while over-polish is what gives a generated reply away. A strong reply carries a concrete payload, a number, a named paper, or a specific failure mode, and takes a stance, and a reply that carries neither reads as slop.

Absolutely, great pointrestating the parent tweetWhat are your thoughts?no-stance neutralitytell-vocabulary in 1-3 sentences
How it runs

Five steps, evidence first

The skill gathers the mechanical evidence, then reads for the patterns a script cannot judge, and only then reports a score.

1

Capture the text

Use inline text directly. For a URL, fetch and keep only the article body. Mark X replies as reply mode.

2

Deterministic pre-scan

Run scan_ai_patterns.py to flag the regex-detectable tells: negative correction, em-dash density, hashtags, discourse openers, focal words, tricolons.

3

Read the taxonomy

Mark the exact phrase behind every pattern. No paraphrasing, no invented issues.

4

Combination scoring

Penalize density and stacking, not isolated tells. Require at least two distinct categories before any non-pass reading.

5

Return the report

Highlighted text, detected patterns, a diagnosis, a validation checklist, and a ranked list of fixes. No rewrite.

6

You decide

The report is advisory. You edit from the findings; the skill never touches your words or your facts.

The deterministic pre-scan

A Python script gathers the evidence a regex can catch, so the reading starts from facts rather than impressions.

$ python3 scripts/scan_ai_patterns.py draft.txt

Reply mode inverts the register rules:

$ python3 scripts/scan_ai_patterns.py reply.txt --mode reply

It exits non-zero when at least one tell fires, and it stays conservative below 50 words, where detectors are unreliable. The score itself comes from the full reading, not from the scan alone.

Under the hood

What ships with the skill

references/ai-writing-patterns.md

The full pattern taxonomy: every banned structure, the detection list, and the reply-mode signals with regex anchors.

references/calibration-notes.md

The thresholds and research basis: combination scoring, the length gate, density rules, and the non-native-English caution.

scripts/scan_ai_patterns.py

The deterministic pre-scan for the regex-detectable tells, with a reply mode and a word-count gate.

Install and run

Add the detector skill

Use the public TVL Skills repository with the Agent Skills CLI.

Install only this skill

$ npx skills add danlex/tvl-skills --skill tvl-detect-ai-writing

Install all TVL skills

$ npx skills add danlex/tvl-skills

Check a LinkedIn draft

Use $tvl-detect-ai-writing to check this LinkedIn draft for AI patterns. Mark the exact phrases, score it, and tell me the top fixes before I publish.

Audit an article from a URL

Use $tvl-detect-ai-writing on this article URL. Analyze the body only and return the Pattern Score with the validation checklist.

Check an X reply before sending

Use $tvl-detect-ai-writing in reply mode on this draft reply. Tell me whether it carries a real payload and a stance, or reads as slop.