An Engineering-First Design System for Complex Apps
As creator and UX engineer of TwoUX (opens in a new tab), I built an engineering-first design system that makes UX decisions explicit for engineers and AI agents, and enforces quality before inconsistent experiences reach production. As the only designer among 15+ developers, I can't review every screen an AI agent generates. TwoUX means I don't have to.
Problem
Building got faster and cheaper. So did inconsistency.
Building, creating and shipping UI has never been faster or cheaper. Consistency didn't come with it.
AI doesn't fix the mess. It scales it.
Engineers build through coding agents, often with no designer in the loop and no Figma file to check against. Design systems ship components, not decisions, so the agent picks the nearest piece and fills every gap with a guess. Each guess looks fine on its own: a disabled button, a modal with a hidden close icon, a toast with an error message.
Together they turn one product into five: duplicated components, accessibility fixes and screens that each behave differently.
engineers per designer in AI-company job postings
more cloned code since AI coding assistants
rules on when not to use a dialog in the docs of popular component libraries
1 Applied Methods, analysis of 9,281 open roles at AI companies, 2026. 2 GitClear, AI Copilot Code Quality 2025, 211M changed lines, 2020 to 2024. 3 Dialog pages of shadcn/ui and Radix, checked November 2026: API and examples, no guidance on when to use or avoid it.
The design systems out there weren't built for this. Most give you components, often basic ones, and stop there: written for people browsing docs rather than agents, light on the dense tables and grids B2B products run on, silent on which job a component is for or how a flow behaves, and with nothing to stop an agent shipping AI slop.
Key Decision
Put the knowledge of the best UX minds in the repo
I didn't need more components. I needed what the best UX designers and the design systems of market-leading products already know, written down where every agent can read it and every check can enforce it.
TwoUX is a research-backed knowledge base built on UX expertise. It decides the UX, not only the look: which component fits which job, how a flow behaves, when to confirm and when to offer Undo. None of it is an LLM's opinion. Every decision is grounded in usability research from the Nielsen Norman Group and others, WCAG, WAI-ARIA and the design systems of major SaaS products, and every component page explains its decisions with numbered sources.
AGENTS.md, llms.txt, skills and an MCP server, all set up with npx twoux init. People who supervise agents get components for plans, approvals and permissions.twoux check lint, a Claude Code guard hook, a browser audit, and a theme that refuses colours that fail WCAG.Outcome
Consistency without losing velocity.
I tested it the way a team would use it: fresh Claude agents, 11 real developer requests such as "build a candidates page" or "just edit the button", and no mention of TwoUX's rules.
agents changed the design system when nobody asked them to
planted UX mistakes caught by each model, 4 of them invisible to a linter
planted problems fixed in every run on an app not built with TwoUX
The mistakes only the rules could catch were exactly the judgement calls a designer would make: a modal for record detail, a disabled submit, an error in a toast, a delete with no Undo. And the knowledge travels: in principles mode it fixes apps that don't use TwoUX's components at all.
And it shipped. TwoUX is live at twoux.com, open on GitHub and on npm as a public beta, free to use.
Process
Built by a UX engineer, for engineers
Being the only designer among 15+ engineers and Claude Code showed me how fast broken components and poor UX scale, and how ugly it gets. So I took it personally. I work with brilliant engineers who solve hard backend and infrastructure problems every day. For UI and UX decisions, they lean on a coding agent, and the agent guesses, and sometimes it hallucinates.
I didn't want to be the bottleneck reviewing every screen. I wanted every engineer to ship as if a senior designer sat beside them.
A decade of UX decisions I kept explaining in reviews, checked against the Nielsen Norman Group, WCAG, WAI-ARIA and leading SaaS design systems. Each answer became a rule, a UI decision or a pattern step, with its source: 604 links, all checked.
Components are generated from shadcn's untouched source by a script, so the API stays familiar. The docs site and the agent files come from the same content, so people and agents get the same answer.
Five rounds of agent evals tested TwoUX too: one caught a CSV import that read 02/11 as 11 February. Every failure became a fix or a new check.