proofread

A proofreading workflow for OCR text, meaning text produced by recognizing words from scanned pages. It checks historical documents against their page images and creates a review list without changing the original text.

In plain words
What is it for?
Use it to classify the document type, compare Markdown text with scanned pages, mark OCR errors and formatting issues, and save a page-grounded proofreading report.
Why use it?
OCR can misread characters, names, punctuation, or older writing styles; this workflow records possible errors and uncertain readings for human review.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/midnightdarling/collate/proofread
Any agent
npx skills add MidnightDarling/collate --skill proofread
Clone the repo
git clone --depth 1 https://github.com/MidnightDarling/collate

Made for: Claude Code, Codex.

Per session 185 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,461 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00185 $0.02461
Opus 5 $0.00093 $0.01230
Sonnet 5 $0.00037 $0.00492
Haiku 4.5 $0.00018 $0.00246

Measured 2d ago against content hash b9da7dcb499e, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

proofread scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

The scan reads SKILL.md. This mod also ships 2 executable files (scripts/build_page_review_packets.py, scripts/verify_page_grounded_review.py), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/proofread/SKILL.md · 213 lines

How it starts

The opening of the file, as written. The whole thing — 213 lines — stays where its author put it; the contents beside it link to each section on GitHub.

校对 — 历史文献三类知识库 + 专家 Agent

Task

historical-proofreader agent 喂一份 OCR 产出的 Markdown,让它输出一份校对清单。用户最核心的工作(校对)就围绕这份清单展开。

你的责任是:

  1. raw.md + prep/pages/page_*.png 构建 review/page_review_packets.json,把“哪一页原图对应哪一段 OCR 文本”固定下来
  2. 加载 prep/pages/page_*.png 作为第一类证据(subagent 必须对着原图判 OCR 对错,不能只盯 Markdown 自证)
  3. 读用户给的 Markdown
  4. 判断文献类型(也可以用户指定)
  5. 加载对应 reference 文件到上下文
  6. 调用 historical-proofreader agent,传入文本 + reference + page_images_dir + page_packets_path
  7. verify_page_grounded_review.py 验证这份 review 是否真的覆盖了全部页面
  8. 把 agent 返回的标注清单保存到工作区的 review/raw.review.md,并在 _pipeline_status.json 记录 proofread_method: "page-grounded"
  9. 刷新工作区 README.md,然后用 open 打开 review 供用户审阅

目录约定:清单固定落在 <workspace>.ocr/review/raw.review.md,不落在工作区根目录。权威规范见插件的 references/workspace-layout.md

Process

Step 1:读输入

INPUT="<markdown-path>"
test -f "$INPUT" || { echo "文件不存在"; exit 1; }

Read 这个 Markdown 前 50 行,判断文献类型(或读 meta.json 如果存在)。

同时生成 deterministic page packets:

INPUT="<markdown-path>"
OCR="$(dirname "$INPUT")"
python3 "${CLAUDE_PLUGIN_ROOT}/skills/proofread/scripts/build_page_review_packets.py" \
  --workspace "$OCR"

产物固定是:

<workspace>/review/page_review_packets.json

Step 2:判定文献类型

提示 类型
竖排标志「 」夹杂、繁体、无现代标点、年号纪年(乾隆、道光)
繁体或繁简混、有「.」等旧式标点、年份在 1912-1949、出现"民國"年号 republican 民国排印
纯简体、现代学术格式、年份在 1980 后、参考文献 GB/T 或 APA modern 现代简体

命令行 --type=xxx 覆盖自动判断。不确定就问用户。

Step 3:加载对应 reference

根据类型读对应文件到上下文:

类型 reference 路径
classics ${CLAUDE_PLUGIN_ROOT}/skills/proofread/references/traditional-classics.md
republican ${CLAUDE_PLUGIN_ROOT}/skills/proofread/references/republican-era.md
modern ${CLAUDE_PLUGIN_ROOT}/skills/proofread/references/modern-chinese.md

为什么分开:古籍异体字表塞不进民国校对会浪费上下文;反之亦然。三份分别加载,agent 不被不相关知识干扰。

Step 4:调 historical-proofreader agent

用 Task / Agent 机制调起 historical-proofreader(agent 定义在 plugin 的 agents/historical-proofreader.md),传入:

Read the full file on GitHub · 213 lines

Files

What ships with it

5 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 213 lines · 185 tokens per session scan A b9da7dcb499e

Subscribe to this mod's changes

proofread is a skill published in the GitHub repository MidnightDarling/collate (6 stars, last pushed 3mo ago), licensed Apache-2.0. It adds 185 tokens to every session and 2,461 once invoked, about $0.0009 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.