Build · Leucine Design System · 2025
The Design System
That Replaced Figma.
One unified system across 4 enterprise pharma products. Built in 5 days with Claude Code. The handoff loop disappeared, the design team consolidated, and a new product’s MVP frontend now ships in 2 days — not weeks.

Role
Head of Design
Timeline
5 days (Aug 2025)
Team
1 designer + 3 engineers
Scope
Design Systems, AI Methodology
Background
One company,
two design languages.
Leucine is a digital twin of the pharma manufacturing shop floor. AI-powered compliance platform, FDA-regulated, Series A backed by Ecolab. Deployed across 300+ facilities, 50+ companies, 10 countries. Four products: MES (Manufacturing Execution), CLEEN (Cleaning Validation), Leucine OS (Quality Management), and FDA Tracker (Compliance Intelligence).
I joined in 2020 as the second designer. Over six years I grew from IC to Design Lead managing 5 designers to Head of Design & Demand Generation.
Industry
Regulated pharma manufacturing
Footprint
300+ facilities, 10 countries
Products
MES · CLEEN · OS · FDA Tracker
Tenure
6 years (2020 → 2026)
Impact
Today the system runs across 4 products and 300+ pharma facilities. Engineers compose new pages directly from a Claude Code skill file. The 4-product brand inconsistency that had persisted since 2020 is gone.
The problem
Two component libraries.
Every screen built twice.
DWI/MES was built on Material UI. CLEEN was built on Ant Design. Two products from the same company that looked like they came from different companies. Every new component was built from scratch — twice. Every design update required double the work. A customer using both CLEEN and MES experienced two different-looking products from one vendor.
Five designers. Forty engineers. The bottleneck wasn’t talent — it was the gap between Figma and code. Every design decision lost fidelity in translation.
The handoff loop
The decision
Ditch Figma. Ditch both libraries.
Build one system in code with AI.
Most designers evaluate component libraries by documentation quality and community size. I evaluated five — MUI v5, Chakra, Mantine, Ant Design v5, shadcn/ui — by three different questions.
Visual control
MUI/Ant fight you when you deeply customize. shadcn has no opinions — headless primitives + Tailwind = full control.
No dep hell
npm packages mean version conflicts across 4 codebases on different release cycles. shadcn copy-paste lives in each repo. No shared dep.
AI-readable
Claude Code reads plain React + Tailwind. MUI’s sx prop, Ant’s ConfigProvider — proprietary theming APIs are barriers to AI composition.
| Visual ctrl | No dep hell | AI-readable | |
|---|---|---|---|
| MUI v5 | ✗ | ✗ | ✗ |
| Chakra UI | ✓ | ✗ | ⚠ |
| Mantine | ⚠ | ✗ | ⚠ |
| Ant Design v5 | ✗ | ✗ | ✗ |
| shadcn/ui | ✓ | ✓ | ✓ |
The third criterion — AI-readability — is what no other design leader was asking in 2025. shadcn’s plain React + Tailwind structure meant the design system could become a Claude Code skill file: a set of instructions an AI could read and build from.
The build
One unified Design System.
Build duration
5 days
Colour palettes × shades
14 × 11
Primitives + custom components
46 + 16
Documentation pages
31
Foundations

Components

Blocks (pre-composed compositions)

The skill file (methodology punchline)
Claude Code skill file
# Leucine Design System Skill ## Tokens primary: #0052FE surface: 14 palettes × 11 shades type: Inter + IBM Plex Mono spacing: 4 / 8 / 12 / 16 / 24 / 32 ## Components 46 shadcn primitives 16 custom (sidebar, topbar, ...) ## Blocks login · signup · dashboard data-table · form · settings ## Patterns sidebar-nav · top-nav · empty-state ## Accessibility WCAG AA contrast · focus rings semantic HTML · ARIA labels
→ reading skill file...→ composing with shadcn primitives + Settings block✓ Generated using Leucine DS tokensThe system encoded as Claude Code instructions. Engineer describes a requirement. Claude reads the system — tokens, components, blocks — and builds a branded, accessible page. The design system became the designer.
Results
The designer-as-bottleneck step disappeared.
The new flow
Engineer opens Claude Code →
Claude reads skill file →
Page built with tokens & blocks →
Review and ship
Chapter 1 — The dual-system problem
Two component libraries.
When I joined Leucine in July 2020, there were two products: DWI (Digital Work Instructions, which evolved into MES) and CLEEN. Each had been built by different engineering sub-teams using different frontend frameworks. DWI was on Material UI. CLEEN was on Ant Design. There was one designer before me — a pixel pusher with no system-level thinking.
What this meant in practice: two completely different visual languages across two products from the same company. Every new component built from scratch, twice. Every design update required double the work. Onboarding new designers meant teaching two separate component libraries, two sets of conventions, two design files. A customer using both CLEEN and MES experienced two different-looking products from one vendor.
I took ownership of design across both products. Brought consistency where possible within the constraints. Focused on user research, interaction patterns, and information architecture rather than fighting a losing war against mismatched component libraries.
Material UI — MES
Ant Design — CLEEN
Chapter 2 — Hitting the ceiling
Five designers. Same problem.
As Leucine expanded from 2 products to 4 (adding Leucine OS/QMS/LES and FDA Tracker), and as the company scaled from early customers to 300+ facilities, the design demands multiplied. I grew from solo designer to Design Lead managing a team of 5.
The team was deployed across the suite — some focused on MES, some on CLEEN, some on the newer products. All working in Figma, designing screens, handing off, reviewing, iterating. The dual-system problem didn’t go away — it got worse. More products meant more surfaces, more inconsistencies, more coordination overhead.
A significant portion of every designer’s time was spent on handoff, review, and rework — not on solving user problems. The fundamental brand inconsistency between the MUI products and the Ant Design products remained unsolvable within the existing architecture.
Chapter 3 — Why shadcn/ui
Three criteria. One library that passed all three.
I evaluated five options — MUI v5 (what we already had), Chakra UI, Mantine, Ant Design v5, shadcn/ui. The evaluation criteria were not the usual ones — not documentation quality or community size, but three specific questions.
First: full visual control. MUI and Ant Design both fight you when you try to deeply customise. Their theming systems have opinions. shadcn/ui has no opinions — it’s headless primitives with Tailwind styling.
Second: no dependency hell. MUI and Ant Design are npm packages — version conflicts across 4 products with different release cycles would be a nightmare. shadcn/ui is copy-paste — the components live in each product’s codebase. No shared dependency. No version conflicts.
Third: AI-readable. shadcn/ui components are plain React + Tailwind. Claude Code can read them, understand them, and compose new pages from them without any special knowledge of a proprietary theming API. MUI’s sx prop, Ant Design’s ConfigProvider — these are barriers to AI composition.
| Visual ctrl | No dep hell | AI-readable | |
|---|---|---|---|
| MUI v5 | ✗ | ✗ | ✗ |
| Chakra UI | ✓ | ✗ | ⚠ |
| Mantine | ⚠ | ✗ | ⚠ |
| Ant Design v5 | ✗ | ✗ | ✗ |
| shadcn/ui | ✓ | ✓ | ✓ |
Chapter 4 — The 5-day build
Day-by-day: what shipped, what got pushed.
The calendar was realistic only because I knew exactly what to build. Six years of living inside the failure modes — handoff fidelity loss, double-build overhead, brand drift — meant I’d already designed the system mentally. The 5 days were execution.
- Evaluated component libraries → shadcn/ui
- Next.js 14.2 docs site set up
- Leucine Blue (#0052FE) primary; 14 palettes × 11 shades
- Inter + IBM Plex Mono; 11 type scales
- WCAG AA contrast baked in
- 46 shadcn components installed + themed
- ComponentPreview system with live preview + code tab
- Started 16 custom components (sidebar, topbar, swatches)
- Login + signup flows
- Data tables, stats cards, sidebar nav
- Empty states, pricing pages, modal patterns
- 31 documentation pages written
- Getting Started, Foundations, Components, App UI, Examples
- Live preview on every page
- Connected with 3 frontend engineers for integration
- Dark theme via next-themes; final token propagation review
- Claude Code skill file written — the design system as AI instructions
Chapter 5 — The skill file
The design system skills.
The design system is embedded as a Claude Code skill file — a set of structured instructions Claude reads before executing any frontend task. The skill file defines: colour tokens, typography scale, spacing system, component library, block compositions, layout patterns, accessibility requirements.
When an engineer needs to build a new page, they don’t open Figma. They don’t wait for a designer. They open Claude Code, describe the requirement (“build a settings page with a sidebar, form fields for profile information, and a data table for API keys”), and Claude Code reads the design system skill file and builds the page using the correct tokens, components, and blocks.
The result is a branded, consistent, accessible page that follows every design decision I made — without me being in the room. The 2-day MVP number comes from this: a new product’s entire frontend, built by an engineer with Claude Code, using the design system as the foundation. Previously that took weeks of designer-engineer back-and-forth.
Claude Code skill file
# Leucine Design System Skill ## Tokens primary: #0052FE surface: 14 palettes × 11 shades type: Inter + IBM Plex Mono spacing: 4 / 8 / 12 / 16 / 24 / 32 ## Components 46 shadcn primitives 16 custom (sidebar, topbar, ...) ## Blocks login · signup · dashboard data-table · form · settings ## Patterns sidebar-nav · top-nav · empty-state ## Accessibility WCAG AA contrast · focus rings semantic HTML · ARIA labels
→ reading skill file...→ composing with shadcn primitives + Settings block✓ Generated using Leucine DS tokensChapter 6 — Engineering workflow transformation
Engineers compose pages directly from the skill file.
Three frontend engineers worked alongside on integration. Initial pushback — they liked Figma artifacts as visual specs. The breakthrough moment: composing a settings page from the skill file in 10 minutes, having previously taken 3 days through handoff.
Current behavior: prompt Claude → review output → ship. I review at system level (token changes, new block patterns), not page level (button placement, copy adjustments). Course-corrections compound.

Page from blocks
Settings page composed from 7 existing blocks. 10 minutes. Previously 3 days through handoff.

New screen from prompt
PM described a new audit-trail screen. Engineer prompted Claude. Page rendered with the design system’s table block + filter pattern. Designer wasn’t in the loop.
Dark theme adoption
Token-based dark theme via next-themes. Adopted across 4 products in one PR — token swap propagated everywhere.
Chapter 7 — Team transformation
5 → 1. Where each person went.
The design team went from 5 people to 1 — me. Honest accounting of where each person went.
Designer A
→ Associate PM
User-thinking transferred directly. Always more interested in the why than the what. Moved where leverage was highest.
Designer B
→ Demand Generation
Visual + brand skills → marketing campaigns, social, sales collateral. Working with me in current Head of Growth capacity.
Designer C
→ Demand Generation
Same path — content sensibility → email, campaigns, landing pages. Same team, different lens.
Designer D
Left for unrelated opportunity
Departed the company for another role. Unrelated to the design system change.
Designer E
Let go
Pixel pusher. Believed in traditional Figma-first design. Could not or would not adapt to code-first. The role she defined no longer existed.
Closing
What’s next: open-source patterns specific to pharma manufacturing workflows, expand the skill file with templates for new compliance domains, and prove the same one-designer + skill-file model scales beyond Leucine.