<?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: Hamza Ilyas</title>
    <description>The latest articles on DEV Community by Hamza Ilyas (@hamzailyas).</description>
    <link>https://dev.to/hamzailyas</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%2F4213099%2F7c2518f6-8572-449e-b9a9-21a38aab32fd.jpg</url>
      <title>DEV Community: Hamza Ilyas</title>
      <link>https://dev.to/hamzailyas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hamzailyas"/>
    <language>en</language>
    <item>
      <title>I measured my agent orchestrator against a plain agent. Here is what held up and what didn't.</title>
      <dc:creator>Hamza Ilyas</dc:creator>
      <pubDate>Wed, 28 Oct 2026 16:42:59 +0000</pubDate>
      <link>https://dev.to/hamzailyas/i-measured-my-agent-orchestrator-against-a-plain-agent-here-is-what-held-up-and-what-didnt-4o9m</link>
      <guid>https://dev.to/hamzailyas/i-measured-my-agent-orchestrator-against-a-plain-agent-here-is-what-held-up-and-what-didnt-4o9m</guid>
      <description>&lt;p&gt;Stillwright is a small open-source layer that runs inside the AI agent you already use&lt;br&gt;
(Claude Code, Codex, Gemini CLI, Cursor and others). It plans a goal into steps, each with a&lt;br&gt;
check decided before the work starts, lets a fresh reviewer rather than the worker decide&lt;br&gt;
whether a step passed, and talks to you only through a short inbox. The pitch is "proof, not&lt;br&gt;
claims". So the first thing I owed anyone was proof that it does anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  The test
&lt;/h2&gt;

&lt;p&gt;Three small, real tasks, each done twice by a fresh agent of the same model (Claude Sonnet):&lt;br&gt;
once told to follow the Stillwright skills, once with no skill at all.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Code&lt;/strong&gt;: make five unit tests pass in a tiny pricing module (one real bug: a discount could go negative), without touching the tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writing&lt;/strong&gt;: rewrite a marketing paragraph into plain English, at most 80 words, keeping four facts exactly, no marketing adjectives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Research&lt;/strong&gt;: find the latest version of a project on PyPI and on GitHub, say whether they match, give the release date, and cite a URL for every fact.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Grading was done by scripts where a script can decide (do the tests pass with the tests&lt;br&gt;
unchanged, is the word count under 80, are the four facts present, is the version right) and by&lt;br&gt;
a separate read-only model judge for one thing a script can't: does the report to the user&lt;br&gt;
contain any false claim.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Side&lt;/th&gt;
&lt;th&gt;task done&lt;/th&gt;
&lt;th&gt;evidence in report&lt;/th&gt;
&lt;th&gt;report ≤ 5 lines&lt;/th&gt;
&lt;th&gt;plan + log&lt;/th&gt;
&lt;th&gt;false claims&lt;/th&gt;
&lt;th&gt;wall time&lt;/th&gt;
&lt;th&gt;tokens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;code&lt;/td&gt;
&lt;td&gt;Stillwright&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no (8)&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;107 s&lt;/td&gt;
&lt;td&gt;78k&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;code&lt;/td&gt;
&lt;td&gt;plain&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no (7)&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;64 s&lt;/td&gt;
&lt;td&gt;71k&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;writing&lt;/td&gt;
&lt;td&gt;Stillwright&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no (8)&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;156 s&lt;/td&gt;
&lt;td&gt;86k&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;writing&lt;/td&gt;
&lt;td&gt;plain&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no (8)&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;74 s&lt;/td&gt;
&lt;td&gt;71k&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;research&lt;/td&gt;
&lt;td&gt;Stillwright&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no (22)&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;147 s&lt;/td&gt;
&lt;td&gt;87k&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;research&lt;/td&gt;
&lt;td&gt;plain&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no (26)&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;88 s&lt;/td&gt;
&lt;td&gt;73k&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What held up
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;An auditable record.&lt;/strong&gt; Every Stillwright run left a plan with the check for each step
written before the work, and a log with the check's output. None of the plain runs left anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No false claims.&lt;/strong&gt; The one false claim in the whole set came from the plain side: it
said four facts were "kept exactly" after changing the wording (it did disclose the change
in the same paragraph, so a mild one).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It caught its own mistake once.&lt;/strong&gt; In the writing task, Stillwright's first draft added two
things nobody asked for. The fresh reviewer the skill requires failed that draft; the agent
removed them; the log shows fail → fix → pass.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What didn't
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;On tasks this small, the plain agent did the work just as well.&lt;/strong&gt; All six runs finished
correctly, with evidence. Stillwright's value did not show up in "done".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It broke its own five-line rule every time&lt;/strong&gt; (8, 8 and 22 lines). The one-line inbox
cards were short; the report it returned was not. The plain side was just as long, but it
had no such rule.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It costs more&lt;/strong&gt;: about 1.7–2x the wall time and 10–20% more tokens, spent on the plan,
the checks and the reviewer.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The fix, and the re-run
&lt;/h2&gt;

&lt;p&gt;The five-line failure came from the skill text: it told the agent to write a short card, then&lt;br&gt;
let it write a long report after the card. I changed one passage so the final message &lt;em&gt;is&lt;/em&gt;&lt;br&gt;
the card's text, and told two helper skills to keep their reports inside the limit. The three&lt;br&gt;
Stillwright runs were repeated with the changed skill (the plain side didn't change, so it&lt;br&gt;
wasn't re-run):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;task done&lt;/th&gt;
&lt;th&gt;evidence&lt;/th&gt;
&lt;th&gt;report ≤ 5 lines&lt;/th&gt;
&lt;th&gt;plan + log&lt;/th&gt;
&lt;th&gt;wall time&lt;/th&gt;
&lt;th&gt;tokens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;code&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes (4)&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;33 s&lt;/td&gt;
&lt;td&gt;76k&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;writing&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes (3)&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;40 s&lt;/td&gt;
&lt;td&gt;77k&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;research&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes (4)&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;53 s&lt;/td&gt;
&lt;td&gt;79k&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All three now meet the rule with the proof still in the message. Wall time also dropped to&lt;br&gt;
about half of the plain runs' first-round times; one re-run is not enough to call that real.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then I measured money instead of tokens
&lt;/h2&gt;

&lt;p&gt;Token counts from inside a harness are not a bill. So I ran the same three tasks again as&lt;br&gt;
headless &lt;code&gt;claude -p&lt;/code&gt; sessions, where Claude Code itself reports the dollars: with Stillwright&lt;br&gt;
$0.92 in total, without $0.80. Both sides finished every task. No saving, and I am not going&lt;br&gt;
to describe it as one. Two earlier priced rounds had to be thrown away because my harness had&lt;br&gt;
denied the agents permission to run tests; those receipts measured permission failures.&lt;/p&gt;

&lt;p&gt;While checking what the popular cost-saving tools actually measure, I found that the ones&lt;br&gt;
claiming 30–50% publish no method, and the one with an independent measurement saves about&lt;br&gt;
5%. So the thing worth shipping was the measuring: an A/B cost harness, &lt;code&gt;sw run cost&lt;/code&gt;&lt;br&gt;
(dollars per run at prices you set), and &lt;code&gt;sw cache&lt;/code&gt;, which reads a session transcript and&lt;br&gt;
names the turns that rewrote the prompt cache. On one 523-turn session of mine it found&lt;br&gt;
4.5 million tokens rewritten at 15 break points: pauses long enough for the cache to expire,&lt;br&gt;
large new content, and one model switch.&lt;br&gt;
All of it is in the dataset and in &lt;code&gt;docs/cost.md&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this does and doesn't show
&lt;/h2&gt;

&lt;p&gt;Three tasks, one run each per side, same model on both sides, tasks that fit in a single&lt;br&gt;
sitting. Stillwright is built for long, multi-step work with outward actions and unattended&lt;br&gt;
runs, and none of that was exercised here. The grading script and the judge prompt were&lt;br&gt;
written by me, the author. The raw run folders, the plans and logs, the grading script, the timing of each run and the&lt;br&gt;
judge's full report are all in the repository, so anyone can re-grade or dispute them:&lt;br&gt;
&lt;a href="https://github.com/HamzaIlyas/stillwright" rel="noopener noreferrer"&gt;github.com/HamzaIlyas/stillwright&lt;/a&gt;, &lt;a href="https://github.com/HamzaIlyas/stillwright/blob/main/docs/evals.md" rel="noopener noreferrer"&gt;docs/evals.md&lt;/a&gt;; the raw runs and grading script are also on &lt;a href="https://huggingface.co/datasets/Folvix/stillwright-evals" rel="noopener noreferrer"&gt;Hugging Face&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The honest summary: on small tasks it doesn't make the agent more capable or cheaper; it makes&lt;br&gt;
the agent's work checkable, keeps it from claiming things it didn't do, and now gives you the&lt;br&gt;
tools to check anyone's cost claim, including mine.&lt;/p&gt;

&lt;p&gt;Install: &lt;code&gt;pip install stillwright&lt;/code&gt; and &lt;code&gt;npx skills add HamzaIlyas/stillwright&lt;/code&gt;. MIT.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>agents</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
