The Lab · 04 · MIT licensed

The design system, as a Claude plugin

An installable plugin that teaches Claude this site’s design system and the ten checks that decide whether a change may ship. Install it and the model produces work that is already on-system, instead of work someone has to correct afterwards.

Why this exists in public. The AdTech case says I unified six products under one design system at Talon, then encoded it as a Claude plugin and shipped it across the engineering org — and built a second for Sahaj. Both are client-confidential, so that claim has no artifact behind it. This is the same practice on a system I own, so the claim can be inspected instead of believed.

Install

Two commands.

/plugin marketplace add arpitmaheshwari/arpitmaheshwari.github.io
/plugin install ember-design-system

Then ask for a component. The model already knows the four heats and what each one means, that mono is for code and never for labels, that spacing lives on an 8px-derived grid, and that a capped column inside a wider container is a defect rather than a style.

What it encodes

Two skills: the system, and the floor it has to clear.

ember-design-system — the tokens with their measured contrast ratios, one type scale, the spacing grid, and the component grammar. Crucially it carries the rules that are not visible in the values: heat is semantic and never decorative; a component declares its own ink on its own ground rather than inheriting and hoping; never state a contrast ratio you have not measured on rendered pixels, because gradient text and translucent tints both lie to style-based checks.

ship-gates — the ten checks, each with the real defect that caused it to exist, and the discipline that makes a green result mean anything: plant a defect, watch the check go red, then trust it. Refuse to report on zero measurements. Treat an impossible reading as your instrument breaking, not the product.

The argument

A system nobody can apply consistently isn’t a system.

A design system that lives only in a component library gets applied by whoever remembers it, at the moment they remember it. Encoded as rules a machine reads, it gets applied every time — and when it is wrong, it is wrong visibly and in one place, which is the only kind of wrong you can actually fix.

That is the same argument the pattern library makes about AI: the value is not the model, it is what the interface between the machine and the person is willing to encode and admit. This plugin is that argument turned on my own work.