<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>workspace.json | Blog</title><description>The open specification for AI agent workspace context and repository intelligence.</description><link>https://www.workspacejson.dev/</link><language>en</language><item><title>workspace.json vs AGENTS.md: Prescriptive vs Descriptive Context</title><link>https://www.workspacejson.dev/blog/workspace-json-vs-agents-md/</link><guid isPermaLink="true">https://www.workspacejson.dev/blog/workspace-json-vs-agents-md/</guid><description>AGENTS.md tells your AI what to do. workspace.json tells it what&apos;s true. Here&apos;s why that distinction is the difference between reliable and brittle agents.

</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;AI coding agents need context to work well. Two formats have emerged to provide it: &lt;code dir=&quot;auto&quot;&gt;AGENTS.md&lt;/code&gt; (and its variants &lt;code dir=&quot;auto&quot;&gt;CLAUDE.md&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;COPILOT-INSTRUCTIONS.md&lt;/code&gt;) and &lt;code dir=&quot;auto&quot;&gt;workspace.json&lt;/code&gt;. They look similar on the surface but solve fundamentally different problems.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;the-core-distinction&quot;&gt;The core distinction&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;AGENTS.md&lt;/code&gt; is &lt;strong&gt;descriptive and instructional&lt;/strong&gt;. It’s a markdown file you write in natural language telling the agent how to behave: “run tests with &lt;code dir=&quot;auto&quot;&gt;pnpm test&lt;/code&gt;”, “never modify files in &lt;code dir=&quot;auto&quot;&gt;vendor/&lt;/code&gt;”, “use conventional commits”.&lt;/p&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;workspace.json&lt;/code&gt; is &lt;strong&gt;prescriptive and structural&lt;/strong&gt;. It’s a machine-readable JSON file that encodes what’s true about your repository: which packages exist, what files they own, what frameworks they use, how active they are.&lt;/p&gt;
&lt;p&gt;One is a memo. The other is a manifest.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;why-the-distinction-matters&quot;&gt;Why the distinction matters&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;When an agent reads &lt;code dir=&quot;auto&quot;&gt;AGENTS.md&lt;/code&gt;, it extracts meaning from prose. That works until it doesn’t — when the instructions are ambiguous, outdated, or conflict with what the agent observes in the code.&lt;/p&gt;
&lt;p&gt;When an agent reads &lt;code dir=&quot;auto&quot;&gt;workspace.json&lt;/code&gt;, it gets structured facts it can validate, cross-reference, and reason about without interpretation. The spec’s type system makes it harder to be wrong.&lt;/p&gt;
&lt;p&gt;Consider a monorepo with 12 packages. An &lt;code dir=&quot;auto&quot;&gt;AGENTS.md&lt;/code&gt; might say “check the packages directory”. A &lt;code dir=&quot;auto&quot;&gt;workspace.json&lt;/code&gt; enumerates every package with its manifest path, language, framework, and ownership — making it impossible for the agent to miss one or misunderstand the structure.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;theyre-complementary-not-competing&quot;&gt;They’re complementary, not competing&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The best setups use both:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;workspace.json&lt;/code&gt; for &lt;strong&gt;structural truth&lt;/strong&gt;: packages, files, frameworks, conventions&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;AGENTS.md&lt;/code&gt; for &lt;strong&gt;behavioral guidance&lt;/strong&gt;: workflow preferences, commit style, what to avoid&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;workspace.json&lt;/code&gt; reduces the surface area that &lt;code dir=&quot;auto&quot;&gt;AGENTS.md&lt;/code&gt; needs to cover. Fewer prose instructions means less drift, less ambiguity, and more reliable agent behavior.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;getting-started&quot;&gt;Getting started&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Add a &lt;code dir=&quot;auto&quot;&gt;workspace.json&lt;/code&gt; to your repo in under 10 minutes with the &lt;a href=&quot;https://www.workspacejson.dev/getting-started/&quot;&gt;Getting Started guide&lt;/a&gt;. The &lt;a href=&quot;https://www.workspacejson.dev/audit/&quot;&gt;agents-audit&lt;/a&gt; CLI will tell you how well your existing setup is doing.&lt;/p&gt;</content:encoded><category>spec</category><category>agents-md</category><category>ai-context</category></item></channel></rss>