Enforce anti-AI writing patterns with Vale#1881
Merged
Merged
Conversation
Port the anti-AI prose rules from the book project as a local AIPatterns Vale style, translated for a conversational blog: - Errors (block CI): hedging openers, meta-commentary, "This ensures..." constructions, performative enthusiasm - Warnings: formulaic transitions, setup phrases - Suggestions: negation-antithesis, rhetorical questions, weak openings, vague intensifiers (deliberate voice, never gate) Vale was configured but never ran in CI (no install step) and the upstream BenBalter pack crashed Vale 3.x (removed `link` scope, fixed in vale-styles v0.0.2). Wire it up: - Install pinned Vale + sync packages in the Content Linting job - Lint .mdx posts too ([formats] mdx = md; script/vale globs) - Check in .github/styles/AIPatterns past the styles gitignore - Demote stylistic package rules (cliches, very, e.g., US dates, quoted profanity) to warnings so error level gates real problems Fix the genuine errors the new error level surfaced across legacy posts: doubled words, stray spacing, unhyphenated TODOs in prose, a handful of AI-pattern phrases, and an orphaned "I" line. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
benbalter-github-com | a7d3abb | Jun 08 2026, 02:46 AM |
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.
Ports the anti-AI prose rules from the book project into a local
AIPatternsVale style, translated for a conversational blog, and makes Vale actually run in CI.What's in here (three distinct kinds of change)
1. Lint infrastructure
.github/styles/AIPatterns/(11 rules), tiered for this site's voice:vale sync+ style cache to the Content Linting job.linkscope). Fixed upstream in vale-styles#1, released as v0.0.2, URL bumped here..mdxposts (28 of them) are now linted too ([formats] mdx = md+script/valeglobs).e.g.,, US date formats, quoted profanity, duplicate So/But flags) are demoted to warning in.vale.ini; the rest were genuine and are fixed below.2. Mechanical fixes in legacy posts (typos the new error level caught)
TODOexamples wrapped in backticks,10AM→10 AM, lowercase domain in CONTRIBUTING heading, lowercased a.PDFlink textVale.Repetitionoff-switch for the law-review post whose legal citations (U.S.C.C.A.N., L.L.) false-positive3. Prose edits in legacy posts — review these
Eleven small rewrites remove now-error patterns from 2011–2018 posts. They're all filler-removal ("It's worth noting that…", "As noted above,", "as mentioned earlier,", "Let's take a look at" → "Here are", "This creates a" → "The result is"), but they do alter published text—worth a skim in the diff.
Dramatic flourishes ("Spoiler alert: it didn't.") were deliberately kept in the vintage posts and demoted to warning—they're authentic human voice there; new writing still gets flagged visibly.
Verification
script/vale(error level): 0 errors across 204 files\bwrapping)script/cibuild-contentpasses locally (remark, textlint, vale; harper/languagetool skip without local installs)npm run buildpasses🤖 Generated with Claude Code