Collage of Chalk work: the Spacing tokens page in Storybook, the Avatar Group documentation page, and Figma specs for Filter Select, Avatar Group, Color Field, and Tile
Collage of Chalk work: the Spacing tokens page in Storybook, the Avatar Group documentation page, and Figma specs for Filter Select, Avatar Group, Color Field, and Tile

60.1%

+115%

Chalk adoption

250

−189

Backlog tickets reduction

3,888

AI queries to the MCP server

114

Completed documented pages

60.1%

+115%

Chalk adoption

250

−189

Backlog tickets reduction

3,888

AI queries to the MCP server

114

Completed documented pages

A shared system

Chalk was Thinkific’s design system. Toga, a legacy library, was still in use because some components existed only there, so the work was to close those gaps and bring teams onto Chalk.

Thinkific Admin Courses page showing a grid of course cards, each marked Published

Consumption across products

Waffle charts of component usage by product. Admin uses 44.25% Chalk, 15.75% Toga, and 40% custom components. Learner uses 29% Chalk, 6.5% Toga, and 64.5% custom components

What I joined

Chalk was Thinkific’s design system, built in-house by Team Lego for a learning platform used by course creators and learners. An earlier library, built with an outside partner in 2022, mainly covered Admin components. Team Lego built Chalk from there, and the team also owned the front-end architecture that products were built on.

Teams got mixed signals about what they could use. Most of Chalk’s documentation lived in Storybook, written for engineers and focused on props. Designers had to work out whether a component was part of the public system or a private building block not meant to be changed. The Figma libraries and Storybook were only partly in sync, which made that question harder to answer.

Toga, the legacy library, was still in use. Some components existed only there, so teams that needed them kept building with Toga. Nobody was actively maintaining it, which created accessibility and upkeep risk, and it constrained newer design directions in the Admin experience. Dark mode was out of scope, partly because it depended on every product using Chalk’s tokens.

Learner library page from a sample school, with category navigation and a grid of course cards

Defining success

We measured early success in growing Chalk against three criteria.

Adoption

Chalk’s share of component usage compared with Toga and custom components, tracked in Storybook.

Maturity

How many components sat in each lifecycle stage (experimental, new, stable, verified), plus recipes.

Documentation use

Views, AI queries, and helpfulness ratings in Zeroheight after launch.

Later, when AI became part of our tool stack, drift, alignment, and governance became part of our success model too.

Planning the roadmap

The first thing I built was a maturity model: a five-level scale from a UI kit to a public design system. It gave the team a shared answer to "what level are we at, and what would the next one take?" I paired it with a review of Storybook, Figma, and the live product, so the roadmap started from what teams actually used.

Five-year roadmap for Chalk, from 2026 to 2030: core components, develop and stack, standardization, scale and growth, then ecosystem
FigJam board for planning Chalk in 2026, with an MVP component map, a reach and impact scoring table, and quarterly design and engineering columns

Three paths, one choice

Team Lego chose Build. Its strength was a complete core and clear usage guidance, so teams could build with Chalk instead of around it. Its risk was a slower start on adoption, which the plan answered with a migration timeline. Nine Toga components had no Chalk equivalent. Rebuilding them was estimated at about 18 weeks, with about 24 more to migrate existing usage.

Build

Core library and documentation first, then migration

Diversify

Work on every area at the same rate

Adoption

Migrate Toga and custom components now

Starting the work

The first months covered the work most design system teams do, plus a backlog cleanup. We cut the backlog from about 439 tickets to about 250 in two weeks. Many were done but never closed, and I made the design calls that let them close.

I restructured the Figma libraries so private parts were clearly separate from public components. Design and content guidance moved into Zeroheight, which became the home for documentation. Storybook stayed focused on component props.

Before

Before: the Chalk archive file in Figma, with Section Primary, Secondary, and Tertiary specs laid out side by side

After

After: the Chalk Components Figma file, with one page per component and a warning banner that marks the master components

Shipping components with a quality gate

I designed, specced, and delivered 12 new or promoted components for web, including Avatar Group, Bottom Sheets, Color Field, Inline Alert, and Filter Select. Each was reviewed against its spec in Chromatic, which we used for design QA.

Spacing spec for a 3-column grid of lesson type tiles, with 16px gaps marked between rows and columns
Animation of the Avatar Group component, showing four avatars and a +2 overflow indicator
Animation of the Color Field component, set to Accent with the value #3D63DD

Clarifying how recipes graduate

Recipes were the other gap. Feature teams built components that could graduate into Chalk, but most of the people building them were not front-end engineers, and recipe quality varied. That made it look as though Team Lego owned every recipe. I rewrote the recipe documentation to set out how a recipe graduates, who owns it, and how to build one that can.

Clarifying how recipes graduate

Recipes were the other gap. Feature teams built components that could graduate into Chalk, but most of the people building them were not front-end engineers, and recipe quality varied. That made it look as though Team Lego owned every recipe. I rewrote the recipe documentation to set out how a recipe graduates, who owns it, and how to build one that can.

Recipes guide for extending Chalk: what a recipe is, who owns it, why Team Lego limits them, what Team Lego supports, and how a recipe graduates to core
Recipes guide for extending Chalk: what a recipe is, who owns it, why Team Lego limits them, what Team Lego supports, and how a recipe graduates to core

Components

Document every component with design-oriented direction and industry usage standards.

Chalk documentation page explaining when to use Segmented Control or Tabs, with a nested layers example

Components

Document every component with design-oriented direction and industry usage standards.

Chalk documentation page explaining when to use Segmented Control or Tabs, with a nested layers example

Patterns and rules

Standardize the design patterns used across our product so teams can quickly find what they need and put it into practice.

Chalk Focus documentation page showing how focus moves from a course card to its overflow menu button

Patterns and rules

Standardize the design patterns used across our product so teams can quickly find what they need and put it into practice.

Chalk Focus documentation page showing how focus moves from a course card to its overflow menu button

The company turns to AI

In the second quarter of 2026, the leadership structure changed, and the CEO became more directly involved in the organization’s priorities. Planning moved toward shorter cycles, and the question became what the company could deliver faster with AI. More designers and teams began building prototypes in Claude alongside Figma.

For Team Lego, the question changed too. The earlier question was how to make Chalk complete. The new one was how to keep quality high as more people built with AI. That meant building more high-quality components and frameworks, documenting props and rationale, and making the rules visible to tools.

This is where the Build path’s assumption was tested. Build argued that a complete core and clear guidance would let teams build with Chalk. AI prototyping made that concrete: a prototype either followed the system’s rules or drifted from them, and the drift showed up quickly.

Illustration of a robot checking a clipboard checklist with a magnifying glass

Calibrating Chalk for AI prototyping

Before AI, documentation served people. I wrote guidance ahead of questions, so most Slack questions had a link as the answer. After AI, the same documentation also had to serve tools with no prior context, and that required a different kind of writing.

Calibrating Chalk for AI prototyping

Before AI, documentation served people. I wrote guidance ahead of questions, so most Slack questions had a link as the answer. After AI, the same documentation also had to serve tools with no prior context, and that required a different kind of writing.

Diagram of Zeroheight at the center, connected to Figma, GitHub, Slack, and Storybook, and feeding Figma Make and Claude Code
Diagram of Zeroheight at the center, connected to Figma, GitHub, Slack, and Storybook, and feeding Figma Make and Claude Code

Decision rules, not only descriptions

An AI tool choosing between component A and component B needs a clear rule for when to use each. I wrote "when to use" guidance for the components teams reached for most, so a tool could make the same call a designer would.

Documentation section titled Filter Select or Filter Chips?, with rules for when to use each and an example of both
Documentation section titled Action Menu, or Action Menu Bottom Sheet?, comparing a floating menu with a bottom sheet on mobile

Rationale for every variant that stays

Over time, buttons and other components had picked up variants with no documented reason. I wrote the rationale for the variants that stayed, which gave people and tools the same basis for choosing.

Action Menu documentation on sections, comparing a menu grouped by section labels with a menu split by dividers
Copy button documentation showing the states from rest to pressed to Copied for 2000ms, then reset, for three button styles

A loop from drift to rule

When AI output drifted from Chalk, we turned the failure into a written rule, so the next build avoided it.

1

AI produces a bad pattern

2

We capture what went wrong

3

We document the pattern as a rule

4

The next AI query reads the rule

Segmented Control best practices: use it to switch views rather than to trigger actions, and keep it to five segments or fewer

Connecting the MCPs and holding quality for learners

We connected three MCP servers: Storybook MCP for component props, Chalk MCP for the system itself, and Zeroheight MCP for design and content guidance. I focused on the Zeroheight integration, because design documentation held the largest share of the system’s content. Through it, Claude Code could read Chalk’s tokens, principles, and guidance on choosing between components. It became the main checkpoint for quality in the team’s shared prototyping repo.

Connecting the docs was not the last step. I opened pull requests in the prototyping repo to align designs with Chalk, and Chromatic checked new and updated components against their specs.

Outcomes

Zeroheight also showed us how the documentation was used. We could see visits and how often Claude Code pulled context from it, and the AI queries trended upward.

Zeroheight analytics for the Chalk docs, February to September 2026

Reflection

The design team was the first audience for the documentation. Sharing it with the wider organization earlier would have reached more people. I also didn’t have admin access to library analytics, so we couldn’t measure code adoption or Figma detach rate. Both would be first in a future measurement plan, alongside a fixed test set from day one.

Interested in this project?

Want to talk through how we made Chalk readable to AI? This page is a preview, and I’m happy to walk through the full story.