<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Shellwright on dwmkerr.com</title><link>https://dwmkerr.com/tags/shellwright/</link><description>Recent content in Shellwright on dwmkerr.com</description><generator>Hugo -- gohugo.io</generator><language>en-uk</language><managingEditor>Dave Kerr</managingEditor><copyright>Copright &amp;copy; Dave Kerr</copyright><lastBuildDate>Fri, 17 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://dwmkerr.com/tags/shellwright/index.xml" rel="self" type="application/rss+xml"/><item><title>Building Evidence with Agents</title><link>https://dwmkerr.com/building-evidence-with-agents/</link><pubDate>Fri, 17 Jul 2026 00:00:00 +0000</pubDate><guid>https://dwmkerr.com/building-evidence-with-agents/</guid><description>&lt;p&gt;One of the most useful things I have found for agents when developing software is &lt;em&gt;gathering evidence&lt;/em&gt;. Specifically, when changes are proposed to some kind of system (lets say for example via a pull request), that as much evidence of correctness is gathered as possible.&lt;/p&gt;
&lt;p&gt;As an example, this is a pull request for a spike that shows how to integrate &lt;a href="https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md"&gt;OKF&lt;/a&gt; exports into &lt;a href="https://github.com/mckinsey/agents-at-scale-ark"&gt;Ark&lt;/a&gt;. The specific details of this change are not important, what is important is that it will change the CLI in a fairly specific way. Previously, I would normally have asked whoever worked on this to record some screenshots - it at least lets me eyeball how it looks. With agentic, we can add a tonne of this with little effort:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/dwmkerr/agents-at-scale-ark/pull/186"&gt;&lt;img src="./images/pr-top.png" alt="The spike PR, with evidence embedded"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This pull request has the changes, but also a lot of &lt;em&gt;evidence&lt;/em&gt; attached - not just unit test results or coverage (which is simply hygiene), but also screenshots of what the new CLI looks like, and even recordings.&lt;/p&gt;
&lt;p&gt;The whole pull request - and all of this evidence - was created async with a single run of Claude Code with Fable.&lt;/p&gt;
&lt;h2 id="why-evidence"&gt;Why Evidence&lt;/h2&gt;
&lt;p&gt;Essentially - skip the code or spec review until you can see what the output is like. This is the smell-test, if it looks directionally correct, then you continue with the more formal review process. This is increasingly important as features end-to-end are built without supervision.&lt;/p&gt;
&lt;p&gt;The most valuable forms of evidence include:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Links to ephemerally provisioned environments where you can actually see and interact with what has been built&lt;/li&gt;
&lt;li&gt;Screenshots of user interfaces showing before / after&lt;/li&gt;
&lt;li&gt;Video recordings of user interfaces (even better than the above)&lt;/li&gt;
&lt;li&gt;Screenshots / recordings of terminal interfaces&lt;/li&gt;
&lt;li&gt;Recordings of other types of channel interface - for example, mobile emulator recordings (for checking what things&amp;rsquo;ll look like on iOS or Android)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What does this mean in practice and what should your team do?&lt;/p&gt;
&lt;h2 id="what-you-should-do-differently"&gt;What you should do differently&lt;/h2&gt;
&lt;p&gt;Pretty simple - invest the time in building evidence gathering machinery. It pays compound interest, and allows you to avoid reviewing something that doesn&amp;rsquo;t look right. Spend more time on the machinery around the pipeline rather than the specific features themselves (or at least balance it).&lt;/p&gt;
&lt;h2 id="a-ready-to-go-tool-for-your-tooling---terminal-recordings"&gt;A ready-to-go tool for your tooling - terminal recordings&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/dwmkerr/shellwright"&gt;Shellwright&lt;/a&gt; is Playwright for the shell: an MCP server giving agents a real PTY to type into, screenshot, and record as GIFs. I use this all the time for projects with CLIs, and specifically built it so that agents can provide evidence of changes such as recordings before and after.&lt;/p&gt;
&lt;p&gt;Recap of the example in the opening: an agent built &lt;a href="https://github.com/dwmkerr/agents-at-scale-ark/pull/186"&gt;&lt;code&gt;ark okf export&lt;/code&gt;&lt;/a&gt; overnight - a command that exports a Kubernetes cluster&amp;rsquo;s agent configuration as markdown files (&lt;a href="https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md"&gt;Google&amp;rsquo;s Open Knowledge Format&lt;/a&gt;). Tests passed. But the real claim was &amp;ldquo;any agent can now read your cluster from plain files, no cluster access&amp;rdquo; - so the agent recorded a live Claude Code session in the exported directory, driven through Shellwright:&lt;/p&gt;
&lt;p&gt;&lt;a href="./images/claude-live-okf.gif"&gt;&lt;img src="./images/claude-live-okf.gif" alt="Claude Code reading the cluster from exported markdown"&gt;&lt;/a&gt;
The key screenshot - the answer cites the files and line numbers it read:&lt;/p&gt;
&lt;p&gt;&lt;a href="./images/10-answer-tools.png"&gt;&lt;img src="./images/10-answer-tools.png" alt="Claude answers with file citations"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That one image did more for my review than the test suite: the files are readable, the links work, the premise holds.&lt;/p&gt;
&lt;h2 id="improving-the-machinery"&gt;Improving the machinery&lt;/h2&gt;
&lt;p&gt;The first recording had a flaw - the answer appeared only in the GIF&amp;rsquo;s final frame, a fraction of a second. I said &amp;ldquo;I don&amp;rsquo;t see Claude reading though?&amp;rdquo; and the agent re-recorded. A real review finding, from a recording, in seconds.&lt;/p&gt;
&lt;p&gt;The fixes fed back into the tooling: a &lt;code&gt;hold_last_ms&lt;/code&gt; option so GIF endings don&amp;rsquo;t flash past, and a &lt;code&gt;shell_wait_for&lt;/code&gt; tool for the &amp;ldquo;is the TUI still busy?&amp;rdquo; problem (&lt;a href="https://github.com/dwmkerr/shellwright/pull/79"&gt;PR here&lt;/a&gt;). The machinery improves.&lt;/p&gt;
&lt;h2 id="thats-it"&gt;That&amp;rsquo;s it&lt;/h2&gt;
&lt;p&gt;This doesn&amp;rsquo;t replace tests or reading the code - it sequences the review. See it work, check it&amp;rsquo;s the right thing, then read the diff.&lt;/p&gt;
&lt;p&gt;The spike PR is &lt;a href="https://github.com/dwmkerr/agents-at-scale-ark/pull/186"&gt;here&lt;/a&gt;, the Shellwright improvements &lt;a href="https://github.com/dwmkerr/shellwright/pull/79"&gt;here&lt;/a&gt;.&lt;/p&gt;</description><category>CodeProject</category></item></channel></rss>