Negative correction
The strongest structural tell. Flagged in both variants, and escalated when it opens two or more paragraphs.
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 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.
| Score | Reading |
|---|---|
| 0-2 | Natural, specific, human writing. A single em dash or one list of three is style, not a tell. |
| 3-4 | Mostly natural with isolated formulaic elements. One slogan closer on its own stays here. |
| 5-6 | Noticeable patterns. Readers may sense a template even without naming it. |
| 7-8 | Heavily templated. Multiple tells stack across the piece. |
| 9-10 | Strongly AI-patterned. The structure, phrasing, and rhythm all read as generated. |
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.
The strongest structural tell. Flagged in both variants, and escalated when it opens two or more paragraphs.
Engagement bait dressed as insight, and final lines engineered to sound memorable.
Transitions that add structure without information, and sentences that only promise what comes next.
Thought-leader hooks and engineered rhythm devices in the first sentence of a post or a paragraph.
Words empirically overused by alignment-trained models. Near-deterministic when paired with another tell.
Judged by frequency across the whole text, so a single appearance stays under the threshold and unflagged.
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.
The skill gathers the mechanical evidence, then reads for the patterns a script cannot judge, and only then reports a score.
Use inline text directly. For a URL, fetch and keep only the article body. Mark X replies as reply mode.
Run scan_ai_patterns.py to flag the regex-detectable tells: negative correction, em-dash density, hashtags, discourse openers, focal words, tricolons.
Mark the exact phrase behind every pattern. No paraphrasing, no invented issues.
Penalize density and stacking, not isolated tells. Require at least two distinct categories before any non-pass reading.
Highlighted text, detected patterns, a diagnosis, a validation checklist, and a ranked list of fixes. No rewrite.
The report is advisory. You edit from the findings; the skill never touches your words or your facts.
A Python script gathers the evidence a regex can catch, so the reading starts from facts rather than impressions.
Reply mode inverts the register rules:
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.
The full pattern taxonomy: every banned structure, the detection list, and the reply-mode signals with regex anchors.
The thresholds and research basis: combination scoring, the length gate, density rules, and the non-native-English caution.
The deterministic pre-scan for the regex-detectable tells, with a reply mode and a word-count gate.
Use the public TVL Skills repository with the Agent Skills CLI.