<?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: Gary Corriston</title>
    <description>The latest articles on DEV Community by Gary Corriston (@gcorrist66).</description>
    <link>https://dev.to/gcorrist66</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%2F4034283%2F6cd8b5ac-3863-43af-aef1-fe0aaca2e7b6.jpg</url>
      <title>DEV Community: Gary Corriston</title>
      <link>https://dev.to/gcorrist66</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gcorrist66"/>
    <language>en</language>
    <item>
      <title>How I Built an AI Review Skill That Refuses to Ship Bad Work</title>
      <dc:creator>Gary Corriston</dc:creator>
      <pubDate>Fri, 17 Jul 2026 18:21:21 +0000</pubDate>
      <link>https://dev.to/gcorrist66/how-i-built-an-ai-review-skill-that-refuses-to-ship-bad-work-5ec4</link>
      <guid>https://dev.to/gcorrist66/how-i-built-an-ai-review-skill-that-refuses-to-ship-bad-work-5ec4</guid>
      <description>&lt;h1&gt;
  
  
  How I Built an AI Review Skill That Refuses to Ship Bad Work
&lt;/h1&gt;

&lt;p&gt;The fastest way to create AI slop is not to use a bad model. It is to accept a polished first draft as proof that the work is finished.&lt;/p&gt;

&lt;p&gt;That failure shows up everywhere: a landing page uses an almost-correct brand color, a campaign invents a persuasive metric, or a Premium design is really a generic template with nicer spacing. An AI reviewer then compounds the problem with a confident “looks good.”&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://github.com/gcorrist66/revue-proof-workflow-skill" rel="noopener noreferrer"&gt;revüe&lt;/a&gt; to put a reproducible gate between the draft and the decision to ship.&lt;/p&gt;

&lt;p&gt;revüe is an MIT-licensed Agent Skill for Claude Code, Codex, and Cowork. It combines a review workflow with local validators, schemas, examples, and 108 automated eval cases. The central design choice is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Let the model handle judgment. Make deterministic rules executable.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The verdict is a contract
&lt;/h2&gt;

&lt;p&gt;A revüe run ends with one of four verdicts: ship, ship with changes, caution, or block.&lt;/p&gt;

&lt;p&gt;In strict validation, ship is not accepted when required proof is missing or an audit fails. The model cannot simply write a reassuring paragraph and call the work ready. Its decision has to agree with the recorded evidence and audit state.&lt;/p&gt;

&lt;p&gt;Every non-ship verdict also needs an owner-tagged path to ship. This prevents review systems from producing an impressive list of concerns without closing the work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Turn the brand system into a lock
&lt;/h2&gt;

&lt;p&gt;For design and marketing production, revüe uses a design-system lock. It can define approved colors, font families, claims, banned patterns, and structural rules.&lt;/p&gt;

&lt;p&gt;The output validator inspects the actual HTML deliverable against that lock. Asking a model to remember the approved palette is useful, but it is not the same as checking the artifact it actually wrote.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the audit needed adversaries
&lt;/h2&gt;

&lt;p&gt;The first version caught obvious violations. The red-team fixtures taught it to catch less obvious ones.&lt;/p&gt;

&lt;p&gt;The current suite includes near-miss colors expressed through HSL or modern RGB syntax, off-palette colors behind CSS variables, colors embedded in base64 SVGs, banned copy split with entities or zero-width characters, unapproved metrics, forged audit objects, hidden heroes, and placeholders hidden while guessed values are shown instead.&lt;/p&gt;

&lt;p&gt;Each discovered bypass becomes a permanent regression test. CI runs all 108 cases on every push and pull request.&lt;/p&gt;

&lt;h2&gt;
  
  
  Clean is not the same as Premium
&lt;/h2&gt;

&lt;p&gt;One of the most useful failures was not a brand violation. It was a clean template declared as Premium.&lt;/p&gt;

&lt;p&gt;The page used approved colors and passed structural checks. It still lacked the craft expected of a flagship experience. That led to three explicit tiers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standard: clean, on-brand, and lock-audited.&lt;/li&gt;
&lt;li&gt;Premium: everything in Standard plus an additional editorial craft profile.&lt;/li&gt;
&lt;li&gt;Custom: a human-directed bar with explicit signoff.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Premium work is checked for machine-observable parts of that profile, including a full-bleed hero, display/body typography contrast, a repeating signature motif, and a persistent action treatment. These checks do not replace a designer. They prevent the system from equating compliance with craft.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep the trust boundary small
&lt;/h2&gt;

&lt;p&gt;The validators use only Python’s standard library. They need no network connection, API key, or credential store. They read local artifacts and write local results.&lt;/p&gt;

&lt;p&gt;That was deliberate. A review gate is easier to trust when its dependencies and data boundary are small. It also makes the suite easy to run in CI or inside the self-contained installer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Package one workflow across agent runtimes
&lt;/h2&gt;

&lt;p&gt;The root SKILL.md contains the portable workflow. Supporting material lives in references, schemas and templates live in assets, and deterministic checks live in scripts.&lt;/p&gt;

&lt;p&gt;Claude Code users install the repository as a plugin marketplace. Codex users can install the skill manually or with the self-contained installer. The same instruction layer also works in Cowork.&lt;/p&gt;

&lt;h2&gt;
  
  
  What comes next
&lt;/h2&gt;

&lt;p&gt;No validator catches every future evasion. The useful roadmap comes from concrete failures:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Collect bypass reports as minimal fixtures.&lt;/li&gt;
&lt;li&gt;Add a failing eval before changing the validator.&lt;/li&gt;
&lt;li&gt;Make the smallest deterministic fix.&lt;/li&gt;
&lt;li&gt;Keep judgment-heavy checks visible as judgment, not fake certainty.&lt;/li&gt;
&lt;li&gt;Publish adoption numbers only when a public counter supports them.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last point matters because this project is also consulting proof for Corriston Consulting. The repository should demonstrate the operating principle we sell: AI speed is valuable only when the quality bar is explicit, testable, and honest about its limits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it and try to break it
&lt;/h2&gt;

&lt;p&gt;The code, examples, and eval suite are open under MIT:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/gcorrist66/revue-proof-workflow-skill" rel="noopener noreferrer"&gt;https://github.com/gcorrist66/revue-proof-workflow-skill&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If revüe helps, star the repository. If it lets bad work pass, open an issue with the smallest artifact that reproduces the bypass.&lt;/p&gt;

&lt;p&gt;If your team needs a proof-first workflow around its brand system, approval rules, and client handoffs, that is the consulting work Corriston Consulting is built to do.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agentskills</category>
      <category>opensource</category>
      <category>python</category>
    </item>
  </channel>
</rss>
