Worldwright spent most of August getting its look sorted out — five phases of stylesheet work on the HUD, the menus, the sheets that slide in over the world. Good work, none of it drawn by me. At the end of each phase I'd get a folder of screenshots, and my entire job was to say what was wrong with them.
Here is a sentence I actually typed, at about half ten on a weeknight:
the bevel on the base panel has ripples in it, and the badge in the top-right — not the one next to the title, the other one — is too loud
That took me longer to write than it will take you to fail to picture it. I then read it back, decided it was ambiguous, and wrote it again. Meanwhile the thing I was describing was sitting right there on my screen, and I could have simply put my finger on it.
The bottleneck moved
I've written before that when you run a lot of agent sessions, the scarce resource is your own judgement, not the agents. That's still true, but August sharpened it. The judgement wasn't the slow part. Transcribing the judgement was.
I knew within a second what was wrong with the badge. Turning that second into a paragraph that would survive being read by something that can't see where I'm looking took thirty or forty times as long, and half of it came back mis-fixed anyway, because "the other one" is doing a lot of load-bearing work in that sentence and it doesn't hold.
Position is the feedback. Which button, which gap, which of the four things in that corner — that's the whole content of most visual review, and prose is a lossy channel for it. Anyone who has ever sat two people in front of one monitor knows this; the pointing finger isn't decoration, it's the message.
So: a board you can stick notes on
Marginalia takes a pile of screenshots and publishes them as a page I can annotate. Click anywhere on a screenshot, a post-it lands where I clicked, I type a few words in it. Drag it if I put it in the wrong place. A ⚑ marks it an issue rather than an idea. Then Save notes, and any session can read them back.
The Worldwright board that started this has ten screens on it — main menu at three widths, the account and options sheets, the in-game HUD, the Chronicle and Knowledge sheets, the pause screen — and I closed it with eight notes on it, six of them flagged. Eight notes is nothing. Eight notes is about ninety seconds of clicking. Written as prose it would have been most of an evening, and it would have been worse prose, because by the fourth screen I'd have started being economical about things that mattered.
The notes carry their board and their x/y as a percentage of the image, so a note keeps meaning the same thing when the screenshot is re-captured at a different size. And they live in the published page rather than in a chat log, which means tomorrow's session reads yesterday's review without me re-explaining any of it.
The one useful thing: write the data down twice
The page saves by rewriting itself. There's no database, no backend, nowhere else the notes go. Saving regenerates the whole document with the state baked in and republishes it, so the artifact and the store are the same object.
Which sounds elegant right up until something has to read it back — and the reader is usually converting the page to text first, which cheerfully throws away exactly the machine-readable block you carefully embedded. So the page writes its notes down twice, in two formats, one of which is deliberately stupid:
<!-- the machine copy: precise, and the first thing a text conversion eats -->
<script type="application/json" id="marginalia-notes">{"notes":[…]}</script>
<!-- the survivor: visible on the page, and still legible after every reader in the chain -->
#7 [Cart — desktop] (61.4%, 22.8%) ⚑ISSUE — promo field is below the fold on 13"
The plain-text ledger is redundant, unglamorous, and the reason the thing works at all. It's a
<pre> block anybody can read, and it survives being flattened, quoted, pasted into a
different session, or fetched by something that only ever wanted text. Both forms are written
in the same operation, so they can't disagree — which is the same rule I keep having to
relearn: the moment a fact has two homes, one of them is out of date.
Take it
git clone https://github.com/0n1-Studios/marginalia.git ~/.claude/skills/marginalia
Then hand Claude Code some screenshots and ask for a board. MIT, do what you like with it.
Every repo the studio has is private, and this is the first one that isn't — which makes it the second thing I've given away, after sitrep. Same defence as last time, and it's a real distinction rather than a convenient one: Forge, Herald, Odin and the rest are how the games get built and they stay in the house. This is a Python script and an HTML template. It isn't a tool that makes anything. It's a way of pointing at things.
What it doesn't fix
It doesn't make me a better art director, which is genuinely the binding constraint on a look-and-feel pass and always was. It shortens the distance between noticing and saying; noticing is still on me, and eight notes on ten screens might mean I was efficient or might mean I was tired.
It also can't tell a good note from a lazy one. "This feels off" lands on the page with exactly the same confidence as something useful, and now it lands precisely on the element it's vague about, which is a new and interesting way to waste an evening. Faster review is not better review. It's just review I'm still awake for.
More soon — RSS if you'd like to watch me solve a communication problem by building software instead of learning to describe things.
