<?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: Mischa</title>
    <description>The latest articles on DEV Community by Mischa (@mischa).</description>
    <link>https://dev.to/mischa</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F215908%2Fb6c9d5ba-5be0-4a0a-9104-716f90984445.jpeg</url>
      <title>DEV Community: Mischa</title>
      <link>https://dev.to/mischa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mischa"/>
    <language>en</language>
    <item>
      <title>A Seond Brain For Your Agents</title>
      <dc:creator>Mischa</dc:creator>
      <pubDate>Wed, 29 Apr 2026 09:02:43 +0000</pubDate>
      <link>https://dev.to/mischa/a-seond-brain-for-your-agents-450i</link>
      <guid>https://dev.to/mischa/a-seond-brain-for-your-agents-450i</guid>
      <description>&lt;p&gt;One of my agents was about to start a web search for design token naming conventions. The task was in my design system project, and watching the session live, I already knew what it would find: a mix of opinions, half-applicable patterns, and general best practices.&lt;/p&gt;

&lt;p&gt;The thing was, this question had already been settled in another active session. Different agent, same project, working on a related part of the system. There were examples and a short doc that explained why I chose what I chose.&lt;/p&gt;

&lt;p&gt;So I pressed ESC.&lt;/p&gt;

&lt;p&gt;One pointer to my second brain gave it the right entry to read. Within seconds it had the same context that had taken hours to build up earlier.&lt;/p&gt;

&lt;p&gt;The lost time was not the real issue. The real risk was different: the agent would have found something. Maybe close to the earlier decision, maybe not. Either way, it would have used what it found and silently overwritten decisions made earlier in another session, while the other agent kept building on the original ones. Two agents working on the same project, drifting apart, with no warning until much later.&lt;/p&gt;

&lt;p&gt;Agents do forget. Context windows fill up, summarizations drop the details, and every new session starts blank. You cannot fix that inside the model. You fix it outside, with a memory that survives the next reset.&lt;/p&gt;




&lt;h2&gt;
  
  
  The core problem
&lt;/h2&gt;

&lt;p&gt;Agents are stateless. Every new session starts at zero, with no recollection of what was decided yesterday or in the parallel branch.&lt;/p&gt;

&lt;p&gt;This is the part that scales the wrong way. A solo agent on a small task barely notices it. The moment you run multiple sessions across multiple &lt;a href="https://git-scm.com/docs/git-worktree" rel="noopener noreferrer"&gt;worktrees&lt;/a&gt;, the gaps multiply.&lt;/p&gt;

&lt;p&gt;Two reactions to this are common, and both are wrong.&lt;/p&gt;

&lt;p&gt;The first is to dump everything into the prompt: every doc, every decision, every past chat. This will bloat the context and the quality might decrease because of &lt;a href="https://www.trychroma.com/research/context-rot" rel="noopener noreferrer"&gt;context rot&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The second is to hold nothing back at all. No persistence, no notes, no shared state. The agent re-researches the same questions, reopens settled debates, and quietly contradicts decisions made last week.&lt;/p&gt;

&lt;p&gt;What you actually need is something in between: a structured memory that lives outside the context.&lt;/p&gt;




&lt;h2&gt;
  
  
  From Notion to agent memory
&lt;/h2&gt;

&lt;p&gt;If you have ever maintained a personal knowledge system, this part will feel familiar.&lt;/p&gt;

&lt;p&gt;For years, my own second brain lived in &lt;a href="https://www.notion.so/" rel="noopener noreferrer"&gt;Notion&lt;/a&gt;. It was working infrastructure: documenting learnings, tracking decisions, managing tasks for my design system work. The setup did its job.&lt;/p&gt;

&lt;p&gt;Then agents entered my workflow, and Notion stopped being part of it.&lt;/p&gt;

&lt;p&gt;The problem was not that Notion is bad. It is good at what it does. The problem was that it is built for humans: pages are long, context-rich, and formatted for reading and skimming. I know there are MCP servers that can bridge Notion into an agent session, but each server you connect registers its tool definitions in the context, whether those tools get called or not. Every additional server bloats the agent’s base context before any actual work has started, and spending that budget on personal knowledge management is hard to justify when this context could be used for something you actually use during development.&lt;/p&gt;

&lt;p&gt;The simpler alternative was already on my disk: a folder of markdown files in a git repo. Versioned, diffable, shareable, and free of tool overhead. The format works for the agent, the storage works for me, and the whole thing can be cloned into another machine or shared with a teammate the same way any other repo is.&lt;/p&gt;

&lt;p&gt;Once a todo or a project is finished, the file gets deleted. Keeping the second brain small is part of the point, and git history is there if anything ever needs to be looked at again.&lt;/p&gt;

&lt;p&gt;The underlying need was the same in both worlds: an externalized memory the new session can read on its own. Only the reader had changed.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The second brain I built in Notion was for me. This one is for my agents.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Setting it up did not require starting from scratch. The first version came together in one session with my agent. I gave it the structure and the naming conventions, it scaffolded the files, and we refined the rest as we went. None of it was perfect on day one. None of it had to be.&lt;/p&gt;




&lt;h2&gt;
  
  
  What it actually is
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; The setup described in my article runs on Claude Code, because that is what I use. The structure itself is tool-agnostic: any agent that reads project files benefits from the same three layers, the same typed files, and the same Why pattern. What changes between tools is only the entry file the agent looks for by default.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;On disk, the second brain is a folder of markdown files. The structure on top of those files is what makes them useful as agent memory, and it splits into three layers, each with a clear job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The global layer&lt;/strong&gt; lives in my &lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt; and contains my identity, tech stack and working style. It loads into every session, every project, and stays the same across them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The project index&lt;/strong&gt; lives at &lt;code&gt;memory/MEMORY.md&lt;/code&gt;. Hard-capped at 200 lines on purpose. It does not contain knowledge itself. The project index is a list of pointers, one line per entry, each linking to the actual file. The agent reads the index first to decide what is relevant for the current task, then opens only the files that matter. Retrieval is judgment-driven, not keyword-based, and the index stays small enough to fit in context without effort.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The individual files&lt;/strong&gt; live in the same &lt;code&gt;memory/&lt;/code&gt; folder, named &lt;code&gt;{type}-{slug}.md&lt;/code&gt;. There are four types, each with a different lifecycle.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;feedback&lt;/code&gt;: corrections and validated patterns ("never do X, here is why")&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;project&lt;/code&gt;: in-flight work, decisions, bugs, todos, initiative status&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;reference&lt;/code&gt;: where to find things in external systems, like a Figma file, or a docs path&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;user&lt;/code&gt;: role, expertise, communication preferences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every file follows the same shape:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Rule or fact&lt;/li&gt;
&lt;li&gt;Why&lt;/li&gt;
&lt;li&gt;How to apply&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The &lt;em&gt;Why&lt;/em&gt; is the load-bearing part. A rule without context is something the agent follows. A rule with the reasoning attached is something the agent can apply in edge cases that nobody anticipated.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to build it
&lt;/h2&gt;

&lt;p&gt;Here is what the structure looks like for a single project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.claude/
├── CLAUDE.md
└── projects/
    └── my-wonderful-project/
        └── memory/
            ├── MEMORY.md
            ├── user-profile.md
            ├── feedback-no-hardcoded-tokens.md
            ├── project-token-rename.md
            └── reference-jira-board.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;MEMORY.md&lt;/code&gt; index is the table of contents the agent reads first. It groups entries by type and links each one to its file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## User&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;User Profile&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;user-profile.md&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;: UX engineer leading the design system team

&lt;span class="gu"&gt;## Feedback&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;No hardcoded design values&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;feedback-no-hardcoded-tokens.md&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;: a hardcoded color broke dark mode last quarter

&lt;span class="gu"&gt;## Project&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Token rename&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;project-token-rename.md&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;: aligning Figma variables with CSS custom properties, deadline before Q3 launch

&lt;span class="gu"&gt;## Reference&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Jira board&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;reference-jira-board.md&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;: design system tickets in project "DSY"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each individual file uses YAML frontmatter for discoverability and a body shaped as rule or fact, then &lt;code&gt;Why&lt;/code&gt;, then &lt;code&gt;How to apply&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;No hardcoded design values in components&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Components must reference semantic tokens, not raw values&lt;/span&gt;
&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;feedback&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="s"&gt;Never hardcode colors, spacings, or font sizes in component styles. Always reference semantic tokens.&lt;/span&gt;
&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;*Why&lt;/span&gt;&lt;span class="s"&gt;:** Last quarter, a hardcoded `#1E1E1E` slipped past review and broke dark mode for one component. Tokens turn a global update into a one-line edit. Raw values force you to grep across the codebase every time.&lt;/span&gt;
&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;*How&lt;/span&gt; &lt;span class="s"&gt;to apply:** Components only consume CSS custom properties from the token layer (`--color-surface-primary`, `--space-md`, etc.). The linter blocks hex values, raw px units, and named CSS colors in component files.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the entire shape, repeated for every entry.&lt;/p&gt;




&lt;h2&gt;
  
  
  Talking to the second brain
&lt;/h2&gt;

&lt;p&gt;Two kinds of prompts cover most interactions. The first one &lt;strong&gt;loads context&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Before you start, check the second brain. There is a decision on design token naming conventions with examples and a short doc explaining the trade-offs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The second one &lt;strong&gt;saves context&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Save this to the second brain as feedback type. Components never hardcode colors or spacings, only semantic tokens. Last quarter a hardcoded color slipped past review and broke dark mode.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent reads &lt;code&gt;MEMORY.md&lt;/code&gt;, decides which files to open, and either uses what it finds or creates new files and updates the index, following the same shape.&lt;/p&gt;




&lt;h2&gt;
  
  
  Two real cases
&lt;/h2&gt;

&lt;p&gt;For my CLI project &lt;a href="https://kigumi.style/" rel="noopener noreferrer"&gt;Kigumi&lt;/a&gt;, work happens in parallel worktrees: one for the CLI itself, others for the wrapper templates for multiple frameworks. When a CLI refactor unblocks a wrapper, the wrapper session does not have to stop while the CLI gets fixed. The new requirement gets saved as a project entry in the second brain. The CLI session picks it up the next time it reads &lt;code&gt;MEMORY.md&lt;/code&gt; for context. Once the todo is checked off, every other session sees the same status the next time it loads the index.&lt;/p&gt;

&lt;p&gt;The same pattern works for design. Reading design tokens out of Figma and comparing them against the CSS custom properties in code, I spotted naming inconsistencies and a few off-by-one references. The current task did not need that fix, so the issue went into a project entry as a list of concrete todos. Two weeks later it was still there, with all the context attached.&lt;/p&gt;




&lt;h2&gt;
  
  
  What you will have to iterate
&lt;/h2&gt;

&lt;p&gt;The first version of the second brain will be wrong in places. The early rules will be too broad. A &lt;em&gt;How to apply&lt;/em&gt; section that seemed clear will turn out to be useless when an actual edge case shows up. A project file will grow until it stops being one entry and starts being three.&lt;/p&gt;

&lt;p&gt;That is not a failure mode. It is how the system improves. Each time a rule misfires, the file gets sharper. Each time a project file gets too big, it gets split. The feedback type accumulates corrections over months, and what was once a vague guideline becomes a specific pattern with examples and counterexamples.&lt;/p&gt;

&lt;p&gt;The second brain gets better because you use it, not despite it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The ESC moment from the opening is the small version of a much larger pattern. Without somewhere to write things down, every agent starts blank, every decision is at risk of being made twice, and every session is one reset away from losing its context.&lt;/p&gt;

&lt;p&gt;A second brain is not a productivity hack. It is the precondition for agentic workflows to hold together over weeks of work, across worktrees, and between agents that need to share what they know.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Kigumi: Same components, any stack</title>
      <dc:creator>Mischa</dc:creator>
      <pubDate>Tue, 24 Mar 2026 12:33:32 +0000</pubDate>
      <link>https://dev.to/mischa/kigumi-same-components-any-stack-bn0</link>
      <guid>https://dev.to/mischa/kigumi-same-components-any-stack-bn0</guid>
      <description>&lt;p&gt;What if the same button component worked in React, Vue, Angular, and Svelte without changing a single line? Most UI libraries and tools don’t let you do that. They’re tied to one framework, and the moment you switch, you start over.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kigumi.style/" rel="noopener noreferrer"&gt;Kigumi&lt;/a&gt; takes a different approach. It’s built on &lt;a href="https://webawesome.com/" rel="noopener noreferrer"&gt;Web Awesome&lt;/a&gt;, a library of 70+ production-ready web components powered by &lt;a href="https://lit.dev/" rel="noopener noreferrer"&gt;Lit&lt;/a&gt;. These are real HTML custom elements that the browser understands natively. Web Awesome also ships with an excellent design token system and layout CSS classes, built entirely on CSS custom properties, giving you full control over colors, spacing, typography, and more.&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.amazonaws.com%2Fuploads%2Farticles%2F1h4tjl2akkx5pd2gmp7f.png%3F" 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.amazonaws.com%2Fuploads%2Farticles%2F1h4tjl2akkx5pd2gmp7f.png%3F" alt="React is stable and Vue is in beta. Svelte and Angular are on the roadmap." width="1715" height="1080"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The problem is that raw web components still have friction inside frameworks. React 18 requires manual event listener setup for custom elements. React 19 improved this significantly, but depending on the component library, you may still run into edge cases with event naming and TypeScript support. Vue needs shim types and extra work for proper slot and event handling. &lt;strong&gt;That’s where Kigumi comes in.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting started with Kigumi
&lt;/h2&gt;

&lt;p&gt;Kigumi is a CLI that generates idiomatic framework wrappers around Web Awesome components. It takes Web Awesome’s excellent component library and token system and makes them easy to use, customize, and share across your projects.&lt;/p&gt;

&lt;p&gt;You don’t need to install anything globally. Just run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Initialize a new Kigumi project&lt;/span&gt;
npx kigumi init

&lt;span class="c"&gt;# Display all available CLI commands&lt;/span&gt;
npx kigumi &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kigumi detects your framework, your TypeScript setup, and your package manager. It configures the CSS layers, registers the web components, and generates the type declarations your editor needs. Just follow the instructions of the CLI.&lt;/p&gt;

&lt;p&gt;Then you add components as you need them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx kigumi add button input dialog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each command generates a proper wrapper for your framework. A React project gets a &lt;code&gt;.tsx&lt;/code&gt; file with correct prop types, forwarded refs, and event listeners with proper cleanup. A Vue project gets a &lt;code&gt;.vue&lt;/code&gt; single-file component. TypeScript types and accessibility features are included out of the box.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Once generated, the code lives in your repository. You own it. You can edit it, extend it, or strip out the parts you don’t need.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;React is fully supported today. Vue support is available and getting closer to full parity. Angular and Svelte are on the roadmap, along with additional framework targets.&lt;/p&gt;




&lt;h2&gt;
  
  
  CSS that works with the platform, not against it
&lt;/h2&gt;

&lt;p&gt;Kigumi’s theming is built on two native CSS features: custom properties and cascade layers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom properties&lt;/strong&gt; are how you theme your components. Web Awesome exposes its entire design language as CSS variables. You override them in a single file, and every component picks up the change. No JavaScript theme providers. No context wrappers. Just CSS doing what CSS was designed to do.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* theme.css */&lt;/span&gt;
&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--wa-color-primary-600&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#4f46e5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--wa-font-sans&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;'Inter'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;system-ui&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--wa-border-radius-medium&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Cascade layers&lt;/strong&gt; solve the specificity wars. Kigumi wraps Web Awesome’s base styles in a &lt;code&gt;@layer&lt;/code&gt;, so your overrides always win without needing &lt;code&gt;!important&lt;/code&gt;. The generated &lt;code&gt;layers.css&lt;/code&gt; handles the ordering automatically. Base styles sit below your theme. You don't have to think about it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* layers.css */&lt;/span&gt;
&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="s1"&gt;"@awesome.me/webawesome/dist/styles/webawesome.css"&lt;/span&gt; &lt;span class="n"&gt;layer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="s1"&gt;"./theme.css"&lt;/span&gt; &lt;span class="n"&gt;layer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;theme.css&lt;/code&gt; file is yours. Kigumi creates it during &lt;code&gt;init&lt;/code&gt; and never overwrites it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Side note:&lt;/strong&gt; Kigumi is fully compatible with Tailwind CSS. You can use utility classes alongside your components. Depending on your Tailwind configuration, you may need to rename Kigumi’s base layer to avoid a conflict with Tailwind's own base layer. But we're excited about what CSS custom properties and cascade layers enable natively, so that's where our focus is.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Kigumi Studio: design your theme visually
&lt;/h2&gt;

&lt;p&gt;Not everyone wants to write CSS variables by hand. &lt;a href="https://kigumi.style/studio" rel="noopener noreferrer"&gt;Kigumi Studio&lt;/a&gt; is a visual theme editor that lets you customize colors, typography, spacing, and more in real time. You see your changes reflected instantly on live component previews.&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.amazonaws.com%2Fuploads%2Farticles%2Fosudabvifk4k1d2512i2.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.amazonaws.com%2Fuploads%2Farticles%2Fosudabvifk4k1d2512i2.png" alt="Screenshot of Kigumi Studio" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you’re happy with the result, export the generated CSS into your &lt;code&gt;theme.css&lt;/code&gt; file. You can also publish your theme to a registry so your entire team, or the community, can use it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The registry: share components and themes across teams
&lt;/h2&gt;

&lt;p&gt;Beyond the built-in component set, Kigumi has a community registry system. Any team can publish their own set of components and themes, and anyone else can install from it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating a registry&lt;/strong&gt; takes one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx kigumi registry init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This scaffolds a &lt;code&gt;registry.json&lt;/code&gt; that describes your components and themes. Add your files, push to GitHub, and your registry is live.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consuming a registry&lt;/strong&gt; is just as simple. Add it once, then install from it by name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Add the registry source&lt;/span&gt;
npx kigumi registry connect https://github.com/your-org/ui-registry &lt;span class="nt"&gt;--name&lt;/span&gt; design-system

&lt;span class="c"&gt;# Install components from it&lt;/span&gt;
npx kigumi add card &lt;span class="nt"&gt;--from&lt;/span&gt; design-system
npx kigumi add hero-section &lt;span class="nt"&gt;--from&lt;/span&gt; design-system
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kigumi fetches the files from GitHub, resolves dependencies automatically, and tracks the source of each component in your project config. If your card component depends on a badge, Kigumi installs that too.&lt;/p&gt;

&lt;p&gt;Combined with Kigumi Studio, the workflow becomes powerful: design a theme visually, export it, add it to your registry, and every project that connects to your registry gets access to it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Built for AI agents
&lt;/h2&gt;

&lt;p&gt;Kigumi ships with a set of agent skills for tools like Claude Code and Cursor. These aren’t just documentation. They teach your AI assistant how to build complete features using Kigumi components.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add https://kigumi.style/skills/kigumi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The skills cover individual component conversion (Web Awesome HTML to React or Vue), but they go further than that. There are composition skills that &lt;strong&gt;let your agent build entire features&lt;/strong&gt;: forms with validation and error handling, page layouts using Web Awesome’s utility classes, modals and drawers with correct state patterns, or data tables with loading and empty states. The skills are combinable, so asking your agent for “a form inside a dialog” just works.&lt;/p&gt;

&lt;p&gt;Theme customization is covered too. Your agent can work directly with the design token system to adjust colors, typography, spacing, and dark mode.&lt;/p&gt;

&lt;p&gt;We’re also working on something we’re particularly excited about: a Pencil file that brings design into the AI workflow. The idea is to let agents work across both design and engineering, so that going from a design concept to a fully implemented, themed component becomes a single continuous process rather than a handoff between tools.&lt;/p&gt;




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

&lt;p&gt;React support is stable and covers 73 components today. Vue is in beta and getting closer to full parity. Angular and Svelte wrappers are in early development, with more framework targets to follow.&lt;/p&gt;

&lt;p&gt;On top of that, the AI integration is a big focus. We want agents to understand the full Kigumi ecosystem: components, themes, registries, and design. The Pencil file is a first step toward that vision.&lt;/p&gt;

&lt;p&gt;The beauty of building on Web Components is that the underlying wa-* elements don't change between frameworks. When Angular support ships, running npx kigumi add button in an Angular project will produce the same quality of output that React and Vue projects already get.&lt;/p&gt;

&lt;p&gt;Same components. Any stack. Whether you type the commands yourself or let an agent do it.&lt;/p&gt;




&lt;p&gt;Get started at &lt;a href="https://kigumi.style" rel="noopener noreferrer"&gt;kigumi.style&lt;/a&gt; or run &lt;code&gt;npx kigumi init&lt;/code&gt; in your project.&lt;/p&gt;

</description>
      <category>webcomponents</category>
      <category>ai</category>
      <category>frontend</category>
      <category>designsystem</category>
    </item>
  </channel>
</rss>
