stet

Content that knows who owns it.

A Claude Code plugin that stops agents rewriting your words, and keeps the rest true.

stet

The reason I started this was not a thing I want paraphrased. It took me four attempts and a walk to find the sentence.

Every word of that paragraph is mine, and no agent gets to improve it.

Ramp casts are 47% of what you press before a spike. That figure came from a query this morning, and it will be right again tomorrow without anyone remembering to check.

stet  /stet/    proofreader's mark: let it stand. Ignore the correction.

The problem

Point an agent at your writing and three things go wrong.

It writes too much

A sentence and a half doing the work of a sentence. A preamble before every list. You spend longer unwinding it than writing would have taken, and that time comes out of the work only you can do.

It rewrites what is not its own

The paragraph you laboured over comes back improved. You did not ask. You asked for a redesign, or a fix three files away, and your words were collateral.

It leaves what it should refresh

A sentence quotes a number that moved three weeks ago. Nothing in the file says where the number came from, so nothing noticed, and the page states it with a straight face.

The model

Every piece of content carries a state. Approval is what confers ownership.

An agent's draft belongs to the agent until a person reads it and accepts it. Nothing else transfers ownership: not time, not the writing being good, not the agent having written every word of it.

draft
An agent wrote it and nobody has approved it. An agent may rewrite it freely.
approved
An agent wrote it and a person accepted it. Closed. Rebuilt only if asked, each time.
authored
A person wrote it. Closed, and never regenerated at all. Only its author replaces it.

Ownership is per sentence, not per file. Correct one line on the proof sheet and that line becomes yours: the paragraph around it stays the agent's to improve. Sentences are stored by their own words rather than by position, so yours survive everything around them moving, and lapse the moment the words themselves change. You own what you wrote.

Policy sits alongside it and says what may still be done to closed content. authored plus refresh is the combination the whole thing exists to make sayable: these are my words, and I want the numbers in them kept true. Change the figure. Leave the sentence.

---
stet:
  state: authored
  policy: refresh
  sources: [corpus.rampShare]
---

Ramp casts are 47% of what you press before a spike.

Enforcement

A hook that refuses, not a rule that asks.

Every other part of this is an instruction, and instructions are advice. Advice loses. A PreToolUse hook reads the state before any edit and denies the ones that are not the agent's to make.

VOICE.md is authored. You may not edit it.

A person wrote this. Do not edit it and do not regenerate it.

You may propose a rewrite in your reply. Show it to the author.
Do not put it in the file.

Three boundaries keep it out of the way. A project with no config is not using Stet and the hook has no opinion. Only declared content paths count, so code passes through. A file that does not exist yet is new, which is a draft, which is allowed.

Commands

Establish a project, then work in it.

For a project that already has writing, the order is ingest, init, voice, ia. Read it before you describe it.

ingest

Reads everything there, claims all of it for you, and reports what it found: the inventory, how it sounds, and every claim that will go stale.

init

What this is, who reads it, and what it must never be. The last one is the answer nobody volunteers and the one worth most.

voice

Derives the house voice from writing you already did, because nobody can describe their own. Rules with your sentences as examples, and a counter-example for each.

ia

What exists, what job each page does, and the rules for where the next one goes. Without those rules every new page is a fresh argument.

claim · release · approve

Whose words these are. Only the author approves; the agent records it.

audit · verify · refresh

Stale claims, figures typed by hand, orphaned pages, voice breaks. Then check each claim against its real source and bring current only what policy allows.

Install

Early, and honest about it.

/plugin marketplace add owllight-studio/stet
/plugin install stet@stet

The Establish group, the authorship model and the hook are built. Everything else is designed and not written yet. Stet's own content is marked draft rather than approved, because its author has directed it and not yet read it line by line, and marking it approved would be the exact failure the model exists to prevent.