01 · AI + Design Systems

AI-Assisted Design
Documentation Platform

The gap between design intent and shipped product cost weeks of back-and-forth on every component. I built a living documentation platform to close it — and learned that the hard part was never generating the documentation. It was architecting the system that holds it.

  • AI + Automation
  • Design Systems
  • Prototyping
  • Design → Engineering

No shared source of truth

Every component handoff followed the same script: send a PDF export, a link to a Sketch library, and a Radar ticket written for an engineer who hadn’t sat in the design review. Nobody could run the spec. Nobody could resize it to test mobile. And by the time engineering asked the first follow-up question, the Sketch file had already changed.

The result was a fragmented documentation landscape. Each artifact lived in a different place, maintained by a different person, at a different level of freshness. Web developers discovered edge cases the PDF never addressed. Engineers had to interpret static annotations instead of inspecting working code. Designers spent their time answering questions a running prototype would have answered on its own.

“Specs felt like a wishlist.”

The fix wasn’t better annotations or more detailed tickets. It was a different format entirely — one that could run in a browser, adapt to dark mode, and answer follow-up questions before anyone had to ask them.

PDFs, Sketch links, and tickets — three artifacts, three owners, three versions

What I couldn’t change

Three things were fixed before I started, and each one shaped the outcome more than any decision I made afterward.

Sketch was the input, not by preference but by policy. It’s the approved design tool, so any pipeline had to begin there. That ruled out the tooling most design-system automation assumes.

I had no access to the production source code. Whatever the platform produced could never be the code that ships. That single constraint defines the ceiling of this project, and I designed against it rather than around it.

The team was hesitant. Changing how designers hand work to developers means changing what both sides are accountable for. The resistance wasn’t to the tool — it was to the shift in a working relationship that had been stable for years.

A platform architecture, not a document template

I chose to generate a running page at a URL rather than produce a better static document. The alternative was available and cheaper — more detailed annotations, longer tickets, a stricter PDF template — and I rejected it because none of those change the fundamental problem: a static artifact can only answer questions its author anticipated. A prototype answers the ones they didn’t.

The platform had to serve three audiences at once. Designers needed high-level specs. Engineers needed complete handoff detail. Web developers needed something they could open in devtools and inspect directly. A single static format can’t serve all three; a page that adapts can.

The method is a loop, not a pipeline

Each component followed the same path, and the middle step is the one that matters. First, decide the component from what actually needed building — for example, a modular reveal container that holds an image or icon, with optional items that can be toggled on or off depending on the page. Then design it in Sketch, in multiple views, to see the structure in visual terms before any code existed.

Then build it with AI and test the limits. This is where the design work happens. Not “does it render,” but what breaks it — what content lengths, what nesting, what viewport, what combination of optional elements. The generated component is a hypothesis; stress-testing is how it becomes a spec. Only once it held up did the documentation pass begin.

All of the code was written by AI assistance, directed by my prompts. I want to be precise about that, because it locates the contribution correctly: my work was deciding the architecture, defining the constraints, finding where the output was structurally wrong, and directing it toward something that scales. The generation was never the hard part.

How prototypes are generated

Sketch
File
Claude
API
Stress-test
& Refine
HTML / CSS
/ JS Output
GitHub
PR Review
Published
Article

Structured for 40+ components at scale

The platform organized everything into five top-level categories: Design Tokens, Components, UX Specifications, Accessibility, and Resources. Each category had its own section in a persistent collapsible sidebar — navigating between components never required a trip back to the homepage.

Within each article, a floating table of contents gave engineers and developers quick access to specific sections — Overview, Interactive Prototype, Anatomy, Variants, Breakpoints — without scrolling through content that wasn’t relevant to their task.

A URL, not a PDF

The output of every pipeline run was a page — not a file to email, not a Sketch artboard to share, but a real URL that anyone on the team could open in any browser. Designers could walk management through a component without needing Sketch installed. Engineers could open the prototype in devtools and inspect the actual CSS. The interactive prototype replaced what used to be a long written description in a Radar ticket, open to interpretation.

Dark mode was designed in at the data level, not the surface level. The color reference tables don’t invert — they display the actual dark mode token values, because the hex codes themselves differ between themes. An engineer reading that table gets the correct value for the mode they’re implementing, not an approximation of it.

Three fragments (PDF + Sketch + Radar ticket) become two: one Radar ticket + one shared URL

Color token values change between themes — the table reflects the correct hex for each mode

The architecture I didn’t design

The documentation site itself almost didn’t come together.

I designed it the way a designer designs a page: screen by screen, solving what was in front of me. What I hadn’t designed was the system underneath — and it failed in three specific ways.

Hardcoded values instead of variables. As the site grew, colors went in as hex codes rather than tokens. Light and dark mode broke constantly, and every fix was local to one page.

Cache-busting wasn’t thought through. Updates shipped and didn’t appear. Stale files kept being served while the source had already changed — the same class of problem the platform existed to solve, reproduced in the platform itself.

Generated pages didn’t inherit anything. New articles were created on top of the site rather than from a shared foundation. Each one carried its own structure. Some were never linked into the navigation at all — real pages, reachable only if you knew the URL.

AI produces locally-correct output while having no model of the system that output belongs to.

None of these were AI errors in the narrow sense. Every page it generated was correct on its own terms. That’s precisely the failure mode. It optimizes the artifact in front of it, and left undirected it will default to literals over tokens, new files over shared foundations, and no global wiring — every single time.

The fix was information architecture, applied to a codebase instead of a navigation tree. One source of truth for tokens. Generated navigation instead of hand-linked pages. One foundation every article inherits. The site became a pseudo-CMS: create a spec article now and it wires itself into the navigation and renders through the correct template automatically, because the structure decides that — not the generation step.

That rethink is the actual design contribution in this project. Learning to direct AI toward scalable architecture is not a prompting trick — it’s the same systems judgment that makes a design system work, applied to a medium that will happily let you skip it.

Pages that inherit nothing drift apart and fall out of the nav — one foundation keeps them consistent and wires them in

A shared reference, and a boundary

A living documentation platform. Interactive prototypes embedded in every component article. Shared across design, engineering, web development, and management. No translation layer.

40+

Components documented

Components already in production, now documented on the platform — design tokens, components, and UX specifications.

2

Through the full loop

Two components have gone from Sketch to stress-tested prototype to published article. Both were materially faster to hand off than the process they replaced.

In progress

Rollout

Adoption is ongoing and some components are still pending. I’m not putting a multiplier on a sample of two.

What it doesn’t do

The platform does not produce production code. I don’t have access to the source, so what it emits is a working prototype in HTML, CSS and JavaScript — a reference for intent and behavior. Engineers still implement in their own language and syntax, against parameters I don’t have. It is not a copy-paste source, and calling it one would misrepresent where the handoff boundary actually sits.

That boundary is worth naming, because it clarifies what the platform is for: not eliminating implementation, but removing ambiguity from it.

What changed for each audience

Designers stopped fielding clarifying questions — the prototype answered them. Engineers stopped interpreting static specs — they inspected real behavior. Web developers stopped working from guesswork. Management stopped asking to see Sketch files and opened a URL.

Adoption is not finished. Some of the hesitancy I described at the start is still there, and it’s reasonable — this changes what each side is accountable for at handoff.

The part that transfers

The deeper shift: when documentation runs in a browser, the question changes from “did the designer spec this right?” to “does this behave the way we intended?” That’s a much more useful conversation — and one that AI-assisted documentation makes possible without adding overhead to the design process.

The lesson I carry out of it is narrower and more useful than the platform itself: AI doesn’t change design-system architecture principles. It makes violating them faster. I’ve since seen the same three failures — hardcoded values, unversioned assets, pages that don’t inherit or register — appear in other AI-assisted projects. The third time, I went in knowing what to check.