<?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: Anil Muppalla</title>
    <description>The latest articles on DEV Community by Anil Muppalla (@anilmuppalla).</description>
    <link>https://dev.to/anilmuppalla</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%2F4015344%2F1f8d2e62-6e5e-4cc0-a69b-6ed20bbfdfb2.jpg</url>
      <title>DEV Community: Anil Muppalla</title>
      <link>https://dev.to/anilmuppalla</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anilmuppalla"/>
    <language>en</language>
    <item>
      <title>What AGENTS.md Gives Coding Agents That README Files Do Not</title>
      <dc:creator>Anil Muppalla</dc:creator>
      <pubDate>Sun, 05 Jul 2026 21:29:00 +0000</pubDate>
      <link>https://dev.to/anilmuppalla/what-agentsmd-gives-coding-agents-that-readme-files-do-not-412k</link>
      <guid>https://dev.to/anilmuppalla/what-agentsmd-gives-coding-agents-that-readme-files-do-not-412k</guid>
      <description>&lt;p&gt;Here's the failure mode I keep running into.&lt;/p&gt;

&lt;p&gt;A team gives a coding agent a repo, a task, and maybe a README. The agent can find files and write code, but it still has to guess the operating rules.&lt;/p&gt;

&lt;p&gt;It guesses the package manager.&lt;/p&gt;

&lt;p&gt;It guesses which checks matter.&lt;/p&gt;

&lt;p&gt;It guesses whether generated files are safe to edit.&lt;/p&gt;

&lt;p&gt;It guesses what "done" means.&lt;/p&gt;

&lt;p&gt;A README is usually for humans: what the project is, how to run it, and where the important docs live. A coding agent needs different context. Setup rules. Test commands. Boundaries. Completion criteria.&lt;/p&gt;

&lt;p&gt;That's the gap &lt;a href="https://agents.md/" rel="noopener noreferrer"&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/a&gt; fills.&lt;/p&gt;

&lt;p&gt;The official AGENTS.md guidance describes it as a predictable place for coding-agent instructions: setup commands, test commands, code style, security considerations, and nested instructions for large monorepos.&lt;/p&gt;

&lt;p&gt;I find the split useful in a more boring way. The README answers, "What is this project?" &lt;code&gt;AGENTS.md&lt;/code&gt; answers, "What should an agent know before touching it?"&lt;/p&gt;

&lt;p&gt;That second question is where the work usually gets fragile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Goose Fits
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://goose-docs.ai/" rel="noopener noreferrer"&gt;Goose&lt;/a&gt; makes this less theoretical because it isn't just a chat box. It's an open source local AI agent with a desktop app, CLI, API, MCP extensions, and skills.&lt;/p&gt;

&lt;p&gt;Without &lt;code&gt;AGENTS.md&lt;/code&gt;, I find myself writing prompts like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Update the docs, but don't touch generated files, use pnpm, run the lint and test commands, keep the PR small, and tell me what you couldn't verify.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With &lt;code&gt;AGENTS.md&lt;/code&gt;, the prompt can get shorter:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Update the quickstart docs for the new config flag.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Goose can run the task in the repo. The repo can carry the standing instructions.&lt;/p&gt;

&lt;p&gt;I noticed this on a small docs/config update where generated files sat near source files. Without repo instructions, the prompt had to carry the package manager, generated-file boundary, checks, and the "tell me what you could not verify" rule.&lt;/p&gt;

&lt;p&gt;Once those rules lived in &lt;code&gt;AGENTS.md&lt;/code&gt;, the prompt became just the task.&lt;/p&gt;

&lt;p&gt;Not magic. Just fewer chances to forget the boring parts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Skills Fit
&lt;/h2&gt;

&lt;p&gt;I would add one more layer once &lt;code&gt;AGENTS.md&lt;/code&gt; starts doing real work: skills.&lt;/p&gt;

&lt;p&gt;The file should not become the place where every repeated workflow gets pasted. That's how it turns into a junk drawer.&lt;/p&gt;

&lt;p&gt;A cleaner split:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;AGENTS.md&lt;/code&gt; says the standing rules.&lt;/li&gt;
&lt;li&gt;Skills describe repeatable task routines.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://modelcontextprotocol.io/introduction" rel="noopener noreferrer"&gt;MCP&lt;/a&gt; and extensions give the agent access to tools and data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That maps cleanly to Goose too. Goose has a &lt;a href="https://goose-docs.ai/skills/" rel="noopener noreferrer"&gt;Skills Marketplace&lt;/a&gt; for reusable instruction sets with optional supporting files.&lt;/p&gt;

&lt;p&gt;For a backend service, &lt;code&gt;AGENTS.md&lt;/code&gt; might route migrations, API changes, and releases to separate skills.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;AGENTS.md&lt;/code&gt; file stays short, and the task routine can be as detailed as it needs to be somewhere else.&lt;/p&gt;

&lt;p&gt;The distinction is simple: if the rule should apply to almost every task in the repo, put it in &lt;code&gt;AGENTS.md&lt;/code&gt;. If it's a repeatable routine for one kind of work, make it a skill and route to it from &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Small Workflow Worth Trying
&lt;/h2&gt;

&lt;p&gt;Try this on one low-risk repo where you already use an agent.&lt;/p&gt;

&lt;p&gt;Add an &lt;code&gt;AGENTS.md&lt;/code&gt; file with five sections:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Setup:&lt;/strong&gt; the blessed install and run commands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checks:&lt;/strong&gt; the smallest reliable test, lint, or typecheck commands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Boundaries:&lt;/strong&gt; files, data, or actions the agent should not touch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Done criteria:&lt;/strong&gt; what evidence the agent should provide before it stops.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills:&lt;/strong&gt; task-specific routines the agent should use instead of guessing.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then try the same task twice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Task: Add an example for a new config flag.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;First, do it with no &lt;code&gt;AGENTS.md&lt;/code&gt; and watch what you have to explain.&lt;/p&gt;

&lt;p&gt;Then add the file and ask again.&lt;/p&gt;

&lt;p&gt;The useful test:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did the agent run the right checks?&lt;/li&gt;
&lt;li&gt;Did it avoid generated files?&lt;/li&gt;
&lt;li&gt;Did your prompt get shorter?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the answer is no, the file is probably too vague, too long, or full of instructions the agent can't act on.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Good First &lt;code&gt;AGENTS.md&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Start here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# AGENTS.md&lt;/span&gt;

&lt;span class="gu"&gt;## Project Map&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; &lt;span class="sb"&gt;`src/`&lt;/span&gt; contains application code.
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`tests/`&lt;/span&gt; contains tests.
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`docs/`&lt;/span&gt; contains user-facing docs.
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`generated/`&lt;/span&gt; is produced by tooling; do not edit it manually.

&lt;span class="gu"&gt;## Commands&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Install: &lt;span class="sb"&gt;`pnpm install`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Test: &lt;span class="sb"&gt;`pnpm test`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Lint: &lt;span class="sb"&gt;`pnpm lint`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Typecheck: &lt;span class="sb"&gt;`pnpm typecheck`&lt;/span&gt;

&lt;span class="gu"&gt;## Working Rules&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Keep changes scoped to the user's request.
&lt;span class="p"&gt;-&lt;/span&gt; Prefer existing helpers before adding abstractions.
&lt;span class="p"&gt;-&lt;/span&gt; Do not deploy, publish, migrate, or delete data without explicit approval.
&lt;span class="p"&gt;-&lt;/span&gt; Do not include secrets, private data, or local-only paths in committed files.

&lt;span class="gu"&gt;## Completion&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Run the relevant checks or explain why they were not run.
&lt;span class="p"&gt;-&lt;/span&gt; Summarize changed behavior.
&lt;span class="p"&gt;-&lt;/span&gt; List remaining risk or follow-up.

&lt;span class="gu"&gt;## Skills&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; For database migrations, use the migration review skill.
&lt;span class="p"&gt;-&lt;/span&gt; For API changes, use the contract-checking skill.
&lt;span class="p"&gt;-&lt;/span&gt; Before a release, use the release-notes skill.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's enough to be useful. It's also short enough that someone might maintain it.&lt;/p&gt;

&lt;p&gt;Avoid architecture essays, aspirational values, every command in the repo, and private context you wouldn't want in a prompt transcript. If the instruction doesn't change the agent's behavior, cut it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Takeaway
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; is not a magic safety layer.&lt;/p&gt;

&lt;p&gt;It's a simple place to put the instructions you were already repeating: setup, checks, boundaries, and what done means.&lt;/p&gt;

&lt;p&gt;For me, the practical bar is this: can the agent do a small task with less prompting and still show the checks it ran?&lt;/p&gt;

&lt;p&gt;If yes, the repo got less ambiguous.&lt;/p&gt;

&lt;p&gt;If no, the file needs more work.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>automation</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
