Add proofread + readability checks, severity tiers, Vale prior-art note - #7
Merged
Merged
Conversation
Extends the prose pass to cover the rest of the cold-read findings beyond
AI-isms — "was this proof read?" and "why am I reading this?":
- prose.mjs:
- proofread() — high-confidence mechanical slips spell/grammar miss:
doubled words, double/stray spaces, space-before-punctuation, missing
space after a comma, repeated punctuation, mixed straight+curly quotes.
- readability() — over-long sentences, and (body/meta) dense prose by
Flesch reading-ease; a proxy for copy a reader bounces off.
- spellCheck() — stop flagging English contractions (isn't, we're) as
misspellings.
- expand the AI-tell lexicon from the Wikipedia / vale-signs-of-ai-writing
corpus (furthermore, moreover, meticulous, pivotal, landscape of, …).
- audit.mjs — wire both in; add Vale-style severity tiers to findings
(✗ correctness/honesty · ⚠ ai-ism/proofread · · suggestion), sorted.
- anthropic.mjs — teach the keyed LLM path the same two rules.
- README — document the new checks, the tiers, and the Vale prior art.
- test.mjs — cover proofread, readability, the contraction fix.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011GNDVjvsbTPsbWV9fEyjLt
bdelanghe
marked this pull request as ready for review
June 23, 2026 02:48
bdelanghe
added a commit
that referenced
this pull request
Jun 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #5. Covers the rest of the cold-read findings beyond AI-isms — "was this even proof-read?" and "why am I reading this?" — and adopts the one good idea from the Vale prior art (severity tiers). Prior-art adoption tracked in #6.
New prose checks (deterministic, uncached, every symbol)
proofread()— high-confidence mechanical slips that spell/grammar miss: doubled words (the the), double/stray spaces, space-before-punctuation, missing space after a comma, repeated punctuation (!!), mixed straight + curly quotes, leading/trailing whitespace. Conservative by design — every rule is a real slip.readability()— copy a reader bounces off: over-long sentences (>28 words), and forbody/meta, genuinely dense prose by Flesch reading-ease. A deterministic proxy for "I didn't get through this."Quality fixes
spellCheck()no longer flags English contractions (isn't,we're) as misspellings — removes a real source of false "spelling" noise.vale-signs-of-ai-writingcorpus (furthermore,moreover,meticulous,pivotal,landscape of, …).Severity tiers (à la Vale)
Findings now render in tiers, sorted:
✗correctness/honesty (ungrounded, typos) ·⚠ai-ism/proofread ··suggestion. Wired inaudit.mjs.Parity + docs
anthropic.mjs— the keyed LLM auditor is told the proofread + readability rules too.README.md— documents the new checks, the tiers, and the Vale prior art (links Adopt Vale's AI-tell rules instead of hand-maintaining the lexicon #6).test.mjs— coversproofread,readability, and the contraction fix.Verification
node test.mjspasses. Sample tiered output on the demo catalog:(The contraction fix means
isn'tno longer shows up as a spelling error here.) As with #5, fullnode audit.mjswas verified locally with stubs for the network-blocked JSR deps; CI has JSR access.🤖 Generated with Claude Code
Generated by Claude Code