← all posts

I stopped writing plans in Markdown

·4 min read
  • agents
  • tooling
On this page
Two line-art documents side by side: a plain Markdown checklist on the left, a structured HTML plan with a chart, mockup, table and node diagram on the right

Every plan I wrote in Markdown had the same fate. I read it once while it was being written, skimmed it later, and nobody else on the team opened it at all.

The format was the problem. A Markdown task carries one bit: done, or not done. A real feature plan needs to carry a mockup, an API shape, three states nobody thought about, and the reason the second approach was rejected.

The difference is who reads it

Same plan, two formats, two very different review loops.

Markdown moves review to the end, where it is expensive. HTML moves it to the front, where it is cheap.

What each format can actually hold

A plan needs to showMarkdownSingle HTML file
Task done or not doneCheckboxCheckbox
Blocked, and blocked on whatProse beside the boxAttribute you can query
What the screen looks likeLink to Figma, if it existsReal mockup, styled with the product's own CSS
Loading, error, empty, permission statesA bullet each, usually skippedA button per state
Two competing approachesTwo sections, read in sequenceSide by side, or a toggle
API and data flowASCII artAn actual diagram
Which repo the work lands inA headingA labelled map
Read by a non engineerRarelyOpen the file

None of this is exotic. It is one file, opened in a browser, with no build step.

The prompt I use

The whole thing is a single instruction: produce one self contained HTML file, reuse the product's existing UI as the visual source of truth, keep alternatives on the same page behind a toggle, and prefer mockups and diagrams over paragraphs.

The rule that does the most work

Treat the current frontend as the visual source of truth. Not a template, not a fresh design language. If the plan does not look like the product, nobody trusts what it is proposing.

The rest is a checklist: every requested feature represented, backend and cross repo work included even when it is invisible in the UI, assumptions clearly separated from confirmed behaviour, and every demo button actually working.

The part that made it stick

I got the idea from Theo, looked at how he was using it, and then built the piece that made it work for me.

The plan is not a file I open on my own machine. Any agent can write one, and it deploys through a tunnel as soon as it lands. So I read it wherever I am, usually on my phone, and so does everyone else I send the link to.

One link, whatever device is nearby. No repo, no build step, no screen sharing.

Each plan also splits by where the work actually lands:

Change typeWhat the plan leads with
FrontendMockup in the product's own styling, then component and state map
BackendAPI contracts and data flow, then the repo level implementation map
BothThe two views on one page, switchable, so nothing gets reviewed in isolation

Benchmarks and the acceptance checklist sit at the bottom of the same file. One artifact, one link, nothing to assemble later.

When Markdown still wins

Short plans. Three tasks and a decision, read once by one person, done by lunch. Reaching for HTML there is ceremony.

The switch pays off at the size where a plan stops being a list and starts being a document that somebody else has to agree with.