<?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: Wiryo Saputra</title>
    <description>The latest articles on DEV Community by Wiryo Saputra (@wiryosaputra).</description>
    <link>https://dev.to/wiryosaputra</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%2F4110489%2F7c59e215-8fef-48da-8adc-13c638453e9c.png</url>
      <title>DEV Community: Wiryo Saputra</title>
      <link>https://dev.to/wiryosaputra</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wiryosaputra"/>
    <language>en</language>
    <item>
      <title>Why I Built Coordiation CSS for Humans and AI Agents</title>
      <dc:creator>Wiryo Saputra</dc:creator>
      <pubDate>Sat, 05 Sep 2026 01:17:26 +0000</pubDate>
      <link>https://dev.to/wiryosaputra/why-i-built-coordiation-css-for-humans-and-ai-agents-9p6</link>
      <guid>https://dev.to/wiryosaputra/why-i-built-coordiation-css-for-humans-and-ai-agents-9p6</guid>
      <description>&lt;p&gt;Hello DEV community! 👋&lt;/p&gt;

&lt;p&gt;For my first post, I want to share why I started building &lt;a href="https://coordiation.com" rel="noopener noreferrer"&gt;Coordiation CSS&lt;/a&gt;, an independent utility first CSS compiler focused on static output, owned source, and machine readable contracts.&lt;/p&gt;

&lt;p&gt;Coordiation is currently at version 1.0.0-rc.1. This is a release candidate, not a claim that the project is finished. I am sharing it now because early technical feedback is more useful than waiting until everything feels perfect.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem I wanted to explore
&lt;/h2&gt;

&lt;p&gt;Modern frontend teams need more than a collection of short class names. They need a system that stays understandable as an application grows.&lt;/p&gt;

&lt;p&gt;Humans need predictable utilities, accessible components, and documentation that explains the real behavior of the system. AI coding agents need many of the same things, but in a more explicit form. They need exact names, finite choices, version information, warnings, and contracts that can be inspected without guessing.&lt;/p&gt;

&lt;p&gt;That led me to a simple question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What would a CSS framework look like if its source of truth worked equally well for people, build tools, editors, and AI agents?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Coordiation is my attempt to explore that question.&lt;/p&gt;

&lt;h2&gt;
  
  
  Static CSS without a browser runtime
&lt;/h2&gt;

&lt;p&gt;Coordiation scans templates for literal co- utility candidates and generates static CSS during development or at build time.&lt;/p&gt;

&lt;p&gt;A button can be written like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"co-rounded-lg co-bg-brand-500 co-px-4 co-py-2 co-text-white hover:co-bg-brand-600"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Save changes
&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The application receives ordinary CSS. It does not need a client side styling runtime to interpret those classes in the browser.&lt;/p&gt;

&lt;p&gt;For a Vite project, the release candidate can be installed with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt; @coordiation/css@next @coordiation/vite@next vite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the Vite integration can scan the project and serve the generated stylesheet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;defineConfig&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;vite&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;coordiation&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@coordiation/vite&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineConfig&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;coordiation&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;src&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&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;The CSS entry begins with:&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="k"&gt;@coordiation&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is a short authoring loop with output that remains standards based and inspectable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why machine readable registries matter
&lt;/h2&gt;

&lt;p&gt;Documentation is useful, but prose alone is difficult to keep synchronized with a compiler.&lt;/p&gt;

&lt;p&gt;Coordiation generates registries for utilities, icons, components, themes, compatibility information, and project context. The same data can support documentation, tests, editor tooling, installers, and AI agents.&lt;/p&gt;

&lt;p&gt;For example, an agent can inspect the active framework version, supported utility families, component contracts, and warnings before changing an interface. This reduces the need to infer conventions from a few nearby files.&lt;/p&gt;

&lt;p&gt;I do not think AI needs less context. I think it needs better structured context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open code instead of hidden component behavior
&lt;/h2&gt;

&lt;p&gt;Coordiation currently includes 64 open code React components. The installer copies the selected component source into the application repository.&lt;/p&gt;

&lt;p&gt;After installation, the component belongs to the project. A team can inspect it, change it, test it, and remove it without depending on a visual builder or a component runtime controlled elsewhere.&lt;/p&gt;

&lt;p&gt;The same approach is used for 10 complete application themes. They are intended as editable starting points, not locked templates.&lt;/p&gt;

&lt;p&gt;The icon package currently includes 2,165 glyphs from the Solar Linear and Iconsax Line Oval collections, together with registry metadata and collection specific licensing information.&lt;/p&gt;

&lt;h2&gt;
  
  
  One coordinated toolchain
&lt;/h2&gt;

&lt;p&gt;The release candidate contains twelve public packages covering the compiler, Vite and PostCSS integrations, CLI, icons, components, themes, formatter, upgrade tools, language server, optional native scanning, and agent context.&lt;/p&gt;

&lt;p&gt;One part I care about deeply is synchronization. If documentation says a utility exists, the registry and test suite should be able to prove it. If a compatibility claim cannot be verified, it should remain a roadmap item instead of becoming marketing copy.&lt;/p&gt;

&lt;p&gt;Stable version 1.0 is still a target. The current release candidate exists so the package train, platform support, artifacts, and release process can be tested together.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I hope to learn here
&lt;/h2&gt;

&lt;p&gt;I joined DEV to share the engineering decisions behind Coordiation, including the decisions that do not work on the first attempt.&lt;/p&gt;

&lt;p&gt;I would especially value feedback on these questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Are the co- utilities readable when you first encounter them?&lt;/li&gt;
&lt;li&gt;Would machine readable registries help your editor or AI assisted workflow?&lt;/li&gt;
&lt;li&gt;Does copying component source into a project feel clearer than importing a closed component package?&lt;/li&gt;
&lt;li&gt;Which part of the installation or documentation creates the most friction?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can explore the project here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website and documentation: &lt;a href="https://coordiation.com" rel="noopener noreferrer"&gt;coordiation.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source code: &lt;a href="https://github.com/wiryosaputraofficial/coordiationcss" rel="noopener noreferrer"&gt;github.com/wiryosaputraofficial/coordiationcss&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading. I am looking forward to learning from the DEV community and hearing how other developers approach CSS systems, component ownership, and AI assisted frontend work.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I used AI assistance to help organize and edit the language of this article. I reviewed the technical claims and examples against the Coordiation source code and documentation.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>ai</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
