A Claude Code plugin for novelists Version 0.2.0 · Apache-2.0 · Windows & Linux
Vellum A novelist's daily tool

A working novelist's daily tool for Claude Code

The novel is long. The machinery should hold.

Vellum is a Claude Code plugin for people writing books. One command runs the chapter loop. Three hard gates read their evidence from disk. Everything else is advisory, and silent when clean.

8Commands
16Agents
34Skills
7Hooks
0Runtime dependencies

Why Vellum

Long fiction is where workflows fall apart.

Drafts drift toward the statistical average. Critique leaks into drafting, and everything starts flattering itself. Continuity dies at context compaction, somewhere around chapter nine. “Please be consistent” is a wish, not a mechanism.

Evidence, not claims

Gates read from disk

An agent can say the outline was approved. Gate 1 checks the outline file's frontmatter. Claims do not unblock prose; artifacts do.

Stance isolation

Critique never shares a context with drafting

The writer cannot read the critiques. The critics cannot write prose. The coordinator owns the gates from artifacts only.

Deterministic engine

The boring checks run in Python, not tokens

Dead characters reappearing, promises out of order, props teleporting, knowledge arriving before its chapter — a stdlib-only engine checks what a hash already knows.

Continuity across months

State survives the session

A fixed one-screen state card, rebuilt mechanically and printed at every session start. Put the manuscript down for a month; pick the thread back up in one read.

Author authority

You are the editor-in-chief

Call a finding intentional and it is recorded as an exemption in your own words, never re-raised. If the underlying fact changes, it re-arms exactly once.

Quiet by default

Advisory unless it matters

Prose tells, continuity lints, voice drift: they surface only when they have something to say, and stay silent when clean.

The gate model

Three hard gates. Exactly three.

Each gate reads its artifact from disk — never a claim from chat. Predicates fail open on genuine uncertainty: a missing Python runtime can never mis-block you. The one deliberate exception is gate-input protection, which fails closed when it cannot verify session context.

Outline before prose

Any write into manuscript/chapters/ requires an author-approved outline. Enforced by hooks on Write and Edit and on Bash: redirection, heredocs, sed -i, and copy-laundering are all checked.

Satisfied bywork/outline/chapter-NN.md · approved: true · state check clean

The blind reader

A chapter you flag pivotal: true cannot be accepted without a verdict from an agent that saw the chapter and the previous tail — and nothing else. No outline, no plan, no context to be fooled by.

Satisfied bywork/critique-reports/blind-chapter-NN.md · verdict ≠ LOST · self-recorded run stamp

Beta reader before export

Export waits for a PASS from the four-reader beta protocol: every axis at least 7, mean at least 7.5, no put-down point in chapters 1–3. The engine enforces the threshold; the muse does not get a vote.

Satisfied bywork/critique-reports/readiness-report.md · verdict: PASS

Everything else is advisory and silent when clean: the post-write prose net, cold-read BLOCKER issues, the disruptor lane, the persona panel. Two further gates — voice_debt_gate and stop_gate — ship off by default.

Inside the plugin

An editorial desk, not a chat window.

You talk to the muse. The muse routes isolated specialists. The specialists use the engine and the skills. Hooks enforce the rules no one can talk their way around.

The Vellum site home page: a parchment-coloured editorial page with the headline 'The novel is long. The machinery should hold.' and a specimen state card.
Fig. 1 — The daily surface: one command, three gates, and the state card that puts you back at the desk.
The generated reference page listing Vellum agents, their model tiers, and the skills each loads.
Fig. 2 — A reference generated from the repository itself: 16 agents, 8 commands, 34 skills.

First session

From an empty folder to a chapter.

No Node, no pip, no WSL, no build step. You need Claude Code, Git (the hooks run under its bundled bash), and a Python ≥ 3.8 interpreter on PATH.

# in Claude Code
/plugin marketplace add FiredMosquito831/my-writing-companion
/plugin install vellum@my-writing-companion
# in your novel folder
/vellum:init
/vellum:status
/vellum:write-chapter next

Setup interviews you — genre, POV, progress, and three to five samples of your own prose. Those samples become the measured voice baseline. The engine is copied into your project and the first state rebuild runs for you.

The chapter loop then runs outline → your approval → draft → critique → acceptance → knowledge capture. Interrupt anywhere; the state card carries resume. Only you set the pivotal flag, and only you accept a chapter.

The full install and quickstart →

Architecture

Four layers, deliberately separated.

The deterministic engine, the hooks, the agents, and the skills each own a different kind of decision. None of them is asked to do another's job.

01

The engine

scripts/vellum and scripts/vellum_lib/. Python ≥ 3.8, stdlib only. State rebuild and check, ledger continuity, word bands, measured style statistics, context packing, exemptions, and export — markdown bundle and a stdlib EPUB. Copied into your novel repo so it runs from the project root.

02

The hooks

Harness-enforced: the outline gate on both write paths, the advisory post-write prose net, and the session lifecycle — state card on start, snapshot before compact, pending-capture reminder on stop, mechanical close-out when the writer finishes.

03

The agents

16 specialists, 11 on Opus and 5 on Sonnet. Critics and readers are read-only by frontmatter; the writer may write only under manuscript/ and work/drafts/. Critique, drafting, and memory capture never share a context.

The fourth layer is the methodology: 34 skills whose resources load on demand — craft references, ledger schemas, gate rubrics, the cold-read protocol, voice work, and the series operator's manual. Read the architecture in full →