filter-tellslisted
Install: claude install-skill petar-djukic/writing-skills
# filter-tells: AI Writing Detection and Correction
Detects mechanically, removes editorially, and hands voice restoration to
`match-voice`. Three detection layers — lexical, structural, semantic — flag
passages; Claude then rewrites them under the convergence rules below, and
re-scans. There is no deterministic strip: a banned word is a one-word swap,
but a cadence tell needs the sentence rewritten, and that is judgment.
Filtering leaves prose that is *neutral* — no tells, but no voice either. When
the passage has to sound like the author, that is `match-voice`'s job.
*Renamed from `de-ai` (2026-07). The old name implied the skill only removed;
it detects, and the removal is editorial.*
## Standing Warning: Scripts Are Blind to Rhetorical Patterns
The two scripts (`detect-lexical.sh`, `detect-structural.py`) measure surface metrics only — banned words, opening diversity, sentence length variance, dash density. They **cannot** detect the rhetorical patterns that constitute most of the AI signal in real prose:
- Declarative pairs ("X is Y. Z is W.")
- Definition-by-enumeration ("X extends in two ways")
- Meta-narrative bridges ("The analogy breaks in one place")
- Triple parallels ("clearer instructions, tighter constraints, fewer ambiguous cases")
- Comprehensive enumerated sweeps in parentheses
Partial exception: `detect-structural.py` now has a `detect_antithesis` check that catches the lexically-marked subset of negation-then-affirmation ("X is not Y. It is Z.", "Th