HUMAN.md
Every repo has an AGENTS.md. It tells your AI about your code: your stack, your conventions, this repo. Nothing tells it about you. That file is empty. stratless writes it.
HUMAN.md is the person layer. There is one per assistant — ~/.stratless/HUMAN.claude-code.md, ~/.stratless/HUMAN.codex.md — because each is measured inside one working relationship, and what stratless observed in one tool is never presented to another. Your assistant loads its own at the start of every session, so it starts already knowing who it’s talking to instead of a blank.
What’s in it
Not a rules sheet you wrote. A brief on how you actually work, derived from your real history and nothing you declared, in four parts:
- your shorthand, decoded (“In the moment”): the phrases you reach for, and what each one means you want right now, so your assistant recognises the move as you make it — and, when the evidence earns it, the situations to catch that you never announce
- what to offer you before you ask: the things you reliably want set up or handed over, so your assistant offers them unprompted instead of waiting to be told
- what to catch for you: what you reliably challenge or refuse, so it pre-empts those instead of making you catch them yourself
- how to talk to you: the register you work in, matched rather than smoothed over
Some rows carry more than their instruction. When the engine measures a gap — a standard you demonstrably hold that sometimes arrives only as a late correction — the row that holds that standard gains a when-clause telling your assistant to model the move in exactly the moments you miss it. The line deepens while the gap is open, and sheds the clause once the gap closes: the file gets shorter as you get better.
The decode key can carry two lines of another kind, both measured from how your own questions land. Your comprehension signature tells the assistant how explanations must arrive for you — with the honest counts behind it, including how many explanations didn’t land. And where whole zones of your work show you never asking at all, a second line marks them as chosen outsourcing: do the work, skip the teaching. Neither line ever names a topic or grades what you know — every line records how the assistant must adjust, never a state of you — and each stands on its own evidence, thinning away as the failures it marks stop happening.
Every line is an instruction to the AI with the real count behind it. No section is guaranteed: the file carries whatever your history actually supports.
Seeing it
stratless profile
profile prints the current model of you, free and instant. It is the same HUMAN.md your assistant loads; profile just shows it to you, and never spends. Building and loading it is update’s job. See Commands.
A sample
Every line is observed and carries the count behind it. It opens with your shorthand, then tells your assistant what to do:
## In the moment
- "yes plan" · "can we plan" → wants a plan before code
- a new or multi-step task begins → pause and offer
a concise plan before implementing anything
## What to offer me before I ask
- offer to enter a planning step before touching any
implementation — and when a new or multi-step task begins,
pause and offer a concise plan before implementing
anything. (258× · slip 28×)
## What to catch for me
- catch unverified claims of done work; they want it
double-checked before being told it's finished. (122×)
## How to talk to me
- treat a bare "yes, run X" as full authorization; don't ask
for restatement — and when the coding is finished and a run
or test is next, check the scope with me before
proceeding. (203×, fading · slip 16×)
rising and fading are the trend: whether you are doing that thing more than you used to, or less. A third word, met, is the best outcome a row can have: you stopped asking because the assistant already does it. It is measured from both sides of the conversation — your asking fell, the assistant’s doing held, and you kept accepting the work — inside the one assistant this file describes, which is why it prints bare: the file itself names who earned it. On the offer and catch rows a trend word is an instruction, so those rows only carry one the engine has confirmed from both sides; a bare count there means the trend is unproven, not absent. A row carrying a when-clause adds a second count to its receipt — (258× · slip 28×) — the slip count is the times that standard arrived late, and any trend word after it is on the gap itself. A full, unedited example lives on the home page.
It sharpens every time it runs.