The instruction a weak model can't misread

Markdown Mind Part Four - It behaves this well now because it behaved badly first. I hardened the installer by running it through a deliberately weak local model — and every fix collapsed to the same move.

Share
The instruction a weak model can't misread

Last post ended on a confession - none of this arrived clean. It behaves this well now because it behaved badly first, and the very first thing to behave badly was the rule I was proudest of: the one that forbids the installer from guessing who you are. On its first real run the setup did not ask. It cheerfully invented a whole profile and guessed a name. That "forbidden to guess who you are" line I showed you last time as if it were designed? It exists because run one did exactly the wrong thing. That is the flavor of the whole hardening pass - the polish is scar tissue.

I hardened the installer the only honest way I know - I ran it. Three presets, and I ran each one through a small local model, a deliberately weak one, driving it with the opencode agent. Not because that is how most people will use it, but because a weak model is a truth serum. It does not quietly do what you meant. It does exactly what you wrote, and where what you wrote was sloppy, it shows you. Three presets, each ground through run-and-fix cycles until it behaved. The striking part was not that things broke. It was that every single fix collapsed to the same move.

Both boot files. One run wrote the system's boot file only into CLAUDE.md. The agent I was testing reads AGENTS.md - it found the old installer file still sitting there, decided setup had never happened, and ran the whole thing again. Every session. Forever. A loop with no exit. The fix was not a sharper sentence telling it to be careful. The fix was: write the boot file into both named files. Something concrete to copy, in two places.

Scaffolding that can't be left behind. Another run handed me my finished boot file with the guidance placeholders still in it - literal <About you> and <Conventions> angle-bracket stubs the model was supposed to fill or strip out, and just did not. The losing move here is obvious, and I made it first: ask more firmly. "Remove the scaffolding before you finish." A weak model reads that as a suggestion. The fix was to move that guidance into an HTML comment - invisible if the model ignores it, so even a lazy pass ships a clean file. Make the deletion unnecessary instead of asking for it.

The 61-line pointer. In the team preset, one file is meant to be nothing but a one-line pointer to another - the single line @AGENTS.md. The instruction said, in plain English, "make this file a one-line pointer." The weak model read that as a writing assignment. It produced a 61-line file. With a wrong title. And a broken cross-reference to a folder that did not even apply to that preset. It was trying to be helpful. The fix, once and for all, was to stop describing the file and start dictating it. The instruction now says to write that file containing exactly @AGENTS.md and nothing else.

One more, same shape: the boot file told each new session to read a handful of profile and behavior files, but the setup had only created the empty folders around them. The next session broke reaching for files that were never written. The fix was to seed those files with real starter content, not to trust they would appear.

Four different failures, one shape. A capable model would have sailed through every one of them - read "one-line pointer," written one line, filled the placeholders, put the file where it belonged. The weak one exposed that the instruction was a description in a place that needed an artifact. So the principle I wrote down, and the reason for this whole post: when you are instructing your own agents, give them something to copy, not something to follow. Ship the filled-in example, the exact line, the ready template with a single blank. Keep prose for the why, and hand over a literal for the what.

Here is the part that took me longer to see. A system made of instructions is only ever as good as the weakest agent that can still run it correctly. And a strong model actively hides this from you. It masks sloppy instructions - it reads past the gap and does what you obviously meant. That feels like the instruction working. It is actually debt. The instruction is still wrong, you just have not met the model that reveals it yet. Hardening against the small local model did not make the system worse for the good ones - it made the instructions honest for all of them.

There is a through-line here to everything else in this series. This is the same discipline as marking something unverified instead of guessing at it confidently - only pointed the other way. There it protects a human from a false note. Here it protects the next agent from an instruction it cannot execute. Same spine: do not claim more precision than you have actually handed over.

Which is the natural place to stop reading and start using it, because for the first time you actually can.

Here it is:

There is nothing to install. No account, no repo to clone, no tooling to set up. You download a zip, you unzip it, you open the folder in your agent, and you say the one sentence from last post: "Set up my Markdown Mind." That is the whole on-ramp.

One honest word before you do. This is still a playground, not a product to swallow whole. The value is not in copying my installer word for word into a life it was never shaped for - it is in the worked example and the one principle underneath it. And that principle I will say plainly, because it earned the plain version: give your own agents something to copy, not something to follow. It is genuinely useful, and it cost three broken presets to learn.

Markdown Mind Part Four