<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Abraam Gotsiridze]]></title><description><![CDATA[Abraam Gotsiridze]]></description><link>https://abraamgotsiridze.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Wed, 04 Nov 2026 10:27:43 GMT</lastBuildDate><atom:link href="https://abraamgotsiridze.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Your coding agent can't see what you decided. Four lines fix most of it.]]></title><description><![CDATA[You ask Cursor, Codex, Claude Code or OpenCode for a small change. The diff comes back clean, the tests pass, and it still gets reverted in review: it…]]></description><link>https://abraamgotsiridze.hashnode.dev/your-coding-agent-can-t-see-what-you-decided-four-lines-fix-most-of-it</link><guid isPermaLink="true">https://abraamgotsiridze.hashnode.dev/your-coding-agent-can-t-see-what-you-decided-four-lines-fix-most-of-it</guid><category><![CDATA[AI]]></category><category><![CDATA[claude-code]]></category><category><![CDATA[cursor]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[Abraam Gotsiridze]]></dc:creator><pubDate>Tue, 03 Nov 2026 11:06:46 GMT</pubDate><content:encoded><![CDATA[<p>You ask Cursor, Codex, Claude Code or OpenCode for a small change. The diff comes back clean, the tests pass, and it still gets reverted in review: it pulled in a library you dropped, or "tidied" a pattern back to the one you moved away from.</p>
<p>The agent didn't misread the code. It read it perfectly. The problem is that code only records what exists. It doesn't record what you chose against. On a solo project those choices live in your head. Add one more person, or one more agent, and they live nowhere.</p>
<h2>Four lines before the task</h2>
<pre><code>Goal: the one change you want, in one sentence
In scope: files it may edit | Off limits: files and areas it must leave alone
Decisions to keep: choices already made that this task could break
Done when: the check that proves it, run and shown
</code></pre>
<p>That's it. It takes about a minute and works in any agent, because it's plain text in the prompt.</p>
<h2>Why these four and not ten</h2>
<ul>
<li><strong>Goal</strong> forces one change. If the sentence needs two "and"s, it's two tasks.</li>
<li><strong>In scope / Off limits</strong> keeps the agent out of files that only look related, and keeps its context for the ones that matter.</li>
<li><strong>Decisions to keep</strong> is the line almost everyone skips, and it's the one that prevents most reverts. Keep it to the two or three decisions this task could actually touch, not the whole rulebook.</li>
<li><strong>Done when</strong> turns "looks good" into something you can check. "Tests pass" is weak when the agent wrote the tests.</li>
</ul>
<h2>Where each kind of rule belongs</h2>
<ul>
<li>True for every task (commands, stack, hard limits): the root AGENTS.md / CLAUDE.md / .cursor/rules.</li>
<li>True for one folder: a nested file in that folder.</li>
<li>True for this task: the brief.</li>
</ul>
<p>When the same decision shows up in three briefs in a row, move it up a level. When a line in the root file hasn't mattered in a month, move it down or delete it.</p>
<h2>A quick test</h2>
<p>If you can't fill in the four lines, the task isn't ready yet. No prompt fixes that, and it's better to find out before the agent starts than after review.</p>
<p>What's the one decision your agent keeps un-making?</p>
<p><em>Written with AI assistance.</em></p>
]]></content:encoded></item><item><title><![CDATA[A 4-line task brief that keeps your coding agent on your team's decisions]]></title><description><![CDATA[Your coding agent can read every file in the repo and still get the task wrong in a very specific way: it re-adds the library you removed last month, it…]]></description><link>https://abraamgotsiridze.hashnode.dev/a-4-line-task-brief-that-keeps-your-coding-agent-on-your-team-s-decisions</link><guid isPermaLink="true">https://abraamgotsiridze.hashnode.dev/a-4-line-task-brief-that-keeps-your-coding-agent-on-your-team-s-decisions</guid><category><![CDATA[Developer Tools]]></category><category><![CDATA[AI]]></category><category><![CDATA[cursor]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[Abraam Gotsiridze]]></dc:creator><pubDate>Sat, 31 Oct 2026 11:10:21 GMT</pubDate><content:encoded><![CDATA[<p>Your coding agent can read every file in the repo and still get the task wrong in a very specific way: it re-adds the library you removed last month, it "fixes" a naming convention back to the old one, it edits a file nobody asked it to touch.</p>
<p>That's not a prompting skill issue. Code shows the agent what exists. It doesn't show what your team decided to stop doing, or which files actually matter for this task. So the agent fills that gap with a guess.</p>
<p>The fix that holds up best is boring: four lines at the top of every task.</p>
<h2>The template</h2>
<pre><code>Goal: &lt;one sentence on what should change&gt;
In scope: &lt;files the agent may touch&gt;  |  Off limits: &lt;files or areas it must not touch&gt;
Decisions to keep: &lt;choices the team already made&gt;
Done when: &lt;the check that proves it works, not just "tests pass"&gt;
</code></pre>
<h2>A filled-in example</h2>
<p>Say you ask your agent to add a "last edited" date to a post card.</p>
<pre><code>Goal: Show "Edited &lt;relative date&gt;" under the title on PostCard when updatedAt differs from createdAt.
In scope: src/components/PostCard.tsx, src/components/PostCard.test.tsx  |  Off limits: src/api/**, package.json
Decisions to keep: We use date-fns (moment was removed, don't add it back). Dates render through formatRelative() in src/lib/dates.ts, don't write a new helper.
Done when: PostCard.test.tsx covers edited and not-edited cases, and the card shows nothing new when the dates are equal.
</code></pre>
<p>Without line 3, there's a decent chance you get a shiny new date helper and a fresh dependency. With it, the agent has no reason to guess.</p>
<h2>Why each line earns its place</h2>
<ul>
<li><strong>Goal</strong> keeps it to one change. If you need "and" twice, split the task.</li>
<li><strong>In scope / Off limits</strong> stops the agent from reading half the repo and editing whatever looks related. It also keeps the context window for files that matter.</li>
<li><strong>Decisions to keep</strong> is the line people skip, and the one that prevents most reverts. Write down only the decisions that apply to this task, not your whole rulebook.</li>
<li><strong>Done when</strong> turns "looks good" into something checkable. "Tests pass" isn't enough when the agent wrote the tests.</li>
</ul>
<h2>How it fits with AGENTS.md / CLAUDE.md / .cursor/rules</h2>
<p>Keep the rules file short and true for every task: commands, stack, a few hard rules. The brief carries what's true for this task. If a "decision to keep" shows up in three briefs in a row, promote it to the rules file (or a nested AGENTS.md for that folder).</p>
<h2>Two habits that make it work better</h2>
<ol>
<li>Ask the agent to list the files it plans to touch before it writes code. If the list surprises you, fix the brief, not the diff.</li>
<li>When you reject a diff because it broke a team decision, add that decision to the next brief straight away. That's how the list stays honest.</li>
</ol>
<p>It works the same in Cursor, Codex, OpenCode or Claude Code, because it's just text at the top of the task. Feel free to steal it.</p>
<p>Which of the four lines do you find yourself skipping?</p>
<hr />
<p><em>Written with AI assistance.</em></p>
]]></content:encoded></item></channel></rss>