Workbench
I still build.
The market wants leaders who can drop into the file. These are the things I make with my own hands, mostly so the team has something better to design against.
Prototypes in real code
I prototype in code to test behaviour, states and recovery, which static mockups can't show.
A Sprinto app on shadcn/ui
A full multi-screen flow: app shell and dashboard, an evidence registry, and the AI Playground. Working code on Base UI primitives, Tailwind v4 and Next.js, not mockups.
A document registry table
Grouped views, sticky collapsible groups, infinite scroll, loading states and multi-level row selection. Tables are where design systems usually give up, so I start there.
The RedPill prototype
A monitors surface with saved views, a structured filter model of field plus operator plus value, real compliance records, theme switching and undo, with analytics attached.
Screens from current work will appear here as they're cleared for sharing.
Datum: governance you can run
Every design leader says accessibility is part of the component contract, not a finishing pass. In Datum, it's a build failure.
The idea is two AI pipelines and one source of truth. A coding agent writes reviewed source into a repository. A runtime agent assembles UI live for a user, constrained and checked at a hard boundary. Both read the same file per component, and five artifacts are generated from it. Nothing downstream is written by hand, and the build fails on drift.
| Rule | How it's enforced |
|---|---|
| One source of truth | A drift check regenerates every artifact and fails if a committed file differs |
| Total styling control | A custom lint rule rejects raw hex, rgb and px values in component files |
| Constrained live UI only | Agents pick registered components and fill validated props. They never write markup |
| Accessibility as a gate | Contrast is checked against real theme colours, light and dark, at 4.5:1. Every component must fill in its accessibility field |
So far: 11 registry items, a data-grid subsystem with views, filters and an AI agent slot, adapters for two AI frameworks, a docs site, and an OKLCH colour space, across 12 commits.
A proposal can be argued with. A red build can't.
AI that knows our rules
How I make AI tools behave like members of the team instead of a chat window.
neogrid-ds
A design-system skill so AI agents build with NeoGrid's patterns, tokens and composition rules instead of inventing their own.
Four files, two rituals
PROJECT, MEMORY, DECISIONS and BACKLOG for every system, read in a fixed order at the start of a session. At the end, one rule: never record a proposal as a decision. Read the note →
prompt-master and project instructions
A personal prompt skill, and project instructions that keep facts, guesses and decisions apart and flag risks before anyone asks.
How this site was made
Written with the same workflow I teach the team. I gathered my own archives, wrote down every claim with how it was verified, settled conflicts between sources, and only then built pages. AI did much of the drafting and coding. I made the calls.
Every number carries a label: Shipped, Measured, In progress or Target. Work that isn't public yet stays off the site until it is.