<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: WunderUI</title>
    <description>The latest articles on DEV Community by WunderUI (@wunderui).</description>
    <link>https://dev.to/wunderui</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4194864%2F49c7634d-30f3-4a29-a724-fde5c9a18f33.png</url>
      <title>DEV Community: WunderUI</title>
      <link>https://dev.to/wunderui</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wunderui"/>
    <language>en</language>
    <item>
      <title>Introducing WunderUI - the agentic design system</title>
      <dc:creator>WunderUI</dc:creator>
      <pubDate>Mon, 19 Oct 2026 20:36:58 +0000</pubDate>
      <link>https://dev.to/wunderui/introducing-wunderui-the-agentic-design-system-1oag</link>
      <guid>https://dev.to/wunderui/introducing-wunderui-the-agentic-design-system-1oag</guid>
      <description>&lt;p&gt;Design systems were built for humans who read docs. Now a lot of the UI gets written by AI coding agents, and they need something different: explicit rules, real components, and a design language they can't improvise around.&lt;/p&gt;

&lt;p&gt;That's why I built &lt;strong&gt;WunderUI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Far6towoqvfrb6ss9vj50.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Far6towoqvfrb6ss9vj50.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: agents guess
&lt;/h2&gt;

&lt;p&gt;Ask an agent for a billing dashboard and you usually get something that looks almost right:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;colors that are not in your palette, written as hex values&lt;/li&gt;
&lt;li&gt;a table built from &lt;code&gt;div&lt;/code&gt;s although your library has a data grid&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;transition-all duration-300 ease-in-out&lt;/code&gt; on everything&lt;/li&gt;
&lt;li&gt;props that don't exist&lt;/li&gt;
&lt;li&gt;dark mode that is a second set of hand-picked colors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this is the agent's fault. It was never told what your system is. Docs written for people are too loose, and a component library without rules has too many ways to go wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  What WunderUI is
&lt;/h2&gt;

&lt;p&gt;WunderUI is a design system with two halves that stay in sync:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a &lt;strong&gt;Figma design system&lt;/strong&gt; with tokens, variants and layouts&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;React component library&lt;/strong&gt; styled with Tailwind CSS v4 on top of Base UI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same source of truth drives the design file and the code, and the rules are written so that an agent can follow them.&lt;/p&gt;

&lt;p&gt;Right now that means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;205 components&lt;/strong&gt; in 12 categories, from buttons and inputs to a data grid, kanban, charts and a full AI chat set&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;design tokens&lt;/strong&gt; for color, radius, density and motion, in light and dark&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;5 templates&lt;/strong&gt; and a large set of ready-made screens&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;&lt;code&gt;DESIGN.md&lt;/code&gt;&lt;/strong&gt; and a &lt;strong&gt;&lt;code&gt;design.json&lt;/code&gt;&lt;/strong&gt; that any agent can fetch from the website, plus an &lt;strong&gt;MCP server&lt;/strong&gt; for clients that speak it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feqd1tqbjfahoyytc1zna.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feqd1tqbjfahoyytc1zna.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Rules an agent can actually follow
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;DESIGN.md&lt;/code&gt; is not a style guide for humans. It is a set of short, testable rules. A few of them:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Never hardcode colors.&lt;/strong&gt; Every value is a CSS variable, used through a Tailwind utility that maps to it: &lt;code&gt;bg-card&lt;/code&gt;, &lt;code&gt;text-text-secondary&lt;/code&gt;, &lt;code&gt;border-border&lt;/code&gt;. Never a hex.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Theme by overriding tokens&lt;/strong&gt;, not by restyling components. Setting &lt;code&gt;--primary&lt;/code&gt; on a wrapper re-themes everything inside it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dark mode is a class on &lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt;.&lt;/strong&gt; Never write your own dark colors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer a composite over rebuilding one.&lt;/strong&gt; Before writing a table, a board or a chat bubble by hand, check the task table. It probably exists.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Motion comes from tokens too.&lt;/strong&gt; &lt;code&gt;duration-fast&lt;/code&gt;, &lt;code&gt;ease-entrance&lt;/code&gt;. Never a raw &lt;code&gt;duration-300&lt;/code&gt; and never &lt;code&gt;ease-in-out&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There is a "do and don't" section with the mistakes that cost the most time, each as a pair, and a task table that maps "I need a data table with filters" to the right component. An agent reads it once and stops guessing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6gyafnoepqpv6rqghm49.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6gyafnoepqpv6rqghm49.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Components for agent interfaces
&lt;/h2&gt;

&lt;p&gt;If you build products &lt;em&gt;with&lt;/em&gt; agents, you also build interfaces &lt;em&gt;for&lt;/em&gt; them: a run with steps, an approval gate, a cost meter, a failure state. WunderUI has components for exactly that, so you don't assemble them from badges and divs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;AgentStatus&lt;/code&gt; for the state of a run&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;RunTimeline&lt;/code&gt; for its steps and tool calls&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ApprovalCard&lt;/code&gt; for the human-in-the-loop moment&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;CostMeter&lt;/code&gt; for spend&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;RunError&lt;/code&gt; for when it goes wrong&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These agent components are part of the Pro plan.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmz58326hpvgkod3d7l80.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmz58326hpvgkod3d7l80.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Skills that build and check
&lt;/h2&gt;

&lt;p&gt;On top of the rules there are agent skills. A skill is a small, versioned instruction set that a coding agent can load. Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;wunderui-screen&lt;/strong&gt; builds a complete React screen from one sentence, using only the components your plan includes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;wunderui-theme&lt;/strong&gt; generates a brand theme from one hex color&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;wunderui-token-check&lt;/strong&gt; finds hard-coded colors, spacing and radii that bypass the tokens and maps each one to the nearest token&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;wunderui-motion-audit&lt;/strong&gt; checks animations against the motion rules and proposes a patch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are 12 skills in total, four of them free.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzqm4u4d8vhizsgp410se.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzqm4u4d8vhizsgp410se.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is free
&lt;/h2&gt;

&lt;p&gt;I wanted the core to be usable without a purchase:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;77 components are free and MIT-licensed&lt;/strong&gt; (source on GitHub: &lt;code&gt;wunder-ui/wunderui&lt;/code&gt;). Add one with &lt;code&gt;npx wunderui-cli add button&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The free skills are MIT as well: &lt;code&gt;npx skills add wunder-ui/wunderui&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Core and Pro&lt;/strong&gt; add the remaining 128 components (charts, KPI cards, data grid, app layout, AI and agent components), blocks, templates and all skills. They are yearly plans, and you can find the details on &lt;a href="https://wunderui.com" rel="noopener noreferrer"&gt;wunderui.com&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The package is not on the public npm registry, so &lt;code&gt;npm install @wunderui/react&lt;/code&gt; will not work. The free components come as source through the CLI, and Core and Pro through a private repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;The fastest way to see what it does:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add a free component: &lt;code&gt;npx wunderui-cli add button&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Point your agent at &lt;code&gt;https://wunderui.com/DESIGN.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Ask it for a screen and check the result against the rules&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbqkq8sxrausc3a004rq0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbqkq8sxrausc3a004rq0.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;I'm working on more templates, more agent components and better Figma-to-code sync. If you try it, I'd like to hear where your agent still gets it wrong. That's exactly the feedback that turns a rule from "nice to have" into something written down.&lt;/p&gt;

&lt;p&gt;What's the one rule you wish your coding agent followed every single time? Tell me in the comments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Links:&lt;/strong&gt; &lt;a href="https://wunderui.com" rel="noopener noreferrer"&gt;wunderui.com&lt;/a&gt; · &lt;a href="https://github.com/wunder-ui/wunderui" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://wunderui.com/DESIGN.md" rel="noopener noreferrer"&gt;DESIGN.md&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>design</category>
      <category>frontend</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
