<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AGENTS.md on Roland Huß</title><link>https://ro14nd.de/tags/agents-md/</link><description>Recent content in AGENTS.md on Roland Huß</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 Roland Huß</copyright><lastBuildDate>Fri, 26 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ro14nd.de/tags/agents-md/index.xml" rel="self" type="application/rss+xml"/><item><title>What Goes in AGENTS.md (and What Doesn't)</title><link>https://ro14nd.de/what-goes-in-agents-md/</link><pubDate>Fri, 26 Jun 2026 00:00:00 +0000</pubDate><guid>https://ro14nd.de/what-goes-in-agents-md/</guid><description>&lt;p&gt;Every coding agent has its own context file. CLAUDE.md for Claude Code, &lt;code&gt;.cursorrules&lt;/code&gt; for Cursor, &lt;code&gt;.github/copilot-instructions.md&lt;/code&gt; for Copilot, GEMINI.md for Gemini CLI. If you work with more than one agent, you end up maintaining multiple files with &lt;a href="https://www.morphllm.com/agents-md-guide" target="_blank" rel="noreferrer"&gt;90% identical content&lt;/a&gt;. AGENTS.md is the attempt to end that.&lt;/p&gt;

&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://ro14nd.de/images/what-goes-in-agents-md/hero.jpg" alt="Watercolor illustration of a wooden bulletin board nailed to a fence post in a sheep meadow. A large clean sheet pinned to the center is labeled AGENTS.md with bullet points. Smaller curling notes overlap around it, labeled CLAUDE.md, .cursorrules, GEMINI.md, and copilot-instructions.md. A sheep with round reading glasses studies the main sheet. Other sheep graze in the background with crumpled notes stuck in their wool." /&gt;
 
 
 &lt;/figure&gt;

&lt;h2 class="relative group"&gt;Why AGENTS.md
 &lt;div id="why-agentsmd" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-agentsmd" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;The problem AGENTS.md solves isn&amp;rsquo;t technical, it&amp;rsquo;s organizational. Build commands, test instructions, code style rules, project architecture notes are the same regardless of which agent reads them. Copying them into four different files and keeping them in sync is maintenance that adds no value.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://agents.md/" target="_blank" rel="noreferrer"&gt;AGENTS.md&lt;/a&gt; is plain markdown with no required fields, no YAML frontmatter, and no special syntax. Write headings and bullet points, and the agent reads them and adjusts its behavior. It already works with &lt;a href="https://agents.md/" target="_blank" rel="noreferrer"&gt;30+ agents&lt;/a&gt; and sits under the &lt;a href="https://aaif.io/projects/agents-md/" target="_blank" rel="noreferrer"&gt;Agentic AI Foundation&lt;/a&gt; alongside MCP and Goose. Like README.md and CONTRIBUTING.md, agents discover it automatically by looking for the file in the directory tree.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s the format, and the format is right. Plain markdown as the lowest common denominator is exactly what a universal standard needs to be. The question is what goes inside, and three academic papers published in 2026 have started to answer it.&lt;/p&gt;

&lt;h2 class="relative group"&gt;What the research says
 &lt;div id="what-the-research-says" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-the-research-says" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;The &lt;a href="https://arxiv.org/abs/2602.11988" target="_blank" rel="noreferrer"&gt;ETH Zurich evaluation&lt;/a&gt; tested four coding agents (Claude Code, Codex, Qwen Code) across 138 real-world tasks. The findings challenged the assumption that more context is always better:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LLM-generated context files hurt performance.&lt;/strong&gt; Success rates dropped by 0.5-2%, and inference costs went up by 20-23%. In five out of eight tested configurations, having an auto-generated file was worse than having no file at all.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Human-written files help modestly.&lt;/strong&gt; Success improved by about 4% across all agents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Codebase overviews are useless.&lt;/strong&gt; Every LLM-generated file included one. They didn&amp;rsquo;t help agents find relevant files faster. In many cases agents took more steps with overviews present.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The redundancy proof:&lt;/strong&gt; When the researchers removed &lt;em&gt;all&lt;/em&gt; documentation from the repos, LLM-generated context files suddenly helped (+2.7%). The files were duplicating information the agents already extracted from README files and docs on their own.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A &lt;a href="https://arxiv.org/abs/2601.20404" target="_blank" rel="noreferrer"&gt;separate study&lt;/a&gt; showed the flip side: &lt;em&gt;curated, minimal&lt;/em&gt; AGENTS.md files with only three content categories (coding conventions, architecture, project description) reduced median wall-clock time by 28% and output tokens by 16%. Less content, better results.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://arxiv.org/abs/2510.21413" target="_blank" rel="noreferrer"&gt;MSR &amp;lsquo;26 survey&lt;/a&gt; of 10,000 repositories paints a broader picture: only 5% had adopted any context file format, the mean AGENTS.md file was 142 lines long, and half of all AGENTS.md files had zero commits after creation. Most are still write-once-and-forget.&lt;/p&gt;
&lt;p&gt;The practical takeaway from &lt;a href="https://www.augmentcode.com/guides/how-to-build-agents-md" target="_blank" rel="noreferrer"&gt;Augment Code&amp;rsquo;s guide&lt;/a&gt; captures the consensus: write only what agents can&amp;rsquo;t discover on their own.&lt;/p&gt;

&lt;h2 class="relative group"&gt;What goes in, what doesn&amp;rsquo;t
 &lt;div id="what-goes-in-what-doesnt" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-goes-in-what-doesnt" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Based on the research and my experience maintaining context files across 38 projects, here&amp;rsquo;s a quick reference:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Put in AGENTS.md&lt;/strong&gt; (agents can&amp;rsquo;t discover this on their own):&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Content&lt;/th&gt;
 &lt;th&gt;Example&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Non-obvious build commands&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;uv pip install -e &amp;quot;.[dev]&amp;quot;&lt;/code&gt; not just &lt;code&gt;pip install&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Tool-specific choices&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;Use &lt;code&gt;podman&lt;/code&gt; not &lt;code&gt;docker&lt;/code&gt;&amp;rdquo;, &amp;ldquo;Use &lt;code&gt;rg&lt;/code&gt; not &lt;code&gt;grep&lt;/code&gt;&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Testing strategy&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;Run &lt;code&gt;make e2e&lt;/code&gt; for integration tests, requires Kind cluster&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Counterintuitive conventions&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;Commit messages use DCO sign-off: &lt;code&gt;git commit -s&lt;/code&gt;&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Hard invariants&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;The UID in the Dockerfile must match &lt;code&gt;runAsUser&lt;/code&gt; in Go&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Security boundaries&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;Never commit &lt;code&gt;.env&lt;/code&gt; or &lt;code&gt;.mcp.json&lt;/code&gt; files&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;PR/review expectations&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;All PRs require at least one approval from CODEOWNERS&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Leave out of AGENTS.md&lt;/strong&gt; (agents figure this out already):&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Content&lt;/th&gt;
 &lt;th&gt;Why it&amp;rsquo;s noise&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Codebase overviews&lt;/td&gt;
 &lt;td&gt;Empirically useless per ETH study, agents read the directory tree&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Standard framework conventions&lt;/td&gt;
 &lt;td&gt;React, Express, Rails conventions are in the model&amp;rsquo;s training data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;README content&lt;/td&gt;
 &lt;td&gt;Agents read README.md on their own&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Dependency lists&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;package.json&lt;/code&gt;, &lt;code&gt;Cargo.toml&lt;/code&gt;, &lt;code&gt;requirements.txt&lt;/code&gt; exist for this&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;File-by-file descriptions&lt;/td&gt;
 &lt;td&gt;Agents explore the codebase as needed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Keep it short.&lt;/strong&gt; Aim for under 150 lines. The efficiency study&amp;rsquo;s best results came from files with just three sections, and every instruction beyond the essentials burns tokens and can actively degrade performance.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Claude Code and AGENTS.md
 &lt;div id="claude-code-and-agentsmd" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#claude-code-and-agentsmd" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;One thing to know: Claude Code does not read AGENTS.md natively, only CLAUDE.md. To have Claude Code pick up your AGENTS.md content, reference it from your CLAUDE.md using the import syntax:&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@AGENTS.md&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This loads the AGENTS.md content into Claude Code&amp;rsquo;s context alongside whatever Claude-specific instructions you have in CLAUDE.md. The two files coexist in the same repo, but they serve different purposes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AGENTS.md&lt;/strong&gt; holds everything that&amp;rsquo;s universal across agents: build commands, test instructions, conventions, architecture notes, security boundaries. Any agent that reads the file benefits from this content.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CLAUDE.md&lt;/strong&gt; holds what only Claude Code understands: skills tables and routing rules, context loading directives (&lt;code&gt;@ARCHITECTURE.md&lt;/code&gt;), subagent delegation patterns, context budget management, hook-based context injection, and plugin paths using &lt;code&gt;${CLAUDE_PLUGIN_ROOT}&lt;/code&gt;. Other agents would ignore or misinterpret these instructions.&lt;/p&gt;
&lt;p&gt;In practice, this means your CLAUDE.md becomes much shorter. It starts with &lt;code&gt;@AGENTS.md&lt;/code&gt; to import the universal content, then adds only the Claude-specific configuration below it. Across my 38 projects, roughly 55% of the instructions in my CLAUDE.md files are universal and could move into AGENTS.md. The remaining 45% is either Claude-specific (30%) or uses Claude-specific language for what could otherwise be universal advice (15%).&lt;/p&gt;
&lt;p&gt;The same pattern applies to other tools. Cursor users would keep their &lt;code&gt;.cursorrules&lt;/code&gt; for Cursor-specific features (like glob-based conditional rule activation) and point to AGENTS.md for the shared content. Copilot users do the same with &lt;code&gt;.github/copilot-instructions.md&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This isn&amp;rsquo;t a migration from CLAUDE.md to AGENTS.md. It&amp;rsquo;s a separation of concerns: AGENTS.md as a README for all agents, CLAUDE.md as a configuration file for one specific agent.&lt;/p&gt;

&lt;h2 class="relative group"&gt;The hard part
 &lt;div id="the-hard-part" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-hard-part" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;AGENTS.md standardizes the right thing at the right time. The format works, the ecosystem is growing, and the convergence problem it addresses was real and getting worse.&lt;/p&gt;
&lt;p&gt;But the research is clear about one thing: auto-generating these files with an LLM makes things worse, not better. The files that actually change agent behavior are hand-crafted, containing the counterintuitive choices, the hard-won invariants, and the security boundaries that someone learned the hard way. Twenty-six percent of my own context files were auto-generated by a tool, and they&amp;rsquo;re all thin and formulaic compared to the hand-written ones.&lt;/p&gt;
&lt;p&gt;The spec gives you a place to put instructions. Deciding what belongs there is &lt;a href="https://ro14nd.de/context-engineering-101/" &gt;context engineering&lt;/a&gt;, and that&amp;rsquo;s a practice you build through experience, not a file you generate once and forget.&lt;/p&gt;
&lt;div class="ai-attribution"&gt;
&lt;p&gt;Author: Roland Huß &lt;a href="https://aiattribution.github.io/statements/AIA-HAb-CeNc-Hin-R-?model=Claude%20Opus%204.6-v1.0" target="_blank" rel="noreferrer"&gt;AIA HAb CeNc Hin R Claude Opus 4.6 v1.0&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</description></item></channel></rss>