<?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: Ram Chandra Samal</title>
    <description>The latest articles on DEV Community by Ram Chandra Samal (@ramcsamal).</description>
    <link>https://dev.to/ramcsamal</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%2F3950207%2F4d5e0b51-0c83-4ce0-a8fa-f5ecdb7abed0.png</url>
      <title>DEV Community: Ram Chandra Samal</title>
      <link>https://dev.to/ramcsamal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ramcsamal"/>
    <language>en</language>
    <item>
      <title>ArxLearn for learners and institutions</title>
      <dc:creator>Ram Chandra Samal</dc:creator>
      <pubDate>Fri, 09 Oct 2026 16:52:53 +0000</pubDate>
      <link>https://dev.to/ramcsamal/arxlearn-for-learners-and-institutions-2nlp</link>
      <guid>https://dev.to/ramcsamal/arxlearn-for-learners-and-institutions-2nlp</guid>
      <description>&lt;h1&gt;
  
  
  ArxLearn: connecting visual CS lessons, personal paths and institutional curricula
&lt;/h1&gt;

&lt;p&gt;From the ArxLearn team at Architonix Labs LLP. This draft was created with AI assistance.&lt;/p&gt;

&lt;p&gt;A visual explanation solves one problem: making a mechanism observable. A learning platform has to solve the next problems too—sequencing, returning to unfinished work, and helping a teacher organise a cohort.&lt;/p&gt;

&lt;p&gt;A learner can watch a clear explanation and still struggle to decide what to study next. A teacher can share useful links and still lack a common view of what a cohort has completed. ArxLearn connects animated computer-science lessons with learning paths and institutional organisation.&lt;/p&gt;

&lt;p&gt;ArxLearn is built by Architonix Labs LLP. Its explainer library covers subjects from sorting and data structures to operating systems, networks, databases and mathematics. Topic pages connect lessons to prerequisites and recommended next topics. Available explainers show how a mechanism evolves, giving learners a place to stop and ask what should happen next.&lt;/p&gt;

&lt;p&gt;For an individual learner, the useful workflow is concrete: choose a topic, check its prerequisites, study the explanation, work through a fresh example, and continue through a course or a personal path. Signed-in learners can save progress and resume their work. Curated courses organise related topics into modules; personal paths support a different order when a learner needs one.&lt;/p&gt;

&lt;p&gt;For a college or university, the problem is different. A shared library needs to fit a programme and its cohorts. ArxLearn supports curricula organised by year, term and module, with published versions that keep an enrolled cohort attached to its assigned structure. Institution staff can enrol learners through supported invitation workflows, organise sections and review progress reports.&lt;/p&gt;

&lt;p&gt;Progress is a starting point for a teaching conversation. A completed topic does not establish that someone can implement the algorithm or defend its correctness. Pair the explainer with a prediction question, a small practice task and a short explanation written by the learner. Use section-level progress to decide where follow-up might help, then assess understanding through the institution’s own teaching and assessment process.&lt;/p&gt;

&lt;p&gt;Completion certificates have public verification, and institutional certificate templates can carry the institution’s branding. They record completion under the course’s rules; they should not be presented as proof of a proctored examination, professional accreditation or job readiness.&lt;/p&gt;

&lt;p&gt;A practical first evaluation is one topic, one teaching objective and one small group. For example, begin with binary search: ask learners which interval can be discarded, let them follow the trace, and then give them an absent-target case. Compare the quality of their explanations, the ease of finding the next topic and the usefulness of the staff workflow. Decide on wider adoption from that evidence rather than an assumed improvement percentage.&lt;/p&gt;

&lt;p&gt;Some explainers are available without an account; other available lessons require a free account. The public catalogue also includes topics whose explainers are still being built. Check the selected topic and course before promising a complete animated curriculum. Institutional access and rollout arrangements should be confirmed with the team; this article makes no pricing or service-level promise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose a starting point
&lt;/h2&gt;

&lt;p&gt;For self-study, &lt;a href="https://learn.arxlabs.app/topics?utm_source=devto&amp;amp;utm_medium=community&amp;amp;utm_campaign=visual_cs_2026&amp;amp;utm_content=benefits" rel="noopener noreferrer"&gt;explore the topic library&lt;/a&gt; or &lt;a href="https://learn.arxlabs.app/courses?utm_source=devto&amp;amp;utm_medium=community&amp;amp;utm_campaign=visual_cs_2026&amp;amp;utm_content=benefits" rel="noopener noreferrer"&gt;browse the curated courses&lt;/a&gt;. For a programme-level evaluation, &lt;a href="https://learn.arxlabs.app/institutions?utm_source=devto&amp;amp;utm_medium=community&amp;amp;utm_campaign=visual_cs_2026&amp;amp;utm_content=benefits" rel="noopener noreferrer"&gt;read the institution overview&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;What would make a one-topic evaluation useful for you: a clearer trace, a practice task, a path through prerequisites, or a simpler way to organise a cohort?&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>education</category>
      <category>learning</category>
      <category>highereducation</category>
    </item>
    <item>
      <title>Stop pasting tokens into random websites: meet SmartDevUtils</title>
      <dc:creator>Ram Chandra Samal</dc:creator>
      <pubDate>Fri, 29 May 2026 01:07:02 +0000</pubDate>
      <link>https://dev.to/ramcsamal/stop-pasting-tokens-into-random-websites-meet-smartdevutils-3n4</link>
      <guid>https://dev.to/ramcsamal/stop-pasting-tokens-into-random-websites-meet-smartdevutils-3n4</guid>
      <description>&lt;p&gt;If you've done any of these in the last week —&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Googled &lt;em&gt;"decode jwt online"&lt;/em&gt;, clicked the first result, and pasted a real token into a textbox on a domain you'd never heard of.&lt;/li&gt;
&lt;li&gt;Opened an ad-cluttered "JSON formatter" site to clean up a 2-KB payload.&lt;/li&gt;
&lt;li&gt;Pasted a row of customer data into a "CSV to JSON" converter to massage it for a support ticket.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…you already know the problem. The web is &lt;em&gt;covered&lt;/em&gt; in single-purpose developer utility sites, and most of them are some combination of slow, ad-infested, and quietly logging whatever you paste into them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://smartdevutils.com" rel="noopener noreferrer"&gt;&lt;strong&gt;SmartDevUtils&lt;/strong&gt;&lt;/a&gt; is one answer to that: a single tab that bundles the everyday developer utilities you keep googling, running entirely client-side in your browser. No backend round-trip, no accounts, no upload of your inputs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12il2769smwuq5e2oxp9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12il2769smwuq5e2oxp9.png" alt=" " width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The everyday friction
&lt;/h2&gt;

&lt;p&gt;These tasks come back day after day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Decode a JWT to inspect a claim&lt;/li&gt;
&lt;li&gt;Format and validate a JSON response&lt;/li&gt;
&lt;li&gt;Convert between Unix timestamps and human time&lt;/li&gt;
&lt;li&gt;Generate a UUID for a test record&lt;/li&gt;
&lt;li&gt;Hash a string for comparison&lt;/li&gt;
&lt;li&gt;URL-encode a tricky query parameter&lt;/li&gt;
&lt;li&gt;Parse the cron expression you copied out of a YAML file&lt;/li&gt;
&lt;li&gt;Diff two near-identical config blobs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Individually each is a 5-second task. Collectively they are a real attention tax — and the "search for a tool every time" pattern means you're constantly evaluating an unfamiliar, untrusted page right when you're trying to focus on something else.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's in the toolbox
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flc4bm8m8dn8jso63803r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flc4bm8m8dn8jso63803r.png" alt=" " width="799" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Roughly what you'd expect from a complete swiss-army-knife site, grouped by category:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Encoding &amp;amp; Crypto&lt;/strong&gt; — Base64, JWT debugger, MD5 / SHA hash, URL encode&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data &amp;amp; Formats&lt;/strong&gt; — JSON format/validate, YAML ↔ JSON, CSV ↔ JSON, XML&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generators&lt;/strong&gt; — UUID / ULID, strong passwords, QR codes, Lorem Ipsum&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text &amp;amp; Code&lt;/strong&gt; — Regex tester, text diff, case converter, string inspector&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web &amp;amp; Design&lt;/strong&gt; — Color converter, Markdown preview, meta-tag builder&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time &amp;amp; Numbers&lt;/strong&gt; — Unix timestamp, number-base converter, cron parser&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The exact lineup may differ on the live site, but the shape is familiar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fevtjc4fqprf5nsmjiuah.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fevtjc4fqprf5nsmjiuah.png" alt=" " width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The interesting bit: it runs in your browser
&lt;/h2&gt;

&lt;p&gt;This is the part that matters more than the tool count.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fae5zwgjhvzomzb9ze49q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fae5zwgjhvzomzb9ze49q.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most "online converter" sites work like this: your input is POSTed to &lt;em&gt;their&lt;/em&gt; server, processed, logged (probably), and returned. The data flow passes through infrastructure you have zero visibility into. For a JSON formatter that's annoying. For anything containing a JWT, an API key, a secret, a customer email, or a config blob, it's a quiet but real data-exfiltration risk you absorb every single time.&lt;/p&gt;

&lt;p&gt;SmartDevUtils flips that. Everything happens in your browser's JavaScript runtime. If the implementation matches what it advertises, you should be able to open DevTools → Network, use any of the tools, and see no outgoing requests on your input. Once the page is cached, it keeps working offline.&lt;/p&gt;

&lt;p&gt;That single architectural choice has nice downstream effects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Safe with secrets.&lt;/strong&gt; Decode a JWT containing a real session token without it leaving your laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fast.&lt;/strong&gt; No round-trip latency. Output updates as you type.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline.&lt;/strong&gt; Works on planes, behind firewalls, on locked-down corporate networks where most online tools fail.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No accounts, no rate limits.&lt;/strong&gt; There's no backend to gate you on.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Beyond the web app, &lt;strong&gt;SmartDevUtils is also available as a browser extension&lt;/strong&gt;, served directly from the website itself — no app-store account, no review delay. Visit &lt;a href="https://smartdevutils.com" rel="noopener noreferrer"&gt;smartdevutils.com&lt;/a&gt;, choose &lt;em&gt;Add to browser&lt;/em&gt;, and pin the icon to your toolbar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwa7c18an7ettrfea0vb4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwa7c18an7ettrfea0vb4.png" alt=" " width="800" height="699"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next time you need to base64-decode something, hit the toolbar icon and the whole toolbox is there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this pattern matters
&lt;/h2&gt;

&lt;p&gt;There's a broader point lurking here. Single-purpose dev utility sites are a category that &lt;em&gt;defaults&lt;/em&gt; to client-side processing — every operation in that toolbox is pure transformation logic that doesn't need a server at all. The fact that so many of them still ship a backend (and the analytics/ads that come with it) is a quiet vote against the user's interest.&lt;/p&gt;

&lt;p&gt;Tools like SmartDevUtils are useful as tools. They're also useful as a reminder of what this whole category &lt;em&gt;should&lt;/em&gt; look like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Local computation by default&lt;/li&gt;
&lt;li&gt;No telemetry on user input&lt;/li&gt;
&lt;li&gt;Offline-capable, because every dependency is in the bundle&lt;/li&gt;
&lt;li&gt;Free, because there's almost nothing to host&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you build internal tooling for your team, the same posture is worth borrowing. The fastest, most trustworthy version of "small utility tool" is almost always the one with no backend at all.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; 👉 &lt;a href="https://smartdevutils.com" rel="noopener noreferrer"&gt;smartdevutils.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Have a favorite browser-native dev tool you keep open in a tab? Drop it in the comments — always looking for more.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>privacy</category>
      <category>devtool</category>
    </item>
    <item>
      <title>Multi-Repo Microservice Changes Are a Coordination Problem. I Solved It With AI Agent Teams.</title>
      <dc:creator>Ram Chandra Samal</dc:creator>
      <pubDate>Mon, 25 May 2026 08:12:03 +0000</pubDate>
      <link>https://dev.to/ramcsamal/multi-repo-microservice-changes-are-a-coordination-problem-i-solved-it-with-ai-agent-teams-34mf</link>
      <guid>https://dev.to/ramcsamal/multi-repo-microservice-changes-are-a-coordination-problem-i-solved-it-with-ai-agent-teams-34mf</guid>
      <description>&lt;p&gt;A walkthrough of &lt;strong&gt;RepoOrch&lt;/strong&gt; — an open-source Claude Code plugin that turns a multi-repo workspace into a deliberating team of AI specialists, with peer-to-peer messaging and a hard read-only safety model.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/architonixlabs/RepoOrch" rel="noopener noreferrer"&gt;github.com/architonixlabs/RepoOrch&lt;/a&gt; · MIT licensed · v0.3.0&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;The honest workflow for a multi-repo bug in a microservice org looks like this: open three codebases, read until your eyes blur, hope you didn't miss a contract break in the fourth.&lt;/p&gt;

&lt;p&gt;This isn't a code problem. It's a &lt;em&gt;coordination&lt;/em&gt; problem. And it's the exact shape of problem that the new &lt;strong&gt;Agent Teams&lt;/strong&gt; primitive in Claude Code is built to solve.&lt;/p&gt;

&lt;p&gt;In this post I'll walk through:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Why subagents (the older primitive) can't handle multi-repo change planning&lt;/li&gt;
&lt;li&gt;What Agent Teams add — specifically, the mailbox abstraction for peer-to-peer agent messaging&lt;/li&gt;
&lt;li&gt;How I built &lt;strong&gt;RepoOrch&lt;/strong&gt;, an open-source plugin that uses this pattern to turn a multi-repo workspace into a deliberating AI team&lt;/li&gt;
&lt;li&gt;The propose-only safety model and why it's enforced at the platform layer, not in prose&lt;/li&gt;
&lt;li&gt;How knowledge graphs cut per-triage token cost on large workspaces&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you've ever opened five tabs for a single microservice change and thought &lt;em&gt;"there has to be a better division of labor here,"&lt;/em&gt; this is about that.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The shape of the problem
&lt;/h2&gt;

&lt;p&gt;Imagine the workspace below — a perfectly ordinary microservice layout:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-project/
├── auth-service/
├── payments/
├── notifications/
├── inventory/
└── shipping/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A ticket arrives in your queue:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Users are getting 401 errors after the auth refactor."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The bug almost certainly lives across multiple repos. Maybe &lt;code&gt;auth-service&lt;/code&gt; changed the shape of a JWT claim, and &lt;code&gt;payments&lt;/code&gt; still expects the old shape. Maybe &lt;code&gt;notifications&lt;/code&gt; never validated the claim properly and is silently dropping events. The only honest way to know is to read each codebase, trace the contract, and hope you didn't miss something.&lt;/p&gt;

&lt;p&gt;This is a textbook agentic AI use case — except for one thing: the agents need to &lt;strong&gt;talk to each other&lt;/strong&gt;. And until recently, they couldn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Why subagents can't do this
&lt;/h2&gt;

&lt;p&gt;The standard agent-orchestration pattern in Claude Code (before Agent Teams) looked 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;master agent
    ├─→ subagent A (auth-service expert)
    ├─→ subagent B (payments expert)
    └─→ subagent C (notifications expert)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each subagent gets a question, does some research, and reports back to the master. Subagents &lt;strong&gt;cannot talk to each other&lt;/strong&gt;. They form a tree, not a graph.&lt;/p&gt;

&lt;p&gt;That's fine for "go read this file" or "summarize the schema." It falls apart the moment two specialists need to &lt;em&gt;negotiate&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Consider what actually needs to happen for the 401 bug:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The auth specialist proposes: &lt;em&gt;"I'll change the JWT &lt;code&gt;sub&lt;/code&gt; claim from &lt;code&gt;user_id&lt;/code&gt; to &lt;code&gt;UUID&lt;/code&gt;."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The payments specialist needs to answer: &lt;em&gt;"Does my service depend on the shape of the &lt;code&gt;sub&lt;/code&gt; claim?"&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In a subagent tree, the only path between them goes through the master. So the master has to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Understand the auth proposal deeply enough to translate it into a question for payments&lt;/li&gt;
&lt;li&gt;Get the payments answer&lt;/li&gt;
&lt;li&gt;Translate it back into a constraint on auth&lt;/li&gt;
&lt;li&gt;Repeat for every cross-repo edge&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This doesn't scale, and worse — it forces the master into a coordinator role it's not really equipped for. The result is plans that look complete but have stale assumptions baked in.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Agent Teams: the mailbox primitive
&lt;/h2&gt;

&lt;p&gt;Claude Code 2.1.32 introduced &lt;strong&gt;Agent Teams&lt;/strong&gt;. The key difference is one small but transformative addition: &lt;strong&gt;each teammate gets a mailbox&lt;/strong&gt;, and teammates can message each other directly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;master agent
    ├─→ auth specialist  ──┐
    │                      │  direct peer messages
    ├─→ payments spec.  ──┤  (mailbox)
    │                      │
    └─→ notifications  ───┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the conversation that actually needs to happen &lt;em&gt;can&lt;/em&gt; happen:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;auth → payments:&lt;/strong&gt; "I'm proposing changing the JWT &lt;code&gt;sub&lt;/code&gt; claim from &lt;code&gt;user_id&lt;/code&gt; to &lt;code&gt;UUID&lt;/code&gt;. Does your service read &lt;code&gt;sub&lt;/code&gt; directly, and if so, how do you parse it?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;payments → auth:&lt;/strong&gt; "Yes, we read &lt;code&gt;sub&lt;/code&gt; in &lt;code&gt;auth.middleware.ts:42&lt;/code&gt; and call &lt;code&gt;parseInt()&lt;/code&gt; on it. Your change will break us unless we update to &lt;code&gt;UUID&lt;/code&gt; parsing in the same release."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That deliberation is what produces a plan you can actually trust. The master doesn't have to be smart enough to mediate the contract — the specialists are.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. How RepoOrch puts this together
&lt;/h2&gt;

&lt;p&gt;RepoOrch is a Claude Code plugin that operationalizes this pattern for the multi-repo microservice case. Setup is one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/repo-orch-setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The setup runner:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Discovers every git repo under your workspace root.&lt;/li&gt;
&lt;li&gt;Indexes each repo (language, frameworks, endpoints, events, dependencies).&lt;/li&gt;
&lt;li&gt;Writes an editable context document per repo — and &lt;em&gt;pauses for your review&lt;/em&gt;. (This is the most important step. The &lt;code&gt;owns&lt;/code&gt; field in the context drives routing later.)&lt;/li&gt;
&lt;li&gt;On your confirmation, generates a specialist agent per repo and a &lt;code&gt;registry.json&lt;/code&gt; the master uses for routing.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then, for any incoming ticket:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/repo-orch-triage "Users are getting 401 errors after the recent auth refactor"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The master reads the registry, scores which repos are likely involved, and spawns the relevant specialists as an Agent Team. They emit VERDICTs, deliberate over cross-repo contracts via their mailboxes, and the master synthesizes a single ordered change plan with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cross-repo dependency ordering (which repo's change must land first)&lt;/li&gt;
&lt;li&gt;Risks called out per repo&lt;/li&gt;
&lt;li&gt;Validation hints (the tests / endpoints to exercise)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero files modified&lt;/strong&gt; — which brings us to the safety model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For incidents where the root cause isn't known, there's an adversarial variant:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/repo-orch-deliberate "Payments failing intermittently — unknown root cause"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This spawns the team in a mode where specialists are biased toward challenging each other's hypotheses, not converging too fast on the first plausible cause.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Propose-only, enforced at the platform layer
&lt;/h2&gt;

&lt;p&gt;There is a recurring AI-agent failure mode where the prompt says "do not modify files" and then the agent modifies files anyway. &lt;strong&gt;Prose is not a security boundary.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;RepoOrch enforces propose-only in two layers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tool restriction.&lt;/strong&gt; Every specialist agent is spawned with &lt;code&gt;tools: Read, Grep, Glob, Bash&lt;/code&gt;. There are no write, edit, create, or delete tools available. This isn't a prompt instruction — it's the actual tool inventory the agent sees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PreToolUse hook.&lt;/strong&gt; A platform-level hook intercepts every Bash call and hard-blocks write-like commands: &lt;code&gt;rm&lt;/code&gt;, &lt;code&gt;mv&lt;/code&gt;, &lt;code&gt;git commit&lt;/code&gt;, &lt;code&gt;git push&lt;/code&gt;, &lt;code&gt;sed -i&lt;/code&gt;, &lt;code&gt;&amp;gt;&lt;/code&gt; redirection, and others. Even a malicious or hallucinated bash invocation is rejected before it runs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The &lt;code&gt;/repo-orch-triage&lt;/code&gt; and &lt;code&gt;/repo-orch-deliberate&lt;/code&gt; commands additionally spawn agents with &lt;code&gt;permissionMode: "plan"&lt;/code&gt;, so the spawning context itself is read + delegate only.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The v0.2 guarantee, written into the README: &lt;em&gt;the agents produce a plan document. The developer executes it.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  6. Knowledge graphs and token savings
&lt;/h2&gt;

&lt;p&gt;The naive way to run a triage is to have every specialist cold-read its repo on every ticket. That works, but it adds up. The optional &lt;code&gt;/repo-orch-graph&lt;/code&gt; command builds a Claude-native knowledge summary per repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/repo-orch-graph    →  Claude reads each repo and writes summary.json
     ↓                  (one-time cost, no API key)
/repo-orch-triage   →  master pre-loads summary.json into a ~600-token
     ↓                  GRAPH_SUMMARY
specialist          →  reads GRAPH_SUMMARY first, targeted file reads
                       only for gaps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This entire flow runs &lt;strong&gt;inside the Claude Code session&lt;/strong&gt; — no Python, no API key, no external service. If no summary exists, the plugin degrades gracefully to direct file reads.&lt;/p&gt;

&lt;p&gt;On large workspaces this is the difference between "feels expensive" and "feels free." On small workspaces it's not worth the setup; the plugin lets you skip it.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Headless mode for CI
&lt;/h2&gt;

&lt;p&gt;For teams that want triage to happen automatically when a Jira ticket or GitHub issue is filed, RepoOrch exposes a headless entry point via the Anthropic Agent SDK:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;runTriage&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.claude/plugins/repo-orchestrator/automation/repo-orch-triage_runner.mjs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// In a GitHub/Jira webhook handler:&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;plan&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;runTriage&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;ticket&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;issue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;workspaceRoot&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/path/to/your/workspace&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;postComment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;issue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;plan&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This runs in &lt;code&gt;permissionMode: "plan"&lt;/code&gt; — same read-only, propose-only constraints as the interactive flow. The output is the same change-plan document, posted as a comment on the source ticket.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd build next
&lt;/h2&gt;

&lt;p&gt;A few directions I'm exploring for v0.4 and beyond:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Confidence-weighted plans.&lt;/strong&gt; The aggregate confidence formula already lives in &lt;code&gt;skills/routing/SKILL.md&lt;/code&gt; — surface it more prominently so devs can sort risks by uncertainty, not just severity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graph-aware deliberation.&lt;/strong&gt; Today the mailbox is fully connected. For 10+ repo workspaces, routing the mailbox along actual service-dependency edges would cut deliberation overhead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An execute mode behind an explicit consent prompt.&lt;/strong&gt; Still propose-by-default, but with a guarded path to apply the plan repo-by-repo with diff approval.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Add the marketplace (one time)&lt;/span&gt;
/plugin marketplace add architonixlabs/RepoOrch

&lt;span class="c"&gt;# Install the plugin&lt;/span&gt;
/plugin &lt;span class="nb"&gt;install &lt;/span&gt;repo-orchestrator@repo-orchestrator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run &lt;code&gt;/repo-orch-setup&lt;/code&gt; in any workspace that has 2+ git repos as immediate subdirectories.&lt;/p&gt;

&lt;p&gt;Source, issues, and discussions: &lt;a href="https://github.com/architonixlabs/RepoOrch" rel="noopener noreferrer"&gt;github.com/architonixlabs/RepoOrch&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If RepoOrch saves you a single hour of multi-repo triage, a GitHub star is how I know to keep building. And if you try it and it breaks — file an issue, I'll respond. v0.3 just shipped a ten-fix security hardening pass; v0.4 is being shaped by feedback like yours.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>microservices</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
