Scriptorium

Local document skills for independent writers — copy, correct, illuminate.

A Claude Code plugin that works a text the way a medieval book workshop did. Your files stay on your machine — your text goes only where your Claude conversations already go (Anthropic's API), and nowhere else: no extra services, no uploads, findings written straight to disk. Built for fidelity over flash: precision before recall, nothing auto-applied, the writer always has the final say.

❧ ⁘ ❧

What a scriptorium was

A scriptorium (Latin, “a place for writing”) was the room in a monastery where books were made before the printing press. The work was divided among specialists: a copyist faithfully reproduced the exemplar; a corrector checked each copy against the original and emended errors; an illuminator added the initials and gold leaf that made a finished text rich and legible.

Those three roles map cleanly onto what a writer still needs done to a document — so they’re the roles here, now filled by five skills. Reading and writing aren’t two camps; they’re one continuum, and these tools work a text from both directions.

Copyist reproduce
extract — pulls clean, faithful text out of a messy source so the others have clean copy to work on.
Corrector correct
proofread for objective language slips, collate to audit every citation against the author’s own sources.
Illuminator illuminate
inside-frame reviews a text from inside its own frame into a personal operating manual; index feeds it the key terms and load-bearing quotes first.
❧ ⁘ ❧
Copyist · the clean copy

extract

A faithful cleanup pass that turns a messy extraction — a PDF→text or OCR dump, pasted e-book text, an auto-transcript — into clean, re-flowed prose: page numbers and running heads stripped, shattered sentences reassembled, words broken across a line-end rejoined. It’s the upstream stage the other skills want — clean input means fewer artifacts hiding real errors for the Corrector, and reliable, Ctrl-F-locatable quotes for the Illuminator. Its signature is fidelity over fluency: it removes only what is objectively not the author’s words, and defaults to keep whenever a line might be the author’s rather than an artifact — every judgment call is flagged, never a silent cut. A mechanical sweep proposes candidates; you dispose. Book-length input fans out into parallel clean/verify agents.

Example

> Clean up this OCR dump — ~/scans/chapter-3.txt — keep the words exactly.

# it proposes cuts; you rule on each. crude local sweep first:
$ python skills/extract/extract_check.py chapter-3.txt
# book-length? it fans out into parallel clean + verify agents.
What it refuses Editing, rewriting, summarizing, condensing, translating, or fixing grammar and typos. Cleaning isn’t correcting — those are the Corrector’s call, made after this pass.
Corrector · the slips

proofread

★ Proven on real work — ran on a published author's book (a writer with a wide readership) and surfaced dozens of confirmed, hand-validated findings.

A precision-first proofreading pass that finds objective language errors only — wrong-word swaps (lead/led, its/it’s), dropped words, doubled words, subject-verb agreement, punctuation, typos — and never touches style, voice, or a deliberate choice. A false alarm on a polished writer is worse than a missed error, so a skeptical verifier defaults to reject, every finding carries a confidence tier, and nothing is auto-applied: you get a triage table to rule on. It learns your voice over runs through an anti-patterns.md file that remembers both your real tics and your intentional quirks.

Example

> Proofread ~/writing/my-essay.md

# book-length? it fans out into parallel find/verify agents.
# or run the standalone mechanical sweep — pure Python, no model:
$ python skills/proofread/proofread_check.py my-essay.txt -o findings.csv
What it refuses Developmental editing, restructuring, rewriting, or style and clarity feedback. If you want those, it says so and stops.
Corrector · the sources

collate

A citation audit that checks a document — or a podcast transcript — against the author’s own provided sources: does the quote really appear in the paper it’s attributed to, do the cited numbers match, does “the study says X” actually hold, does the document contradict itself? It works only from source files you supply on disk — never the open web — so the folder is the entire universe of ground truth. A false “misquote” accusation impugns a careful author, so it’s the worst output the skill can produce; the verifier defaults to reject, and caption garble in auto-transcripts is flagged as a transcription artifact, never as the author’s error.

Example

> Audit this Based Camp transcript against the sources in ~/research/caplan/
#  → episode.txt checked claim-by-claim against the folder’s papers
#  → writes episode_audit.csv: each quote, its source, the verdict
What it refuses Deciding whether a claim is true, fact-checking against the open web, or judging any claim for which no source was provided — those are listed as unauditable, never judged.
Illuminator · the meaning

inside-frame

★ The house favorite — the beefiest skill in the scriptorium, and the one I plan to run on every book that might change how I live.

An enthusiastic, analytically sharp review of a book or essay from inside its own framework — in the Astral Codex Ten tradition of long, rigorous, openly enthusiastic reviews — welded to a personal operating manual of concrete, implementable frameworks drawn from the text: an if/then table traceable to passages, a worksheet that forces an honest admission, the one change to install now. Built for heterodox or unconventional works you want to understand on their own terms rather than hold at arm’s length. Not a jailbreak — it navigates Claude’s own evenhandedness carve-out, that a request to argue for a position is a request for the best case its defenders would give.

Example

> Give me a steelman review of The Pragmatist’s Guide to Relationships,
  inside its own frame — plus an operating manual I can actually use.

# portable version: fill skills/inside-frame/template.md, attach the
# PDF at the top of a fresh Opus chat, set thinking effort to high.
What it refuses A neutral summary, a balanced or mainstream-critical book report, or fact-checking. It argues the strongest case, honestly — it doesn’t perform balance.
Illuminator · the terms

index

A precision-first indexing pass that turns a clean text into two local artifacts a review can stand on: a book_vocabulary block — the author’s own coined or redefined key terms, each with the author’s definition and a Ctrl-F locator, formatted to paste straight into inside-frame’s template — and a quote-bank of the most load-bearing verbatim quotes (theses, definitions, striking claims), organized by theme. It’s the helper that feeds the Illuminator: that vocabulary block does the heaviest lifting in a frame review, and generic vocabulary is exactly what collapses an operating manual into generic advice. Its discipline is selectivity over completeness — ~8–15 terms and ~20–40 quotes a book, because the cut is where the value is — under a verbatim rule where every quote appears exactly in the source, certified by a mechanical gate.

Example

> Index The Pragmatist’s Guide to Relationships for an inside-frame review.

#  → *_vocabulary.md: the author’s coined terms, ready to paste into inside-frame
#  → *_quotes.md: ~30 load-bearing verbatim quotes, organized by theme
# then the verbatim gate certifies each quote is really in the source:
$ python skills/index/index_verify.py book_quotes.md the-book.txt
What it refuses Summarizing, paraphrasing into a digest, interpreting, or giving an opinion — anything non-verbatim. If you want the review itself rather than its raw material, that’s inside-frame.
❧ ⁘ ❧

Install

A Claude Code plugin

  1. Open the Scriptorium repo in Claude Code.
  2. Tell Claude to install the plugin for you — it’s a standard local plugin, so you don’t need to wire anything up by hand.
  3. The skills then trigger from their own descriptions: just ask Claude to proofread a draft, check your citations, or review a book inside its frame.

The inside-frame template and the proofread mechanical sweep also work standalone, without the plugin installed.