<?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: Frederick</title>
    <description>The latest articles on DEV Community by Frederick (@lmntrix).</description>
    <link>https://dev.to/lmntrix</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3246105%2Fba85e9ae-60c3-477c-b58e-696d904c5840.png</url>
      <title>DEV Community: Frederick</title>
      <link>https://dev.to/lmntrix</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lmntrix"/>
    <language>en</language>
    <item>
      <title>I built a Claude skill that keeps your AI coding tools from contradicting each other — and I need beta testers</title>
      <dc:creator>Frederick</dc:creator>
      <pubDate>Wed, 20 May 2026 15:02:11 +0000</pubDate>
      <link>https://dev.to/lmntrix/i-built-a-claude-skill-that-keeps-your-ai-coding-tools-from-contradicting-each-other-and-i-need-49k2</link>
      <guid>https://dev.to/lmntrix/i-built-a-claude-skill-that-keeps-your-ai-coding-tools-from-contradicting-each-other-and-i-need-49k2</guid>
      <description>&lt;p&gt;If you use more than one AI coding tool — Claude Code, Cursor, Copilot, Windsurf — you've probably hit this:&lt;/p&gt;

&lt;p&gt;You ask one to build a feature. It does something reasonable. You ask another to extend it. It contradicts the first. You ask a third to clean up. Now you have three different interpretations of what the system should do.&lt;/p&gt;

&lt;p&gt;This isn't a bug in any of the tools. It's a missing source of truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;A Claude skill called &lt;strong&gt;spec-driven-development&lt;/strong&gt; that generates three files before any code is written:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;requirements.md  — what the system must do (REQ-xxx IDs, acceptance criteria)
design.md        — how it will be built (data models, endpoints, file structure)
tasks.md         — atomic ordered steps, each linked to a requirement
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then it generates matching AI config files for every tool you use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CLAUDE.md                          ← Claude Code reads this automatically
.cursorrules                       ← Cursor
.windsurfrules                     ← Windsurf
.github/copilot-instructions.md    ← GitHub Copilot
.aider.conf.yml                    ← Aider
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each config file contains the same Universal Instruction Block — identical constraint rules pointing every agent at the same spec files. They can't drift because they all defer to the same authority.&lt;/p&gt;

&lt;h2&gt;
  
  
  The session continuity problem
&lt;/h2&gt;

&lt;p&gt;There's a fourth file: &lt;code&gt;CONTEXT.md&lt;/code&gt;. It's a session journal. When your context window fills and you start a fresh Claude Code session, Claude reads &lt;code&gt;CONTEXT.md&lt;/code&gt; first and announces:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Session 4 resuming. Last session we completed TASK-005 (JWT middleware). Active task is TASK-007 — POST /tasks implementation. Ready to continue."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No re-explaining. No lost context. Just continuation.&lt;/p&gt;

&lt;h2&gt;
  
  
  It works for existing codebases too
&lt;/h2&gt;

&lt;p&gt;If you already have code but no specs, the retrofit workflow reverse-engineers them from what you describe. Fields that weren't explicitly confirmed get marked &lt;code&gt;[TO VERIFY]&lt;/code&gt;. The first phase of &lt;code&gt;tasks.md&lt;/code&gt; is always "Spec Verification" — tasks that confirm the spec actually matches the live code before any new work starts.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I validated it
&lt;/h2&gt;

&lt;p&gt;I didn't just ship it and hope. I built a proper test suite:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 2A — Static assertions (67 checks)&lt;/strong&gt;&lt;br&gt;
A Python script that checks SKILL.md and reference files for structural correctness. Runs in GitHub Actions CI on every push.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 2B — Behavioral tests (15 prompts)&lt;/strong&gt;&lt;br&gt;
Run in a live Claude Code session. For each prompt, Claude simulates a full response before looking at the assertions — blind evaluation. Tests include "continue where we left off" (CONTEXT.md present) and "what are we working on?" (CONTEXT.md absent).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 2C — Generation quality (53 checks)&lt;/strong&gt;&lt;br&gt;
Three full end-to-end flows: greenfield project, retrofit codebase, cross-AI configuration. Claude Code generates real files, a Python checker validates every file. These run in CI against committed fixtures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Total: 135 assertions. All passing. CI is green.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The test suite ships with the skill. Every future change must pass before merging.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I still need
&lt;/h2&gt;

&lt;p&gt;The 135 assertions were written by me, so they test what I anticipated. What they don't test: a stranger saying "help me get organised" or "scaffold me a project" — phrasing I didn't think of.&lt;/p&gt;

&lt;p&gt;That's the beta.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'm looking for 5 testers:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Profile&lt;/th&gt;
&lt;th&gt;What you'll do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Developer starting a new project&lt;/td&gt;
&lt;td&gt;Use the skill to spec it from scratch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Solo dev with an active side project&lt;/td&gt;
&lt;td&gt;Retrofit or greenfield — whatever fits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Team lead, multiple AI tools on the team&lt;/td&gt;
&lt;td&gt;Generate cross-AI configs for your project&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Existing codebase, no specs&lt;/td&gt;
&lt;td&gt;Retrofit your system into SDD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power user of 3+ AI tools&lt;/td&gt;
&lt;td&gt;Configure all of them, compare consistency&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All you do is use it naturally on your real work and file GitHub Issues when something doesn't work. One issue per problem. Include the exact phrase you used — that's the most valuable data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repo (MIT):&lt;/strong&gt; &lt;a href="https://github.com/FredAntB/Spec-Driven-Development" rel="noopener noreferrer"&gt;https://github.com/FredAntB/Spec-Driven-Development&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open an issue titled &lt;code&gt;[Beta] I'd like to test&lt;/code&gt; and describe which profile fits you. I'll get back to you within 24 hours.&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
