Workflows and skills

The press ships two kinds of authoring machinery as package data, so a book gets it with no copy-paste and no drift: skills (guides an agent reads before it writes prose or directs art) and workflows (multi-step agent procedures). Both are versioned with the press, listed by the CLI, and resolved from the installed package first.

Run a workflow with the Workflow tool by name from inside a book. The scaffold lays the workflows into a book’s .claude/workflows/, stamped with the press version so drift is visible.

The skills

Under src/press/data/skills/:

The workflows

Under src/press/data/workflows/:

The jargon checker: two copies, one contract

The jargon checker exists twice on purpose, and the two copies are held in lockstep by a parity contract rather than by hope.

Both read the one watchlist, src/press/data/skills/overused-jargon/references/watchlist.csv.

Why a copy at all

The skill has to be usable without installing the press. Extracting a shared engine would make the portable copy depend on the package and defeat that. So the two files carry the same logic, and a contract proves they stay equal instead of a shared import enforcing it.

The parity contract

A matching, normalization, allowlist, or reporting fix must land in both files. The contract closes the drift on every press selftest and every test run:

The corpus is versioned (tests/corpus/jargon_parity/VERSION and the version key in cases.yaml); bump it when a case is added or changed so a book pinning an older press can tell the contract moved.

This is the invariant INV-editorial-jargon-parity: the package checker and the portable skill copy return equivalent findings and refusals for the same text and watchlist, so a fix or rule cannot land in one execution surface unnoticed.