{"slug": "i-built-a-claude-skill-that-keeps-your-ai-coding-tools-from-contradicting-each-i", "title": "I built a Claude skill that keeps your AI coding tools from contradicting each other — and I need beta testers", "summary": "A new Claude skill called \"spec-driven-development\" that creates standardized specification files (requirements.md, design.md, tasks.md) and matching configuration files for multiple AI coding tools (Claude Code, Cursor, Windsurf, Copilot, Aider) to prevent them from contradicting each other. The system includes a CONTEXT.md session journal for maintaining continuity across sessions and a retrofit workflow for existing codebases, along with a comprehensive test suite of 135 passing assertions. The developer is seeking five beta testers to use the tool on real projects and report issues via GitHub.", "body_md": "If you use more than one AI coding tool — Claude Code, Cursor, Copilot, Windsurf — you've probably hit this:\nYou 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.\nThis isn't a bug in any of the tools. It's a missing source of truth.\nA Claude skill called spec-driven-development that generates three files before any code is written:\nrequirements.md — what the system must do (REQ-xxx IDs, acceptance criteria)\ndesign.md — how it will be built (data models, endpoints, file structure)\ntasks.md — atomic ordered steps, each linked to a requirement\nThen it generates matching AI config files for every tool you use:\nCLAUDE.md ← Claude Code reads this automatically\n.cursorrules ← Cursor\n.windsurfrules ← Windsurf\n.github/copilot-instructions.md ← GitHub Copilot\n.aider.conf.yml ← Aider\nEach 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.\nThere's a fourth file: CONTEXT.md\n. It's a session journal. When your context window fills and you start a fresh Claude Code session, Claude reads CONTEXT.md\nfirst and announces:\n\"Session 4 resuming. Last session we completed TASK-005 (JWT middleware). Active task is TASK-007 — POST /tasks implementation. Ready to continue.\"\nNo re-explaining. No lost context. Just continuation.\nIf 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 [TO VERIFY]\n. The first phase of tasks.md\nis always \"Spec Verification\" — tasks that confirm the spec actually matches the live code before any new work starts.\nI didn't just ship it and hope. I built a proper test suite:\nPhase 2A — Static assertions (67 checks)\nA Python script that checks SKILL.md and reference files for structural correctness. Runs in GitHub Actions CI on every push.\nPhase 2B — Behavioral tests (15 prompts)\nRun 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).\nPhase 2C — Generation quality (53 checks)\nThree 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.\nTotal: 135 assertions. All passing. CI is green.\nThe test suite ships with the skill. Every future change must pass before merging.\nThe 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.\nThat's the beta.\nI'm looking for 5 testers:\nAll 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.\nRepo (MIT): https://github.com/FredAntB/Spec-Driven-Development\nOpen an issue titled [Beta] I'd like to test\nand describe which profile fits you. I'll get back to you within 24 hours.", "url": "https://wpnews.pro/news/i-built-a-claude-skill-that-keeps-your-ai-coding-tools-from-contradicting-each-i", "canonical_source": "https://dev.to/lmntrix/i-built-a-claude-skill-that-keeps-your-ai-coding-tools-from-contradicting-each-other-and-i-need-49k2", "published_at": "2026-05-20 15:02:11+00:00", "updated_at": "2026-05-20 15:03:09.350775+00:00", "lang": "en", "topics": ["artificial-intelligence", "developer-tools", "large-language-models", "products", "open-source"], "entities": ["Claude Code", "Cursor", "Copilot", "Windsurf", "GitHub", "Aider"], "alternates": {"html": "https://wpnews.pro/news/i-built-a-claude-skill-that-keeps-your-ai-coding-tools-from-contradicting-each-i", "markdown": "https://wpnews.pro/news/i-built-a-claude-skill-that-keeps-your-ai-coding-tools-from-contradicting-each-i.md", "text": "https://wpnews.pro/news/i-built-a-claude-skill-that-keeps-your-ai-coding-tools-from-contradicting-each-i.txt", "jsonld": "https://wpnews.pro/news/i-built-a-claude-skill-that-keeps-your-ai-coding-tools-from-contradicting-each-i.jsonld"}}