Protected

Password required

This work is shared selectively. Reach out at karleeboillot@gmail.com if you need access.

Incorrect password — try again

← Work
8 min read

AI + Design Systems · Fluent Design Repository

I've Never Designed Anything Like This

14 components. One spec file each. And the Figma asset built by an AI model in 7 minutes — directly in Figma. The shift wasn't adding AI to the workflow. It was making the spec and the component the same artifact.

Role
Co-lead — design systems, engineering, and content design partnership
Repository
fluent-design repo (internal GitHub)
Platforms
Web · iOS (Xcode/SwiftUI) · MCP-compatible
Components
14 — accordion, button, checkbox, divider, menu, menuitem, messagebar, popover, switch, tab, tablist, tag, toolbar, tooltip
Three interconnected circles: Figma on the left, Markdown/YAML in the center, and Coded Component on the right — showing the markdown spec as the single source of truth for all three consumers
One source, three consumers. The markdown spec is the center node — designers, engineers, and AI agents all read from the same file.

By the numbers

Results

14

Components fully spec'd, implemented, and documented from a single markdown source

7 min

Time for an AI model to build a button component directly in Figma from the exported spec

1+

Hours for the full workflow — spec → usage → demo → Figma asset — end to end

3

Consumer types served by one source: human designer, human engineer, AI agent

The core shift

When Documentation Is the Component

The real shift here wasn't adding AI to the workflow. It was structural: the same file that describes a component to a designer describes it to an AI agent and to an engineer. You don't write the component and then document it. The documentation is the component.

This is different from "design + engineering aligned" — that's cultural. This is structural alignment: one markdown spec at the center, all three consumers reading from it simultaneously. When the file is done, every consumer is done.

Impact

Before & After

Before

Three separate truths

Designer creates in Figma. Engineer implements in code. Documentation lives in Notion or Confluence — always slightly behind. AI tools querying the system get inconsistent answers depending on which artifact they read first.

  • Figma file as designer reference
  • Code as engineering source
  • Docs as (outdated) prose
  • AI gets whatever it can find

After

One source, every consumer

One markdown spec in the fluent-design repo. Designers read it. Engineers implement from it. AI agents build Figma components from it directly. When the spec updates, all consumers update.

  • Glossary.md — shared terminology
  • YAML spec files — structured component definitions
  • Markdown docs — human-readable + AI-readable
  • Figma built from spec by model — not manually

Background

How Design Systems Usually Work

The standard model: a designer creates a component in Figma. An engineer implements it in code. The connection between them is informal — a Figma link, a Zeplin handoff, a Slack thread. Documentation lives separately, in Notion or Confluence or a doc site, and it's always slightly out of date because updating it is a second job.

AI tools trying to generate UI or assist with design read from whatever they can find — Figma files, code comments, documentation pages — and get inconsistent answers depending on which artifact they encounter first. The result: designers, engineers, and AI agents are all reading from different versions of the same truth.

For a team like Fluent, this compounds. 500+ tokens with no shared language to help anyone know what's redundant. Components marked "high priority" in one doc, "P0" in another, "critical" in a third. Figma component authoring was manual, repetitive, and disconnected from the spec — updating a component meant touching the same information in multiple places.

The Problem

Design and engineering were building the same system in parallel languages — and AI tools were getting lost in translation between them. No single source of truth existed that was legible to all three consumers: human designer, human engineer, AI agent.

Approach

Markdown as the Center Node

The fluent-design GitHub repository becomes the source of truth. Not Figma. Not a doc site. A repo. The shift sounds simple; the implications are substantial. One update in the markdown propagates to all consumers. Shared language means the same terms appear in glossary.md, TypeScript type comments, YAML specs, and Figma component descriptions — tokens are human-readable and AI-inferable from a single source.

The structure of the new system

Skills architecture diagram showing Core Skills categories — Tokens, System, Components, Processes — flowing to Output, with Extension Skills branching from the side
The skill structure governing how Claude navigates and authors in the repo. Each skill category has a defined role; the model loads the relevant skill files before doing any work.

What "AI-optimized" actually means

The repo uses a flex-* plugin system that structures how Claude — the primary AI agent used alongside Copilot and Cursor — navigates and authors within the repo. Skills are referenced as {plugin}:{skill} — for example, flex-components:button or flex-processes:spec-review — and the model loads the relevant skill files before doing any work.

Core skill categories: Tokens (token conventions and definitions), System (system hierarchy and cross-plugin pointers), Components (per-component specs), Processes (spec generation and review), and Output (artifact generation).

flex-local:generate-component-artifacts is the orchestrator: it spawns per-component generation and review subagents with full process isolation and produces all four output types — HTML demo, markdown spec page, markdown usage page, summary blurb — from the single source spec. The HTML demo is the hard gate for definition of done.

YAML spec file showing structured component definition with props, variants, guidance, and P0/P1/P2 prioritization language
A YAML component spec — the same prioritization language (P0/P1/P2) that appears in Figma, TypeScript, and the AI agent's queue.

Definition of done

A component is complete when: spec files written (SKILL.md, tokens.yaml, usage.md, web/interaction.md, web/accessibility.md) + Figma build done + artifacts generated + review skills pass. The HTML demo is the hard gate — nothing ships without a working demo generated from the spec.

Process

How It Got Built

  1. 01

    Audit existing state

    Audited what Fluent documentation existed, where it lived, and who was actually reading it. Identified that designers, engineers, and AI tools were pulling from different versions of the same truth — and that no single artifact served all three consumers.

  2. 02

    Define the information architecture

    Designed the structure of the markdown-first spec — how components, tokens, processes, and outputs would be organized within the repository. The architecture needed to be navigable by humans and by models following skill-based routing.

  3. 03

    Build glossary.md as the shared language foundation

    The glossary was written first — shared terminology that flows into Figma component descriptions, TypeScript type comments, and YAML specs. Each term was defined once and validated to appear consistently across all three surfaces.

  4. 04

    Develop the YAML schema

    Built the component definition schema with structured fields for props, variants, guidance, and a consistent P0/P1/P2 prioritization language. The schema needed to be AI-inferable — a model should be able to filter, prioritize, and generate without ambiguity.

  5. 05

    Build out 14 components

    For each component — accordion, button, checkbox, divider, menu, menuitem, messagebar, popover, switch, tab, tablist, tag, toolbar, tooltip — the full sequence ran: spec → usage guidance → demo → Figma asset. Every step derived from the single markdown source.

  6. 06

    Ship cross-platform

    Extended the system to MCP packaging and Xcode/SwiftUI integration. The technology-agnostic spec is what makes cross-platform scale possible — the spec doesn't care which platform reads it.

"I think we've shown what a successful design system looks like at Microsoft and brought design/dev even closer together at the horizontal layer, thanks for always presenting a united front whether we are speaking to leadership or teams on the ground."

Senior UX Engineer · Peer review, 2026

The artifact

7 Minutes to a Figma Component

The Figma asset step is where the system's speed becomes visible. Claude reads the exported spec and builds the component directly in Figma — no manual Figma work required for the build step. For a button component, this takes 7 minutes.

The important context: 7 minutes is the Figma asset step specifically. The full workflow — spec → usage → demo → Figma asset — is 1+ hours end to end. The 7-minute number is a result of the system working correctly, not a headline claim about AI speed. The speed is evidence of structural alignment. A Figma build that takes 7 minutes from an exported spec is only possible because the spec is precise enough, machine-readable enough, and complete enough for the model to act on without ambiguity.

Scale

One Spec, Every Platform

The technology-agnostic markdown spec is what makes cross-platform extension possible. The same spec that generates a web component generates an iOS/SwiftUI component. The same spec that a human designer reads is the spec an MCP-compatible tool consumes.

This was the core collaboration: the engineering architecture and the design specification were built together, from the beginning, to serve the same source. That joint authorship is what makes the system structural rather than cultural — it's not a design team and an engineering team agreeing to look at the same file. It's one file that's actually right for both.

Diagram showing one markdown spec branching into three outputs: Web component, iOS/SwiftUI component, and MCP-packaged component
The technology-agnostic spec is the unlock. One source, every platform.

Detail

The Shared Language in Action

The shared language diagram is the most concrete proof the system is working: the same term appearing in glossary.md, a TypeScript type description, a YAML spec field, and a Figma component description — unchanged, without translation, without interpretation.

Before this system, a designer might call something a "label," an engineer might call it a "caption," the Figma component description might say "text," and a documentation page might use all three. AI tools trying to connect these get inconsistent answers. The glossary resolves this: one term, defined once, verified to appear consistently across all surfaces.

A New System Source of Truth diagram showing two-column structure: For humans (overview.md, glossary.md, styling.md, color.md, layout.md, typography.md) and For models (generics.yaml, primitives.yaml, SKILL.md files per token category)
One source of truth, two formats. Markdown keeps documentation human-readable; YAML keeps it machine-structured. Both sides speak the same vocabulary.

Looking ahead

What's Next

The original presentation

An AI-Optimized Design System

Slides 1–20: Karlee Boillot  ·  Slides 21–42 (Modular Skills): Lydia Mitchelson + Toshie Rashtavie