<?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: Artem Kholomyanskiy</title>
    <description>The latest articles on DEV Community by Artem Kholomyanskiy (@artem_kholomyanskiy_9d803).</description>
    <link>https://dev.to/artem_kholomyanskiy_9d803</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%2F3967233%2F62c0e56a-6234-418f-bddc-99ac1ed44072.jpg</url>
      <title>DEV Community: Artem Kholomyanskiy</title>
      <link>https://dev.to/artem_kholomyanskiy_9d803</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/artem_kholomyanskiy_9d803"/>
    <language>en</language>
    <item>
      <title>Why AI Agents Keep Breaking Your Code (And What to Do About It)</title>
      <dc:creator>Artem Kholomyanskiy</dc:creator>
      <pubDate>Wed, 03 Jun 2026 23:35:06 +0000</pubDate>
      <link>https://dev.to/artem_kholomyanskiy_9d803/why-ai-agents-keep-breaking-your-code-and-what-to-do-about-it-5bp0</link>
      <guid>https://dev.to/artem_kholomyanskiy_9d803/why-ai-agents-keep-breaking-your-code-and-what-to-do-about-it-5bp0</guid>
      <description>&lt;p&gt;Picture this: you write a requirement. Clear, specific. The agent reads it, does exactly what you wrote — and breaks three things you never mentioned.&lt;/p&gt;

&lt;p&gt;Not because the agent is bad at its job. Because the spec was written for a human reader, not a machine.&lt;/p&gt;

&lt;p&gt;Human developers tolerate ambiguity. They fill gaps from experience. They ask before doing something irreversible. AI agents don't work that way — they fill gaps with whatever their training data suggests. Sometimes that's fine. Sometimes it destroys an afternoon.&lt;/p&gt;

&lt;p&gt;After hitting this wall enough times, I stopped trying to write better prompts and started thinking about the spec format itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  The real problem: spec formats haven't evolved
&lt;/h2&gt;

&lt;p&gt;IEEE 830. ISO/IEC 29148. GOST 34.602. All written decades before AI coding agents existed. All designed for a human reader who can tolerate a certain level of "you know what I mean."&lt;/p&gt;

&lt;p&gt;Agents don't know what you mean. They know what you wrote.&lt;/p&gt;

&lt;p&gt;The gap between those two things is where most rework happens.&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;ANSS (AI-Native System Specification Standard)&lt;/strong&gt; is a spec format where AI agents are treated as first-class readers — not an afterthought.&lt;/p&gt;

&lt;p&gt;Here's what changed in my workflow after adopting it: instead of 5–7 back-and-forth iterations to get an agent to do something right, I'm down to 2–3. Agents started surfacing contradictions in my &lt;em&gt;own specs&lt;/em&gt; before writing a single line of code. That alone saved me hours I didn't know I was losing.&lt;/p&gt;




&lt;h2&gt;
  
  
  The four mechanisms that actually matter
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Three-layer markup
&lt;/h3&gt;

&lt;p&gt;Every section gets a tag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[D] Domain        — WHAT to build   → Product Owner, PM
[E] Engineering   — HOW to build    → Developer, Architect
[A] Agent         — HOW agent does it → AI agents (read this first)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agents read &lt;code&gt;[A]&lt;/code&gt; sections first. Everything they need to operate without guessing lives there.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Invariants
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;INV-001: No external npm packages
Cannot: add require() of npm modules
Reason: app must run without npm install
Check: no node_modules imports in server.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;Check&lt;/code&gt; field is what makes this different from a comment. It's a verifiable rule. Before invariants, I wrote "keep the codebase minimal" — an agent once interpreted that as license to add three npm packages. Invariants eliminate that interpretation space.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Agent Review
&lt;/h3&gt;

&lt;p&gt;Before writing anything, the agent audits the spec:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find contradictions between sections&lt;/li&gt;
&lt;li&gt;Identify missing edge cases&lt;/li&gt;
&lt;li&gt;Check Acceptance Criteria completeness&lt;/li&gt;
&lt;li&gt;Verify no invariant conflicts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Hard rule: more than 3 problems found → stop and ask. Do not proceed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first time an agent told me "I found 5 contradictions in your spec" before writing a line of code, I realized how many hours of rework I'd been generating for myself.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Change Specification
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Current State → Desired State → What NOT to change → Impact → Rollback
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;"What NOT to change" is the section that doesn't exist in any classic spec format. It's the most useful thing I've added to my workflow.&lt;/p&gt;




&lt;h2&gt;
  
  
  Three levels
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CORE        15–20 pages   Bots, SaaS, APIs, automations (80% of projects)
EXTENDED    40–60 pages   Security, compliance, detailed testing
ENTERPRISE  Full standard Banks, regulated industries, AI platforms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Try it in 5 minutes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Fill &lt;strong&gt;1.1&lt;/strong&gt; — what and for whom (2 sentences)&lt;/li&gt;
&lt;li&gt;Fill &lt;strong&gt;2.1&lt;/strong&gt; — domain glossary (5–10 terms)&lt;/li&gt;
&lt;li&gt;Write &lt;strong&gt;2.5&lt;/strong&gt; — 3–5 invariants&lt;/li&gt;
&lt;li&gt;Write &lt;strong&gt;3.2&lt;/strong&gt; — user stories with Acceptance Criteria&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;2.4&lt;/strong&gt; — tech stack&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Give it to your agent. Ask it to run Agent Review before writing code. See what it finds in your own requirements.&lt;/p&gt;

&lt;p&gt;→ &lt;strong&gt;&lt;a href="https://github.com/Kholomyanskiy/anss-standard" rel="noopener noreferrer"&gt;github.com/Kholomyanskiy/anss-standard&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CC BY-NC-SA 4.0. Two real filled examples. Works with Claude Code, Cursor, GitHub Copilot.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Artem Kholomyanskiy — AI automation consultant, EVAI Consulting&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>claudecode</category>
    </item>
    <item>
      <title>Why AI Agents Keep Breaking Your Code — And What to Do About It</title>
      <dc:creator>Artem Kholomyanskiy</dc:creator>
      <pubDate>Wed, 03 Jun 2026 23:34:12 +0000</pubDate>
      <link>https://dev.to/artem_kholomyanskiy_9d803/why-ai-agents-keep-breaking-your-code-and-what-to-do-about-it-5f14</link>
      <guid>https://dev.to/artem_kholomyanskiy_9d803/why-ai-agents-keep-breaking-your-code-and-what-to-do-about-it-5f14</guid>
      <description>&lt;p&gt;Picture this: you write a requirement. Clear, specific. The agent reads it, does exactly what you wrote — and breaks three things you never mentioned.&lt;/p&gt;

&lt;p&gt;Not because the agent is bad at its job. Because the spec was written for a human reader, not a machine.&lt;/p&gt;

&lt;p&gt;Human developers tolerate ambiguity. They fill gaps from experience. They ask before doing something irreversible. AI agents don't work that way — they fill gaps with whatever their training data suggests. Sometimes that's fine. Sometimes it destroys an afternoon.&lt;/p&gt;

&lt;p&gt;After hitting this wall enough times, I stopped trying to write better prompts and started thinking about the spec format itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  The real problem: spec formats haven't evolved
&lt;/h2&gt;

&lt;p&gt;IEEE 830. ISO/IEC 29148. GOST 34.602. All written decades before AI coding agents existed. All designed for a human reader who can tolerate a certain level of "you know what I mean."&lt;/p&gt;

&lt;p&gt;Agents don't know what you mean. They know what you wrote.&lt;/p&gt;

&lt;p&gt;The gap between those two things is where most rework happens.&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;ANSS (AI-Native System Specification Standard)&lt;/strong&gt; is a spec format where AI agents are treated as first-class readers — not an afterthought.&lt;/p&gt;

&lt;p&gt;Here's what changed in my workflow after adopting it: instead of 5–7 back-and-forth iterations to get an agent to do something right, I'm down to 2–3. Agents started surfacing contradictions in my &lt;em&gt;own specs&lt;/em&gt; before writing a single line of code. That alone saved me hours I didn't know I was losing.&lt;/p&gt;




&lt;h2&gt;
  
  
  The four mechanisms that actually matter
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Three-layer markup
&lt;/h3&gt;

&lt;p&gt;Every section gets a tag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[D] Domain        — WHAT to build   → Product Owner, PM
[E] Engineering   — HOW to build    → Developer, Architect
[A] Agent         — HOW agent does it → AI agents (read this first)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agents read &lt;code&gt;[A]&lt;/code&gt; sections first. Everything they need to operate without guessing lives there.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Invariants
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;INV-001: No external npm packages
Cannot: add require() of npm modules
Reason: app must run without npm install
Check: no node_modules imports in server.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;Check&lt;/code&gt; field is what makes this different from a comment. It's a verifiable rule. Before invariants, I wrote "keep the codebase minimal" — an agent once interpreted that as license to add three npm packages. Invariants eliminate that interpretation space.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Agent Review
&lt;/h3&gt;

&lt;p&gt;Before writing anything, the agent audits the spec:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find contradictions between sections&lt;/li&gt;
&lt;li&gt;Identify missing edge cases&lt;/li&gt;
&lt;li&gt;Check Acceptance Criteria completeness&lt;/li&gt;
&lt;li&gt;Verify no invariant conflicts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Hard rule: more than 3 problems found → stop and ask. Do not proceed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first time an agent told me "I found 5 contradictions in your spec" before writing a line of code, I realized how many hours of rework I'd been generating for myself.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Change Specification
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Current State → Desired State → What NOT to change → Impact → Rollback
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;"What NOT to change" is the section that doesn't exist in any classic spec format. It's the most useful thing I've added to my workflow.&lt;/p&gt;




&lt;h2&gt;
  
  
  Three levels
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CORE        15–20 pages   Bots, SaaS, APIs, automations (80% of projects)
EXTENDED    40–60 pages   Security, compliance, detailed testing
ENTERPRISE  Full standard Banks, regulated industries, AI platforms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Try it in 5 minutes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Fill &lt;strong&gt;1.1&lt;/strong&gt; — what and for whom (2 sentences)&lt;/li&gt;
&lt;li&gt;Fill &lt;strong&gt;2.1&lt;/strong&gt; — domain glossary (5–10 terms)&lt;/li&gt;
&lt;li&gt;Write &lt;strong&gt;2.5&lt;/strong&gt; — 3–5 invariants&lt;/li&gt;
&lt;li&gt;Write &lt;strong&gt;3.2&lt;/strong&gt; — user stories with Acceptance Criteria&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;2.4&lt;/strong&gt; — tech stack&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Give it to your agent. Ask it to run Agent Review before writing code. See what it finds in your own requirements.&lt;/p&gt;

&lt;p&gt;→ &lt;strong&gt;&lt;a href="https://github.com/Kholomyanskiy/anss-standard" rel="noopener noreferrer"&gt;github.com/Kholomyanskiy/anss-standard&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CC BY-NC-SA 4.0. Two real filled examples. Works with Claude Code, Cursor, GitHub Copilot.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Artem Kholomyanskiy — AI automation consultant, EVAI Consulting&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>claudecode</category>
    </item>
  </channel>
</rss>
