<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Diogo Esteves]]></title><description><![CDATA[Notes from building open-source tools for coding agents in public: onsystem, ondocs and signoff-ui.]]></description><link>https://dgesteves.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sun, 25 Oct 2026 09:52:00 GMT</lastBuildDate><atom:link href="https://dgesteves.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[I built three open-source tools for coding agents: onsystem, ondocs and signoff-ui]]></title><description><![CDATA[Three MIT-licensed tools for coding agents: onsystem checks agent-written React, ondocs adds Ask AI to docs, signoff-ui reviews agent diffs.]]></description><link>https://dgesteves.hashnode.dev/i-built-three-open-source-tools-for-coding-agents-onsystem-ondocs-and-signoff-ui</link><guid isPermaLink="true">https://dgesteves.hashnode.dev/i-built-three-open-source-tools-for-coding-agents-onsystem-ondocs-and-signoff-ui</guid><category><![CDATA[Open Source]]></category><category><![CDATA[AI]]></category><category><![CDATA[React]]></category><category><![CDATA[mcp]]></category><dc:creator><![CDATA[Diogo Esteves]]></dc:creator><pubDate>Thu, 22 Oct 2026 12:40:12 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6acb79f041b8a17e28769282/0be85032-5761-4dac-a8ee-9bec9ff8555a.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Coding agents now write a real share of the code in a lot of teams. Three parts of that still go wrong often enough that I built an open-source tool for each, and today all three are public:</p>
<ol>
<li>The agent writes UI from its training data, not from your design system.</li>
<li>Your docs are written for people, but visitors want answers and agents need a way in.</li>
<li>Someone has to check what the agent changed, and decide what it may do.</li>
</ol>
<h2>onsystem</h2>
<img src="https://cdn.hashnode.com/uploads/covers/6acb79f041b8a17e28769282/bea5616a-7ade-46e4-aea0-58c8daab13c0.gif" alt="onsystem: an agent writes a settings card from memory, the hook flags each design-system error with a fix, and the agent applies the fixes" style="display:block;margin:0 auto" />

<p>Keeps coding agents on your design system. It catches palette colors, native elements and APIs your design system lacks in agent-written React, at every edit and pull request, with the fix. Set it up once in your design-system package and every app in your monorepo gets it. In Claude Code, the plugin checks each file right after the agent edits it; Cursor, VS Code and Codex get it as an MCP server, and an ESLint plugin and a GitHub Action run the same check.</p>
<p>Try it on your app, nothing installed:</p>
<pre><code class="language-shell">npx -y onsystem check .
</code></pre>
<p>I tested it in a 1,200-run benchmark across 6 models from 3 providers. Counted by onsystem 0.5.0's own check, design-system errors per run went from 0.85 without it to 0.00 with its skill, MCP server and hook, with no measurable change in tsc pass rate or cost. Scored by @shadcn/lint, a linter that is not part of onsystem, findings per run went from 4.97 to 2.64. Every run, the method and the caveats are public: <a href="https://onsystem.vercel.app/benchmark">onsystem.vercel.app/benchmark</a>.</p>
<p>Playground that checks your own code: <a href="https://onsystem.vercel.app/playground">onsystem.vercel.app/playground</a></p>
<p><a class="embed-card" href="https://github.com/dgesteves/onsystem">https://github.com/dgesteves/onsystem</a></p>

<h2>ondocs</h2>
<img src="https://cdn.hashnode.com/uploads/covers/6acb79f041b8a17e28769282/e9d4ca58-1747-4b26-838f-5942ef2e66f4.gif" alt="ondocs: a visitor asks the docs a question and the answer streams in, citing the exact sections" style="display:block;margin:0 auto" />

<p>Open-source Ask AI for your docs. Visitors get cited answers on your own model key, and "I don't know" instead of a guess when the docs don't cover it. Coding agents get an MCP server from the same index. Plugins for Starlight, Docusaurus and VitePress, guides for Next.js, Fumadocs and Nextra, or one script tag. No vendor, no vector database.</p>
<p>Live demo: <a href="https://ondocs.vercel.app">ondocs.vercel.app</a></p>
<p><a class="embed-card" href="https://github.com/dgesteves/ondocs">https://github.com/dgesteves/ondocs</a></p>

<h2>signoff-ui</h2>
<img src="https://cdn.hashnode.com/uploads/covers/6acb79f041b8a17e28769282/ccab7170-6d39-4168-b871-5bb8ee236444.gif" alt="signoff-ui: an agent run with each tool call in a timeline, then multi-file diff review and approvals" style="display:block;margin:0 auto" />

<p>Review what your agent changed. Approve what it may do. React components for multi-file diff review, where the agent gets back exactly what you accepted, and tool approvals once, for the session or always. For AI SDK 6 and 7, AG-UI and ACP agents, inside assistant-ui, AI Elements or your own chat.</p>
<p>Playground, no API key: <a href="https://signoff-ui.vercel.app">signoff-ui.vercel.app</a></p>
<p><a class="embed-card" href="https://github.com/dgesteves/signoff-ui">https://github.com/dgesteves/signoff-ui</a></p>

<h2>Try them, and tell me where they break</h2>
<p>All three are MIT licensed and on npm, and each site has a live demo with no sign-up. The roadmaps are public too: I'm building the rest in the open.</p>
<p>If you try one on a real project, tell me where it breaks. That's the feedback I need most right now. Each repo has a launch thread:</p>
<ul>
<li><a href="https://github.com/dgesteves/onsystem/discussions/227">onsystem launch feedback</a></li>
<li><a href="https://github.com/dgesteves/ondocs/discussions/220">ondocs launch feedback</a></li>
<li><a href="https://github.com/dgesteves/signoff-ui/discussions/200">signoff-ui launch feedback</a></li>
</ul>
<p>If one of them is useful to you, a star on GitHub helps other people find it. Each repo also has good first issues if you want to contribute.</p>
]]></content:encoded></item></channel></rss>