Free and open source · MIT
A markdown-native writing desk driven by Claude Code. Move a piece from idea to published, steered by a voice you tune, without checking a word of your writing into a shared repo.
The scriptorium was the room where texts were composed and copied. This is the shareable furniture for that room. Your desk is your own.
Skills, starter styles, templates, docs, and tools. No personal writing ever lives here. Fork it: your desk mounts your fork, you tune the framework as you write, and you send back what is worth sharing.
A separate repo holding your pieces, drafts, logs, and trained voices. It mounts the framework as a git submodule, so your writing keeps its own history and stays yours.
A style steers how Claude writes. You train it the way you refine anything here: draft, correct, and let the corrections accumulate.
Start or continue a piece in a chosen style. The style is structured context, not a fine-tuned model: a constitution, a few knobs, and exemplars of the voice.
An editor's pass against the piece's own style, with concrete feedback. A separate style-audit is the linter: a mechanical sweep that reports every stray line.
Your corrections accumulate in an append-only file. A deliberate, gated pass folds them into the style's constitution. Nothing is silently rewritten.
One piece goes out to Substack, LinkedIn, and your own sites from the same markdown, with the live copy checked against the draft rather than assumed.
A desk that remembers your voice and keeps your drafts, logs, and corrections in a private git history that only you hold.
Citation and reference checks, a reference shelf, and an append-only log that is evidence of what you actually did, when.
Plain Python and markdown. Skills, templates, a CI suite, and a scaffolding tool. Read the whole thing in an afternoon; extend it in a day.
This is how MuffinLabs builds Claude-Code-native workflows: a public framework, a private instance, and evidence at every step. We build the same shape for clients.
The writing loop needs nothing but Claude Code and a git repo. Publishing needs more, and the README says so rather than implying it works everywhere.
Fork the framework first, then scaffold a private desk from your fork. Your desk mounts your fork, so the framework is yours to tune as you write, and Claude Code can change it as it works. Pull from upstream when you want what changed here.
# 1. fork github.com/muffin-labs/scriptorium to your account, then
git clone git@github.com:YOU/scriptorium.git
scriptorium/tools/new-desk ~/code/writing-desk --framework git@github.com:YOU/scriptorium.gitA public framework, a private instance, and evidence at every step. We build Claude-Code-native workflows like this one for teams.