Thirty-six commands. Seven lines.
Stet is a plugin for Claude Code. It keeps agents off the sentences you wrote and keeps every figure true to the command that produced it.
Work out what the project is. Write to it. Say whose the words are. Hold it against its sources. Cut it down. Keep it current.
Those six sentences are the six coloured lines below, in that order. The seventh is the one you start every session on. Which one do you need? Whichever of those six describes your afternoon.
STET a site, 69 files, 101,071 words WHAT YOU MAY EDIT 67 open, 2 closed. Ask before editing anything closed. Do not release it yourself.
Why first? Because the hook will refuse an edit you had no way to see coming. One call tells you which files are closed, what the project sounds like, and what to do next.
Establish
You have just arrived, and nothing here knows what this project is or how it should sound
- initWhat this project is, who reads it, what it must do
- styleThe decisions, as opposed to the voice
- style-sheetDecide the variants it found, on one page
- voiceDerive or define the house voice
- voice-statsWhat a body of writing measurably does, in figures
- iaWhat exists, how it relates, what each page is for
- ingestRead what is there, claim it, report it
Compose
There is a blank page, and a house voice you would rather not break on the first draft
- outlinePlan a piece before writing it
- writeAuthor in the voice, to the IA
- expandA stub into a finished piece
Evaluate
The page reads fine, and you have no idea whether any of it is still true
- auditThe sweep, ranked by what it costs
- critiqueA scored review where every score is computed
- citeDoes it exist, is it retracted, is it the right version
- standingWhat each source was last time, and what moved
- verifyEvery claim against its real source
- sumsThe arithmetic a document does on itself
- checkWhere the writing disagrees with the style sheet
- tellsThe constructions that read as machine-written
- measureWhether this matches the voice it claims to be in
- claimsEvery claim that failed, and what to do
Refine
It says the thing, eventually, and reads as though nobody was in the room
- tightenCut
- clarifyMake it land for somebody who is not the author
- restructureReorder a page, and prove the words survived
Maintain
Months have gone by and something underneath the page has moved
- refreshBring the named figures current, and change no other word
- doctorDrift between the config, the content and the plugin
Operate
Not a stage. The line every other line passes through, and where you start each session
- contextThe whole project in one call. Run it first
- scanWhat content exists, and how much of it
- ownerWho a file belongs to, and what may be done to it
- adminUnlock, relock, and the record of why
- pinMake one command its own slash command
Ten agents
So why not just ask the agent you already have? Because two jobs do not fit in a conversation. Reading your whole back catalogue is too big for one. Deciding whether your page works is too close to it, since the thing being judged is the thing that wrote it.
| Agent | Why not do it here |
|---|---|
| voice-builder | Most people cannot name the voice they want. Ask them to describe it and you get adjectives |
| voice-researcher | Ten presets written from instinct had their central mechanic backwards. An impression of a voice is reliably an inversion of it |
| sample-reader | A whole back catalogue, read once, reported in a page |
| corpus-reader | Forty thousand words of somebody else's site, read once |
| style-sheet | The error hides in the string a reader skips. A machine does not skip it |
| citation-checker | Whether a source exists is arithmetic. Whether it supports the sentence is not |
| source-integrity | Whether a source survives is arithmetic. Whether the claim survives it changing is not |
| continuity | No single reading holds four hundred pages, and the contradiction is never in one place |
| fact-checker | Adversarial by design. A checker that wrote the claim finds it convincing |
| critic | Fresh eyes, outside the attention gravity of having written it |
Not only for marketing pages
A novel. A research paper. A screenplay, a documentation tree, an album's worth of lyrics. None of that is a marketing page, and if you write one of them your first question is whether any of this was built with you in mind.
Some checks only make sense for a website, so you tell Stet what you are writing with
kinds and those switch themselves off. What is left works the same on all of
them.
A line of your lyric and a line of your marketing copy are both somebody's words, and whether an agent may rewrite them has one answer.
The voice measurements are the part worth arguing about, and the honest answer is that they were counted off the register you pick. Choose Noir and you are held to Chandler and Hammett. Choose The Pitch and you are held to sixteen software home pages. Neither number means anything on the other one, which is why there are seventeen.
/plugin marketplace add \
owllight-studio/stet
# then, in any project
/stet
Node 20 or newer. MIT. Zero dependencies.