<?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: Chistiq</title>
    <description>The latest articles on DEV Community by Chistiq (chistiq).</description>
    <link>https://dev.to/chistiq</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%2Forganization%2Fprofile_image%2F13918%2F05488355-ceaf-4a64-a611-5e3facab57d2.png</url>
      <title>DEV Community: Chistiq</title>
      <link>https://dev.to/chistiq</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chistiq"/>
    <language>en</language>
    <item>
      <title>Your AI Read Every File. It Still Missed the System.</title>
      <dc:creator>Workspai.com </dc:creator>
      <pubDate>Sat, 25 Jul 2026 14:07:29 +0000</pubDate>
      <link>https://dev.to/chistiq/your-ai-read-every-file-it-still-missed-the-system-22g9</link>
      <guid>https://dev.to/chistiq/your-ai-read-every-file-it-still-missed-the-system-22g9</guid>
      <description>&lt;p&gt;Imagine Alex has an existing Next.js project here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/home/alex/code/storefront-web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An AI agent can read that entire folder and still miss the API it calls, the&lt;br&gt;
workspace policy it must follow, or the evidence a release check considers&lt;br&gt;
current. Giving the agent more files makes the prompt larger. It does not tell&lt;br&gt;
the agent where the system boundary is.&lt;/p&gt;

&lt;p&gt;We will connect &lt;code&gt;storefront-web&lt;/code&gt; to a Workspai workspace without moving or&lt;br&gt;
copying its source. Then we will generate a shared model, a proof-backed graph,&lt;br&gt;
and focused agent context.&lt;/p&gt;

&lt;p&gt;There are two easy ways to do it:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Your situation&lt;/th&gt;
&lt;th&gt;Best path&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;You want the fastest setup for one existing project&lt;/td&gt;
&lt;td&gt;Run &lt;code&gt;adopt&lt;/code&gt; and let Workspai create or reuse its managed minimal workspace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You want to choose the workspace name and location&lt;/td&gt;
&lt;td&gt;Create the workspace first, then adopt the project with &lt;code&gt;--workspace&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You want a copy of the project inside the workspace&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;import&lt;/code&gt; instead of &lt;code&gt;adopt&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;We will use the second path first because it makes every location visible.&lt;/p&gt;
&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Node.js and npm available&lt;/li&gt;
&lt;li&gt;an existing project at &lt;code&gt;/home/alex/code/storefront-web&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;a parent directory where Alex wants to keep the workspace&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Replace &lt;code&gt;/home/alex&lt;/code&gt; with your own home directory. The commands use &lt;code&gt;$HOME&lt;/code&gt; so&lt;br&gt;
you can copy them without hard-coding a username.&lt;/p&gt;
&lt;h2&gt;
  
  
  Path A: create a workspace where you want it
&lt;/h2&gt;

&lt;p&gt;Alex wants this final layout:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/home/alex/code/storefront-web       existing source
/home/alex/workspaces/my-workspace   Workspai workspace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create the workspace:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/workspaces"&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/workspaces"&lt;/span&gt;
npx workspai create workspace my-workspace &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--here&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--profile&lt;/span&gt; minimal &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--yes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;--here&lt;/code&gt; creates the named workspace as a child of the current directory. For&lt;br&gt;
Alex, the result is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/home/alex/workspaces/my-workspace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It does not turn &lt;code&gt;/home/alex/workspaces&lt;/code&gt; itself into a workspace.&lt;/p&gt;

&lt;p&gt;If you prefer Workspai's managed location, omit &lt;code&gt;--here&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx workspai create workspace my-workspace &lt;span class="nt"&gt;--profile&lt;/span&gt; minimal &lt;span class="nt"&gt;--yes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That creates:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.workspai/workspaces/my-workspace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Adopt the existing project into that workspace
&lt;/h2&gt;

&lt;p&gt;Now move into the existing project and link &lt;strong&gt;this project&lt;/strong&gt; to the workspace&lt;br&gt;
Alex just created:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/code/storefront-web"&lt;/span&gt;
npx workspai adopt &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--workspace&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/workspaces/my-workspace"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; storefront-web &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using &lt;code&gt;.&lt;/code&gt; keeps the command easy to read: adopt the project in the current&lt;br&gt;
directory, and register it in &lt;code&gt;my-workspace&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A shortened result looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"workspacePath"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/home/alex/workspaces/my-workspace"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"workspaceResolution"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"explicit"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"suggestedCdCommand"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cd /home/alex/workspaces/my-workspace"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"adoptedProject"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"storefront-web"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/home/alex/code/storefront-web"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"relationship"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"adopted"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important relationship is now explicit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-workspace
    └── links to /home/alex/code/storefront-web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Workspai does &lt;strong&gt;not&lt;/strong&gt; create a second copy at&lt;br&gt;
&lt;code&gt;/home/alex/workspaces/my-workspace/storefront-web&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Instead, it writes project-side metadata such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/home/alex/code/storefront-web/.workspai/project.json
/home/alex/code/storefront-web/.workspai/adopt.json
/home/alex/code/storefront-web/.workspai/adopt-readiness.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The workspace owns the shared contract, reports, policies, and agent outputs.&lt;br&gt;
The project remains where Alex already develops it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Path B: let Workspai choose the minimal workspace
&lt;/h2&gt;

&lt;p&gt;If Alex is happy to use Workspai's default workspace, this is the complete&lt;br&gt;
setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/code/storefront-web"&lt;/span&gt;
npx workspai adopt &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is all. Workspai detects the project name and stack, then creates or&lt;br&gt;
reuses the managed minimal workspace:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.workspai/workspaces/workspai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI prints the exact workspace path and the next &lt;code&gt;cd&lt;/code&gt; command. The managed&lt;br&gt;
workspace uses the &lt;code&gt;minimal&lt;/code&gt; profile, while the source remains in&lt;br&gt;
&lt;code&gt;$HOME/code/storefront-web&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Add &lt;code&gt;--json&lt;/code&gt; only when a script or another tool needs structured output. Add&lt;br&gt;
&lt;code&gt;--name storefront-web&lt;/code&gt; only when the detected project name is not the name you&lt;br&gt;
want to register.&lt;/p&gt;

&lt;p&gt;This route is useful when the immediate goal is simply:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Give my existing project a standard workspace boundary and make it readable&lt;br&gt;
by agents.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The explicit path is better when several projects belong to one named product&lt;br&gt;
or when a team wants to control where the shared workspace lives.&lt;/p&gt;
&lt;h2&gt;
  
  
  Continue from the workspace, not the project
&lt;/h2&gt;

&lt;p&gt;For Path A:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/workspaces/my-workspace"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Path B, use the exact &lt;code&gt;suggestedCdCommand&lt;/code&gt; returned by &lt;code&gt;adopt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This change of directory matters. Project commands can run from a project, but&lt;br&gt;
commands that reason across the whole system should run from the workspace&lt;br&gt;
boundary.&lt;/p&gt;
&lt;h2&gt;
  
  
  Build the shared understanding
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx workspai workspace intelligence run &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--for-agent&lt;/span&gt; generic &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--strict&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;code&gt;generic&lt;/code&gt; keeps the example portable. Use a specific supported agent surface&lt;br&gt;
only when you want agent-specific output.&lt;/p&gt;

&lt;p&gt;In plain language, this command:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;registers the current project inventory;&lt;/li&gt;
&lt;li&gt;builds a canonical model of what Workspai can observe;&lt;/li&gt;
&lt;li&gt;derives a relationship graph from that model;&lt;/li&gt;
&lt;li&gt;checks health, contracts, impact, and readiness;&lt;/li&gt;
&lt;li&gt;prepares current context and instructions for agents;&lt;/li&gt;
&lt;li&gt;explains anything that still needs attention.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don't worry if the first run does not end with a clean readiness result. A new&lt;br&gt;
workspace may still have missing, stale, or conflicting evidence. Read the&lt;br&gt;
reported blocker and follow the command that owns it; do not edit a generated&lt;br&gt;
report just to make the warning disappear. The point of this run is to expose&lt;br&gt;
what the workspace can prove now, not to manufacture a green status.&lt;/p&gt;
&lt;h2&gt;
  
  
  See what changed for Alex
&lt;/h2&gt;

&lt;p&gt;After the run, the workspace contains a set of outputs with different jobs:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;th&gt;What it tells Alex or an agent&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.workspai/workspace.contract.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;storefront-web&lt;/code&gt; belongs to this workspace and where its source lives&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.workspai/reports/workspace-model.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The current projects, facts, evidence, and observed state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.workspai/reports/workspace-knowledge-graph.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Relationships derived from the model, with supporting evidence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.workspai/reports/workspace-context-agent.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Focused workspace context prepared for an agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.workspai/reports/INDEX.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The index of current reports, so consumers do not guess filenames&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Portable grounding instructions for compatible agent workflows&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The model is the canonical description of observed workspace state. The graph&lt;br&gt;
is derived from it; a visualization or missing edge does not redefine the&lt;br&gt;
workspace.&lt;/p&gt;

&lt;p&gt;The result is not “AI understands everything.” It is more useful and more&lt;br&gt;
honest:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Before:
agent → one project folder → guesses the wider boundary

After:
agent → workspace context → model → selected relationship → supporting evidence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When another project is adopted later—perhaps&lt;br&gt;
&lt;code&gt;/home/alex/code/storefront-api&lt;/code&gt;—the same workspace can describe both projects&lt;br&gt;
and the evidence connecting them.&lt;/p&gt;
&lt;h2&gt;
  
  
  Give the agent focused evidence
&lt;/h2&gt;

&lt;p&gt;The normal workflow does &lt;strong&gt;not&lt;/strong&gt; require the user to run graph commands by&lt;br&gt;
hand. The generated &lt;code&gt;AGENTS.md&lt;/code&gt; and Agent Customization Pack instruct a&lt;br&gt;
tool-enabled agent to begin with the report index and bounded graph retrieval&lt;br&gt;
instead of reading the complete interchange graph or exploring every file.&lt;/p&gt;

&lt;p&gt;After the API project joins the workspace, the agent can execute calls like&lt;br&gt;
these through its shell or the equivalent MCP tools:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx workspai workspace graph search &lt;span class="s2"&gt;"storefront user API"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--limit&lt;/span&gt; 12 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--json&lt;/span&gt;

npx workspai workspace graph evidence &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"&amp;lt;returned-entity-id&amp;gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second call uses an ID returned by the first. The agent should not invent&lt;br&gt;
an endpoint label such as &lt;code&gt;GET /users&lt;/code&gt; and assume it exists in every workspace.&lt;br&gt;
If Workspai finds a match, the response includes stable IDs and proof&lt;br&gt;
references that the agent can follow without loading every graph entity.&lt;/p&gt;

&lt;p&gt;The commands are shown here so the behavior remains inspectable. In a normal&lt;br&gt;
Agent workflow, the model performs this retrieval itself. A person only needs&lt;br&gt;
to run them manually when using a chat surface that has no shell or MCP access,&lt;br&gt;
or when independently auditing the agent's evidence.&lt;/p&gt;

&lt;p&gt;An agent task can now be framed like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Use the current workspace context. Find the evidence connecting&lt;br&gt;
&lt;code&gt;storefront-web&lt;/code&gt; to the user API. Before editing, identify the affected&lt;br&gt;
project and the contract that must remain compatible.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Without this evidence, an agent often starts with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which files seem related?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With a contract-backed workspace, it can ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the affected project registered?&lt;/li&gt;
&lt;li&gt;Which current evidence supports this dependency?&lt;/li&gt;
&lt;li&gt;Did the model change from the selected baseline?&lt;/li&gt;
&lt;li&gt;Is the finding a warning or a blocker?&lt;/li&gt;
&lt;li&gt;Which command owns the stale artifact?&lt;/li&gt;
&lt;li&gt;Did a repair modify source, or only refresh a report?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those questions do not guarantee a correct patch. They make the reasoning&lt;br&gt;
inspectable and testable.&lt;/p&gt;
&lt;h2&gt;
  
  
  Which path should you choose?
&lt;/h2&gt;

&lt;p&gt;Choose managed minimal adoption when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;you have one existing project;&lt;/li&gt;
&lt;li&gt;you want the shortest route;&lt;/li&gt;
&lt;li&gt;you do not care about naming a product-level workspace yet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Create the workspace first when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;several projects belong to the same system;&lt;/li&gt;
&lt;li&gt;you want a meaningful workspace name;&lt;/li&gt;
&lt;li&gt;you want to choose its location or profile;&lt;/li&gt;
&lt;li&gt;a team will share the same operational boundary.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use import instead of adopt when the source should actually be copied or cloned&lt;br&gt;
into the workspace.&lt;/p&gt;
&lt;h2&gt;
  
  
  Verify the exercise
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;storefront-web&lt;/code&gt; still exists at &lt;code&gt;/home/alex/code/storefront-web&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Its &lt;code&gt;.workspai/adopt.json&lt;/code&gt; identifies the adoption relationship.&lt;/li&gt;
&lt;li&gt;The selected workspace contract contains &lt;code&gt;storefront-web&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The workspace reports contain a current model, graph, context, and report
index.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;AGENTS.md&lt;/code&gt; exists at the workspace boundary.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Where to go next
&lt;/h2&gt;

&lt;p&gt;Adopt a related API into the same workspace:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/code/storefront-api"&lt;/span&gt;
npx workspai adopt &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--workspace&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/workspaces/my-workspace"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; storefront-api &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Return to &lt;code&gt;/home/alex/workspaces/my-workspace&lt;/code&gt;, rerun Workspace Intelligence,&lt;br&gt;
and query the relationship between the frontend and API.&lt;/p&gt;

&lt;p&gt;That is where a workspace contract becomes more than metadata: it gives people,&lt;br&gt;
CI, IDEs, MCP clients, and agents one operational definition of the system they&lt;br&gt;
are changing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your turn
&lt;/h2&gt;

&lt;p&gt;Think about the last “small” change that escaped its repository boundary.&lt;br&gt;
Where did the missing fact live: another project, a contract, infrastructure,&lt;br&gt;
CI, or an artifact nobody knew was stale?&lt;/p&gt;

&lt;p&gt;That answer is a useful first test for any AI coding workflow. If the agent&lt;br&gt;
cannot name that boundary before editing, reading more files may only make it&lt;br&gt;
more confidently local.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on&lt;br&gt;
&lt;a href="https://www.workspai.dev/essays/ai-needs-workspace-contracts" rel="noopener noreferrer"&gt;Workspai.dev&lt;/a&gt;,&lt;br&gt;
where this article is maintained as the canonical and up-to-date edition.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devtools</category>
      <category>architecture</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
