<?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: chiragmangaldev3112</title>
    <description>The latest articles on DEV Community by chiragmangaldev3112 (@chiragmangaldev3112).</description>
    <link>https://dev.to/chiragmangaldev3112</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%2F4131144%2F6eb359b1-e380-4ba4-b76a-77f7684e679e.png</url>
      <title>DEV Community: chiragmangaldev3112</title>
      <link>https://dev.to/chiragmangaldev3112</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chiragmangaldev3112"/>
    <language>en</language>
    <item>
      <title>I made "verified" mean something for AI agent instructions — here's what that actually took</title>
      <dc:creator>chiragmangaldev3112</dc:creator>
      <pubDate>Fri, 18 Sep 2026 09:52:09 +0000</pubDate>
      <link>https://dev.to/chiragmangaldev3112/i-made-verified-mean-something-for-ai-agent-instructions-heres-what-that-actually-took-2ha8</link>
      <guid>https://dev.to/chiragmangaldev3112/i-made-verified-mean-something-for-ai-agent-instructions-heres-what-that-actually-took-2ha8</guid>
      <description>&lt;p&gt;Every AI coding agent I used — Claude Code, Cursor, GitHub Copilot —&lt;br&gt;
failed in the same few ways. It guessed at an ambiguous request instead&lt;br&gt;
of asking. It graded its own work instead of checking independently. It&lt;br&gt;
forgot a project's conventions the moment a new session started.&lt;/p&gt;

&lt;p&gt;So I wrote the process down: 37 "playbooks" covering bug fixing, feature&lt;br&gt;
development, code/security review, safe database migrations, incident&lt;br&gt;
response, and more. One instruction set, installed once, read natively by&lt;br&gt;
whichever AI tool you're using (15 supported so far).&lt;/p&gt;

&lt;p&gt;That part's a straightforward pitch. What I actually want to write about&lt;br&gt;
is the harder problem underneath it: &lt;strong&gt;once you claim something is&lt;br&gt;
"verified," what does that actually have to mean before the word is worth&lt;br&gt;
anything?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The trap: "verified" as a vibe
&lt;/h2&gt;

&lt;p&gt;Early drafts of some of these playbooks said things like "this was tested&lt;br&gt;
and works." That's not verification — it's a vibe wearing verification's&lt;br&gt;
clothes. It has the &lt;em&gt;shape&lt;/em&gt; of a checked claim without any of the&lt;br&gt;
substance, and it's exactly the kind of self-assessment I was trying to&lt;br&gt;
get an AI agent to stop doing in the first place. If I'm asking an agent&lt;br&gt;
to never trust its own "looks right," I can't ship a project full of my&lt;br&gt;
own unchecked "looks right"s.&lt;/p&gt;

&lt;p&gt;So I went back through every playbook and either found the real evidence&lt;br&gt;
behind every claim, or removed the claim. This is where it got&lt;br&gt;
interesting, because &lt;em&gt;actually running things&lt;/em&gt; — not re-reading code,&lt;br&gt;
not reasoning about it — surfaced real bugs I would never have caught&lt;br&gt;
otherwise:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A sparse-page detection script for scanned PDFs was off-by-one on page
counting. It assumed "N form-feed characters means N+1 pages," but
direct byte-level inspection of a real scanned PDF showed &lt;code&gt;pdftotext&lt;/code&gt;
emits one trailing form-feed &lt;em&gt;per page&lt;/em&gt;, including the last one. The
math only looked right until I actually counted bytes in a real file.&lt;/li&gt;
&lt;li&gt;A file-extension parser detected format from the &lt;em&gt;full path&lt;/em&gt;, not the
filename — so a file sitting in a directory like &lt;code&gt;v2.0/README&lt;/code&gt; (a dot
in the parent directory name, not the file) got misdetected as
extension &lt;code&gt;0/readme&lt;/code&gt; and routed to completely the wrong handler.&lt;/li&gt;
&lt;li&gt;A security hook meant to scan every file-write for leaked credentials
had a matcher that only covered &lt;code&gt;Write&lt;/code&gt; and &lt;code&gt;Edit&lt;/code&gt; tool calls —
&lt;code&gt;MultiEdit&lt;/code&gt; calls bypassed it entirely. Nobody wrote that gap in on
purpose; it just never got exercised until a re-evaluation pass
specifically tried to break it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these were found by review. All of them were found by running&lt;br&gt;
the actual thing against a real case and checking the actual output.&lt;/p&gt;

&lt;h2&gt;
  
  
  Independent review catches what self-review can't — even for an AI
&lt;/h2&gt;

&lt;p&gt;The MultiEdit gap above is the one I want to dwell on, because of &lt;em&gt;how&lt;/em&gt;&lt;br&gt;
it was found. I had a separate pass — same underlying model, zero memory&lt;br&gt;
of why the original hook was built the way it was — re-check the finished&lt;br&gt;
work cold. It didn't know the design history, didn't know what the&lt;br&gt;
original author was trying to protect against. It just tested the actual&lt;br&gt;
behavior against the actual documentation and found they didn't match.&lt;/p&gt;

&lt;p&gt;This is the same reason code review works on human teams: the person who&lt;br&gt;
wrote something is the worst-positioned person to spot what's wrong with&lt;br&gt;
it, because they already have a model in their head of what it's&lt;br&gt;
&lt;em&gt;supposed&lt;/em&gt; to do, and that model quietly overrides what's actually in&lt;br&gt;
front of them. It turns out this holds for an AI agent reviewing its own&lt;br&gt;
prior work too — a fresh pass with no attachment to the original&lt;br&gt;
reasoning catches things a self-review pass structurally can't, not&lt;br&gt;
because it's smarter, but because it isn't carrying the same blind spot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Signing matters more once you think about what the content becomes
&lt;/h2&gt;

&lt;p&gt;The playbooks aren't just documentation — once installed, they become&lt;br&gt;
literal instructions an AI agent with shell access follows. That's a&lt;br&gt;
different threat model than a typical doc site. If the backend serving&lt;br&gt;
this content were ever compromised, a swapped file isn't a broken link,&lt;br&gt;
it's an instruction an agent might actually execute.&lt;/p&gt;

&lt;p&gt;So every release is signed with Ed25519 (&lt;code&gt;ssh-keygen -Y sign/verify&lt;/code&gt;, not&lt;br&gt;
OpenSSL — stock macOS ships LibreSSL, which can't verify Ed25519&lt;br&gt;
signatures at all, confirmed by trying it directly rather than assuming),&lt;br&gt;
and the installer re-hashes every fetched file against a signed manifest&lt;br&gt;
before writing anything. The backend can withhold a release, but it can't&lt;br&gt;
successfully substitute one, because it never holds the private key.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this leaves things
&lt;/h2&gt;

&lt;p&gt;37 playbooks, MIT-licensed, free, no account needed:&lt;br&gt;
&lt;a href="https://github.com/chiragmangaldev3112/agent-playbooks" rel="noopener noreferrer"&gt;https://github.com/chiragmangaldev3112/agent-playbooks&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I don't think "verified" is a box to check once. It's a standing bar&lt;br&gt;
that gets tested every time someone looks at the thing again with fresh&lt;br&gt;
eyes — which is exactly what a second, independent pass is for, and&lt;br&gt;
exactly what found every bug described above.&lt;/p&gt;

&lt;p&gt;Happy to go deeper on any part of this — the signing setup, the&lt;br&gt;
per-tool artifact generation, or the specific bugs — in the comments.&lt;/p&gt;

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