part 1: foundations

accelerating anaconda with an ai- connected design system

overview

Using Shadcn as a foundation, I led the creation of Anaconda’s new design system and pattern library; I connected both of these libraries using MCPs to Claude Code and Claude Design, helping our designers build and developers at a rapid velocity.



Using Shadcn as a foundation, I led the creation of Anaconda’s new design system and pattern library; I connected both of these libraries using MCPs to Claude Code and Claude Design, helping our designers build and developers at a rapid velocity.

Role

Senior UX Designer:
Foundation and Pattern Design Lead

product

Shared foundation for Anaconda’s product portfolio

collaborators

Product manager, 3 designers, and 2 engineers

timeline

3 months

constraints

Acquisition-related uncertainty, competing stakeholder priorities, and framework limitations

impact at a glance

4x faster

at creating design patterns once connected to Claude

75%

accuracy on ai-generated screens

60% fewer

duplicate UI patterns across products

the problem

Anaconda’s designers and developers need a way to prototype, build, and ship consistent screens faster, because disconnected design libraries and code require manual alignment and repeated work, which slows handoffs and delays delivery.

Business Need

Anaconda needed to ship products faster while reducing design and development costs. A shared, AI-connected design system would cut repeated work, speed up handoffs, and help teams deliver more with existing resources.

Design and Engineering Need

Designers and developers needed shared, reliable building blocks to quickly prototype ideas, hand off designs, and build screens without recreating components or resolving inconsistencies between Figma and code.

Step 1

Choosing a foundation built for speed

We compared leading component libraries to find a foundation that could support our new stack, work with AI tools, and help designers and developers move faster together.

our criteria

What we needed from our foundation

Guided by our Architecture Decision Record, we evaluated each library against five requirements:

  • Svelte Support

  • Compatibility with Ai-assisted design and code generation

  • Code ownership and extensibility

  • Accessibility

  • Flexible theming

our recommendation

Why we recommended shadcn-svelte

Built for our Svelte stack

Aligned with our chosen framework and gave design and development a shared starting point.

a lightweight foundation

Provided the flexibility to build around the components we needed.

Code that our team and ai could work with

Components lived in our repository, giving developers control and AI tools access to the code they needed to build on.

accessibility we could inspect and improve

Access to component source code made it easier to evaluate accessibility and address issues directly.

step 2

turning a component library into a shared system

I organized the Figma library, prioritized delivery, and defined when components were ready for engineering, giving the team a clear path from foundations to reusable patterns.

METHODOLOGY

Creating structure with atomic design

shadcn gave us the building blocks. I used atomic design to organize them into foundations, components, and patterns—defining how they fit together to create consistent screens.

library structure

Making the system easy to navigate and deliver

I organized the library and delivery process so designers could find what they needed and engineers knew what was ready to build.

ORGANIZING FIGMA

applying atomic design

I separated foundational elements, components, and patterns into clear groups so designers could find, reuse, and understand how they fit

Planning delivery

building in the right order

I planned foundations and variables for Sprint 1, then dependent components for Sprints 2 and 3, tracking delivery in Jira.

defining readiness

Setting a shared standard

I added acceptance criteria to each component’s Jira story, giving designers a checklist to complete before handoff and engineers a clear standard for what was ready to build.

component design

making the library our own

We applied Anaconda’s visual foundations to the prebuilt components, checked token mappings and layout rules, and reviewed accessibility across light and dark modes.

the atoms

applying Anaconda’s visual foundations

We customized colors, typography, spacing, border radii, elevation, icons, and logos to establish a shared visual foundation.

the foundations

checking every component against the rules

We reviewed component sizing, spacing, and styling, checking that color and typography tokens were mapped correctly throughout the library.

the review

Improving accessibility and trimming what we didn’t need

We reviewed components across light and dark modes, corrected contrast issues, and removed unused components to keep the library focused and easier to maintain.

Testing revealed insufficient text contrast in dark mode. We adjusted the muted-foreground token to improve readability.

constraints & tradeoffs

Adapting our approach to keep design and code aligned

Our existing component structures and token conventions didn’t always fit the new library. We adjusted both to keep Figma aligned with implementation.

constraint 1

Restructuring components to match code

We initially grouped inputs under a single parent component with Boolean properties. When that structure didn’t match implementation, we returned to shadcn’s Figma structure so design and development followed the same model.

constraint 2

Rethinking token names to protect the connection

We carried over token naming conventions from our Kendo library, but they caused implementation issues. We restored the expected names, remapped affected components, and checked color and typography mappings across light and dark modes.

The token names required to keep the new library aligned with code.

The naming conventions carried over from Kendo that caused implementation issues.

constraint 3

finding common ground across teams

Acquisitions brought together teams with different product identities and expectations. We worked through decisions about color and component styling, clarifying what belonged in the shared library and what needed broader brand input.

Different views on the Storm palette highlighted the need to involve new stakeholders in color token decisions.

Teams had different preferences for focus states. We adjusted the effect while retaining shadcn’s default border.

testing

Putting the system to work with AI

We tested whether Claude could turn our Figma library into consistent patterns and screens. Each iteration showed where the system worked and where it needed clearer guidance, shaping the pattern library that came next.

  1. check consistency by building 2 screens by hand

We assembled screens in Figma to check how components worked together before testing AI-generated layouts.

  1. Claude code for designers and devs; claud design for prototype

I tested both tools to see how quickly they generated usable screens, how closely they followed our design system, and how well they organized layouts.

Claude design

  1. Created Design System in Claude Design (added via .fig file)

  1. I commanded Claude Design to create a Figma screen based on the screenshot from one of our desktop prototypes.

  1. The output was only in prototype format. Good for creating quick ideas and designs to show stakeholders and clients, but not great for dev handoff.

CLAUDE Code

  1. Commanded Claude Code to memorize foundation design system via Figma link.

  1. I commanded Claude Code to create a Figma screen based on the screenshot from one of our desktop prototypes.

  1. The output of the screen into Figma: excellent. Not all components were linked, and some of the missing ones showed where patterns needed to be.

reflections

Building a better system meant rethinking how we worked

My first major project as lead product designer taught me to take ownership of the full experience, from shaping the workflow to keeping delivery on track.

1

learn the rules before rewriting them

I learned to understand the system’s structure and check with developers before changing it. What felt simpler in Figma created extra work in code.

2

Invite input, clarify ownership

Midway through, we narrowed ownership to two designers, with the wider team providing feedback. That worked better. Next time, I’d establish owners and review criteria from the start, then stick to them.

3

keep testing as we build

Testing real screens with Claude revealed gaps that individual component reviews missed. Next time, I’d bring those tests in earlier to refine the foundations and patterns as we built them.