<?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: Kenny Vaneetvelde</title>
    <description>The latest articles on DEV Community by Kenny Vaneetvelde (@kennyvaneetvelde).</description>
    <link>https://dev.to/kennyvaneetvelde</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%2F1683559%2Fcf74d578-2620-4df6-b6c7-6f90cbcc46f0.png</url>
      <title>DEV Community: Kenny Vaneetvelde</title>
      <link>https://dev.to/kennyvaneetvelde</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kennyvaneetvelde"/>
    <language>en</language>
    <item>
      <title>The Plugin That Turns Your Claude Code into a Continuously Self-Improving Monster</title>
      <dc:creator>Kenny Vaneetvelde</dc:creator>
      <pubDate>Sat, 03 Oct 2026 17:27:05 +0000</pubDate>
      <link>https://dev.to/kennyvaneetvelde/the-plugin-that-turns-your-claude-code-into-a-continuously-self-improving-monster-n6o</link>
      <guid>https://dev.to/kennyvaneetvelde/the-plugin-that-turns-your-claude-code-into-a-continuously-self-improving-monster-n6o</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://eigenwise.io/writing/the-plugin-that-turns-claude-code-into-a-self-improving-monster" rel="noopener noreferrer"&gt;Eigenwise&lt;/a&gt; on 11 September 2026.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feu79xeh2bbft294ciayg.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feu79xeh2bbft294ciayg.webp" alt="A wooden crate creature at a grindstone, sharpening its own chisel, one spark glowing red orange" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Something goes wrong in a session, so you write a rule. Next week the rule gets buried under the other rules, so you write a sharper one. A month later your &lt;code&gt;CLAUDE.md&lt;/code&gt; is a page of capital letters, begging Claude to “PLEASE NEVER EVER DO X WITHOUT FIRST DOING Y” and Claude &lt;strong&gt;&lt;em&gt;still&lt;/em&gt;&lt;/strong&gt; does the thing. My global config grew exactly like that, and I’ve watched a lot of other people’s grow the same way: one person I read is at 38 memory files and 18 recorded correction files, another has six postmortems and a five-gate review system, and their complaint is the same as everyone’s. There’s a paper on it now. Across 1,867 repositories, agent instruction files &lt;a href="https://arxiv.org/abs/2608.11095" rel="noopener noreferrer"&gt;more than triple over their lifetime&lt;/a&gt;, they gain about five net instructions per commit, and &lt;strong&gt;the older a rule gets, the less likely anyone ever deletes it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;What I run now is &lt;em&gt;Quartermaster&lt;/em&gt;, the first plugin I install in a new project and the one I add to an existing project when I want the whole Claude Code setup handled from one place. It uses hindsight from my work across projects to propose the initial setup, with every plugin install, file edit, and settings change waiting for my approval. Then it watches the real sessions, works out what the workspace is short of, proposes one change at a time, and next round &lt;strong&gt;checks whether the last thing it talked me into actually helped&lt;/strong&gt;. If it didn’t, it says so and offers to roll it back.&lt;/p&gt;

&lt;p&gt;A few months ago I wrote &lt;a href="https://eigenwise.io/writing/the-first-thing-i-install-in-every-claude-code-project" rel="noopener noreferrer"&gt;The First Thing I Install in Every Claude Code Project&lt;/a&gt; about &lt;em&gt;codebase-mapper&lt;/em&gt;. That title is already out of date. Quartermaster goes in first now because it installs &lt;em&gt;codebase-mapper&lt;/em&gt;, builds the map, adds a starter set of &lt;em&gt;live-rules&lt;/em&gt; pulled from how I actually work, picks the stack plugins and permissions that fit the project, and asks before touching any of it. It has already shown up twice in this series as the thing that installs and configures everything else, so this time it gets its own story.&lt;/p&gt;

&lt;p&gt;It lives in the &lt;a href="https://github.com/Eigenwise/eigenwise-toolshed" rel="noopener noreferrer"&gt;Eigenwise Toolshed&lt;/a&gt;, my plugin marketplace, free and MIT-licensed like everything else in there, and it’s the piece that sets each workspace up, then decides what it should grow next.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rule 41 Makes Rules 1 Through 40 Worse
&lt;/h2&gt;

&lt;p&gt;Claude reads your &lt;code&gt;CLAUDE.md&lt;/code&gt; every session. Anthropic’s own docs say so, and then add that you should &lt;a href="https://code.claude.com/docs/en/memory" rel="noopener noreferrer"&gt;keep it under 200 lines&lt;/a&gt;, because longer files “consume more context and reduce adherence”, and that you should review it periodically to remove outdated or conflicting instructions. So the file gets read. &lt;strong&gt;It’s one page in a book that keeps getting longer&lt;/strong&gt;, and every rule you add makes the ones before it a little quieter. Rule 41 costs you rules 1 through 40.&lt;/p&gt;

&lt;p&gt;Skills have the same problem one layer down. Claude Code loads a listing of every skill’s name and description so it knows what’s available, and that listing gets &lt;a href="https://code.claude.com/docs/en/skills" rel="noopener noreferrer"&gt;a budget of 1% of the context window&lt;/a&gt;. When you overflow it, the descriptions get cut starting with the skills you use least. Those stop matching your requests, so you use them even less, so they get cut harder. &lt;strong&gt;A skill can go invisible without ever throwing an error&lt;/strong&gt;, and the only notice is a line in a debug log.&lt;/p&gt;

&lt;p&gt;Everyone’s answer to both is more of the same: more rules, then hooks to enforce the rules, then memory files to remember why the hooks exist. The “review periodically” line in the docs is the whole maintenance story, and it’s a chore with no tool attached. &lt;strong&gt;Nothing prunes on evidence&lt;/strong&gt;, and nothing checks whether rule 17 has done anything since June.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnx2lsf47k0eojse7wn76.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnx2lsf47k0eojse7wn76.webp" alt="A tall stack of binders stuffed with sticky notes on a desk, one note near the bottom glowing red" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Actually Does
&lt;/h2&gt;

&lt;p&gt;Quartermaster has two jobs. Setup comes first. Point it at a new or existing workspace and it reads the project itself, then mines a bounded cross-project view of the Claude Code work you’ve already done: which plugins and MCP servers you actually use, which permission approvals repeat, and which corrections keep coming back. &lt;strong&gt;A new project starts where the others left off&lt;/strong&gt;, with a setup plan specific to that project and grounded in how you already work.&lt;/p&gt;

&lt;p&gt;It turns that into one visible plan, with &lt;em&gt;codebase-mapper&lt;/em&gt;, &lt;em&gt;live-rules&lt;/em&gt;, &lt;em&gt;Sidequest&lt;/em&gt;, &lt;em&gt;observability&lt;/em&gt;, &lt;em&gt;model-gateway&lt;/em&gt;, stack plugins, rules, and permissions each chosen separately. For a real codebase it can install &lt;em&gt;codebase-mapper&lt;/em&gt; and build the first map; for any workspace it can seed live rules from the corrections and habits that recur across your other work. It installs nothing until you approve the exact item, stops for the plugin reload, and then verifies that every selected piece is actually working.&lt;/p&gt;

&lt;p&gt;After that comes resupply, the ongoing half. The counting is cheap. When a session ends, a hook reads the transcript that just closed and writes six integers into a local state file: prompts, tool calls, tool errors, permission denials, interrupts, corrections. No text, no model call. Once 4 sessions have piled up unreviewed, or 6 friction events have, Claude gets a nudge at the start of your next session, and at the next real pause it offers you an optimization round. Say no and it clears the backlog and waits. Say yes and the actual work starts.&lt;/p&gt;

&lt;p&gt;The work is a script. It reads your last 30 days or 40 sessions, whichever is smaller, into one bounded aggregate: what each session was for, which parts of the tree the work landed in, the commands you keep running, the friction counts, and at most a dozen clipped quotes of you correcting Claude. &lt;strong&gt;Raw transcripts never enter the model’s context.&lt;/strong&gt; In one heavy-use month, 127 MB of JSONL became a 31 KB aggregate. It also flags which sessions a human actually typed into, because with a ticket board spawning executors all day &lt;strong&gt;those sessions outnumber mine by a wide margin&lt;/strong&gt;, and without the flag the pass would report the automation’s goals back to me as my own.&lt;/p&gt;

&lt;p&gt;The ongoing half looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;session ends ──▶ tally (6 integers, local)
                    │
     4 sessions or 6 friction events
                    ▼
nudge at start ──▶ offer at the next pause (once)
                    │ yes
                    ▼
mine 30d/40 sessions ──▶ bounded aggregate (no transcripts)
                    ▼
verify last round ──▶ keep / improve / roll back
                    ▼
≤ 7 findings, one at a time, each needs your yes
                    ▼
ledger (applied AND rejected) ──▶ next round reads it
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then it proposes, at most 7 findings and best first, and the fix is whatever the gap actually calls for: a plugin off the catalog, an MCP server out of the registry, a skill built for the job, a line of project knowledge, a scoped rule, a permission, or turning off something you installed months ago and never used. &lt;strong&gt;The plugin search reads every marketplace on your machine&lt;/strong&gt;, which on mine is 2,587 plugins, six of them the Toolshed. A candidate gets its token cost checked with &lt;code&gt;claude plugin details&lt;/code&gt; before you ever see it, because a plugin that costs you more context than it saves is one to skip. &lt;strong&gt;The job is your whole agent setup&lt;/strong&gt;, so a round that ends with somebody else’s plugin installed, or with nothing installed at all, is a round doing what it should.&lt;/p&gt;

&lt;p&gt;Before it names a plugin, it goes and checks. For the handful of findings that could end in an install, it looks up whether the thing is still maintained, whether its description still matches what it actually does, whether something better-regarded covers the same ground (including in a marketplace you haven’t added, in which case you get the add command too), and what people report about living with it. The searches use generic capability terms, so your project names and file paths stay out of the logs of a search engine you never picked. With &lt;code&gt;WebSearch&lt;/code&gt; and &lt;code&gt;WebFetch&lt;/code&gt; turned off it skips the check and labels those proposals &lt;code&gt;unresearched&lt;/code&gt; rather than implying they were verified.&lt;/p&gt;

&lt;p&gt;Each finding shows the exact command or diff and waits for a yes or a no. &lt;strong&gt;The no is recorded too.&lt;/strong&gt; Rejected findings go in a ledger with a fingerprint, and the next round drops anything you already turned down. On my machine that ledger holds 90 applied decisions and 13 rejected ones right now.&lt;/p&gt;

&lt;p&gt;Start a TypeScript monorepo and the first plan could include &lt;em&gt;codebase-mapper&lt;/em&gt;, &lt;em&gt;live-rules&lt;/em&gt; for package boundaries, the TypeScript language server, one command that runs the checks across every package, and permission rules learned from commands you already approve elsewhere. A month later, resupply might notice that releases still take five commands you run by hand and turn them into a project skill, or spot a plugin loading every session, throwing hook errors, and never showing up in the work, then offer to remove it. Put the same plugin in a research vault and it could build evidence rules and source-checking instead, with no code tooling at all. &lt;strong&gt;Quartermaster is told to improve what already exists before putting another tool beside it.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Most Valuable Gaps Never Raise an Error
&lt;/h2&gt;

&lt;p&gt;The first version of this plugin was a friction hunt: count how often Claude got denied, corrected, or interrupted, then fix those. It worked, and it’s now the last thing on the list, because &lt;strong&gt;fixing what went wrong only gets you back to the speed you already expected&lt;/strong&gt;. A capability you never had moves that baseline.&lt;/p&gt;

&lt;p&gt;And the best capabilities leave no trace. Take a goal like “make the ingest reliable”. You can’t close it without a way to check it, and a check that doesn’t exist yet never fails, because it never runs. The need for it shows up exactly once, so every threshold of the form “did this happen three times” skips right past it. &lt;strong&gt;A pass that only counts pain is structurally blind to the best thing it could find.&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/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fahn49j0k96h9kd8rr7g0.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fahn49j0k96h9kd8rr7g0.webp" alt="A pegboard of hand tools with a single ruler glowing red orange in the middle of them" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So the pass reads purpose first, weighing sessions by effort rather than by count. It looks for a goal set and never met, or restated across sessions, or a property that keeps being asserted (“should be correct”, “fast enough”) and never demonstrated. &lt;strong&gt;An unmet goal is the single best lead in the whole aggregate&lt;/strong&gt;, and the fix for it is usually an instrument, built as a committed skill so the number can be re-run later. It also has to say whether a gap is attested by your history or inferred by the model, because only the attested kind gets to outrank a cheap fix it’s certain about. And a healthy project with no stated standard gets told there’s nothing to build, which is a valid outcome. &lt;strong&gt;A pass that invents work to look useful is a pass you learn to skip.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Next Pass Grades the Last One
&lt;/h2&gt;

&lt;p&gt;Claude Code already looks at itself: &lt;code&gt;/insights&lt;/code&gt; reports on your recent sessions, &lt;code&gt;/doctor&lt;/code&gt; finds unused skills, &lt;code&gt;/fewer-permission-prompts&lt;/code&gt; proposes an allowlist, and every one of them ends at the suggestion. I looked again this week and &lt;strong&gt;couldn’t find one, native or otherwise, that re-measures after you apply a change&lt;/strong&gt;, and none that rolls a change back. That’s the seam Quartermaster sits in, and the verify step is the whole reason I trust the rest of it.&lt;/p&gt;

&lt;p&gt;Every applied decision names the signal it was meant to move: denials, interrupts, corrections, tool errors, or total friction for a capability nothing counts. On the next round the script compares the sessions before the decision with the sessions after it, refuses to call a verdict on too few sessions, and then says one of three things out loud: &lt;strong&gt;keep, improve, or roll back.&lt;/strong&gt; In a repo where I open and close a session per ticket, that verdict arrives within days. In this vault, where I keep one session open for a week at a time, it takes a month, because &lt;strong&gt;a week-long session is one data point&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The reason it measures instead of asking me is that I can’t feel the answer. In METR’s randomized study of experienced open-source developers, people &lt;a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/" rel="noopener noreferrer"&gt;forecast a 24% speedup, reported a 20% speedup, and measured 19% slower&lt;/a&gt;. The one person I’ve seen actually test their &lt;code&gt;CLAUDE.md&lt;/code&gt; changes properly, eight candidates optimized against real PR tasks and then a clean holdout, watched the winning version regress on the holdout. Their line was that the rule was philosophically right and empirically bad, and that editing by vibes, they’d have shipped it. &lt;strong&gt;Everybody else is editing by vibes&lt;/strong&gt;, including the people with the most elaborate setups, and several of them say so.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A config change that can be rolled back on evidence is a change you’re allowed to try.&lt;/strong&gt; I wrote &lt;a href="https://eigenwise.io/writing/the-honest-math-of-ai-productivity" rel="noopener noreferrer"&gt;a whole piece&lt;/a&gt; earlier this year about the pitch where the right setup is what’s being sold, so buy mine and the gains appear, and how that turns every disappointment into proof you needed more of the product. A self-improving workspace is exactly that shape of product, and the verify step is what makes mine a different one: &lt;strong&gt;it tells you when a change didn’t work, and takes it back.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  It Works Where There Are No Tests
&lt;/h2&gt;

&lt;p&gt;The same loop can run anywhere Claude Code does, and it grows something different in each workspace. A code repo might grow permissions, build chores, and small instruments: a check that the docs still describe the code, a report of what a session changed. A research vault might grow evidence rules and source-verification. A journal could grow a privacy rule and a contradiction checker. A brand-new project can get the plugin set and craft rules it actually needs on day one. &lt;strong&gt;Same plugin everywhere, and after a month no two workspaces should have grown the same thing.&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/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fubcgap10uw3e2j52zt5g.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fubcgap10uw3e2j52zt5g.webp" alt="Three desks side by side, one with a monitor, one with a keyboard and sheet music, one with a notebook and a mug, each with its own crate of tools and one crate glowing" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s the test I’d put to any “self-improving” setup. After a month, does workspace A look different from workspace B? If every project converges on the same toolkit, the thing was accumulating, and the whole point is fitting. It’s also why I’d rather run a loop than install a list of twenty recommended skills: the list is somebody else’s month.&lt;/p&gt;

&lt;p&gt;Who gets left out otherwise matters too. Every enforcement answer I’ve seen assumes a test suite and CI, and the people using Claude Code for a vault, a research project, consulting, or a novel have none of that. A loop built on session history works for them, because &lt;strong&gt;a writing project has standards it can’t check and chores it does by hand just as much as a repo does&lt;/strong&gt;. Only the instruments differ. For a brand-new project, the setup skill runs the same idea across your whole history at once: it reads what the thing is built in, picks the plugins that match that stack from the official marketplace and anywhere else you’ve added, seeds the rules your past corrections keep asking for, and hands you the list one item at a time. An Obsidian vault, a docs site, and a Python service each come out of it holding different things.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to Expect Day to Day
&lt;/h2&gt;

&lt;p&gt;When a round is due, the Stop hook holds Claude’s final reply long enough to make the offer, once per session and never twice inside a day. It does that on purpose, because nudges that can be ignored get ignored. &lt;strong&gt;The monitoring and mining stay on your machine:&lt;/strong&gt; no model in any hook, transcripts reduced to counts and clipped quotes before anything reads them. Plugin research and update checks are the networked parts. And since anything the loop writes into a workspace lands in context on every later session looking exactly as true as everything else, &lt;strong&gt;rollback is a first-class verdict&lt;/strong&gt;, which is why I’m comfortable letting this run for a long time rather than for a few exciting weeks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to Get It
&lt;/h2&gt;

&lt;p&gt;Three commands in a Claude Code session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin marketplace add Eigenwise/eigenwise-toolshed
/plugin install quartermaster@eigenwise-toolshed --scope project
/quartermaster:setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then work normally, and say yes when it asks for a round. I install per project or local and keep the machine-wide level as close to empty as I can, because a rule that’s right for one repo is noise in the next one. The source and README are &lt;a href="https://github.com/Eigenwise/eigenwise-toolshed/tree/main/plugins/quartermaster" rel="noopener noreferrer"&gt;in the Toolshed repo&lt;/a&gt;. &lt;strong&gt;Give it a month, then look at what it grew.&lt;/strong&gt; If it’s something you’d never have thought to build, I want to hear about it, on the repo or on the &lt;a href="https://discord.gg/J3W9b5AZJR" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you’ve read the &lt;a href="https://eigenwise.io/writing/meet-sidequest-the-kanban-board-where-the-cards-work-themselves" rel="noopener noreferrer"&gt;Sidequest tour&lt;/a&gt;, you saw a section called “It Builds Itself Now”, and the two are worth telling apart. Sidequest improves the plugin opportunistically, whenever an executor trips over friction mid-ticket. Quartermaster improves your workspace deliberately, on a counted cadence, and checks its own work next round. The &lt;a href="https://eigenwise.io/writing/a-quick-sidequest-became-my-most-powerful-claude-code-plugin" rel="noopener noreferrer"&gt;origin story&lt;/a&gt;, the &lt;a href="https://eigenwise.io/writing/the-first-thing-i-install-in-every-claude-code-project" rel="noopener noreferrer"&gt;codebase-mapper piece&lt;/a&gt;, and the &lt;a href="https://eigenwise.io/writing/the-quest-for-local-model-routing-inside-claude-code" rel="noopener noreferrer"&gt;model-gateway one&lt;/a&gt; (where Quartermaster does the installing) fill in the rest of the Toolshed.&lt;/p&gt;

&lt;p&gt;If you only take one idea from this: close the loop on the rules you already have before you add another one.&lt;/p&gt;

&lt;p&gt;Everything in the Toolshed is free and MIT-licensed, and it stays that way. If it saves you time, &lt;a href="https://ko-fi.com/eigenwise" rel="noopener noreferrer"&gt;a coffee on Ko-fi&lt;/a&gt; or &lt;a href="https://github.com/sponsors/Eigenwise" rel="noopener noreferrer"&gt;a GitHub sponsorship&lt;/a&gt; is what keeps me building and maintaining it.&lt;/p&gt;

&lt;p&gt;And if you want this inside your own company, that’s what I do for a living. I built &lt;a href="https://github.com/Eigenwise/atomic-agents" rel="noopener noreferrer"&gt;Atomic Agents&lt;/a&gt; and everything in this series, and I work with anyone who wants their AI spend to actually pay off: a solo developer, a team of five, or an engineering org that bought the licenses and is still waiting for the productivity. &lt;strong&gt;I train teams on AI-assisted development, build the plugins, hooks, and routing that make &lt;em&gt;Claude Code&lt;/em&gt; productive on your own codebase and your own model budget, and audit a setup that isn’t delivering and tell you why.&lt;/strong&gt; A one-day workshop or a standing engagement, whatever fits. &lt;a href="https://eigenwise.io/contact" rel="noopener noreferrer"&gt;Reach out&lt;/a&gt; and tell me what you’re stuck on.&lt;/p&gt;

</description>
      <category>claude</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Meet Sidequest, the Kanban Board Where the Cards Work Themselves</title>
      <dc:creator>Kenny Vaneetvelde</dc:creator>
      <pubDate>Sat, 03 Oct 2026 14:07:49 +0000</pubDate>
      <link>https://dev.to/kennyvaneetvelde/meet-sidequest-the-kanban-board-where-the-cards-work-themselves-1n90</link>
      <guid>https://dev.to/kennyvaneetvelde/meet-sidequest-the-kanban-board-where-the-cards-work-themselves-1n90</guid>
      <description>&lt;p&gt;Originally published on &lt;a href="https://eigenwise.io/writing/meet-sidequest-the-kanban-board-where-the-cards-work-themselves" rel="noopener noreferrer"&gt;Eigenwise&lt;/a&gt; on September 2, 2026. The usage figures below describe my August 2026 workflow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi1ez0nfgcwi4a48flcj5.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi1ez0nfgcwi4a48flcj5.webp" alt="Paper index cards with legs building things on a workbench in front of a small Kanban board, one card glowing while it directs the others" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve written about &lt;a href="https://eigenwise.io/writing/a-quick-sidequest-became-my-most-powerful-claude-code-plugin" rel="noopener noreferrer"&gt;how Sidequest started&lt;/a&gt; as a quick detour that ate three weeks. This piece is the tour of what it grew into, because as of August 2026 it’s the thing I’m proudest of having built. The agent community keeps renaming the same idea: loop engineering, graph engineering, fleets of agents, multi-agent orchestration. Whatever you call it, the meta is that &lt;strong&gt;one expensive model plans while cheaper ones do the work in parallel&lt;/strong&gt;, and everyone is duct-taping their own version out of prompts and shell scripts. Sidequest is my version, and after months of daily use across every project I touch, I’ll say the slightly immodest thing out loud: &lt;strong&gt;I think we’ve come close to perfecting it&lt;/strong&gt;. It’s a Kanban board where you never drag a card, because the cards get up and do the work themselves.&lt;/p&gt;

&lt;p&gt;It’s also free. Sidequest is one plugin in the &lt;a href="https://github.com/Eigenwise/eigenwise-toolshed" rel="noopener noreferrer"&gt;Eigenwise Toolshed&lt;/a&gt;, my open marketplace of &lt;em&gt;Claude Code&lt;/em&gt; plugins, and everything below is installable with two slash commands.&lt;/p&gt;

&lt;h2&gt;
  
  
  One Board over Every Project
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvsx58cchszy4ps8f45g8.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvsx58cchszy4ps8f45g8.webp" alt="The Sidequest dashboard showing every project board in a left rail and a Kanban view with route lines on each card" width="800" height="543"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The dashboard is a local web app. No cloud, no account, ticket data in a local store on your machine. The rail on the left holds &lt;strong&gt;every project you’ve registered a board for&lt;/strong&gt;, with ticket counts and progress beside each one, and the “All boards” view merges them into one queue you can scan in ten seconds: what’s waiting, what’s running, what’s done. Mine currently holds 12 boards, and every one of them had tickets filed this month.&lt;/p&gt;

&lt;p&gt;Look at the cards, because the interesting part is printed right on them. Every card carries its priority, its story, its labels… and a route line: &lt;code&gt;sonnet · medium&lt;/code&gt;, &lt;code&gt;opus · xhigh&lt;/code&gt;, &lt;code&gt;codex-gpt-5-6-terra · high&lt;/code&gt;. That route is &lt;strong&gt;which model will do the work and how hard it will think&lt;/strong&gt;, decided per ticket. More on that in a minute, because it’s the section I actually want you to read.&lt;/p&gt;

&lt;h2&gt;
  
  
  Side Issues Become Tickets Instead of Detours
&lt;/h2&gt;

&lt;p&gt;The board fills itself. Claude is working on the main task, something crosses your mind, you say so in passing and keep going. For this article I mined my own session transcripts and the board’s local store, and the first twenty days of August alone hold &lt;strong&gt;2,400 tickets filed and 2,856 dispatches prepared&lt;/strong&gt;, an average of &lt;strong&gt;120 tickets a day&lt;/strong&gt; across those boards. Agents file most of them mid-flight, when a fix trips over a second problem. My side of those moments is about as ceremonial as you’d expect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“yeah file it and queue it man sounds important, and yes go sorry for interrupting”&lt;/li&gt;
&lt;li&gt;“yeah ticket that lint false positive too and keep going fix everything”&lt;/li&gt;
&lt;li&gt;“yes, file that ticket and fire it off, in parallel for both”&lt;/li&gt;
&lt;li&gt;“ticket them and fire em off”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of those became a properly filed ticket with a description, a category, and a route, without the main task losing its thread. That’s the original itch the plugin scratched: &lt;strong&gt;side issues stop being detours and stop being forgotten&lt;/strong&gt;. They become cards.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl1ege2usbwyalx5zi0y0.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl1ege2usbwyalx5zi0y0.webp" alt="A single ticket opened in Sidequest with priority, status, labels, dependency links, and the agent comment thread" width="799" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And a card is a real ticket, in the boring, load-bearing sense. Priority, status, story, labels, dependency links (“blocks SQ-5”), a scheduled reminder, and a comment thread where the agents working on it report findings as they go. When I ask “what is blocking SQ-7?”, the answer comes from this data, and the executors read the thread before they start. &lt;strong&gt;The board is shared memory between me and every agent on the project.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To be clear, small direct work stays direct. “no ticket needed for that just inline it” is a real quote from my transcripts too, and the plugin’s own skills tell Claude the same thing: a one-line fix in a file I named goes straight in. Filing a ticket for that would be theater. The board is for work worth delegating.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Kind of Work Chooses the Model
&lt;/h2&gt;

&lt;p&gt;This is the part I haven’t seen anywhere else done properly. Every ticket gets classified into a category: coding, deep-research, docs, behavior verification, whatever you’ve defined for the board. And &lt;strong&gt;each category carries a route: a concrete model plus a reasoning effort&lt;/strong&gt;. A grunt refactor goes to a fast cheap model at medium effort. Research that feeds an article, where being wrong is expensive, goes to the big model at high effort. You set the mapping once in a routing profile, and from then on &lt;strong&gt;the kind of work chooses the model&lt;/strong&gt;, instead of habit or whichever model happens to be loaded.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F731rn591tcmtvpk5gg7y.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F731rn591tcmtvpk5gg7y.webp" alt="Sidequest board settings showing routing profiles that map each work category to a model and reasoning effort" width="799" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Profiles live in a library, so three boards can follow one “Coding” profile and inherit its updates, with local overrides per board. There’s a global fallback for when a route’s model is unavailable, and a quota-fallback hook that catches a mid-flight “you’ve hit your limit” and reroutes instead of dying.&lt;/p&gt;

&lt;p&gt;Now read those card routes again: &lt;code&gt;opus · xhigh&lt;/code&gt; next to &lt;code&gt;codex-gpt-5-6-terra · high&lt;/code&gt; on the same board. That second one is a &lt;em&gt;Codex&lt;/em&gt; model. As of August 2026, Sidequest dispatches to &lt;strong&gt;Anthropic and OpenAI models side by side, on the same board, in the same wave&lt;/strong&gt;, because the Toolshed also ships a &lt;a href="https://eigenwise.io/writing/the-quest-for-local-model-routing-inside-claude-code" rel="noopener noreferrer"&gt;model-gateway plugin&lt;/a&gt; that puts any OpenAI-compatible backend behind a model name &lt;em&gt;Claude Code&lt;/em&gt; can route to. It’s all modular: Sidequest defines routes, the gateway makes the names resolvable, and neither knows the other’s internals. The combination means you can run this &lt;strong&gt;even if all you have is a ChatGPT subscription&lt;/strong&gt;, with Codex models doing the executing. My own boards mix them daily, and they lean further toward the gateway than you’d probably guess: in the first twenty days of August, &lt;strong&gt;94 percent of my dispatches ran on Codex models&lt;/strong&gt;, with the Claude routes saved for the work where I want taste over volume.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Happens When a Card Starts Working
&lt;/h2&gt;

&lt;p&gt;Dispatch is where most home-grown agent-fleet setups fall apart, because “spawn ten agents” is easy and &lt;strong&gt;trusting what comes back is the entire problem&lt;/strong&gt;. So this is where Sidequest is most opinionated.&lt;/p&gt;

&lt;p&gt;When a ticket dispatches, the executor gets its &lt;strong&gt;own fresh git worktree&lt;/strong&gt;, an isolated checkout reserved by the board before git even creates it. Ten executors can run in parallel without touching each other’s files or mine. The dispatch itself is token-gated: an executor holds a one-time claim bound to that ticket, and a set of guard hooks makes sure nothing without a claim can pass itself off as an executor.&lt;/p&gt;

&lt;p&gt;Then the part I care most about: &lt;strong&gt;the verifier is pinned at dispatch time&lt;/strong&gt;. Every ticket names the check that decides whether the work actually worked: a test suite, a schema check, a document review, manual evidence, an attestation. The executor cannot swap it for an easier check, and for a declared command, Sidequest records a capture of the actual run, bound to the ticket, the exact command, and the exact revision it checked. &lt;strong&gt;A retyped command or a paragraph of prose cannot stand in for that capture.&lt;/strong&gt; If the capture predates the final commit, it has to be rerun. Anyone who has caught an agent claiming “all tests pass” knows exactly which failure mode this closes.&lt;/p&gt;

&lt;p&gt;Delivery is gated too. Before work lands, Sidequest opens an integration wave that pins the source revision and the files each ticket said it would touch, refuses a wave whose scope overlaps work still running, and invalidates a candidate the moment the base under it moves. Code work submits a &lt;strong&gt;verified git range&lt;/strong&gt;, and for projects outside git (this article was written in a board-managed Obsidian vault) a filesystem-snapshot adapter does the same job with SHA-256 tree snapshots. The result and its log artifact are kept either way, including the failures, so you can always see what happened.&lt;/p&gt;

&lt;p&gt;For a sense of how tight that loop runs: in August a real ticket, a queue-shuffle bug in a music-practice app I’m building, went &lt;strong&gt;from filed to integrated on main in 23 minutes and 35 seconds&lt;/strong&gt;. That included the board refusing the executor’s first submit for sitting on the wrong base, preserving the rejected work at its own ref, and the executor recovering and resubmitting in 94 seconds. And when work does bounce, it bounces visibly: &lt;strong&gt;20 percent of my August tickets carry at least one rework event&lt;/strong&gt;. I’d rather have that number on a board than spread across a hundred chat scrollbacks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Around 30 Hooks Keep Everyone Honest
&lt;/h2&gt;

&lt;p&gt;All of that policy would be worth little if an agent could just… not follow it. So as of August 2026, Sidequest ships roughly &lt;strong&gt;30 hooks that make the rules mechanical instead of aspirational&lt;/strong&gt;. A few of my favorites: one blocks any agent from spawning executors outside the dispatch path, one refuses edits that escape an executor’s own worktree, one catches destructive git commands before they run, and one gently reminds a session that substantial new work should start as a ticket. These fire constantly and mostly invisibly: in the first twenty days of August the spawn guard &lt;strong&gt;allowed 2,813 executor spawns and denied 72 attempts&lt;/strong&gt; to reach the executor path without a valid dispatch, and the reminder alone fired 157 times. It fires at me too, and there’s a transcript where I ask Claude, slightly annoyed: “why are you not using sidequest btw did you not get the hook?”&lt;/p&gt;

&lt;p&gt;Hooks are also why the whole thing survives long sessions. A compaction-policy hook protects board state across context compaction, and session hooks re-register the live boards on every start. &lt;strong&gt;The board doesn’t forget, even when the model does.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  It Builds Itself Now
&lt;/h2&gt;

&lt;p&gt;The strangest property showed up a few months in: the Toolshed with Sidequest on top is close to a &lt;strong&gt;self-improving system&lt;/strong&gt;. Getting it there took real time, but the whole way through, the plugin was developed on its own board. It kept reading its own source to understand itself, and &lt;a href="https://eigenwise.io/writing/claude-code-can-do-things-its-own-docs-dont-mention" rel="noopener noreferrer"&gt;the &lt;em&gt;Claude Code&lt;/em&gt; binary&lt;/a&gt; to learn what its host can actually do and how to work around what it can’t.&lt;/p&gt;

&lt;p&gt;The loop is simple once the board exists. While an executor fixes a bug, it trips over a second bug, and that second bug becomes a ticket instead of a lost observation. Compaction and new sessions don’t break the chain, because the tickets are on the board, outside any context window: &lt;strong&gt;nothing gets lost&lt;/strong&gt;. There have been stretches where it found and fixed &lt;strong&gt;friction after friction for two, three days straight&lt;/strong&gt;, making itself faster and better with me mostly reading the inbox. That pace is why the plugin sits at &lt;strong&gt;version 5&lt;/strong&gt; already, and yes, it follows semantic versioning; those were real breaking changes, most of them proposed by the system itself.&lt;/p&gt;

&lt;p&gt;The counterintuitive number: my &lt;strong&gt;total token spend went down&lt;/strong&gt; while all this was running. I can see it because another Toolshed plugin routes every session’s usage to &lt;em&gt;Grafana&lt;/em&gt;. Routing is most of the answer: the expensive model plans and reviews, while the bulk of the executing happens on cheaper routes, and a verify-discipline skill keeps executors from re-running full test suites out of nervousness.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Inbox Is Where I Actually Live
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F67brlk0su4jsyhjjwzsy.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F67brlk0su4jsyhjjwzsy.webp" alt="The Sidequest inbox collecting comments, status changes, and reminders across every board" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With work running in parallel across projects, the question becomes how you keep up without babysitting. The inbox collects comments, status changes, reminders, and new tickets across every board, split into “Needs you” and the wider activity stream. Executors comment their findings mid-flight, so &lt;strong&gt;review starts while the work is still running&lt;/strong&gt;. My mornings on busy days are: open inbox, read what the fleet did, say “review and integrate SQ-12 if its verification passed”, move on. When a board gets messy, “do a proper grooming sesh” is a real instruction; the groom skill audits for stale, duplicate, and superseded tickets and closes the clear cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install It
&lt;/h2&gt;

&lt;p&gt;Sidequest is free and lives in the Toolshed marketplace. In &lt;em&gt;Claude Code&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin marketplace add Eigenwise/eigenwise-toolshed
/plugin install sidequest@eigenwise-toolshed --scope project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reload, then open the board with &lt;code&gt;/sidequest:board&lt;/code&gt; and say something like “Plan the checkout refresh as a Sidequest story and show me the backlog.” If you’d rather have the setup done for you, &lt;code&gt;/quartermaster:setup&lt;/code&gt; installs and configures it per project. For the mixed Claude-plus-Codex fleet, add the model-gateway plugin from the same marketplace; &lt;a href="https://eigenwise.io/writing/the-quest-for-local-model-routing-inside-claude-code" rel="noopener noreferrer"&gt;the routing article&lt;/a&gt; walks through that setup.&lt;/p&gt;

&lt;p&gt;Two months in, this is simply how I work now, and it earned that the hard way. The same transcripts I mined for this piece contain “yeah no I think I gotta let sidequest go” and one project where I flat-out told Claude to stop using it. &lt;strong&gt;Both times I was back within days&lt;/strong&gt;, because the alternative was carrying the whole queue in my own head again. Plans become cards, cards carry their own model and their own proof, and the fleet runs while I do something else. &lt;strong&gt;The board went from a side project to the thing every other project runs through.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And if you want this way of working inside your company, that’s a big part of what I do: teaching teams the ins and outs of AI-assisted development, and building the plugins, hooks, and routing that make &lt;em&gt;Claude Code&lt;/em&gt; productive on your own codebase. If you want a hand, feel free to &lt;a href="https://eigenwise.io/contact" rel="noopener noreferrer"&gt;reach out&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>claude</category>
    </item>
    <item>
      <title>Atomic Agents - New opensource library to build AI agents atomically</title>
      <dc:creator>Kenny Vaneetvelde</dc:creator>
      <pubDate>Tue, 25 Jun 2024 20:02:50 +0000</pubDate>
      <link>https://dev.to/kennyvaneetvelde/atomic-agents-new-opensource-library-to-build-ai-agents-atomically-27da</link>
      <guid>https://dev.to/kennyvaneetvelde/atomic-agents-new-opensource-library-to-build-ai-agents-atomically-27da</guid>
      <description>&lt;p&gt;Hello all, I am the creator of &lt;strong&gt;Atomic Agents&lt;/strong&gt;, A new multi-agent open source framework inspired by Atomic Design principles.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/KennyVaneetvelde/atomic_agents"&gt;https://github.com/KennyVaneetvelde/atomic_agents&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A lot of existing frameworks and methodologies for Agentic AI are focused on building autonomous multi-agent systems that you basically wind up and let go. While these can be fun to demo, they’re not always practical for real-world applications. Real-life companies aren’t looking for a bot that writes articles in a different style each time, with a different structure and a different tone. They want a bot that can write articles in a consistent style, with a consistent structure and a consistent tone that aligns with their brand. Beside fine-tuning a model, which requires a lot of data and money, and isn’t even possible if you really want to use the latest GPT model, there’s no practical way to gain full control of the output of these frameworks.&lt;/p&gt;

&lt;p&gt;In business, management rarely allocates budget just to create something that’s cool but has no value. They want to see a return on investment. They want to see real business issues being solved and automated and cut costs. To achieve this, you need modularity, you need to be able to control the output, make sure it’s not a black box, make the output reproducible, and make it reliable. This is where Atomic Agents come in.&lt;/p&gt;

&lt;p&gt;Since this framework is new, I'd love some feedback, suggestions, and PRs! I have been using it a TON and it's way easier than langchain, crewAI, ...&lt;/p&gt;

&lt;p&gt;Feel free to get in touch with me on LinkedIn for business inquiries &lt;a href="https://www.linkedin.com/in/kennyvaneetvelde/"&gt;https://www.linkedin.com/in/kennyvaneetvelde/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>agentic</category>
      <category>github</category>
    </item>
  </channel>
</rss>
