<?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: Drakko Tarkin</title>
    <description>The latest articles on DEV Community by Drakko Tarkin (@drakkotarkin).</description>
    <link>https://dev.to/drakkotarkin</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%2F3837798%2F471456d7-1409-4c64-90d7-3e60b392980e.jpeg</url>
      <title>DEV Community: Drakko Tarkin</title>
      <link>https://dev.to/drakkotarkin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/drakkotarkin"/>
    <language>en</language>
    <item>
      <title>We Made AI Too Agreeable. Here's What It Cost Us.</title>
      <dc:creator>Drakko Tarkin</dc:creator>
      <pubDate>Sun, 05 Apr 2026 19:06:25 +0000</pubDate>
      <link>https://dev.to/drakkotarkin/we-made-ai-too-agreeable-heres-what-it-cost-us-apc</link>
      <guid>https://dev.to/drakkotarkin/we-made-ai-too-agreeable-heres-what-it-cost-us-apc</guid>
      <description>&lt;h2&gt;
  
  
  The Plan That Should Have Died
&lt;/h2&gt;

&lt;p&gt;Last month I spent hours planning a feature. Twelve tasks. Dependencies mapped. Outcomes defined for each one. A beautiful, thorough, completely unnecessary plan.&lt;/p&gt;

&lt;p&gt;The feature itself was wrong. Not the implementation. The concept. I was building a manual selector for a system that already had automatic routing. hours of careful planning for something that should have been cut after five minutes of honest scrutiny.&lt;/p&gt;

&lt;p&gt;Here's what went wrong: I asked my AI coding assistant to help me plan, and it planned. Brilliantly. Thoroughly. Without once asking whether the thing was worth planning at all.&lt;/p&gt;

&lt;p&gt;That's the problem with a single voice. It does what you ask. It doesn't push back. And the most valuable output isn't a single answer, it's a discussion.&lt;/p&gt;

&lt;p&gt;If you've ever finished a sprint or project and realized half the work shouldn't have existed, you know this feeling. The plan looked right. The execution was clean. The waste was invisible until it was already too late.&lt;/p&gt;

&lt;h2&gt;
  
  
  One Brain, One Blind Spot
&lt;/h2&gt;

&lt;p&gt;We've all been there. You ask an AI assistant for help, and it gives you exactly what you asked for. Polished, syntactically correct, completely unchallenged.&lt;/p&gt;

&lt;p&gt;Need architecture advice? It designs a system. Need a code review? It finds issues. Need a plan? It plans. Each response is competent. None of them question the premise.&lt;/p&gt;

&lt;p&gt;This is what a single voice gives you: confirmation dressed up as collaboration.&lt;/p&gt;

&lt;p&gt;Real engineering teams don't work this way. The best code reviews happen when someone says "why are we doing this?" The best architecture decisions survive someone asking "do we actually need this?" The best plans get leaner when someone challenges the scope before the first task is written.&lt;/p&gt;

&lt;p&gt;Our brains struggle to hold both perspectives simultaneously. We can't plan a feature and genuinely interrogate whether it should exist at the same time. Planning and simplifying pull us in different directions, and one always wins. That's not a discipline problem. It's a design problem with how we use AI.&lt;/p&gt;

&lt;p&gt;So what if the AI itself held both perspectives?&lt;/p&gt;

&lt;h2&gt;
  
  
  What Happens When Two Voices Collide
&lt;/h2&gt;

&lt;p&gt;I built a system where 23 expert personas activate automatically inside Claude Code based on what I'm saying. No commands, no menus, no manual switching. Natural language triggers a team.&lt;/p&gt;

&lt;p&gt;But the part that changed how I work wasn't the expertise. It was what happened the first time two personas genuinely disagreed.&lt;/p&gt;

&lt;p&gt;Here's a real example. I type something about planning a new feature:&lt;/p&gt;

&lt;p&gt;Bob, my Scrum Master, reads the prompt and breaks it into twelve ordered tasks. Thorough. Structured. Every task has a clear outcome. Bob is good at his job.&lt;/p&gt;

&lt;p&gt;Then Jobs, my Combinatorial Genius, looks at Bob's list and says: "Cut seven of these."&lt;/p&gt;

&lt;p&gt;Not randomly. Jobs sees which tasks serve the core vision and which are scope creep wearing a helpful disguise. Bob's instinct is completeness. Jobs's instinct is reduction. Neither is wrong. The plan that survives both is leaner than either would produce alone.&lt;/p&gt;

&lt;p&gt;You've had this conversation before. Maybe not with AI personas, but with the two voices in your own head that you can never seem to hold at the same time. The voice that says "be thorough" and the voice that says "this is too much." The difference is, now both voices actually speak. Out loud. With reasoning you can evaluate.&lt;/p&gt;

&lt;p&gt;Here's what that looks like in practice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**Bob (Scrum Master):**
I've broken this into 12 tasks with dependencies. Tasks 4-7
handle the auth migration, which needs to complete before
the API layer in tasks 8-10.

**Jobs (Combinatorial Genius):**
Tasks 4 and 5 duplicate what the existing middleware already
handles. Tasks 9 and 10 are building for a scale requirement
we don't have yet. Cut both pairs. The plan drops from 12
tasks to 8 with zero capability loss.

**Bob (Scrum Master):**
Agreed on 9 and 10. But task 4 handles an edge case the
middleware misses when tokens expire mid-request. Keep 4,
cut 5.

Final: 9 tasks. Three were scope creep. One was genuine.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That exchange took seconds. It saved hours. And it happened because the system was designed to surface the tension, not resolve it before I could see it.&lt;/p&gt;

&lt;p&gt;If you've ever stared at a task list and suspected it was too long but couldn't figure out which tasks to cut, this is the moment that fixes that. Not a smarter planner. Two planners who see scope differently.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Speed vs. Quality Trap
&lt;/h2&gt;

&lt;p&gt;There's another tension every developer knows intimately: the pull between shipping and testing.&lt;/p&gt;

&lt;p&gt;Quinn, my QA Engineer, won't let anything through without validation. Every edge case matters. Every test needs to pass. She's the voice that says "not yet" when everything in you wants to hear "ship it."&lt;/p&gt;

&lt;p&gt;Barry, my Quick Flow Solo Dev, sees ceremony as friction. Typo fix? Just push it. One-line config change? Ship it.&lt;/p&gt;

&lt;p&gt;You know this debate. You've lived it. Maybe you've been Quinn on a Friday afternoon, blocking a deploy that "should be fine." Maybe you've been Barry, frustrated that a two-second fix requires a twenty-minute review cycle.&lt;/p&gt;

&lt;p&gt;When both activate on the same task, the routing engine reads context. A typo fix gets Barry's speed. An authentication change gets Quinn's rigor. But when the context is genuinely ambiguous, both speak. And the conversation between "ship it" and "test it first" is exactly the one that prevents mistakes we regret on Monday morning.&lt;/p&gt;

&lt;p&gt;The best engineering teams have this tension built into their culture. The best AI tools should too.&lt;/p&gt;

&lt;h2&gt;
  
  
  You Have to Engineer the Disagreement
&lt;/h2&gt;

&lt;p&gt;Here's the part I didn't expect: language models don't disagree naturally.&lt;/p&gt;

&lt;p&gt;My first multi-persona responses were consensus chains. The Analyst said X. The Architect agreed. The QA engineer agreed. Everyone nodded politely and contributed nothing new.&lt;/p&gt;

&lt;p&gt;This is the default. Language models are trained to be helpful, and agreement is the path of least resistance. A response where five personas nod along is easy to generate and useless to read.&lt;/p&gt;

&lt;p&gt;I had to make disagreement structural. The system's orchestrator, the "Chief of Staff", a meta-persona named Susie, has an explicit instruction: "A war room where everyone agrees is a failed war room." When a proposal lands, Susie identifies which personas would challenge it and draws them out. Silence is not agreement. It's Susie's cue to provoke.&lt;/p&gt;

&lt;p&gt;This sounds like a minor implementation detail. It's the most important design decision in the entire system. It's the difference between five flavors of "yes" and genuine tradeoff analysis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you want diverse AI perspectives, you have to engineer the disagreement.&lt;/strong&gt; The model won't give it to you voluntarily. You have to build the conflict into the structure. Whether that's through persona systems, adversarial prompting, or separate model instances reviewing each other's work, the insight is the same. Helpful agreement is the default. Productive disagreement is a design choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Lesson I Wasn't Looking For
&lt;/h2&gt;

&lt;p&gt;The persona conflicts taught me something unexpected.&lt;/p&gt;

&lt;p&gt;The best engineering decisions I've made in the last two months didn't come from the persona who was right. They came from the moment two personas disagreed and I had to decide which perspective to follow.&lt;/p&gt;

&lt;p&gt;That's the part AI can't replace. Not the planning. Not the code review. Not the architecture. The judgment call when two legitimate perspectives collide and someone has to choose.&lt;/p&gt;

&lt;p&gt;Bob says the plan needs twelve tasks. Jobs says seven is enough. Both have real reasoning. I decide. And the act of deciding, weighing completeness against simplicity with real stakes, is when the actual engineering thinking happens.&lt;/p&gt;

&lt;p&gt;We talk a lot about AI replacing developers. But the part of engineering that matters most, the judgment when facing genuine tradeoffs, is the part that multi-voice AI makes more visible, not less necessary.&lt;/p&gt;

&lt;p&gt;Single-voice AI hides these tradeoffs. It gives you one polished answer and lets you assume it's the only answer. Multi-voice AI surfaces the tension. It shows you the competing perspectives and asks you to choose.&lt;/p&gt;

&lt;p&gt;That's not a limitation. It's a gift. Even when it's uncomfortable. Especially when it's uncomfortable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bringing This Into Your Work
&lt;/h2&gt;

&lt;p&gt;You don't need my specific tool to apply this. The principle works anywhere.&lt;/p&gt;

&lt;p&gt;If you're using AI for code review, ask it to review from two perspectives: one optimizing for readability, one optimizing for performance. See where they disagree. The disagreement is where the interesting engineering decisions live.&lt;/p&gt;

&lt;p&gt;If you're using AI for architecture, ask it to design the system, then ask it to challenge every layer of that design. The layers that survive the challenge are the ones that deserve to exist.&lt;/p&gt;

&lt;p&gt;If you're planning features, ask for the complete plan, then ask what would happen if you cut half of it. The tasks that can't be cut are the ones that matter.&lt;/p&gt;

&lt;p&gt;The pattern is always the same: generate, then challenge. Build, then question. Plan, then reduce. Two perspectives. One decision. That's engineering.&lt;/p&gt;

&lt;p&gt;If you want a system that does this automatically, 23 personas deep, with routing that reads your natural language and assembles the right team for every message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx prism-forge &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One command to install. One command to remove (&lt;code&gt;npx prism-forge uninstall&lt;/code&gt;). Open source, MIT licensed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/prism-forge/prism-forge" rel="noopener noreferrer"&gt;prism-forge/prism-forge&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm:&lt;/strong&gt; &lt;a href="https://www.npmjs.com/package/prism-forge" rel="noopener noreferrer"&gt;prism-forge&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;It runs inside Claude Code. The personas activate from natural language. The conflicts happen automatically. And the decisions? Those are still yours.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>claudecode</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How We Cut Claude Code Session Overhead with Lazy-Loaded Personas</title>
      <dc:creator>Drakko Tarkin</dc:creator>
      <pubDate>Thu, 02 Apr 2026 19:27:11 +0000</pubDate>
      <link>https://dev.to/drakkotarkin/how-we-cut-claude-code-session-overhead-with-lazy-loaded-personas-3ann</link>
      <guid>https://dev.to/drakkotarkin/how-we-cut-claude-code-session-overhead-with-lazy-loaded-personas-3ann</guid>
      <description>&lt;p&gt;If you use Claude Code with a heavily customized &lt;code&gt;CLAUDE.md&lt;/code&gt;, every message you send carries that full file as context. Not just once at session start — on every turn.&lt;/p&gt;

&lt;p&gt;That matters more than most people realize.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: Eager-Loading Everything
&lt;/h2&gt;

&lt;p&gt;The naive approach to building a multi-persona system in Claude Code is to define all your personas directly in &lt;code&gt;CLAUDE.md&lt;/code&gt;. It feels clean — everything in one place, always available.&lt;/p&gt;

&lt;p&gt;The cost: if you have 23 specialist personas, each defined in 150-200 lines, you're looking at 3,000-5,000 tokens of persona definitions loaded on every single message — regardless of whether the current task has anything to do with a UX designer or a financial analyst.&lt;/p&gt;

&lt;p&gt;Claude Code's &lt;code&gt;CLAUDE.md&lt;/code&gt; is not a one-time setup file. It is re-injected into context on every turn. The larger it is, the more tokens you burn before you type a word.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Pattern: Route First, Load on Demand
&lt;/h2&gt;

&lt;p&gt;The fix is the same pattern software engineers have used for decades: don't load what you don't need until you need it.&lt;/p&gt;

&lt;p&gt;Instead of embedding persona definitions in &lt;code&gt;CLAUDE.md&lt;/code&gt;, you define a lightweight routing engine that reads signal words from the user's message and loads the relevant persona file on demand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Eager approach (expensive):&lt;/strong&gt;&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="gh"&gt;# Personas&lt;/span&gt;

&lt;span class="gu"&gt;## Mary (Business Analyst)&lt;/span&gt;
Mary is a meticulous analyst who investigates existing state...
[150 more lines]

&lt;span class="gu"&gt;## Amelia (Developer Agent)&lt;/span&gt;
Amelia is an execution-focused developer who builds and edits files...
[150 more lines]

&lt;span class="gu"&gt;## Winston (Architect)&lt;/span&gt;
Winston designs systems, data flows, and infrastructure...
[150 more lines]

&lt;span class="gh"&gt;# ... 20 more persona blocks&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Lazy approach (efficient):&lt;/strong&gt;&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;## Persona Routing&lt;/span&gt;
Read routing-engine.md on every session.
Load personas on demand from ~/.claude/prism/ when triggered by signal words.
Only the active persona's file is in context.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this structure, &lt;code&gt;CLAUDE.md&lt;/code&gt; stays lean. The routing engine (&lt;code&gt;routing-engine.md&lt;/code&gt;) is a single file that maps signal words to persona file paths. When a message contains "architecture" or "schema," Claude reads &lt;code&gt;persona-architect-winston.md&lt;/code&gt;. When it contains "brainstorm" or "ideate," it reads &lt;code&gt;persona-brainstorm-coach-carson.md&lt;/code&gt;. Everything else stays off-context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters Right Now
&lt;/h2&gt;

&lt;p&gt;In April 2026, Claude Code users started reporting session costs 10-20x higher than expected. The root cause: a caching bug where context that should be served from cache is being re-tokenized and re-charged on every turn.&lt;/p&gt;

&lt;p&gt;Eager-loading large &lt;code&gt;CLAUDE.md&lt;/code&gt; files makes this worse. The bigger your baseline context, the higher your exposure when the cache misses. A 5,000-token persona block that should cost fractions of a cent per session can become a material cost per message when caching breaks.&lt;/p&gt;

&lt;p&gt;Lazy-loading is not a fix for the cache bug. It is a structural hedge. Smaller baseline context means less blast radius when something goes wrong with token accounting — and it means lower costs even when everything works correctly.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Apply This Pattern
&lt;/h2&gt;

&lt;p&gt;You don't need a 23-persona routing system to benefit from this. Three steps work for any Claude Code setup:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Audit your CLAUDE.md token weight.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Paste it into a tokenizer (Anthropic's tokenizer playground, or &lt;code&gt;tiktoken&lt;/code&gt; for a rough proxy) or run &lt;code&gt;wc -w CLAUDE.md&lt;/code&gt; as a fast estimate. If you're over 1,000 words, you have room to trim.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Move reference content to separate files.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Anything that isn't needed on every turn belongs in its own file. Coding style guides, persona definitions, workflow references, architecture docs — pull them out of &lt;code&gt;CLAUDE.md&lt;/code&gt; and into named files in your &lt;code&gt;.claude/&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Add a routing section that tells Claude what to load and when.&lt;/strong&gt;&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;## Reference Files (load on demand)&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Coding standards: Read ~/.claude/reference/coding-style.md when writing or reviewing code
&lt;span class="p"&gt;-&lt;/span&gt; Architecture patterns: Read ~/.claude/reference/architecture.md when designing systems
&lt;span class="p"&gt;-&lt;/span&gt; Deployment guide: Read ~/.claude/reference/deployment.md when working on CI/CD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code follows these instructions literally. The file only enters context when the task requires it.&lt;/p&gt;

&lt;h2&gt;
  
  
  PRISM Forge
&lt;/h2&gt;

&lt;p&gt;This pattern is the foundation of PRISM Forge, an open-source Claude Code persona routing system with 23 specialist personas that load on-demand via signal-word routing. The full implementation is at &lt;a href="https://github.com/prism-forge/prism" rel="noopener noreferrer"&gt;github.com/prism-forge/prism&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The token savings are real. The architecture is simple. And the pattern applies to any Claude Code setup — no persona system required.&lt;/p&gt;

&lt;p&gt;If you're building autonomous Claude Code workflows and want this architecture set up for your team, &lt;a href="https://www.linkedin.com/in/anthonyjhipp" rel="noopener noreferrer"&gt;reach out on LinkedIn&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>ai</category>
      <category>devtools</category>
      <category>performance</category>
    </item>
    <item>
      <title>Context Hygiene for Claude Code Power Users (And Why the Token Crisis Is Worse Than 7%)</title>
      <dc:creator>Drakko Tarkin</dc:creator>
      <pubDate>Thu, 02 Apr 2026 16:58:24 +0000</pubDate>
      <link>https://dev.to/drakkotarkin/context-hygiene-for-claude-code-power-users-and-why-the-token-crisis-is-worse-than-7-4e7c</link>
      <guid>https://dev.to/drakkotarkin/context-hygiene-for-claude-code-power-users-and-why-the-token-crisis-is-worse-than-7-4e7c</guid>
      <description>&lt;p&gt;Anthropic's April 1 communication about token usage changes referenced "7% of users" seeing higher costs during peak hours. That framing buried the real story. The policy change is minor. Two cache bugs are not.&lt;/p&gt;

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

&lt;p&gt;Two separate bugs are causing 10–20x token inflation for power users, and neither has anything to do with peak-hour pricing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bug 1 — Sentinel replacement bug (standalone binary)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you installed Claude Code via the 228MB standalone installer, a sentinel replacement bug triggers a full cache rebuild on every request. Your context isn't being read from cache — it's being rewritten from scratch each time. The standalone binary distribution is the trigger. This is tracked in GitHub issue #40524.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bug 2 — Resume session bug (v2.1.69+)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you use &lt;code&gt;--resume&lt;/code&gt; or &lt;code&gt;--continue&lt;/code&gt; flags on v2.1.69 or later, a cache prefix mismatch causes the entire conversation history to be rewritten instead of read. The cache exists. Claude just isn't reading it correctly — it's appending instead of resuming.&lt;/p&gt;

&lt;p&gt;If you run autonomous loops with &lt;code&gt;--continue&lt;/code&gt;, or regularly resume long sessions, you're likely burning 10–20x what you should be. The 7% headline does not describe your situation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who is affected
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Anyone using the standalone binary installer (not npm)&lt;/li&gt;
&lt;li&gt;Anyone running &lt;code&gt;--resume&lt;/code&gt; or &lt;code&gt;--continue&lt;/code&gt; on v2.1.69+&lt;/li&gt;
&lt;li&gt;Power users with long sessions, multi-turn autonomous workflows, or heavy CLAUDE.md files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're running Claude Code via npm and never use resume flags, your exposure is limited to the peak-hour policy change, which is comparatively small.&lt;/p&gt;

&lt;h2&gt;
  
  
  5 workarounds you can apply today
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Switch from standalone binary to npm&lt;/strong&gt;&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;-g&lt;/span&gt; @anthropic-ai/claude-code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This sidesteps the sentinel replacement bug entirely. If you installed via the 228MB standalone installer, uninstall it and switch to the npm package. Same CLI, different distribution path, no cache rebuild on every request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Avoid &lt;code&gt;--resume&lt;/code&gt; and &lt;code&gt;--continue&lt;/code&gt; until patched&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Until the fix ships, these flags are a token sink. For tasks that span sessions, use &lt;code&gt;/clear&lt;/code&gt; to start a clean context rather than resuming a broken one. The resume flag is supposed to save tokens. Right now it costs them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Shrink your CLAUDE.md under 800 tokens&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CLAUDE.md loads on every session start, before cache has anything to offer. If your file is 3,000 tokens of instructions, that's 3,000 tokens of cold-load on every session. When the cache breaks, that entire block gets reloaded repeatedly.&lt;/p&gt;

&lt;p&gt;Audit what's actually required at session start versus what can be loaded on demand. Cut references to documentation you rarely need. Move heavy reference material to separate files and load them explicitly when relevant. A lean CLAUDE.md is a structural hedge against cache failures — not just an optimization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Move heavy autonomous work outside 8am–2pm ET&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The peak-hour multiplier policy is real, even if smaller than the cache bugs. Autonomous loops that run for hours are better scheduled off-peak. This doesn't fix the bugs, but it reduces the compounding effect of running a token-inflating workflow during an already-expensive window.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Measure your actual burn&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ccusage@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run this before and after applying the workarounds above. You can't manage what you're not measuring. ccusage pulls your actual usage data and gives you a clear picture of where tokens are going.&lt;/p&gt;

&lt;h2&gt;
  
  
  The structural principle: lazy-load your context
&lt;/h2&gt;

&lt;p&gt;The cache bugs hit hardest when there's a large baseline context — instructions, personas, reference material — all loaded upfront regardless of what you're actually doing. The more you front-load, the more you lose when cache breaks.&lt;/p&gt;

&lt;p&gt;The pattern that holds up under cache failure is lazy-loading: only load what the current task requires, defer everything else. If you want to see this in practice, &lt;a href="https://github.com/prism-forge/prism" rel="noopener noreferrer"&gt;PRISM Forge&lt;/a&gt; takes this approach with 23 personas — none are loaded at session start, each is loaded on demand when a signal fires. That's not a fix for the cache bug, but it means the baseline context stays small, so cache failures are cheaper.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this lands
&lt;/h2&gt;

&lt;p&gt;Anthropic is actively working the fix — GitHub #40524 is open and patches are in progress. These bugs will be resolved.&lt;/p&gt;

&lt;p&gt;The hygiene habits are worth keeping anyway. Lean CLAUDE.md, lazy-loaded context, measured token usage — these aren't workarounds for a temporary bug. They're how you keep costs predictable as sessions get longer and workflows get more autonomous.&lt;/p&gt;

&lt;p&gt;The 7% framing will probably age badly once the cache fixes ship and people can see what was actually happening. Build your setup like you're the 10–20x case, because for a subset of power users, that's exactly what it is.&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>devtools</category>
      <category>productivity</category>
      <category>ai</category>
    </item>
    <item>
      <title>How Signal-Based Routing Actually Works (and the 3 Times It Broke)</title>
      <dc:creator>Drakko Tarkin</dc:creator>
      <pubDate>Sun, 29 Mar 2026 20:45:59 +0000</pubDate>
      <link>https://dev.to/drakkotarkin/how-signal-based-routing-actually-works-and-the-3-times-it-broke-5eop</link>
      <guid>https://dev.to/drakkotarkin/how-signal-based-routing-actually-works-and-the-3-times-it-broke-5eop</guid>
      <description>&lt;h2&gt;
  
  
  You Shouldn't Have to Tell the AI Who to Be
&lt;/h2&gt;

&lt;p&gt;Last week I wrote about typing "act as a senior architect" 47 times per week. The friction of manually assigning roles to an AI that should be able to figure it out.&lt;/p&gt;

&lt;p&gt;This week I want to go deeper. Not the pitch -- the plumbing. How does signal-based routing actually work inside &lt;a href="https://github.com/prism-forge/prism-forge" rel="noopener noreferrer"&gt;PRISM Forge&lt;/a&gt;? What does the routing engine look at? How does it decide?&lt;/p&gt;

&lt;p&gt;And -- because build-in-public means showing the dents -- the 3 times it broke in ways I didn't expect.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Core Idea: Intent Detection, Not Commands
&lt;/h2&gt;

&lt;p&gt;Most persona systems work like menus. Pick a role from a list. Type a command. Toggle a mode.&lt;/p&gt;

&lt;p&gt;Signal-based routing works differently. You talk naturally. The system listens for signals in your language and assembles the right team.&lt;/p&gt;

&lt;p&gt;"I'm stuck on this auth bug" contains two signals: &lt;strong&gt;stuck&lt;/strong&gt; (creative problem-solving) and &lt;strong&gt;bug&lt;/strong&gt; (debugging/validation). The routing engine reads both, decides who leads, and who supports.&lt;/p&gt;

&lt;p&gt;No slash commands. No mode toggles. No "act as."&lt;/p&gt;

&lt;h2&gt;
  
  
  Anatomy of the Routing Engine
&lt;/h2&gt;

&lt;p&gt;PRISM Forge's routing engine has four layers that fire on every single message:&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 1: Hard Overrides
&lt;/h3&gt;

&lt;p&gt;Three things bypass all logic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;"War room"&lt;/strong&gt; -- loads all 27 personas into active debate. Susie moderates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explicit name&lt;/strong&gt; -- "Winston, how should this be architected?" Always routes to the named persona.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mode switch&lt;/strong&gt; -- system context changes (Plan mode, Agent mode) activate mode defaults.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are cheap checks. If none fire, the engine moves to intent classification.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 2: Intent Classification
&lt;/h3&gt;

&lt;p&gt;Every message maps to one of 9 intent categories:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Intent&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;th&gt;Who typically leads&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Build&lt;/td&gt;
&lt;td&gt;Write code, create files&lt;/td&gt;
&lt;td&gt;Amelia (Developer)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Investigate&lt;/td&gt;
&lt;td&gt;Analyze, explore existing state&lt;/td&gt;
&lt;td&gt;Mary (Analyst)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plan&lt;/td&gt;
&lt;td&gt;Structure work, break down tasks&lt;/td&gt;
&lt;td&gt;Bob (Scrum Master) + John (PM)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Validate&lt;/td&gt;
&lt;td&gt;Test, verify, review&lt;/td&gt;
&lt;td&gt;Quinn (QA Engineer)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Create&lt;/td&gt;
&lt;td&gt;Brainstorm, ideate, design&lt;/td&gt;
&lt;td&gt;Carson (Brainstorm Coach)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Challenge&lt;/td&gt;
&lt;td&gt;Question approach, simplify&lt;/td&gt;
&lt;td&gt;Victor (Strategist) or Jobs (Genius)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Orient&lt;/td&gt;
&lt;td&gt;Catch up, understand context&lt;/td&gt;
&lt;td&gt;Susie (Chief of Staff)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Document&lt;/td&gt;
&lt;td&gt;Write up, explain, describe&lt;/td&gt;
&lt;td&gt;Paige (Technical Writer)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Narrate&lt;/td&gt;
&lt;td&gt;Tell story, frame metrics&lt;/td&gt;
&lt;td&gt;Sophia (Storyteller)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Here's the critical design decision: &lt;strong&gt;a single message can span multiple intents.&lt;/strong&gt; "Plan how to refactor the auth module -- I think it's too complex" spans Plan + Build + Challenge. The engine evaluates holistically, not sequentially. It doesn't stop at the first match.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 3: Signal Detection
&lt;/h3&gt;

&lt;p&gt;This is where it gets interesting. The engine maintains two signal tables:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shared signals&lt;/strong&gt; co-activate multiple personas. When someone says "audit," three personas are relevant: Mary (investigation), Quinn (validation), and Boris (structural conformance). The engine decides who leads based on the full message context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specialist signals&lt;/strong&gt; are exclusive triggers. "First principles" activates Musk (Radical Reductionist). "Hero's journey" activates Campbell (Mythic Storyteller). These are unambiguous.&lt;/p&gt;

&lt;p&gt;There are 24 shared signals and 23 specialist signal groups across all 23 personas. Every persona has a documented activation path. Nothing is magic -- it's a lookup table with contextual judgment on top.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 4: Team Assembly
&lt;/h3&gt;

&lt;p&gt;The engine doesn't just pick one persona. It assembles a team:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary&lt;/strong&gt; -- one persona leads the response. Sets the structure, answers the core question.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supporting&lt;/strong&gt; -- additional personas contribute distinct perspectives. Each one must earn their seat by adding something genuinely different.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example: you say "the auth module is too complex, let's simplify and rebuild it."&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Jobs (Combinatorial Genius)&lt;/strong&gt; leads -- "simplify" and "too complex" are his signals&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amelia (Developer)&lt;/strong&gt; supports -- "rebuild" means implementation is coming&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Winston (Architect)&lt;/strong&gt; supports -- architectural implications of simplification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three perspectives in one response. Each attributed. Each distinct. No blended consensus voice.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Orchestrator: Susie
&lt;/h2&gt;

&lt;p&gt;All four layers are orchestrated by Susie, the Chief of Staff. She's not a persona you talk to -- she's the intelligence running behind every turn.&lt;/p&gt;

&lt;p&gt;On Turn 1 of every session, Susie activates unconditionally. She scans your project state (git, todos, handoffs, memory) and delivers a sitrep:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Active:&lt;/strong&gt; what you're working on&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blocked:&lt;/strong&gt; what's stuck&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stale:&lt;/strong&gt; what hasn't moved&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recommended:&lt;/strong&gt; who should lead this session&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After Turn 1, Susie evaluates every message, re-assembles the team if needed, and only announces when the roster changes. If you send 5 messages about planning, the team stays stable. No noise.&lt;/p&gt;

&lt;p&gt;The key insight: Susie evaluates &lt;strong&gt;holistically&lt;/strong&gt;. All signals, all domain matches, all cross-workflow hooks are inputs to one team assembly decision. She doesn't process them sequentially and stop at the first match. She considers everything and picks the best team.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 3 Times It Broke
&lt;/h2&gt;

&lt;p&gt;Here's where build-in-public gets honest.&lt;/p&gt;

&lt;h3&gt;
  
  
  Break 1: Signal Collision
&lt;/h3&gt;

&lt;p&gt;Early in development, I typed: "Let's brainstorm how to simplify the architecture."&lt;/p&gt;

&lt;p&gt;Three strong signals fired simultaneously:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"brainstorm" → Carson (Brainstorming Coach)&lt;/li&gt;
&lt;li&gt;"simplify" → Jobs (Combinatorial Genius)&lt;/li&gt;
&lt;li&gt;"architecture" → Winston (Architect)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All three had legitimate claims to lead. The result? A response that tried to be all three at once. Brainstorming structure with simplification opinions wrapped in architectural framing. It was a mess. No clear voice. No clear direction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Explicit primary selection with a tiebreaker. The engine now picks ONE primary based on which signal is strongest in context. In this case, "brainstorm" as the verb (the action the user wants) beats "simplify" (the lens) and "architecture" (the domain). Carson leads. Jobs and Winston support. Clear hierarchy, clear voices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Break 2: The Consensus Trap
&lt;/h3&gt;

&lt;p&gt;I built a "war room" feature where all personas discuss a decision. Early version: everyone agreed with each other.&lt;/p&gt;

&lt;p&gt;Jobs would say "simplify." Victor would say "I agree with Jobs." Winston would say "Jobs is right, and architecturally this supports his point." Twenty-seven personas producing one opinion. Useless.&lt;/p&gt;

&lt;p&gt;The problem was subtle. The AI's default behavior is to be agreeable. When you load multiple personas into one context, they naturally converge because the underlying model wants to be helpful and non-contradictory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Susie became an active moderator with an explicit mandate: &lt;strong&gt;surface disagreement&lt;/strong&gt;. Her orchestration rules now include: "A war room where everyone agrees is a failed war room." She actively draws out dissent: "Jobs, would you cut this? Victor, is this the right approach at all? Dali, what assumption are we not questioning?"&lt;/p&gt;

&lt;p&gt;The result: war rooms now produce genuine tension. Jobs wants to cut scope. Carson says cutting is premature -- we haven't explored alternatives. Winston sides with Jobs on scope but wants Carson's option analysis first. Real tradeoffs. Real decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Break 3: Over-Routing
&lt;/h3&gt;

&lt;p&gt;For a while, the engine was too eager. A simple question like "what does this function do?" would activate Mary (investigation), Winston (architecture), Quinn (validation), and Paige (documentation) -- four personas to answer what should have been a one-voice response.&lt;/p&gt;

&lt;p&gt;The engine was technically correct. The question touches investigation, architecture, validation, and documentation domains. But four voices for a simple question is noise, not depth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Team size guidance. Every persona on the team must &lt;em&gt;earn their seat&lt;/em&gt;. A team of 2 with genuine perspectives beats a team of 8 with filler. The engine now considers message complexity. Simple questions get one voice. Complex, multi-faceted problems get the full team. The threshold isn't a rule -- it's judgment, guided by the principle that extra voices must add something the primary couldn't provide alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd Build Differently
&lt;/h2&gt;

&lt;p&gt;If I started over today, three things would change:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Signal weights, not signal matches.&lt;/strong&gt; The current system treats all signal matches equally and relies on contextual judgment for tiebreaking. A weighted system where "the verb matters more than the noun" would have prevented Break 1 from the start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Disagreement scaffolding from day one.&lt;/strong&gt; I bolted on active moderation after the consensus trap. It should have been foundational. Any multi-agent system that doesn't explicitly design for disagreement will produce consensus by default. The AI wants to agree. You have to engineer the tension.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Graduated complexity.&lt;/strong&gt; Simple questions should feel simple. Complex questions should feel like a team. The transition between these modes took longer to get right than the routing engine itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;

&lt;p&gt;PRISM Forge is MIT licensed and free:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx prism-forge &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;23 personas. Signal-based routing. No commands to memorize.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/prism-forge/prism-forge" rel="noopener noreferrer"&gt;prism-forge/prism-forge&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is part of a 12-post series on building PRISM Forge. Last week: the problem with manual persona prompting. Next week: meet John, the product manager who asks "why are we doing this?" before anyone writes a line of code -- and what happens when he clashes with Bob over planning vs simplification.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Follow along: &lt;a href="https://x.com/DrakkoTarkin" rel="noopener noreferrer"&gt;@DrakkoTarkin on X&lt;/a&gt; | &lt;a href="https://bsky.app/profile/drakkotarkin.bsky.social" rel="noopener noreferrer"&gt;@drakkotarkin.bsky.social on Bluesky&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>claudecode</category>
      <category>devtools</category>
    </item>
    <item>
      <title>I Was Wrong About AI Coding Assistants. Here's What Changed My Mind (and What I Built About It).</title>
      <dc:creator>Drakko Tarkin</dc:creator>
      <pubDate>Sun, 22 Mar 2026 02:51:19 +0000</pubDate>
      <link>https://dev.to/drakkotarkin/i-was-wrong-about-ai-coding-assistants-heres-what-changed-my-mind-and-what-i-built-about-it-10lf</link>
      <guid>https://dev.to/drakkotarkin/i-was-wrong-about-ai-coding-assistants-heres-what-changed-my-mind-and-what-i-built-about-it-10lf</guid>
      <description>&lt;p&gt;3 months ago I was manually typing "act as a software architect" every time I needed architecture advice from Claude Code.&lt;/p&gt;

&lt;p&gt;3 days ago I shipped an open-source routing engine that makes that unnecessary -- forever.&lt;/p&gt;

&lt;p&gt;This is the story of building &lt;a href="https://github.com/prism-forge/prism-forge" rel="noopener noreferrer"&gt;PRISM Forge&lt;/a&gt;, what went wrong along the way, and 4 lessons about AI-first software engineering that I didn't expect to learn.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem I Couldn't Unsee
&lt;/h2&gt;

&lt;p&gt;AI coding assistants give you one voice. Smart, capable, generalist. But one voice.&lt;/p&gt;

&lt;p&gt;Need architecture advice? "Act as a software architect and..."&lt;br&gt;
Need QA? "Now act as a QA engineer and..."&lt;br&gt;
Need a code review? "Switch to code reviewer mode and..."&lt;/p&gt;

&lt;p&gt;I used &lt;a href="https://github.com/bmad-code-org/BMAD-METHOD" rel="noopener noreferrer"&gt;BMAD-METHOD&lt;/a&gt; for 3 months -- a persona framework that requires manual invocation (&lt;code&gt;*analyst&lt;/code&gt;, &lt;code&gt;*pm&lt;/code&gt;, &lt;code&gt;*architect&lt;/code&gt;). The concept was powerful. The friction was constant. I wanted the experts to just... show up.&lt;/p&gt;

&lt;p&gt;Once I saw the pattern, I couldn't unsee it. Every manual prompt-switch was a tiny failure of the tool to understand what I actually needed.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Solution: Signal-Based Routing
&lt;/h2&gt;

&lt;p&gt;PRISM Forge installs 23 expert personas into Claude Code that activate automatically based on natural language signals.&lt;/p&gt;
&lt;h3&gt;
  
  
  How the Routing Engine Works
&lt;/h3&gt;

&lt;p&gt;A meta-persona named Susie (Chief of Staff) evaluates every user message:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Intent classification&lt;/strong&gt; -- 9 categories: Build, Investigate, Plan, Validate, Create, Challenge, Orient, Document, Narrate&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Domain matching&lt;/strong&gt; -- 23 work types, each mapped to a primary persona and optional supporting personas&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Signal detection&lt;/strong&gt; -- 24 shared signals (co-activate multiple personas) + 18 specialist signals (exclusive triggers)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team assembly&lt;/strong&gt; -- one primary persona leads, supporting personas contribute attributed perspectives&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The critical design decision: &lt;strong&gt;routing is deterministic.&lt;/strong&gt; Same message always activates the same persona team. The AI reads the routing rules and follows them like a state machine. No LLM randomness in the routing decision.&lt;/p&gt;
&lt;h3&gt;
  
  
  What It Looks Like
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"How should this be architected?"
--&amp;gt; Winston (Architect) activates

"I'm stuck on this bug"
--&amp;gt; Dr. Quinn (Creative Problem Solver) steps in

"Plan how to refactor the auth module -- it's too complex"
--&amp;gt; Bob (Scrum Master) leads + Jobs (scope reduction) + Victor (approach) + Amelia (execution)

"War room"
--&amp;gt; All 23 personas load and debate with genuine disagreement
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Multi-persona responses keep voices distinct:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**Mary (Business Analyst):**
The data shows three usage patterns...

**Winston (Architect):**
That maps to a service-per-pattern architecture...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The Build: Directing AI Agents to Build an AI Agent System
&lt;/h2&gt;

&lt;p&gt;Here's where it gets recursive. I built a 23-persona AI routing engine... by directing AI agents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;~30 commits. 3 days. 7 development phases. Zero lines of code written by hand.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't write code. I orchestrate AI agents to build software. That's not a hypothetical future -- it's how this shipped.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Role vs. The AI's Role
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;I did:&lt;/strong&gt; Set direction. Challenged requirements. Ran war room sessions for architecture decisions. Scope-reviewed every phase. Made every judgment call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code did:&lt;/strong&gt; Ported 23 persona files. Audited every persona for balance and accuracy. Redesigned the routing architecture. Built a 76-check structural audit. Implemented the CLI installer. Wrote all documentation. Created CI/CD workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  The 7 Phases
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;What&lt;/th&gt;
&lt;th&gt;Key Outcome&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Legal + Scaffold&lt;/td&gt;
&lt;td&gt;MIT license, dual copyright, repo structure&lt;/td&gt;
&lt;td&gt;Legal foundation clean&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Cleansing Port&lt;/td&gt;
&lt;td&gt;22 persona files ported, all references cleaned&lt;/td&gt;
&lt;td&gt;Zero stale references&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Deep Content Audit&lt;/td&gt;
&lt;td&gt;Every persona individually audited&lt;/td&gt;
&lt;td&gt;6 signal mismatches caught&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3.1. Dynamic Orchestrator&lt;/td&gt;
&lt;td&gt;Routing redesigned as intent-driven orchestration&lt;/td&gt;
&lt;td&gt;18/18 routing tests pass&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Structural Audit&lt;/td&gt;
&lt;td&gt;Audit checklist rewritten (48 to 76 checks)&lt;/td&gt;
&lt;td&gt;66/66 testable checks pass&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. CLI Installer&lt;/td&gt;
&lt;td&gt;&lt;code&gt;npx prism-forge install/uninstall/verify&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3-command install experience&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Documentation&lt;/td&gt;
&lt;td&gt;README, architecture guide, CONTRIBUTING&lt;/td&gt;
&lt;td&gt;Publication-ready docs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7. Org + Publish&lt;/td&gt;
&lt;td&gt;GitHub org, npm publish, CI/CD&lt;/td&gt;
&lt;td&gt;v1.0.0 live&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What I Learned (The Part That Actually Matters)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. The routing is the product, not the personas
&lt;/h3&gt;

&lt;p&gt;This was the biggest surprise. Anyone can write 23 persona files. Paste a system prompt, give it a name, done.&lt;/p&gt;

&lt;p&gt;The innovation is the routing layer -- the intelligence that decides which experts activate and when. Getting the signal tables, domain registry, and team assembly logic right took more iteration than writing any individual persona.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The takeaway:&lt;/strong&gt; If you're building a persona system, spend 80% of your time on the routing logic and 20% on persona content. Most people do the opposite.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Disagreement had to be engineered in
&lt;/h3&gt;

&lt;p&gt;My first multi-persona responses were consensus chains. The Analyst said X. The Architect agreed. The QA engineer agreed. Everyone agreed. It was useless.&lt;/p&gt;

&lt;p&gt;The problem: LLMs default to agreement. They want to be helpful. Multiple personas agreeing is the path of least resistance.&lt;/p&gt;

&lt;p&gt;The fix: the routing engine now explicitly instructs the orchestrator to surface tension. "A war room where everyone agrees is a failed war room." I had to make disagreement a structural requirement, not just a possibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The takeaway:&lt;/strong&gt; If you want diverse AI perspectives, you have to engineer the disagreement. The LLM won't give it to you voluntarily.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Structural audits are non-negotiable at scale
&lt;/h3&gt;

&lt;p&gt;23 personas. 24 shared signals. 18 specialist signals. 23 domain registry entries. 18 specialist load directives. That's hundreds of cross-references.&lt;/p&gt;

&lt;p&gt;During the content audit phase, we caught 6 signal mismatches -- personas claiming signals in their own file that weren't registered in the routing engine's signal table. Without the 76-check audit system, those would have been silent failures where a persona never activated despite having the right signals defined.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The takeaway:&lt;/strong&gt; Any system with cross-referencing config files needs automated consistency checks. Drift prevention is always cheaper than drift correction.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. AI-first engineering is real -- but the human role doesn't shrink
&lt;/h3&gt;

&lt;p&gt;I didn't write code. But I made every decision that mattered: what to build, how to architect it, when to cut scope, what quality standard to hold.&lt;/p&gt;

&lt;p&gt;The AI is an extraordinary implementation partner. Fast, thorough, tireless. It is not a product thinker. It doesn't challenge requirements. It doesn't ask "should we build this at all?" It doesn't feel the friction that motivates the right design.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The takeaway:&lt;/strong&gt; AI-first engineering doesn't remove the human. It changes what the human does -- from typing code to making decisions, challenging assumptions, and setting direction. That's harder, not easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;One command to install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx prism-forge &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One command to remove if it's not for you: &lt;code&gt;npx prism-forge uninstall&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then use Claude Code normally. The personas activate from your natural language -- no new commands to learn.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/prism-forge/prism-forge" rel="noopener noreferrer"&gt;prism-forge/prism-forge&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm:&lt;/strong&gt; &lt;a href="https://www.npmjs.com/package/prism-forge" rel="noopener noreferrer"&gt;prism-forge&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture guide:&lt;/strong&gt; &lt;a href="https://github.com/prism-forge/prism-forge/blob/main/docs/architecture.md" rel="noopener noreferrer"&gt;docs/architecture.md&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MIT licensed. Contributions welcome -- including new personas via the built-in create-persona skill.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;PRISM Forge is derived from &lt;a href="https://github.com/bmad-code-org/BMAD-METHOD" rel="noopener noreferrer"&gt;BMAD-METHOD&lt;/a&gt; (MIT licensed, BMad Code LLC). The signal-based routing engine, dynamic orchestration, structural audit system, and CLI installer are original work.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>showdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
