d-pill

Design intelligence for the agentic era

The design system that audits itself.

d-pill is the discipline layer for interfaces built by anyone — or anything. Tokens carry the decisions, laws carry the judgment, and a sixteen-rule gate reads the real files and says what to fix.

  • 85tokens, one hue variable
  • 40law files agents read
  • 16machine-checked rules
  • 0animation dependencies

Templates copy pixels.

A snippet teaches the page nothing. Tomorrow's page starts from zero, and the year's work argues with itself in a hundred small ways — a radius here, a hover there, a duration everywhere.

Tokens carry decisions.

One hue, one space scale, one clock. The two-hundredth page agrees with the first because the decisions live in variables, not in each file's mood. Change the hue once; everything follows.

The gate reads the work.

Taste decides, machines verify. Sixteen rules read the real files — the scales, the contrast floors, the names on the controls — and exit 2 hands the agent a reason to react.

The gate

Paste a surface. Read the verdict.

This is the engine agents run — here it runs in your browser. The same sixteen rules, the same severities, the same exit codes the hook contract uses. Warnings are judgment calls to read, not ignore.

An AI-built landing page by feel. Fourteen findings, every one a teachable decision.

Checked as an HTML document — the way the CLI would read the file.

How to read it

Errors are decisions the page made without the system — a 300ms hover, a 17px padding, a control nobody named. Warnings are judgment calls: read them, then either fix or write the exception down.

Every finding carries its fix and the reference file behind the rule. Load a sample and run it.

exit 0 cleanexit 2 findingsexit 1 broken invocation

The blocks

66 blocks. Every one passes a gate you can watch run.

Pure HTML and CSS on the token system — no animation library, no runtime. Turn the hue dial in the token explorer and every block re-tints. Copy what you saw: the preview and the payload are the same string.

66 of 66 blocks · 11 categories · 0 animation dependencies

Tokens

Eighty-five decisions, one variable

Every color on this page is oklch carrying the same hue angle. Move the dial and both themes re-tint live — accents, edges, shadows — with no reload and no second palette. Click a card to copy its custom-property name; the values are the machine export, not a picture of it.

215

Light group

Compound

Three entries are compounds, not single colors — a hairline edge, its heavier sibling, a shadow with distance. They ship whole and ride the hue with everything else.

--border1px solid oklch(0.86 0.01 215)
--border-strong1px solid oklch(0.62 0.016 215)
--shadow-overlay0 16px 40px oklch(0.25 0.02 215 / 0.16)

Contrast, light theme

Computed from the token export at the default hue 215.

PairRatioVerdict
--ink / --bg14.39:1pass
--ink-muted / --bg6.80:1pass
--ink / --surface14.79:1pass
--accent-ink / --accent5.95:1pass
--ink / --accent-soft12.66:1pass

The laws

Loading the forty files…

Install

Four doors, one system

A skill, a plugin, an Action, an MCP server — the same laws and the same gate on every path. The exit-2 hook contract means the agent receives the findings as the reason to react, not as decoration.

Agent skill

One line, any agent

Installs into ~/.agents/skills — Claude Code, Codex, Cursor, Cline, Warp, Zed. The agent reads the laws before it writes the interface, then runs the gate before it calls the work done.

npx skills add srivtx/d-pill

Claude plugin

Marketplace path

A plugin marketplace entry for Claude Code: the skill, the scripts, and the gate wired as a plugin you can update in place.

/plugin marketplace add srivtx/dpill
/plugin install d-pill@d-pill

GitHub Action

The gate in CI

Every push and pull request gets the critique. Exit 2 blocks the merge with file:line:col findings — the agent reads them and reacts.

- uses: srivtx/d-pill@v1
  with:
    paths: src/**/*.html

MCP server

Tools, not context

A stdio MCP server exposing critique, list_rules, and token. Your editor or agent calls the gate like any other tool.

{
  "mcpServers": {
    "d-pill": {
      "command": "python3",
      "args": ["path/to/mcp-server.py"]
    }
  }
}

The proof

This page runs its own gate.

Not a claim about the code — a scan of the living DOM: every style block the gallery injected, every attribute React rendered. Run it again after you copy a block or turn the hue dial.