<?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: Adam Balkwill</title>
    <description>The latest articles on DEV Community by Adam Balkwill (@thecontinuitylayer).</description>
    <link>https://dev.to/thecontinuitylayer</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%2F4180999%2Fce5fc913-bd3c-4fef-9bcb-92afc3fe56ea.png</url>
      <title>DEV Community: Adam Balkwill</title>
      <link>https://dev.to/thecontinuitylayer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thecontinuitylayer"/>
    <language>en</language>
    <item>
      <title>Make your AI coding agent's handoff checkable: point every "done" at something real</title>
      <dc:creator>Adam Balkwill</dc:creator>
      <pubDate>Tue, 13 Oct 2026 05:26:50 +0000</pubDate>
      <link>https://dev.to/thecontinuitylayer/make-your-ai-coding-agents-handoff-checkable-point-every-done-at-something-real-1jb5</link>
      <guid>https://dev.to/thecontinuitylayer/make-your-ai-coding-agents-handoff-checkable-point-every-done-at-something-real-1jb5</guid>
      <description>&lt;p&gt;When a Claude Code session runs out of context, or you stop for the night, the next session starts from whatever the last one wrote down. Usually that is a summary: what was done, what is left. The trouble is that the session writing it is the one most likely to be wrong about it. It ran out of room mid-task. It remembers deciding to commit, not whether the commit happened.&lt;/p&gt;

&lt;p&gt;So the next session reads "auth refactor done, tests passing" and builds on it. Twenty minutes later you find the refactor was never committed.&lt;/p&gt;

&lt;p&gt;Here is a habit that fixes most of this, with or without any tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Every claim gets a pointer
&lt;/h2&gt;

&lt;p&gt;Don't let the handoff say "done" on its own. Each line names something that can be looked up:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Auth refactor: done. commit a1b2c3d
- Session cookie fix: done. file src/auth/session.ts in commit a1b2c3d
- Rate limit: NOT done. Started, nothing committed.
- Decision: keep JWT, see log entry 2026-10-12 14:05
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A commit hash, a file in a commit, a line in a log. If the agent can't name one, the honest line is "not done".&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The next session checks the pointers before it trusts the file
&lt;/h2&gt;

&lt;p&gt;This part is mechanical, so don't leave it to the model's judgement. A few lines of shell will do:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cat-file &lt;span class="nt"&gt;-e&lt;/span&gt; a1b2c3d^&lt;span class="o"&gt;{&lt;/span&gt;commit&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"commit exists"&lt;/span&gt;
git cat-file &lt;span class="nt"&gt;-e&lt;/span&gt; a1b2c3d:src/auth/session.ts &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"file exists in that commit"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run it for every pointer and count: how many exist, how many don't. Show the count to yourself before the new session starts work.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Be clear about what the check proves
&lt;/h2&gt;

&lt;p&gt;A pointer that exists does not make the sentence beside it true. "Fixes the login bug" can point at a real commit that fixes nothing. What the check gives you is narrower and still useful: it tells you which claims rest on something real and which rest on nothing, and so where to look first. Often the false ones are the second kind: work that was described but never committed.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Keep it in the repo, in plain text
&lt;/h2&gt;

&lt;p&gt;Markdown and JSON in a folder in the project. Then it doesn't matter which agent or tool reads it next, and it travels with the code.&lt;/p&gt;

&lt;h2&gt;
  
  
  A plugin that does this for Claude Code
&lt;/h2&gt;

&lt;p&gt;I maintain Succession, a free, MIT-licensed Claude Code plugin that does the above for you. It starts small: install it, and your next session in a git project gets a name, such as Sextant, and nothing else changes. When you want handoffs, &lt;code&gt;/succession:seat&lt;/code&gt; turns on checkpoints and a close, and before a successor takes over, a script checks every pointer in the last handoff and prints the count. Everything is plain files in a &lt;code&gt;.succession/&lt;/code&gt; folder; no account, no server, no network calls. It needs git and a POSIX shell (Git Bash on Windows).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;claude plugin marketplace add thecontinuitylayer/succession
claude plugin install succession@succession-marketplace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repository: &lt;a href="https://github.com/thecontinuitylayer/succession" rel="noopener noreferrer"&gt;https://github.com/thecontinuitylayer/succession&lt;/a&gt;&lt;br&gt;
Short page with a recording: &lt;a href="https://thecontinuitylayer.com/succession?utm_source=devto" rel="noopener noreferrer"&gt;https://thecontinuitylayer.com/succession?utm_source=devto&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But the habit matters more than the tool. If you take one thing from this: don't accept "done" without a pointer.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was drafted with AI assistance and reviewed by me; I stand by what it says.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
