Skip to content

What The Checker Flags

m4bwav edited this page Oct 4, 2026 · 1 revision

tells.py matches a fixed table of patterns. Everything it knows is in two lists at the top of the script, STOCK_WORDS and RULES, plus a few checks of structure. python skills/everwrite/scripts/tells.py --list prints the table. This page describes the script on master at commit 0673975 (2026-10-03).

Strong and weak

A strong hit is a pattern that almost never appears in text a person wrote with care. One strong hit makes the checker exit 1. A weak hit is listed for judgment and never changes the exit code: plenty of good human writing has a long sentence or a rather than.

What it reads and what it skips

The checker works on prose only. Before matching it blanks out:

  • YAML frontmatter at the top of the file
  • fenced code blocks and inline code
  • HTML comments
  • URLs and the targets of markdown links and link references
  • anything between lines holding only <!-- tells: off --> and <!-- tells: on -->

Patterns match within a paragraph, ignoring case. A heading or a table row is a paragraph of its own, and each list item starts a new one. A code fence that never closes stops the check at that line, and the checker adds a weak input hit saying so.

Two checks are the exception and read every line, code included: hidden-char and odd-space. An invisible character inside a code block is as much a problem as one in prose.

The categories

Category Severity What it catches
dash strong An em or en dash, or -- between spaces. Off with --allow-dashes.
residue strong The chat wrapper: praise, offers, sign-offs, announcements of what follows, knowledge-cutoff lines, phrases that excuse missing sources.
markup strong Citation markers and tracking parameters that chat apps leave in copied text.
placeholder strong Unfilled template slots such as [insert name] or a date written 2026-xx-xx.
contrast strong or weak The not-X-but-Y family. The forms with not just, more than just, doesn't mean ... It means and negative listings are strong. A negative sentence followed by one starting It ... is weak, and so is rather than.
setup strong Staged openers, reveals with a colon, staged candor and arguing with a position nobody took.
inflation strong Inflated significance and sales language.
rider strong A comma followed by an -ing word such as highlighting or ensuring added for weight.
vocabulary strong or weak Words from the stock list. Two or more different listed words in one paragraph are strong; one alone is weak.
authority weak Unnamed experts, studies and observers.
copula weak serves as, stands as, boasts in place of is or has.
association weak associated with, connected with where a relationship could be named.
qualifier weak Stacked hedges such as could potentially.
adverb weak Intensifiers such as really, truly, fundamentally.
transition weak A sentence opening with Additionally,, Moreover,, Furthermore, or Notably,.
emoji strong An emoji in prose.
bold-label strong A list item that opens with a bold label followed by a colon or a dash.
repeated-heading strong A heading straight under a heading with the same words, or with --wiki a first heading repeating the page title.
repeated-text strong The same paragraph or list item twice in a row.
hidden-char strong Zero-width characters, the soft hyphen, bidirectional controls, tag characters and variation selectors.
odd-space weak No-break, narrow no-break and figure spaces.
title-case weak A heading with three or more significant words, all capitalised.
divider weak Two or more horizontal rules in a file.
curly-quote weak Curly quotation marks.
decoration weak Arrows in a heading or list item.
long-sentence weak A sentence over --max-words words, 30 by default.
repeated-opening weak Three sentences in a row starting with the same word.
input weak A problem with the file itself, such as an unclosed code fence.

Conditional sentences

Two of the strong contrast patterns skip a sentence that opens a condition. If the value is not set, it is zero is plain technical prose, so words such as if, when, unless and because before the match turn it off. The exemption came from the review before the first public release (the skill's CHANGELOG.md, C-20260925-6).

The stock words

The list holds 47 words and phrases, such as delve, tapestry, leverage, robust and seamless, with their common inflections. --list prints it in full. The skill tells the agent never to swap one listed word for another, since the swap is still on the list.

What it does not judge

The checker sees patterns a regular expression can find. It does not judge structure, rhythm, a list of three chosen for sound, or whether a fact was invented; the skill's last step is a reread for those. It gives no score and no guess at who wrote the text.

Clone this wiki locally