Plain HTML you copy and paste. Tailwind for styling, Alpine for state, htmx for server swaps, Lucide for icons, and Chart.js on the pages that plot something. No package, no build step — and every screen across every internal tool ends up looking like one person built it.
For agents
This is the whole protocol. Four steps, in order. Skipping step one is how you end up inventing a blue button that exists nowhere else in the company.
Still to come on this site
The component browser and the reference application, one at a time. Both files above are
generated by node tools/build.js
from assets/spec.js,
which is also what renders the rules, tokens and status mapping further down this page — so the
three can never drift apart.
Non-negotiable
Every one of these is here because breaking it produced a visible defect at least once. They are not style preferences.
Palette
Stock Tailwind. There is no theme file to import and no variable to look up. Graphite carries every interaction, which is what leaves red, amber and green free to mean something.
Neutral & accent
Shape
Reserved for record state
This mapping is fixed. Three separate agents asked to build components each invented their own version of it, and one of them put Overdue in amber — which is exactly the ambiguity the rule exists to prevent.
Semantic colour
Four tones, one shade each, the same shade in every component. A mark you read takes the
text class; a dot or a bar takes the fill. Nothing takes a
-50 tint —
a coloured icon well is still bg-zinc-200.
Typography
Inter and JetBrains Mono, self-hosted — no request leaves the network. Every size states its
leading: text-[13px]/5,
never bare text-[13px],
which compiles to a font-size with no line-height at all.
Purchase orders ₹1,84,20,000
Weight — three, no more
Tracking — two, no more
The library
Documentation pages are written one at a time, each reviewed before the next begins. Every component below already exists in registry.json with its full markup — the page is where the anatomy, behaviour and accessibility notes live.
of pages written
Every screen it builds after that will match every screen built before it — including the ones built by a different agent, six months from now.