<?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: alifurkan gökçe</title>
    <description>The latest articles on DEV Community by alifurkan gökçe (@alifurkangokce).</description>
    <link>https://dev.to/alifurkangokce</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%2F4113316%2F268dd4e4-d748-452f-8eab-7b1c4f6e5222.png</url>
      <title>DEV Community: alifurkan gökçe</title>
      <link>https://dev.to/alifurkangokce</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alifurkangokce"/>
    <language>en</language>
    <item>
      <title>Three ways your coding agent silently never reads your instructions</title>
      <dc:creator>alifurkan gökçe</dc:creator>
      <pubDate>Mon, 07 Sep 2026 06:53:57 +0000</pubDate>
      <link>https://dev.to/alifurkangokce/three-ways-your-coding-agent-silently-never-reads-your-instructions-1bgc</link>
      <guid>https://dev.to/alifurkangokce/three-ways-your-coding-agent-silently-never-reads-your-instructions-1bgc</guid>
      <description>&lt;p&gt;You write instructions for your coding agent. It ignores one of them. You rewrite it more forcefully, in bold, with "IMPORTANT" in front. It still ignores it.&lt;/p&gt;

&lt;p&gt;Before blaming the model, check whether it ever saw the text. Each of the three cases below is documented behaviour of a tool you already use, each one drops part of your instructions on the floor, and none of them prints a warning.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Cursor ignores &lt;code&gt;.md&lt;/code&gt; files in &lt;code&gt;.cursor/rules&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Project rules in Cursor must use the &lt;code&gt;.mdc&lt;/code&gt; extension. &lt;a href="https://cursor.com/docs/context/rules" rel="noopener noreferrer"&gt;Cursor's own docs&lt;/a&gt; put it plainly: a plain &lt;code&gt;.md&lt;/code&gt; file there is ignored by the rules system, because it has nowhere to declare the &lt;code&gt;description&lt;/code&gt;, &lt;code&gt;globs&lt;/code&gt; and &lt;code&gt;alwaysApply&lt;/code&gt; frontmatter that tells Cursor when to apply it.&lt;/p&gt;

&lt;p&gt;So a file sitting in exactly the right directory, with exactly the right content, does nothing. No error at startup, no "rule skipped" line, nothing in the UI.&lt;/p&gt;

&lt;p&gt;Ten-second check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find .cursor/rules &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'*.md'&lt;/span&gt; 2&amp;gt;/dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Any output is a rule that isn't loading. Rename to &lt;code&gt;.mdc&lt;/code&gt; and add the frontmatter.&lt;/p&gt;

&lt;p&gt;A detail that makes this worse: people who set up &lt;code&gt;.md&lt;/code&gt; rules a while ago report that they &lt;em&gt;used to&lt;/em&gt; work. If that's right, a working setup stopped working at some point during an update, and nothing announced it — so "I checked this once" is not protection.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Codex truncates your AGENTS.md files — as a set, not one by one
&lt;/h2&gt;

&lt;p&gt;Codex reads the AGENTS.md files that apply to your working directory: a global one, the repo root, and the nested ones on the path. It concatenates them, and the 32 KB truncation applies to &lt;strong&gt;that combined payload&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is the part that catches people, because every individual file looks fine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AGENTS.md              12 KB   ✓ fine
packages/api/AGENTS.md 12 KB   ✓ fine
packages/web/AGENTS.md 12 KB   ✓ fine
                       -----
                       36 KB   ✗ 4 KB never reaches the model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nobody wrote a "too big" file. The rule you carefully put at the bottom of the last one simply isn't there when the model reads.&lt;/p&gt;

&lt;p&gt;Check it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-name&lt;/span&gt; AGENTS.md &lt;span class="nt"&gt;-not&lt;/span&gt; &lt;span class="nt"&gt;-path&lt;/span&gt; &lt;span class="s1"&gt;'*/node_modules/*'&lt;/span&gt; | xargs &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add your global &lt;code&gt;~/.codex/AGENTS.md&lt;/code&gt; to the total, and remember only the files on the path to your working directory get concatenated — a file under &lt;code&gt;packages/web&lt;/code&gt; doesn't count against you while you're working in &lt;code&gt;packages/api&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I hit a real one while testing this: a checkout with four AGENTS.md files totalling 65.6 KB, 33.6 KB of it truncated away, no single file anywhere near the limit.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Claude Code truncates skill descriptions at 1,536 characters
&lt;/h2&gt;

&lt;p&gt;Skills load their body on demand, which is the point — but the model only knows a skill exists from its listing, and &lt;a href="https://code.claude.com/docs/en/skills" rel="noopener noreferrer"&gt;the docs are specific&lt;/a&gt;: the combined &lt;code&gt;description&lt;/code&gt; and &lt;code&gt;when_to_use&lt;/code&gt; text is truncated at &lt;strong&gt;1,536 characters&lt;/strong&gt; in that listing.&lt;/p&gt;

&lt;p&gt;Write a thorough description with five trigger examples and the last two are gone. The skill still exists, still works when invoked by name, and quietly stops being chosen on its own — which reads exactly like "the model is being lazy".&lt;/p&gt;

&lt;p&gt;Put the key use case in the first sentence. Detail belongs in the body, which costs nothing until the skill runs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pattern
&lt;/h2&gt;

&lt;p&gt;All three share a shape worth internalising: &lt;strong&gt;the failure is invisible from the inside.&lt;/strong&gt; Your file is on disk. Your editor shows it. Code review shows it. The agent read a subset of it and had no way to tell you which part.&lt;/p&gt;

&lt;p&gt;Regular documentation rots the same way, but a human reader notices when a doc is stale — the paths look wrong, the commands don't exist any more. An agent doesn't notice. It follows the text with complete confidence, including the part that stopped being true in March.&lt;/p&gt;

&lt;p&gt;That second half is measurable. I scanned 118 popular open-source repositories with agent context files: &lt;strong&gt;59% contained at least one hard dead reference&lt;/strong&gt; — a file path or a script the instructions still name and the repo no longer has. Careful teams, well-maintained projects; the rot is just silent.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to actually do
&lt;/h2&gt;

&lt;p&gt;The manual checks above take a minute and catch a lot. Beyond that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep one source of truth for CLAUDE.md and AGENTS.md. Claude Code reads the first, most other tools read the second, and &lt;a href="https://github.com/anthropics/claude-code/issues/6235" rel="noopener noreferrer"&gt;asking for both is the most-upvoted request on the Claude Code tracker&lt;/a&gt; — 5,200+ reactions, marked &lt;em&gt;not planned&lt;/em&gt;. An &lt;code&gt;@AGENTS.md&lt;/code&gt; import inside CLAUDE.md works; a symlink works when the content is genuinely identical; two hand-maintained copies drift within a week.&lt;/li&gt;
&lt;li&gt;Treat instruction files as code: they make claims about paths, scripts and links that CI can verify.&lt;/li&gt;
&lt;li&gt;Re-check after tool updates, not just after your own edits. Case 1 is the reason.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the automated version I wrote &lt;a href="https://github.com/alifurkangokce/driftlint" rel="noopener noreferrer"&gt;driftlint&lt;/a&gt; (disclosure: mine, MIT, zero runtime dependencies, no account, nothing leaves your machine):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @alifurkangokce/driftlint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It checks all three limits above plus the drift half: dead file paths with did-you-mean fixes, removed npm scripts and make targets, markdown links whose target or heading moved, hooks and MCP servers pointing at scripts that don't exist, and CLAUDE.md ↔ AGENTS.md copies that have diverged.&lt;/p&gt;

&lt;p&gt;But the tool is secondary. The idea worth keeping is the first one: when an agent ignores an instruction, check whether it was ever handed the instruction. Half the time, it wasn't.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
