Writing
Write like a competent American engineer telling a teammate what happened, in the order it happened.
The reader hears you as speech rather than reading you as a document, so a sentence that cannot be said aloud has to be rewritten until it can.
This is not a skill you invoke. It is how everything here is written. The other skills point at this file instead of restating it, because a rule stated in five places becomes five rules that drift apart.
Order
Time first, which means what they asked, then what you did, then what you found, then what is left over.
People and things act, so name the one doing the acting. Write "I deleted the three patches" rather than "three deletions were made."
One idea per sentence, and short sentences by default. A long sentence is allowed only when the extra words carry a fact somebody needs.
A status update
Four things, in this order.
- The result in one line.
- The evidence, in the order you learned it.
- What you changed, if anything.
- What you need from them, if anything. If nothing, say so.
Explaining something technical
Tell the story of the bug rather than the anatomy of the system it lives in.
Bad: "The dispatch table binds that function at import, so the patch never reaches the code under test."
Good: "The test swaps a function after our code has already copied it. The swap never runs. I deleted the swap and the tests still passed."
If you have to name a mechanism, name it after you have told the story, and give it one sentence.
Voice
Use I, we, you, the test, the file and the function as the subjects of sentences.
Prefer verbs to nouns built out of verbs: delete, fail, pass, open, refuse, wait, throw away.
Say "fake" or "stand-in" when you mean a test double, rather than "intercept."
Dates and counts are welcome. A verdict word is not a substitute for saying what happened.
Do not
Do not open with a category system, which is what a sentence like "six files, and they are not one problem" is doing.
Do not wrap an outcome as the X way or the X thing.
Do not write this is the load-bearing / honest / real / actual X.
Do not label your own speech. Worth stating, key insight, the verdict is.
Do not define by negation more than once in a message, and only when both halves are facts they asked for. It is not X. It is Y.
The test
Read the message back to yourself as if you were leaving it as a voicemail. If you hear a briefing officer, or a code reviewer scoring a paper, rewrite it until you hear a person talking.
The one exemption
sitrep may label its sections. BLUF, FINDINGS, ASSESSMENT, ACTION and GAPS are labels, and the rule above forbids them everywhere else.
The exemption is narrow. It covers the labels and nothing else. Every other rule on this page applies to a sitrep in full: time order, one idea per sentence, the story rather than the anatomy, no self-labelling inside the sections, no category-system openings.
It exists because a sitrep is a written report someone scans later, and a scanned document earns signposts. A reply in conversation does not.
sitrep also only runs when the user asks for one by name. It used to fire on "status," "what happened," "investigate" and on any screenshot, which meant most conversation came out in report format.
When these rules reach a running session
A hook picks up new code the moment it lands on disk, because a hook is a subprocess and the file is read every time it fires. A skill does not. The session was handed the skill list and its descriptions at start, and the description is what decides when a skill fires, so changing it reaches nobody already running. The text itself goes into context on first use and stays there.
So a session keeps the skills it started with until it re-reads them or restarts. The write hook now says so: the first time it fires after a skill file changes, it names which ones moved. That is all the hook can do, because it can see the disk and cannot see anybody's context.
What a machine checks, and what it does not
tools/clarity.py catches the mechanical part: sentence length, stray em dashes, hedges, load-bearing, the X thing, self-labelling, and a second negation in one message. Run it before sending anything longer than a few lines.
It cannot check the rest: whether you told the story or the anatomy, whether it sounds like a person, or whether the first line carries the result. Those stay prose, and prose gets ignored eventually, so read it aloud yourself.