{"slug": "how-i-built-an-ai-review-skill-that-refuses-to-ship-bad-work", "title": "How I Built an AI Review Skill That Refuses to Ship Bad Work", "summary": "A developer built revüe, an MIT-licensed Agent Skill for Claude Code, Codex, and Cowork that enforces quality gates on AI-generated work. The tool combines a review workflow with local validators, schemas, and 108 automated test cases to catch violations like near-miss brand colors, banned copy, and unapproved metrics. It outputs verdicts of ship, ship with changes, caution, or block, and requires an owner-tagged path to ship for non-ship verdicts.", "body_md": "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.\n\nThat 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.”\n\nI built [revüe](https://github.com/gcorrist66/revue-proof-workflow-skill) to put a reproducible gate between the draft and the decision to ship.\n\nrevü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:\n\nLet the model handle judgment. Make deterministic rules executable.\n\nA revüe run ends with one of four verdicts: ship, ship with changes, caution, or block.\n\nIn 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.\n\nEvery 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.\n\nFor design and marketing production, revüe uses a design-system lock. It can define approved colors, font families, claims, banned patterns, and structural rules.\n\nThe 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.\n\nThe first version caught obvious violations. The red-team fixtures taught it to catch less obvious ones.\n\nThe 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.\n\nEach discovered bypass becomes a permanent regression test. CI runs all 108 cases on every push and pull request.\n\nOne of the most useful failures was not a brand violation. It was a clean template declared as Premium.\n\nThe page used approved colors and passed structural checks. It still lacked the craft expected of a flagship experience. That led to three explicit tiers:\n\nPremium 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.\n\nThe 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.\n\nThat 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.\n\nThe root SKILL.md contains the portable workflow. Supporting material lives in references, schemas and templates live in assets, and deterministic checks live in scripts.\n\nClaude 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.\n\nNo validator catches every future evasion. The useful roadmap comes from concrete failures:\n\nThat 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.\n\nThe code, examples, and eval suite are open under MIT:\n\n[https://github.com/gcorrist66/revue-proof-workflow-skill](https://github.com/gcorrist66/revue-proof-workflow-skill)\n\nIf revüe helps, star the repository. If it lets bad work pass, open an issue with the smallest artifact that reproduces the bypass.\n\nIf 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.", "url": "https://wpnews.pro/news/how-i-built-an-ai-review-skill-that-refuses-to-ship-bad-work", "canonical_source": "https://dev.to/gcorrist66/how-i-built-an-ai-review-skill-that-refuses-to-ship-bad-work-5ec4", "published_at": "2026-07-17 18:21:21+00:00", "updated_at": "2026-07-17 18:29:44.237837+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "ai-agents", "ai-safety", "mlops"], "entities": ["revüe", "Claude Code", "Codex", "Cowork", "Corriston Consulting", "gcorrist66"], "alternates": {"html": "https://wpnews.pro/news/how-i-built-an-ai-review-skill-that-refuses-to-ship-bad-work", "markdown": "https://wpnews.pro/news/how-i-built-an-ai-review-skill-that-refuses-to-ship-bad-work.md", "text": "https://wpnews.pro/news/how-i-built-an-ai-review-skill-that-refuses-to-ship-bad-work.txt", "jsonld": "https://wpnews.pro/news/how-i-built-an-ai-review-skill-that-refuses-to-ship-bad-work.jsonld"}}