Guilherme LéssaGuilherme Léssa
All work

Design Systems · AI-Native Build · 2025

An AI-native design system, from zero

I designed and implemented a token-driven design system from zero — token architecture, component ownership model, and implementation — built solo using an AI-native workflow: Claude Code for implementation, custom Claude skills to encode the system's rules so quality held at machine speed. The AI wrote a lot of the output. Every standard it wrote against was mine.

Client
Enterprise product org (details on request)
Role
Senior Delivery AI UX Designer
Year
2025
Outcome
594

tokens across primitive & semantic tiers

01 · The problem

Framed in business terms

The starting point was zero: no mobile token foundation, no component ownership model, and three design languages that had to coexist without collapsing into each other — iOS 26 (Liquid Glass), Material 3, and an existing web design system (BDS) holding the brand. Rebuild every component custom and you fight the platforms forever — every OS update becomes a re-audit. Go fully native with no system and the brand evaporates and every screen becomes a one-off decision. The system had to answer, structurally, the question every component would otherwise re-litigate: when do we use the platform's component, when do we build our own, and how does brand flow through both? And it had to ship against real deadlines — three priority flows already mapped for delivery — not as a two-quarter foundations project.

02 · Why AI, why now

The constraint that made AI the right call

A tri-platform token system with a component library is traditionally a team-of-several, multi-month effort: writing token specs, transforming them per platform, scaffolding components, keeping documentation in sync. Most of that work is high-precision but rule-following — exactly the profile where AI excels if the rules exist. That's the thesis of this build: AI doesn't lower the bar for design-systems work, it moves the designer's job up a level — from producing the artifacts to defining the standards the artifacts must satisfy. Instead of hand-building tokens and components, I wrote the constitution — naming conventions, aliasing rules, platform-override boundaries, accessibility gates, escalation triggers — encoded it as custom Claude skills, and delegated the production work to Claude Code with acceptance criteria attached. A solo designer operating at library scale, without the usual solo-designer failure mode (inconsistency creeping in around week three, dark mode retrofitted at the end, hardcoded hex hiding in components).

03 · Workflow

Tool orchestration & sequence

  1. 01

    Foundations & audit

    • Claude
    • Existing BDS
    • iOS 26 · M3 refs

    Every existing token classified as correct, defective, or missing — with the specific fix. I set the strategic frame (platform-nativeness first, three-layer model). The AI executed the audit against the frame and returned a defect and gap list.

  2. 02

    Token architecture

    • Primitives
    • Semantic
    • Platform

    Three strictly aliased tiers. Primitives → semantic (Light + Dark from day one) → a platform tier carrying only what genuinely differs between iOS and Android. Iron rule: components consume semantic tokens only. No raw hex on a component, ever.

  3. 03

    Encoding the standards

    • Custom Claude Skills
    • Acceptance criteria
    • Escalation triggers

    Turned the system's rules from a document a human might read into skills the AI had to follow — with acceptance criteria and explicit escalation triggers ("if a semantic role has no primitive, flag it as a gap — do not invent a value").

  4. 04

    Component implementation

    • Claude Code
    • Scoped to priority flows
    • Per-PR review

    Scoped strictly to what the priority flows touched — no speculative library-building. Each Claude Code session ran against the encoded skills; review focused on the small set of things the AI can't self-check: architecture, brand intent, edge cases.

  5. 05

    Validation gates

    • WCAG AA contrast
    • 44pt · 48dp targets
    • Dark-mode per component

    Non-negotiable gates, not afterthoughts: contrast checks on every case where brand tint sits on a system surface (tinted materials fail contrast quietly), touch targets, and dark mode validated per component — not per screen.

04 · Key decisions

Where the human overruled the obvious path

  • Platform nativeness over cross-platform consistency

    The foundational call, made early and held: when an element has a system equivalent — nav, tabs, sheets, inputs, switches, pickers — use the native component and apply brand as tint only. Build custom only where the element is unmistakably ours: brand lockup, our data surfaces, our primary CTA. Accepted cost, stated out loud: iOS and Android screens deliberately look and feel different. That's intended, not a bug — and writing it down once ended per-component relitigating forever.

  • Treat material as material, not palette

    iOS 26's Liquid Glass surfaces are dynamic materials, not fills. The tempting move — repaint them with brand color to "own" the chrome — breaks the platform. The rule I set: brand flows into glass as tint; we never tokenize the material or fight system rendering. This one sentence prevented an entire category of components from being built wrong.

  • A bounded platform tier, not a junk drawer

    Having tiers is table stakes; the real call was what the platform tier is forbidden to contain. Only five things may differ per platform: font family, system radii, elevation model, motion easing, minimum touch target. Everything else is shared. Without that boundary, "platform override" becomes the drawer where consistency dies — the fix is a fence, not vigilance.

  • Design the workflow around what AI genuinely can't do

    The AI-native part wasn't blind delegation. Per stage I mapped what agents could actually execute versus where output had to hand back to me, and restructured deliverables accordingly — import-ready specs where direct writes weren't possible, escalation instead of guessing on architecture. Judgment calls route to me; the AI never guesses on architecture.

05 · Outcome

Measured in the business, not the mockup

  • 594 tokens across primitive and semantic tiers — the full foundation for iOS and Android.
  • 42-component ownership map — every component assigned, no orphans, no overlap.
  • 2 platforms covered: iOS and Android, with a bounded platform tier that keeps brand and native behavior intact.
  • System correctly tiered, aliased, dark-mode-native, and platform-bounded — a brand change is a primitive edit, a theme is a mode switch, and an OS redesign touches the tint layer, not the library.
  • Rules encoded as Claude skills, versioned, and machine-enforceable on every generation run.
  • Explicit accessibility gates (WCAG AA contrast on tinted materials, 44pt / 48dp touch targets, Dynamic Type) treated as build-time invariants, not launch-time audits.

06 · Learnings

What I'd do differently

I encoded the standards after the first AI outputs surfaced defects — mis-tiered tokens, values where aliases should be. The audit caught everything, but it was a correction loop I paid for. Next system, the skills come first: write the constitution before the first generation run, and the audit becomes confirmation instead of cleanup. The broader lesson in one line — with AI, the leverage isn't in generating faster; it's in specifying better.

Client details withheld under NDA. Numbers, workflow, and screenshots shown in anonymized, representative form.