Skip to content

Let a script do the boring half

About a third of proofreading is mechanical. Write it once, run it forever, and never get bored at article thirty.

7 min read

Level 0

Curious

0 XP
150 XP to ApprenticeNo streak yet0 badges0% done

A human gets tired at article three. A script does not. It applies the same standard to article forty as it did to article one, in about a second.

Everything in pass 2 that can be counted, should be counted by a script.

article-check.py    checks ONE draft
  em dashes                 must be 0
  curly quotes              must be 0
  spelling variant          consistent throughout
  body lists                <= 3 (guides)
  list items                <= 10, plain, no bold labels
  tables                    >= 2
  FAQs                      exactly 5
  section starts/ends       never on a list or table
  anchor text               <= 5 words
  key takeaways             present, 3-4 bullets

batch-check.py      checks a BATCH against itself
  repeated 8-word runs      across every pair
  sources cited more than once
  case studies reused
  missing CTA or link set

system-audit.py     checks the RULES against each other
  every file the map names actually exists
  the pass count agrees everywhere, including spelled out
  no client file restates a global rule
Three scripts, three scopes: the draft, the batch, the rules themselves.

The third one is the one people never build

A rule audit checks that your rules agree with each other. It sounds unnecessary until the first time two files disagree and you spend an afternoon on it.

What went wrong2026-07-17

The number that was spelled out

The system moved from three passes to five. Every file was updated. A search for the numeral "3" came back clean. But the proofreading skill's own completion gate still had the old count written as a word, so the file that enforced the rule was telling itself the old number.

Cost: Caught by an audit script, not by a person. It would have quietly under-checked every future article.

The rule that came out of it. Write an audit that checks the pairs that must agree, and include the spelled-out forms. Then extend the audit every time you add a rule. An audit only protects what it checks.

You do not need to write these yourself

Describe the checks in plain English and ask Claude to write the script. Then break each check on purpose and confirm it fails. A check you have never seen fail is not a check, it is a decoration.

Do this now

  1. 1

    Pick your five most boring, most repeated corrections.

    The ones you have fixed more than twice. Those are already rules, they just are not written down yet.

  2. 2

    Ask for the script.

    > Write a Python script that checks a markdown article for:
    > [your five checks]. Print the line number for each finding.
    > Exit 0 if clean, 1 if anything fails.
  3. 3

    Negative-test every single check.

    > Break each check on purpose, one at a time, confirm the script
    > catches it, then restore the file and confirm it goes clean again.

    This is the step everyone skips, and it is the only thing that proves the script works. A green run on a clean file proves nothing.

Finished reading?

Mark it done to bank the XP and keep your streak alive. Any challenges on this page score separately, so you can come back for a perfect run later.