<?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: Seiji Nakaya</title>
    <description>The latest articles on DEV Community by Seiji Nakaya (@_3ffb5be7950c3a975b5d).</description>
    <link>https://dev.to/_3ffb5be7950c3a975b5d</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%2F4052064%2Ff8b725af-2b69-43a9-b9ce-091a3e2ae309.jpg</url>
      <title>DEV Community: Seiji Nakaya</title>
      <link>https://dev.to/_3ffb5be7950c3a975b5d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_3ffb5be7950c3a975b5d"/>
    <language>en</language>
    <item>
      <title>Your AI Agent’s Memory Has No Expiration Date. That’s the Problem.</title>
      <dc:creator>Seiji Nakaya</dc:creator>
      <pubDate>Thu, 13 Aug 2026 05:14:49 +0000</pubDate>
      <link>https://dev.to/_3ffb5be7950c3a975b5d/your-ai-agents-memory-has-no-expiration-date-thats-the-problem-1f1a</link>
      <guid>https://dev.to/_3ffb5be7950c3a975b5d/your-ai-agents-memory-has-no-expiration-date-thats-the-problem-1f1a</guid>
      <description>&lt;p&gt;We built memory that retrieves the right note every time, then watched it hand us a note that had quietly stopped being true. Retrieval was never the hard part. This is the fix we tried that failed the same afternoon, and the smaller thing we ship instead — one that does not pretend to know whether a note still holds.&lt;/p&gt;

&lt;p&gt;The note was correct when we wrote it.&lt;/p&gt;

&lt;p&gt;Weeks later, it lied without changing a single word.&lt;/p&gt;

&lt;p&gt;I had asked an AI agent for the latest state of our launch work. It did exactly what I had trained it to do: search the team's memory, find a relevant record, and answer confidently. The record said a task was still waiting to be done.&lt;/p&gt;

&lt;p&gt;The work had actually been finished weeks earlier.&lt;/p&gt;

&lt;p&gt;In the same session, the agent found an old SEO audit and reported its unresolved items as our current problems. That list had been accurate on the day it was written. We measured the live site again; nearly every item had since been fixed.&lt;/p&gt;

&lt;p&gt;We found both cases while dogfooding our own product before launch. They were not stories about a database losing data or a model failing to retrieve it. Retrieval worked perfectly. &lt;strong&gt;The agent found the right notes and gave the wrong answer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That distinction changed what I thought an AI memory product needed to solve.&lt;/p&gt;

&lt;h2&gt;
  
  
  We solved finding the note, not trusting it
&lt;/h2&gt;

&lt;p&gt;Most conversations about AI memory focus on recall: can an agent recover a useful fact after the chat ends? Can another tool or teammate find it later? Can the system rank the relevant note above the noise?&lt;/p&gt;

&lt;p&gt;Those are real problems, and the industry has made them much easier.&lt;/p&gt;

&lt;p&gt;But recall is only half of memory. The other half is currentness: &lt;strong&gt;is the retrieved fact still true?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A stale note does not look broken. Its text is intact. Its embedding still matches the question. Its source may be trustworthy. In fact, the more authoritative and relevant it appears, the more confidently an agent may repeat it.&lt;/p&gt;

&lt;p&gt;The dangerous memory is not the one the system cannot find. It is the one the system finds immediately, cites correctly, and should no longer believe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Our first fix was a label. It failed immediately
&lt;/h2&gt;

&lt;p&gt;Our first design felt obvious: ask the writer to label each record as either a durable rule or a point-in-time observation.&lt;/p&gt;

&lt;p&gt;A rule—"API errors use Problem Details"—could be reused without constant warnings. An observation—"the migration is still pending"—would carry a date and invite rechecking.&lt;/p&gt;

&lt;p&gt;Then we sampled six of our own records at even intervals. At least four did not fit either box.&lt;/p&gt;

&lt;p&gt;One note documented a durable implementation rule, the reason for it, the status of the rollout, and the fact that its commit had not yet reached the main branch. Half of the note could remain useful for a year. One sentence became false a few days later.&lt;/p&gt;

&lt;p&gt;Mark it as a rule and the expired sentence escapes scrutiny. Mark it as an observation and the agent warns about a rule we want it to use every day.&lt;/p&gt;

&lt;p&gt;The writer was also the worst person to make the distinction. The agent writing that mixed note believed it was documenting a completed fix. It did not know that one small sentence—"this commit is not on the main branch yet"—was a timer with no alarm.&lt;/p&gt;

&lt;p&gt;We had tried to attach an expiration policy to the container. The facts inside the container expired at different times.&lt;/p&gt;

&lt;h2&gt;
  
  
  Age is not evidence
&lt;/h2&gt;

&lt;p&gt;The next tempting fix was simpler: make old memories suspicious.&lt;/p&gt;

&lt;p&gt;That fails in both directions. A year-old architecture rule may still be exactly right. A note written today may already be wrong.&lt;/p&gt;

&lt;p&gt;We saw the second case in a particularly sharp form. An answer arrived in a review thread. Forty-four seconds later, a separate record said we were still waiting for that answer.&lt;/p&gt;

&lt;p&gt;The record was false at birth.&lt;/p&gt;

&lt;p&gt;Any rule that asks "did the world change after this was written?" misses that case, because the world changed first. Any rule that treats recent notes as safer gives the wrong note more authority precisely because it is new.&lt;/p&gt;

&lt;p&gt;Time matters, but age does not prove truth. A timestamp is evidence for the reader, not a verdict from the system.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we can show without pretending to know
&lt;/h2&gt;

&lt;p&gt;Once we stopped trying to classify truth, the design became more modest.&lt;/p&gt;

&lt;p&gt;When an agent reads a record, we can show two kinds of evidence beside it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;when the record was written;&lt;/li&gt;
&lt;li&gt;the current state of any task or question the record explicitly names.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If an old note says a piece of work is pending while the task board says done, the contradiction is visible at the moment of use. If a note says a question is unanswered after a reply has arrived, the reader can see both claims together.&lt;/p&gt;

&lt;p&gt;We deliberately do not label the record "current." We have no verification history that would justify that word. We also do not label it "stale," because age alone proves nothing. We do not hide it or silently reorder it.&lt;/p&gt;

&lt;p&gt;The system presents the note, its date, and live evidence from named objects. The agent—and ultimately the human responsible for the decision—has to resolve the difference.&lt;/p&gt;

&lt;p&gt;That may sound less magical than an automated truth score. It is also much harder to mistake for certainty.&lt;/p&gt;

&lt;h2&gt;
  
  
  A memory receipt you can use now
&lt;/h2&gt;

&lt;p&gt;You do not need a specialized product to make team memory safer. Start by separating durable rules from observations and giving every observation a receipt.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MEMORY RECEIPT

Durable rule
- Rule:
- Why it exists:
- Scope:

Point-in-time observation
- Observed fact:
- Observed at:
- Verified by: command, URL, person, or source
- Depends on: task, question, branch, deployment, or owner
- Recheck when:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Do not put both sections in one record just because they came from the same conversation. They have different lifetimes. A rule can survive while the rollout status beneath it expires.&lt;/p&gt;

&lt;p&gt;When evaluating any memory system, ask whether it preserves this evidence. Does it show when the note was written? Can it show the present state of the things the note names? Does its interface avoid implying that "no warning" means "verified"?&lt;/p&gt;

&lt;p&gt;If the answer to all three is no, better recall may only help an agent retrieve obsolete confidence faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part we have not solved
&lt;/h2&gt;

&lt;p&gt;Evidence can still be ignored. An agent may quote the old sentence and skip the status shown beside it. A human may prefer the convenient answer. Notes that mention no structured object have nothing live to compare against.&lt;/p&gt;

&lt;p&gt;The stronger solution begins when the record is written: store the subject, the claimed state, and the observation time as structured data instead of asking a later reader to infer them from prose.&lt;/p&gt;

&lt;p&gt;We are not there yet. Until then, showing provenance and live contradictions is a guardrail, not a guarantee.&lt;/p&gt;

&lt;p&gt;This account is from one team, one codebase, and our pre-launch dogfooding at LOOSEDAYS. It is not a benchmark, and the sample of six records is not a population study. It was enough to disprove our first design for our own work.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this changed in Vibsync
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://vibsync.com/" rel="noopener noreferrer"&gt;Vibsync&lt;/a&gt; is the shared brain we build at LOOSEDAYS for teams using AI coding agents. After these incidents, we changed the read experience so a retrieved memory carries its recorded date and the live status of tasks or questions it names.&lt;/p&gt;

&lt;p&gt;The goal is not to declare what is true. It is to stop an old statement from arriving alone, stripped of the evidence needed to question it.&lt;/p&gt;

&lt;p&gt;That matters because different agents and sessions inherit the same record. A sentence written as temporary context can become tomorrow's starting point for someone who never saw the surrounding conversation. Shared memory amplifies useful knowledge. It also amplifies outdated assumptions unless current evidence travels with it.&lt;/p&gt;

&lt;p&gt;If you want to try the Memory Receipt first, copy the template above into the document your agents already share. If you want agents on different tools and machines to inherit the same dated records, decisions, and live task context, &lt;a href="https://vibsync.com/getting-started" rel="noopener noreferrer"&gt;connect them to one Vibsync team&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Vibsync is built by LOOSEDAYS Co., Ltd. This is a first-hand account of one team's pre-release work, not a controlled comparison.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://vibsync.com/blog/ai-memory-has-no-expiration-date" rel="noopener noreferrer"&gt;https://vibsync.com/blog/ai-memory-has-no-expiration-date&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>My AI Said "Fixed" Three Times. It Was Wrong Three Times.</title>
      <dc:creator>Seiji Nakaya</dc:creator>
      <pubDate>Tue, 11 Aug 2026 22:31:30 +0000</pubDate>
      <link>https://dev.to/_3ffb5be7950c3a975b5d/my-ai-said-fixed-three-times-it-was-wrong-three-times-3i6a</link>
      <guid>https://dev.to/_3ffb5be7950c3a975b5d/my-ai-said-fixed-three-times-it-was-wrong-three-times-3i6a</guid>
      <description>&lt;p&gt;I nearly shipped three broken fixes in a row because an AI told me they were done and I wanted to believe it. What stopped me was not a better model — it was a second agent that was not allowed to have an opinion until it had run the code. Here is what that loop caught.&lt;/p&gt;

&lt;p&gt;“Fixed,” the AI said.&lt;/p&gt;

&lt;p&gt;I believed it until another AI wrote a five-line check, ran it, and showed me the same failure.&lt;/p&gt;

&lt;p&gt;Then it happened again. And again.&lt;/p&gt;

&lt;p&gt;This was not a toy prompt or an interview puzzle. I was trying to finish a feature on the read path of a product we were preparing to release. The code looked plausible. The explanation sounded complete. The tests the author could run were green. I wanted the answer to be true.&lt;/p&gt;

&lt;p&gt;It was still wrong.&lt;/p&gt;

&lt;p&gt;What finally changed my mind was not a smarter model or a more elaborate prompt. It was a second agent with a separate checkout, permission to distrust the first one, and one rule: &lt;strong&gt;do not accept “fixed” without reproducing the failure.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I was the person who wanted to believe it
&lt;/h2&gt;

&lt;p&gt;I run LOOSEDAYS, the company building Vibsync. In this project, Claude Code usually writes a change and Codex reviews it. I decide what matters, settle disagreements, and own the merge.&lt;/p&gt;

&lt;p&gt;That sounds disciplined when written after the fact. In the moment, I was a founder trying to get a release out. Every review round added delay. Every “fixed” message offered a reason to move on.&lt;/p&gt;

&lt;p&gt;The pull request was meant to solve a real trust problem: a shared note may have been true when it was written and wrong by the time another agent reads it. We wanted each retrieved note to show when it was recorded and the current status of any task or question it mentioned.&lt;/p&gt;

&lt;p&gt;The idea was small. The review was not. Across seven rounds, the reviewer raised ten blocking findings.&lt;/p&gt;

&lt;p&gt;Three of them were the same humanly familiar mistake in different places: &lt;strong&gt;we fixed the decision in one layer and forgot another layer that consumed it.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Two retrieval paths used the new annotation; the fresh-session handoff path did not.&lt;/li&gt;
&lt;li&gt;A shared failure path was corrected; another route bypassed it and kept the old behavior.&lt;/li&gt;
&lt;li&gt;The analyzer correctly decided which reference mattered; the renderer threw that answer away and re-created the old, wrong one.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After each change, the author could point to code that was now correct. After each change, the product still had a path where the old behavior survived.&lt;/p&gt;

&lt;p&gt;That is why “I changed the right function” is not evidence that a bug is fixed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The reviewer did not read the code better
&lt;/h2&gt;

&lt;p&gt;All ten blocking findings came from running something.&lt;/p&gt;

&lt;p&gt;The reviewer pulled the exact commit into a separate checkout, ran the full suite, and then tried realistic inputs around the claimed fix. It also had access to tests the author's environment could not run. That difference between environments turned out to be useful, not inconvenient.&lt;/p&gt;

&lt;p&gt;The author knew what the code was intended to do. The reviewer only saw what it did.&lt;/p&gt;

&lt;p&gt;That distance mattered more than model intelligence. An author reads an implementation through the story in its own head: &lt;em&gt;this helper is now the source of truth; this condition handles the edge case; this renderer only displays the result.&lt;/em&gt; A reviewer can ask the less flattering question: &lt;em&gt;Which route did you not run?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The reviewer also caught the pull request moving after an earlier approval. It did not treat “approved once” as a permanent property of the branch. It pinned the decision to a commit and reviewed the new head again.&lt;/p&gt;

&lt;p&gt;The hardest round ended with less code, not a better patch. We had tried to warn when an old note called a finished task “pending.” After four versions, the detector still misread “Task 42 processes pending jobs”: the jobs were pending, not the task. That was a grammar problem, not a word-list problem. The author proposed another fix; the reviewer proposed removing the semantic guess and keeping only reliable evidence—the note's date and the task's current status. We deleted the clever part. Sometimes a second agent's best contribution is making less code survive.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rule that changed the loop
&lt;/h2&gt;

&lt;p&gt;The early rounds were noisy because the author answered findings too quickly. “I see it” quietly became “fixed.” Reading the report felt close enough to reproducing it.&lt;/p&gt;

&lt;p&gt;It is not close enough.&lt;/p&gt;

&lt;p&gt;The rule that stopped this was simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Before changing the code, reproduce the reviewer's exact failure. After changing it, run the same case again.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That turns a review comment from an opinion into a before-and-after observation. It also prevents a polite but expensive failure mode: two agents debating what the code &lt;em&gt;should&lt;/em&gt; do while neither has checked what it &lt;em&gt;does&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The protocol we use now
&lt;/h2&gt;

&lt;p&gt;You do not need Vibsync to try this. You need two agents that can work independently, a branch, and a durable place for the evidence.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;THE “FIXED” GATE

Author
1. Show the exact failing input and its output before the change.
2. Make the change. Show the same input passing afterward.
3. State what your environment could not verify.
4. If the branch changes after approval, say so explicitly.

Reviewer
5. Review a commit, not “the latest branch.” Record its SHA.
6. Re-run the reported failure in a separate checkout.
7. Add at least one adjacent, realistic case the author did not choose.
8. Run the broadest suite your environment allows; report the numbers.
9. Separate blocking behavior from non-blocking preference.

Human owner
10. Decide whether the risk justifies another round, and own the merge.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The protocol is intentionally biased toward evidence. “Looks good,” “makes sense,” and “I updated the helper” are not evidence. A failing case that becomes a passing case is.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this does not prove
&lt;/h2&gt;

&lt;p&gt;This is one team, one codebase, and roughly one month of working this way. It is not a benchmark, and I am not claiming that two agents are always better than one.&lt;/p&gt;

&lt;p&gt;The loop is slower than accepting the first plausible answer. For a copy edit or a reversible experiment, the extra round may be waste. For a change that sits on an authentication boundary, a data migration, or a read path people will trust, the cost looks different.&lt;/p&gt;

&lt;p&gt;It also does not remove human responsibility. The agents can generate, challenge, and test. I still decide which risks deserve the loop, when to stop, and whether to merge.&lt;/p&gt;

&lt;p&gt;The lesson is narrower: &lt;strong&gt;do not use a second AI as another voter. Use it as an independent source of friction.&lt;/strong&gt; Give it a different checkout, different constraints where possible, the authority to block, and a requirement to bring executable evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the record has to outlive the session
&lt;/h2&gt;

&lt;p&gt;By round seven, no single context window held the whole argument. The useful artifact was not the agents' conversation; it was the written trail of findings, reproductions, decisions, and exact commits.&lt;/p&gt;

&lt;p&gt;That is where Vibsync enters the story. &lt;a href="https://vibsync.com/" rel="noopener noreferrer"&gt;Vibsync&lt;/a&gt; is the shared brain we build at LOOSEDAYS for AI coding teams. Claude Code and Codex used it to leave review findings and decisions for each other across sessions and machines. The agents did not need to be awake together or share one context window. Each round started from the same durable record instead of a summary reconstructed from memory.&lt;/p&gt;

&lt;p&gt;The product did not make either model smarter. It made the disagreement survive long enough to be useful.&lt;/p&gt;

&lt;p&gt;You can run the protocol above with a shared document today. If you want different agents to inherit the same decisions, open questions, and review trail automatically, &lt;a href="https://vibsync.com/getting-started" rel="noopener noreferrer"&gt;connect them to the same Vibsync team&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Vibsync is built by LOOSEDAYS Co., Ltd. This is a first-hand account of one pre-release pull request, not a controlled comparison.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://vibsync.com/blog/ai-said-fixed-three-times" rel="noopener noreferrer"&gt;https://vibsync.com/blog/ai-said-fixed-three-times&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>codereview</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The AI Coding Team Working Agreement</title>
      <dc:creator>Seiji Nakaya</dc:creator>
      <pubDate>Tue, 11 Aug 2026 00:37:58 +0000</pubDate>
      <link>https://dev.to/_3ffb5be7950c3a975b5d/the-ai-coding-team-working-agreement-3ffb</link>
      <guid>https://dev.to/_3ffb5be7950c3a975b5d/the-ai-coding-team-working-agreement-3ffb</guid>
      <description>&lt;p&gt;Every team I've worked with has unwritten rules — who to ask before touching auth, which decisions are settled, what "in progress" actually means. They used to travel by osmosis. Once everyone on the team is coding with an agent, osmosis stops working, because half the conversation now happens in someone's private session. This is the one-page agreement we ended up writing down, and why each clause is in it.&lt;/p&gt;

&lt;p&gt;When every developer on a team codes with an AI agent, one of the first things to break down can be the unwritten rules. Small, shared assumptions that once traveled through everyday conversation ("ask before you touch auth," "we decided on v2 last week") may not reach a teammate's private session — let alone the agent working in it.&lt;/p&gt;

&lt;p&gt;The established fix for that is a &lt;em&gt;working agreement&lt;/em&gt;: a short, explicit set of norms a team writes for itself. This one is designed for AI-assisted teams — a page you can copy, adapt, and keep somewhere every teammate can access and every agent is configured to read.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a working agreement is — and isn't
&lt;/h2&gt;

&lt;p&gt;A working agreement is a team norm, written by the team, kept short, and revised as you learn. It is &lt;strong&gt;not&lt;/strong&gt; a tool, and not a policy handed down from above. It doesn't &lt;em&gt;enforce&lt;/em&gt; anything — it &lt;em&gt;aligns&lt;/em&gt; behavior. That's precisely why it survives across whatever mix of editors and agents your team actually uses: it lives at the human layer, above any one tool.&lt;/p&gt;

&lt;p&gt;If you've run agile ceremonies, you've seen these before. What's new is that agents now perform part of the work, so a few assumptions that people may have absorbed implicitly need to be written down. Accountability still stays with people.&lt;/p&gt;

&lt;h2&gt;
  
  
  The template
&lt;/h2&gt;

&lt;p&gt;Copy this, cut what doesn't fit, and fill in the blanks. Keep it to a page.&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;# Our AI Coding Working Agreement (v1)&lt;/span&gt;

&lt;span class="gu"&gt;## 1. Shared decisions&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Decisions that affect others live in: ______ (a shared memory, a decisions doc).
&lt;span class="p"&gt;-&lt;/span&gt; Before a decision affects someone else's work, we record who decided it, what changed, and why.

&lt;span class="gu"&gt;## 2. Declaring work&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Before starting, we record the intended outcome, owner, and active paths in: ______.
&lt;span class="p"&gt;-&lt;/span&gt; "In progress" includes the current state, next action, and next check-in — not just a status.

&lt;span class="gu"&gt;## 3. Handoffs&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; When work changes hands — session, machine, person, or tool — we carry four things:
  recent decisions, current state and next action, open questions, and active or unmerged paths.

&lt;span class="gu"&gt;## 4. Review &amp;amp; merge&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Git is the source of truth for committed code. Every change is reviewed by a human before it merges.
&lt;span class="p"&gt;-&lt;/span&gt; Agents propose; people approve. A named person owns the change and its follow-up after merge.

&lt;span class="gu"&gt;## 5. Conflict &amp;amp; escalation&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; If active work overlaps, the first current claim gets priority; the later starter coordinates.
&lt;span class="p"&gt;-&lt;/span&gt; We release claims when work stops and review stale claims after: ______.
&lt;span class="p"&gt;-&lt;/span&gt; Unresolved disagreements go to: ______ (a person, not a tool).

&lt;span class="ge"&gt;_Revised: _&lt;/span&gt;&lt;span class="gs"&gt;____&lt;/span&gt;&lt;span class="ge"&gt;_. This is v1 — change it as we learn._&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That block is the whole deliverable. Everything below is just why each clause is there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why each clause earns its place
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Shared decisions.&lt;/strong&gt; Re-deciding can be a costly habit on an AI-assisted team. One session concludes "money is integer cents"; another, a day later on another machine, quietly picks floats. Recording decisions somewhere every authorized agent can retrieve turns "we decided" into evidence the next agent can use. (This is one part of the broader &lt;a href="https://vibsync.com/blog/why-ai-coding-can-slow-teams-down" rel="noopener noreferrer"&gt;coordination cost of AI coding agents&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Declaring work.&lt;/strong&gt; "Who's on the payments refactor?" should have an answer without a chat poll. Declaring the outcome, owner, and active scope up front helps prevent two people — and two agents — from doing the same thing, or from each assuming the other had it. A next check-in also keeps abandoned work from looking active forever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Handoffs.&lt;/strong&gt; Work changes hands constantly. Committed code has a durable record; live context is easier to drop. The four items in the clause are worth carrying every time — there is a fuller &lt;a href="https://vibsync.com/blog/ai-coding-agent-handoff" rel="noopener noreferrer"&gt;handoff playbook&lt;/a&gt; if you want the detail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Review &amp;amp; merge.&lt;/strong&gt; Agents make it cheap to generate a lot of plausible change. That raises the value of the human gate rather than lowering it. Naming Git as the source of truth for committed code and a person as the accountable owner helps keep speed from turning into unreviewed risk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Conflict &amp;amp; escalation.&lt;/strong&gt; Two things collide on a team: edits and opinions. For edits, a simple rule — a current claim gets priority, a later starter coordinates, and stale claims expire — can reduce avoidable merge work. For opinions, the important word is &lt;em&gt;person&lt;/em&gt;: an agent can surface a disagreement, but a human resolves it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making it real
&lt;/h2&gt;

&lt;p&gt;The agreement is tool-agnostic — you can run v1 on a shared document and a chat channel today. Three clauses especially benefit from being &lt;em&gt;current and machine-readable&lt;/em&gt;: the decisions in §1, the who's-on-what in §2, and the claims in §5. A document works only when each client knows to load it and people keep its high-churn state current.&lt;/p&gt;

&lt;p&gt;That is the part a shared layer like &lt;a href="https://vibsync.com/" rel="noopener noreferrer"&gt;Vibsync&lt;/a&gt; is for. At the start of a session, an authorized agent can call &lt;code&gt;onboard&lt;/code&gt; and &lt;code&gt;recall&lt;/code&gt; to retrieve current decisions, declare work and &lt;a href="https://vibsync.com/agent-coordination" rel="noopener noreferrer"&gt;claim a path before editing&lt;/a&gt;, and ask or answer across sessions. Because the state is exposed over MCP, Claude Code, Cursor, and Codex can access the same team context when each is configured and connected to that team. The &lt;a href="https://vibsync.com/shared-memory" rel="noopener noreferrer"&gt;shared memory&lt;/a&gt; supports §1; claims and the task board make §2 and §5 operational.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep it honest
&lt;/h2&gt;

&lt;p&gt;An agreement is a norm, not an enforcement mechanism, and it works because people choose to follow it. A claim is &lt;strong&gt;advisory&lt;/strong&gt; — it helps well-behaved agents stay out of each other's way; it does not lock a file. Git, review, and CI remain your real safety nets. And responsibility stays with people: an agent can act, but a named person owns the decision and its outcome.&lt;/p&gt;

&lt;p&gt;Start with the five clauses above, fill in the blanks with the tools you already use, and put the agreement where teammates and their agents can retrieve it. &lt;a href="https://vibsync.com/getting-started" rel="noopener noreferrer"&gt;Try Vibsync free during beta&lt;/a&gt; if you want §1, §2, and §5 available to every authorized agent across sessions and tools.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Vibsync is built by LOOSEDAYS Co., Ltd.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://vibsync.com/blog/ai-coding-team-working-agreement" rel="noopener noreferrer"&gt;https://vibsync.com/blog/ai-coding-team-working-agreement&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>teamwork</category>
      <category>mcp</category>
    </item>
    <item>
      <title>How to Hand Off AI Coding Work Across Sessions, Machines, and Tools</title>
      <dc:creator>Seiji Nakaya</dc:creator>
      <pubDate>Mon, 10 Aug 2026 04:05:06 +0000</pubDate>
      <link>https://dev.to/_3ffb5be7950c3a975b5d/how-to-hand-off-ai-coding-work-across-sessions-machines-and-tools-325h</link>
      <guid>https://dev.to/_3ffb5be7950c3a975b5d/how-to-hand-off-ai-coding-work-across-sessions-machines-and-tools-325h</guid>
      <description>&lt;p&gt;Most of us now switch between Claude Code, Cursor, and Codex during a single feature, and move between a laptop, a devcontainer, and a teammate mid-task. The code survives every one of those hops. The reasoning around it usually doesn't. This is what I've found actually needs to travel, and a short checklist for making it travel.&lt;/p&gt;

&lt;p&gt;Committed code has a durable record in Git. The context &lt;em&gt;around&lt;/em&gt; it often does not: the decision you just made, the task you were halfway through, the question blocking you, and the files you were editing. That context often lives in one session or tool, where it can disappear at the next handoff.&lt;/p&gt;

&lt;p&gt;And in AI-assisted teams, those changes happen constantly. This is a practical guide to handing off AI coding work so the next session — whoever, whatever, and wherever it runs — picks up where the last one left off, instead of starting cold.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three handoffs that happen every day
&lt;/h2&gt;

&lt;p&gt;"Handoff" sounds like a formal ceremony. In practice it's mundane and frequent, and it comes in three flavors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tool → tool.&lt;/strong&gt; You draft with Claude Code, then continue in Codex or Cursor because another tool fits the next step better. Their conversation histories are not shared by default.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Machine → machine.&lt;/strong&gt; Work moves from your laptop to a CI box, a devcontainer, a second machine, or a teammate's laptop. The committed repository state can travel; local transcripts, uncommitted work, and live decisions may not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Person → person.&lt;/strong&gt; A shift ends, someone picks up a stalled PR, an on-call engineer inherits a half-finished migration. The new person's agent has none of the previous one's context.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In all three, the committed repository state can come across intact. The &lt;em&gt;working context&lt;/em&gt; is what falls on the floor.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually gets dropped
&lt;/h2&gt;

&lt;p&gt;It helps to name exactly what's lost, because it's a short list — four things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The decision just made.&lt;/strong&gt; "We're freezing the v1 API for 90 days." Real, agreed, and living only in the session where it was said.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The unfinished task.&lt;/strong&gt; Not just "this is in progress," but &lt;em&gt;where&lt;/em&gt; you were and &lt;em&gt;what's left&lt;/em&gt; — context that a code diff rarely captures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The unanswered question.&lt;/strong&gt; The thing you were blocked on. If it doesn't travel, the next session either re-discovers the blocker or, worse, guesses past it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The active file scope.&lt;/strong&gt; Which paths still have active or unmerged work. Drop this and the next agent may start editing the same file — a collision created at handoff time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most handoff failures are variations on losing one of these four.&lt;/p&gt;

&lt;h2&gt;
  
  
  What repo docs and session resume already cover
&lt;/h2&gt;

&lt;p&gt;You are not starting from nothing — several tools already carry &lt;em&gt;part&lt;/em&gt; of the load. It's worth being precise about where each one stops.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A &lt;a href="https://code.claude.com/docs/en/memory" rel="noopener noreferrer"&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/a&gt; or repo docs.&lt;/strong&gt; Great for &lt;strong&gt;stable, repo-scoped instructions&lt;/strong&gt; — conventions, architecture, "run the tests this way." A committed file travels with the repository. Claude Code loads &lt;code&gt;CLAUDE.md&lt;/code&gt;; other clients may use &lt;code&gt;AGENTS.md&lt;/code&gt; or their own rules files. These documents are durable, but high-churn live state such as "what we decided twenty minutes ago" is a poor fit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git history and pull requests.&lt;/strong&gt; The canonical record of committed code, and of &lt;em&gt;why&lt;/em&gt; when that reasoning is documented. They say little about work with no diff yet: the unfinished task, an open question, or an undocumented decision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session resume.&lt;/strong&gt; &lt;a href="https://code.claude.com/docs/en/sessions" rel="noopener noreferrer"&gt;Claude Code can continue or resume previous conversations&lt;/a&gt;, and other tools have their own history. This provides useful, client-specific conversation continuity. It is not a vendor-neutral record that a teammate or a different tool can reliably inherit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Put together, these cover your &lt;strong&gt;committed code&lt;/strong&gt;, &lt;strong&gt;durable rules&lt;/strong&gt;, and &lt;strong&gt;client-specific continuity&lt;/strong&gt;. They do not create one team-wide record of the four live items across tools, machines, and people. That's the gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Carrying the four across the hop
&lt;/h2&gt;

&lt;p&gt;The way to close it is to put those four items somewhere every authorized agent can retrieve — not in one chat log. That's what &lt;a href="https://vibsync.com/" rel="noopener noreferrer"&gt;Vibsync&lt;/a&gt; provides over &lt;a href="https://modelcontextprotocol.io" rel="noopener noreferrer"&gt;MCP&lt;/a&gt;: a small shared layer agents can read and write, so a handoff carries context, not just code.&lt;/p&gt;

&lt;p&gt;Mapped to the four:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Decisions&lt;/strong&gt; → &lt;code&gt;remember&lt;/code&gt; / &lt;code&gt;recall&lt;/code&gt;. One agent records "v1 frozen 90 days"; a fresh session on another machine recalls it, attributed and scoped. It's the same &lt;a href="https://vibsync.com/shared-memory" rel="noopener noreferrer"&gt;shared team memory&lt;/a&gt; that outlives any single session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unfinished task&lt;/strong&gt; → a shared task board. The half-done work is visible and claimable, with a title, status, and owner. Put the current state and next action in the title so the next session does not have to reconstruct them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unanswered question&lt;/strong&gt; → async &lt;code&gt;ask&lt;/code&gt; / &lt;code&gt;reply&lt;/code&gt;. The blocker is posted once and can be answered when a teammate or agent checks the shared state — it survives the session that raised it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Active file scope&lt;/strong&gt; → &lt;code&gt;claim&lt;/code&gt;. Before editing, a well-behaved agent announces the path; the next agent checks first and stays clear — the same &lt;a href="https://vibsync.com/agent-coordination" rel="noopener noreferrer"&gt;coordinate-before-you-edit&lt;/a&gt; approach that helps keep two agents off the same file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And there is an &lt;code&gt;onboard&lt;/code&gt; call that returns the essentials at once — open tasks, unanswered questions, recent team knowledge, and active claims — so a new session can retrieve the team's current picture in one step instead of being briefed by hand.&lt;/p&gt;

&lt;p&gt;Because it is vendor-neutral, the same endpoint — &lt;code&gt;https://mcp.vibsync.com/mcp&lt;/code&gt; — works with Claude Code, Cursor, and Codex. Each client uses a different configuration format, so follow the client-specific steps in &lt;a href="https://vibsync.com/getting-started" rel="noopener noreferrer"&gt;Getting Started&lt;/a&gt;. Connect each credential to the same Vibsync team, then call &lt;code&gt;onboard&lt;/code&gt; to retrieve the shared state. A task claimed in one client is then visible from another.&lt;/p&gt;

&lt;h2&gt;
  
  
  A handoff checklist
&lt;/h2&gt;

&lt;p&gt;Keep this somewhere your team can see it. It's short on purpose.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before you hand off:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Is the decision you just made written down where another agent can read it — not just in this chat?&lt;/li&gt;
&lt;li&gt;Does the unfinished task record &lt;em&gt;where you are&lt;/em&gt; and &lt;em&gt;what's next&lt;/em&gt;, not only "in progress"?&lt;/li&gt;
&lt;li&gt;Is the question you were blocked on posted, so it can be answered later?&lt;/li&gt;
&lt;li&gt;Is your active file scope released, or clearly marked as still yours?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;When you pick up:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pull the current context first (with Vibsync, one &lt;code&gt;onboard&lt;/code&gt; call) before writing anything.&lt;/li&gt;
&lt;li&gt;Read the recent decisions before you re-derive them.&lt;/li&gt;
&lt;li&gt;Check who's on what, and claim your path before you edit it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If your team can answer those, a handoff stops being a reset.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;p&gt;A shared layer like this carries &lt;em&gt;context&lt;/em&gt; — it is not your code store, and Git stays the source of truth. A &lt;code&gt;claim&lt;/code&gt; is an &lt;strong&gt;advisory&lt;/strong&gt; signal that helps well-behaved agents avoid each other; it doesn't physically lock a file, and it's no substitute for branch protection, review, or CI. The goal isn't to replace any of that. It's to make sure that when the session, the machine, or the tool changes, the decision, the task, the question, and the file scope change hands with it.&lt;/p&gt;

&lt;p&gt;If your team loses an afternoon every time work crosses a boundary, that's the seam to close. &lt;a href="https://vibsync.com/getting-started" rel="noopener noreferrer"&gt;Try Vibsync free during beta&lt;/a&gt; — connect an agent at &lt;code&gt;mcp.vibsync.com/mcp&lt;/code&gt;, then call &lt;code&gt;onboard&lt;/code&gt; to retrieve the team's current context.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;For the bigger picture on why individual speed doesn't automatically become team speed, see &lt;a href="https://vibsync.com/blog/why-ai-coding-can-slow-teams-down" rel="noopener noreferrer"&gt;the coordination cost of AI coding agents&lt;/a&gt;. Vibsync is built by LOOSEDAYS Co., Ltd.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://vibsync.com/blog/ai-coding-agent-handoff" rel="noopener noreferrer"&gt;https://vibsync.com/blog/ai-coding-agent-handoff&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>mcp</category>
    </item>
    <item>
      <title>AI Makes Developers Faster. Why Can It Make Teams Slower?</title>
      <dc:creator>Seiji Nakaya</dc:creator>
      <pubDate>Sun, 02 Aug 2026 21:33:13 +0000</pubDate>
      <link>https://dev.to/_3ffb5be7950c3a975b5d/ai-makes-developers-faster-why-can-it-make-teams-slower-13kl</link>
      <guid>https://dev.to/_3ffb5be7950c3a975b5d/ai-makes-developers-faster-why-can-it-make-teams-slower-13kl</guid>
      <description>&lt;p&gt;&lt;em&gt;This was first published on the &lt;a href="https://vibsync.com/blog/why-ai-coding-can-slow-teams-down" rel="noopener noreferrer"&gt;Vibsync blog&lt;/a&gt;. Reposting for the DEV community.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The short version:&lt;/strong&gt; AI reliably makes each developer faster. Whether it makes the &lt;em&gt;team&lt;/em&gt; faster is a separate question — and the gap between the two is where a lot of quiet cost hides. Below: the five coordination costs that eat the difference, a ten-question diagnostic, and five operating principles.&lt;/p&gt;




&lt;p&gt;Picture three developers, three AI coding agents, and one repository. Each developer can now produce candidate code, tests, and refactors faster than before. Yet releases move at the same pace, review queues grow, and the same facts keep getting rediscovered.&lt;/p&gt;

&lt;p&gt;That's not a paradox, and it isn't a reason to slow anyone down. It's a reminder that &lt;strong&gt;individual speed and team speed are different quantities&lt;/strong&gt;, and AI coding agents scale the first far more easily than the second. Give everyone a faster typewriter and you get more pages — not necessarily a better book, written faster, by a group.&lt;/p&gt;

&lt;h2&gt;
  
  
  Individual output is not team throughput
&lt;/h2&gt;

&lt;p&gt;It's worth separating two things we tend to blur:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Individual output&lt;/strong&gt; — how much finished work one developer (plus their agent) produces.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team throughput&lt;/strong&gt; — how much &lt;em&gt;shippable, coherent&lt;/em&gt; work the group produces together, after review, rework, waiting, and reconciling everyone's changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI agents lift individual output directly. Team throughput is what's left after the coordination overhead is paid, and that overhead doesn't shrink just because each person got faster. A useful way to hold it in your head — not as a formula to compute, just as a shape:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;team throughput ≈ the sum of local speed-ups − rework − waiting − reconciliation&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When you add agents, the first term grows. If nothing else changes, the last three grow too — because there's now &lt;em&gt;more&lt;/em&gt; work in flight, produced faster, by people who can't all see what the others are doing. The interesting question for a team lead isn't "how do I make everyone faster?" It's "which of those subtraction terms is my real ceiling?"&lt;/p&gt;

&lt;p&gt;There's some external signal here worth taking seriously. In one &lt;a href="https://metr.org/Early_2025_AI_Experienced_OS_Devs_Study-paper.pdf" rel="noopener noreferrer"&gt;2025 study of experienced open-source developers&lt;/a&gt;, participants working on mature codebases they knew well completed the measured tasks more slowly with AI assistance, even though they expected AI to speed them up. The conditions were specific, so this does not generalize to "AI slows you down." The narrower lesson is more useful: &lt;strong&gt;perceived speed and measured task time can diverge.&lt;/strong&gt; And the 2025 &lt;a href="https://dora.dev/research/2025/dora-report/" rel="noopener noreferrer"&gt;DORA report&lt;/a&gt; frames AI as an amplifier — it magnifies the strengths &lt;em&gt;and&lt;/em&gt; the dysfunctions an organization already has. That suggests weak coordination can become more costly as AI increases the amount of work in flight.&lt;/p&gt;

&lt;h2&gt;
  
  
  The five coordination costs
&lt;/h2&gt;

&lt;p&gt;When AI raises individual output without improving collective delivery, the gap often comes from some mix of these five costs. None of them are new — AI can raise the volume and the speed at which they hit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Duplicated discovery.&lt;/strong&gt; One person's agent works out that the staging database resets nightly, or that a module must stay backward-compatible during a migration. That fact is real and hard-won — and it lives in one chat history. The next agent, on another machine, re-derives it from scratch, or worse, derives the opposite. The team keeps paying for the same lesson.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Decision drift.&lt;/strong&gt; Someone decides "we're standardizing on integer cents, never floats." It's correct, it's stated aloud once, and then three agents that never heard it quietly make three different choices. Nobody disagreed; the decision just didn't travel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Ownership ambiguity.&lt;/strong&gt; With everyone moving fast, "who's on the payments refactor right now?" stops having an obvious answer. Two people pick it up, or nobody does because each assumed the other had it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Handoff loss.&lt;/strong&gt; Work moves between a morning session and an afternoon one, between a laptop and a CI box, between one developer and the teammate covering for them — or between Claude Code and Codex. Each hop drops context: the decision just made, the task half-finished, the question still open, the files someone was mid-edit on. (This one has its own playbook: &lt;a href="https://vibsync.com/blog/ai-coding-agent-handoff" rel="noopener noreferrer"&gt;handing off AI coding work across sessions, machines, and tools&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Collision and reconciliation.&lt;/strong&gt; Two agents edit overlapping parts of the same file on two branches. Git faithfully reports the conflict — &lt;em&gt;after&lt;/em&gt; both sides did the work. The collision was created hours earlier, when neither side knew the other had started. Now someone spends the afternoon untangling it.&lt;/p&gt;

&lt;p&gt;Notice what these have in common: they are not primarily model-capability problems, so a better model or a faster agent does not fix them by itself. They are &lt;em&gt;coordination&lt;/em&gt; problems, and they can get worse precisely when individual work gets faster.&lt;/p&gt;

&lt;p&gt;This is where an old idea earns a one-paragraph cameo. Fred Brooks observed decades ago that adding people to a late software project can make it later, because communication paths multiply faster than hands. AI agents are not people, and this is not Brooks's Law replayed — but the shape rhymes. Teams now have more fast-moving sources of code, and if the communication paths around them do not scale, coordination can consume the local gains. A related, bounded analogy comes from &lt;a href="https://en.wikipedia.org/wiki/Conway%27s_law" rel="noopener noreferrer"&gt;Conway's Law&lt;/a&gt;: when decisions fragment across people who are not communicating, that fragmentation can surface in the system they build.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five operating principles that cut the cost
&lt;/h2&gt;

&lt;p&gt;The fix isn't to slow anyone down. It's to make the coordination that used to happen implicitly in a small, synchronous team happen explicitly — because you cannot assume that every agent has read your Slack or can see the context in a teammate's private session.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Shared decisions travel.&lt;/strong&gt; When someone settles a rule — "v1 API frozen for 90 days" — it should land somewhere every agent can retrieve when it starts, not in one chat. Decide once; make the decision available to every agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ownership is visible.&lt;/strong&gt; "Who's on what" should be a live, shared picture, not something you reconstruct by asking around after two people already collided.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handoffs are explicit.&lt;/strong&gt; Moving work across a session, a machine, a person, or a tool should carry the decision, the unfinished task, the open question, and the active file scope — not just the code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Coordinate before the edit, not after.&lt;/strong&gt; The cheapest time to catch a same-file collision is &lt;em&gt;before&lt;/em&gt; the second agent starts, when it's a five-second check, not a merge to untangle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git stays the source of truth.&lt;/strong&gt; None of this replaces branches, review, or CI. Coordination sits &lt;em&gt;before&lt;/em&gt; those safety nets so they have less to catch. Keep code in Git; keep the fast-moving decisions and coordination beside it.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A ten-question diagnostic
&lt;/h2&gt;

&lt;p&gt;Run this against your own team. Each "no" is a coordination cost you're probably paying without seeing it on any dashboard.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;When one person's agent learns something non-obvious about the codebase, can a &lt;em&gt;different&lt;/em&gt; teammate's agent get that fact tomorrow without asking a human?&lt;/li&gt;
&lt;li&gt;If someone makes a decision at 4pm, will an agent that starts a fresh session at 5pm on another machine follow it?&lt;/li&gt;
&lt;li&gt;Can anyone tell, right now, which files or modules a teammate is actively working on?&lt;/li&gt;
&lt;li&gt;When work moves between machines or people, does the &lt;em&gt;unfinished&lt;/em&gt; part and the &lt;em&gt;open questions&lt;/em&gt; travel — or just the committed code?&lt;/li&gt;
&lt;li&gt;Before an agent starts editing a module, is there a cheap way for it to learn a teammate already started?&lt;/li&gt;
&lt;li&gt;Do your agents re-explain the same context ("money is integer cents," "don't touch auth this week") at the start of every session?&lt;/li&gt;
&lt;li&gt;When two people finish, how often do you &lt;em&gt;discover&lt;/em&gt; the overlap only at merge time?&lt;/li&gt;
&lt;li&gt;Is your "team memory" a document someone has to remember to update and point an agent at — or something agents read and write themselves?&lt;/li&gt;
&lt;li&gt;Can a new teammate (or a new agent) get the team's current decisions, open tasks, and who-owns-what in roughly one step?&lt;/li&gt;
&lt;li&gt;Does more individual speed currently translate into more shipped-and-reconciled work — or into more rework and review?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you answered "no" to several, your ceiling isn't how fast anyone codes. It's coordination — and that's a more tractable problem than it looks, because most of it is about making implicit context explicit and shared.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where a shared coordination layer fits
&lt;/h2&gt;

&lt;p&gt;This is the gap &lt;a href="https://vibsync.com/" rel="noopener noreferrer"&gt;Vibsync&lt;/a&gt; is built for. It gives a team's AI coding agents a small shared layer over MCP — &lt;a href="https://vibsync.com/shared-memory" rel="noopener noreferrer"&gt;durable team memory&lt;/a&gt; so a fresh session on another machine can retrieve a decision one agent recorded, async Q&amp;amp;A across teammates and their agents, a shared task board, and &lt;a href="https://vibsync.com/agent-coordination" rel="noopener noreferrer"&gt;file-claim coordination&lt;/a&gt; so an agent can check &lt;em&gt;before&lt;/em&gt; it edits whether a teammate already holds that path. It's vendor-neutral — Claude Code, Cursor, and Codex connect to the same endpoint — and it deliberately does &lt;strong&gt;not&lt;/strong&gt; ingest your source. Git stays the source of truth; Vibsync carries the decisions and coordination around it.&lt;/p&gt;

&lt;p&gt;To be honest about the boundary: a file claim is an &lt;em&gt;advisory&lt;/em&gt; signal, not a hard lock — it helps well-behaved agents stay out of each other's way, it doesn't physically prevent an edit, and it's no substitute for review or branch protection. The point isn't magic. It's paying the coordination cost once, up front and in the open, instead of five times over at merge time.&lt;/p&gt;

&lt;p&gt;If your team got individually faster with AI but not collectively faster, that's the seam to look at first. &lt;a href="https://vibsync.com/getting-started" rel="noopener noreferrer"&gt;Try Vibsync free during beta&lt;/a&gt; — connect an agent to &lt;code&gt;mcp.vibsync.com/mcp&lt;/code&gt;, then call &lt;code&gt;onboard&lt;/code&gt; to retrieve the team's current context in one brief.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Vibsync is built by LOOSEDAYS Co., Ltd.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>devtools</category>
    </item>
    <item>
      <title>How to Prevent Multiple AI Coding Agents from Editing the Same Files</title>
      <dc:creator>Seiji Nakaya</dc:creator>
      <pubDate>Fri, 31 Jul 2026 14:01:20 +0000</pubDate>
      <link>https://dev.to/_3ffb5be7950c3a975b5d/how-to-prevent-multiple-ai-coding-agents-from-editing-the-same-files-4aib</link>
      <guid>https://dev.to/_3ffb5be7950c3a975b5d/how-to-prevent-multiple-ai-coding-agents-from-editing-the-same-files-4aib</guid>
      <description>&lt;p&gt;A team of developers, each running their own AI coding agent, is fast — right up until two agents refactor the same file at the same time. One overwrites the other's work, or you discover the collision at merge time and spend the afternoon untangling it.&lt;/p&gt;

&lt;p&gt;You can't always prevent this with Git alone: by the time there's a conflicting commit, both agents have already done the work. The goal is to coordinate &lt;em&gt;intent&lt;/em&gt; — before the edits happen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is different from a merge conflict
&lt;/h2&gt;

&lt;p&gt;A merge conflict is detected &lt;em&gt;after&lt;/em&gt; both sides changed the code. What you actually want is to know, &lt;em&gt;before you start&lt;/em&gt;, that a teammate's agent is already rewriting the module you're about to touch. That's an intent problem, not a diff problem, so branch protection and CI don't solve it — they run too late.&lt;/p&gt;

&lt;h2&gt;
  
  
  Approaches teams use
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Talk in Slack first.&lt;/strong&gt; "I'm taking the payments client." Works with a small, synchronous team, but it relies on humans remembering to announce, and agents don't read your Slack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assign files to people up front.&lt;/strong&gt; A spreadsheet or a CODEOWNERS-style split. Reduces overlap, but it's coarse and goes stale the moment work shifts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feature branches / worktrees.&lt;/strong&gt; Isolation helps for parallel &lt;em&gt;features&lt;/em&gt;, but two agents can still target the same file on different branches and collide at merge. Isolation delays the collision; it doesn't coordinate intent. Git's own &lt;a href="https://git-scm.com/docs/gitworkflows" rel="noopener noreferrer"&gt;workflow documentation&lt;/a&gt; is still the right foundation for review and integration — it simply operates at a different layer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A shared claim/lease.&lt;/strong&gt; Before editing, an agent announces intent on a shared store — "I'm working on &lt;code&gt;src/payments/**&lt;/code&gt;." Another agent checks that store first and sees the path is taken. This is the only approach that coordinates &lt;em&gt;before&lt;/em&gt; the edit, across people and machines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Be honest about what a claim is
&lt;/h2&gt;

&lt;p&gt;A claim is an &lt;strong&gt;advisory lock&lt;/strong&gt;, not a hard lock. It's a shared signal that a path is spoken for, and well-behaved agents check it and stay out of the way. It does &lt;strong&gt;not&lt;/strong&gt; physically prevent someone from editing the file, and it isn't a substitute for code review or branch protection. Any tool that promises literal "zero collisions" is overselling — the honest promise is &lt;em&gt;fewer surprise collisions, caught before the work, when agents check first.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Used that way, advisory claims remove most same-file clobbering: the second agent sees the path is held, reports back instead of editing, and you coordinate or pick different work.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like with Vibsync
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://vibsync.com/" rel="noopener noreferrer"&gt;Vibsync&lt;/a&gt; gives agents this coordination layer over MCP. Before touching a path, an agent runs &lt;code&gt;check_conflicts&lt;/code&gt; and &lt;code&gt;claim&lt;/code&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You: "Refactor the payments client — claim it first."&lt;br&gt;
Agent: "&lt;code&gt;claim&lt;/code&gt; came back &lt;strong&gt;blocked&lt;/strong&gt; — carol already holds &lt;code&gt;src/payments/**&lt;/code&gt;. I didn't edit anything. Want me to coordinate, wait, or take an unclaimed task instead?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent that would have collided finds out &lt;em&gt;before&lt;/em&gt; writing a line, and nothing gets clobbered. Claims sit alongside durable team memory and a shared task board, so "who's on what" is one shared, live picture — not a Slack thread agents can't read.&lt;/p&gt;

&lt;p&gt;To be clear about the boundary: Git remains the source of truth and your safety net (review, branch protection, CI). Vibsync's claims coordinate intent &lt;em&gt;before&lt;/em&gt; the edit so those safety nets have less to catch.&lt;/p&gt;

&lt;p&gt;If overlapping AI edits are costing your team time, &lt;a href="https://vibsync.com/getting-started" rel="noopener noreferrer"&gt;try Vibsync free during beta&lt;/a&gt; — connect your agent at &lt;code&gt;mcp.vibsync.com/mcp&lt;/code&gt; and have it claim a path before it starts.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Vibsync is built by LOOSEDAYS Co., Ltd.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://vibsync.com/blog/prevent-ai-coding-agents-editing-same-files" rel="noopener noreferrer"&gt;Vibsync blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  #### HASHNODE
&lt;/h6&gt;

&lt;p&gt;A team of developers, each running their own AI coding agent, is fast — right up until two agents refactor the same file at the same time. One overwrites the other's work, or you discover the collision at merge time and spend the afternoon untangling it.&lt;/p&gt;

&lt;p&gt;You can't always prevent this with Git alone: by the time there's a conflicting commit, both agents have already done the work. The goal is to coordinate &lt;em&gt;intent&lt;/em&gt; — before the edits happen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is different from a merge conflict
&lt;/h2&gt;

&lt;p&gt;A merge conflict is detected &lt;em&gt;after&lt;/em&gt; both sides changed the code. What you actually want is to know, &lt;em&gt;before you start&lt;/em&gt;, that a teammate's agent is already rewriting the module you're about to touch. That's an intent problem, not a diff problem, so branch protection and CI don't solve it — they run too late.&lt;/p&gt;

&lt;h2&gt;
  
  
  Approaches teams use
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Talk in Slack first.&lt;/strong&gt; "I'm taking the payments client." Works with a small, synchronous team, but it relies on humans remembering to announce, and agents don't read your Slack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assign files to people up front.&lt;/strong&gt; A spreadsheet or a CODEOWNERS-style split. Reduces overlap, but it's coarse and goes stale the moment work shifts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feature branches / worktrees.&lt;/strong&gt; Isolation helps for parallel &lt;em&gt;features&lt;/em&gt;, but two agents can still target the same file on different branches and collide at merge. Isolation delays the collision; it doesn't coordinate intent. Git's own &lt;a href="https://git-scm.com/docs/gitworkflows" rel="noopener noreferrer"&gt;workflow documentation&lt;/a&gt; is still the right foundation for review and integration — it simply operates at a different layer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A shared claim/lease.&lt;/strong&gt; Before editing, an agent announces intent on a shared store — "I'm working on &lt;code&gt;src/payments/**&lt;/code&gt;." Another agent checks that store first and sees the path is taken. This is the only approach that coordinates &lt;em&gt;before&lt;/em&gt; the edit, across people and machines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Be honest about what a claim is
&lt;/h2&gt;

&lt;p&gt;A claim is an &lt;strong&gt;advisory lock&lt;/strong&gt;, not a hard lock. It's a shared signal that a path is spoken for, and well-behaved agents check it and stay out of the way. It does &lt;strong&gt;not&lt;/strong&gt; physically prevent someone from editing the file, and it isn't a substitute for code review or branch protection. Any tool that promises literal "zero collisions" is overselling — the honest promise is &lt;em&gt;fewer surprise collisions, caught before the work, when agents check first.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Used that way, advisory claims remove most same-file clobbering: the second agent sees the path is held, reports back instead of editing, and you coordinate or pick different work.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like with Vibsync
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://vibsync.com/" rel="noopener noreferrer"&gt;Vibsync&lt;/a&gt; gives agents this coordination layer over MCP. Before touching a path, an agent runs &lt;code&gt;check_conflicts&lt;/code&gt; and &lt;code&gt;claim&lt;/code&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You: "Refactor the payments client — claim it first."&lt;br&gt;
Agent: "&lt;code&gt;claim&lt;/code&gt; came back &lt;strong&gt;blocked&lt;/strong&gt; — carol already holds &lt;code&gt;src/payments/**&lt;/code&gt;. I didn't edit anything. Want me to coordinate, wait, or take an unclaimed task instead?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent that would have collided finds out &lt;em&gt;before&lt;/em&gt; writing a line, and nothing gets clobbered. Claims sit alongside durable team memory and a shared task board, so "who's on what" is one shared, live picture — not a Slack thread agents can't read.&lt;/p&gt;

&lt;p&gt;To be clear about the boundary: Git remains the source of truth and your safety net (review, branch protection, CI). Vibsync's claims coordinate intent &lt;em&gt;before&lt;/em&gt; the edit so those safety nets have less to catch.&lt;/p&gt;

&lt;p&gt;If overlapping AI edits are costing your team time, &lt;a href="https://vibsync.com/getting-started" rel="noopener noreferrer"&gt;try Vibsync free during beta&lt;/a&gt; — connect your agent at &lt;code&gt;mcp.vibsync.com/mcp&lt;/code&gt; and have it claim a path before it starts.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Vibsync is built by LOOSEDAYS Co., Ltd.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://vibsync.com/blog/prevent-ai-coding-agents-editing-same-files" rel="noopener noreferrer"&gt;Vibsync blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>git</category>
    </item>
    <item>
      <title>Claude Code Team Memory: CLAUDE.md, Git, or MCP?</title>
      <dc:creator>Seiji Nakaya</dc:creator>
      <pubDate>Thu, 30 Jul 2026 07:24:53 +0000</pubDate>
      <link>https://dev.to/_3ffb5be7950c3a975b5d/claude-code-team-memory-claudemd-git-or-mcp-5and</link>
      <guid>https://dev.to/_3ffb5be7950c3a975b5d/claude-code-team-memory-claudemd-git-or-mcp-5and</guid>
      <description>&lt;p&gt;If a team wants its Claude Code agents to remember decisions and context, three tools come up: a &lt;code&gt;CLAUDE.md&lt;/code&gt; file, Git itself, and an MCP memory server. They're often framed as competitors. They're not — they cover different layers. Here's the boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;CLAUDE.md&lt;/code&gt;: standing instructions, per repo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://code.claude.com/docs/en/memory" rel="noopener noreferrer"&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/a&gt; is a file Claude Code reads automatically. It's the right home for &lt;strong&gt;stable, repo-scoped conventions&lt;/strong&gt;: coding style, architecture notes, "run the tests with this command," "money is integer cents."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good at:&lt;/strong&gt; durable rules that rarely change; zero setup; versioned with the code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it stops:&lt;/strong&gt; it's static and per-repo. It's a poor fit for "what did we decide this morning," which changes daily, and it doesn't cross repos or capture a decision &lt;em&gt;at the moment an agent makes one&lt;/em&gt;. It also doesn't help two agents avoid editing the same file right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Git: the source of truth for code
&lt;/h2&gt;

&lt;p&gt;Git already stores your code and its history, and commit messages/PRs explain &lt;em&gt;why a change happened&lt;/em&gt;. Some teams try to extend this into a shared "memory" — a Markdown vault or changelog committed to a repo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good at:&lt;/strong&gt; it is, and should remain, the canonical record of the code itself. Attribution and history come for free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it stops:&lt;/strong&gt; most coordination context has no diff to attach to — "don't touch this module yet," "we're standardizing on X," "who's working on payments." Pushing that into Git turns coordination into a file that has to be pulled, merged, and resolved. Merge conflicts are exactly the thing you're trying to avoid, and a committed vault reintroduces them. Git is also poll-based: an agent only sees an update after a fetch, not the moment it's written.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCP memory: the working context around the code
&lt;/h2&gt;

&lt;p&gt;An MCP memory server gives agents a small shared store they read and write through tools, live, across sessions and machines. &lt;a href="https://modelcontextprotocol.io/docs/getting-started/intro" rel="noopener noreferrer"&gt;MCP is an open standard&lt;/a&gt; for connecting AI applications to external systems. This is the layer for &lt;strong&gt;the decisions and context that never make it into a commit&lt;/strong&gt; — and, in some tools, for coordination primitives like file claims and a task board.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good at:&lt;/strong&gt; capturing a decision the instant an agent makes it; serving it to a &lt;em&gt;different&lt;/em&gt; agent on a &lt;em&gt;different&lt;/em&gt; machine on connect; staying vendor-neutral (any MCP client — Claude Code, Cursor, Codex).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it stops:&lt;/strong&gt; it is not your code store. It shouldn't try to be Git, and a good one won't fetch or clone your repositories.&lt;/p&gt;

&lt;h2&gt;
  
  
  The boundary, in one line
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Git&lt;/strong&gt; is the source of truth for &lt;em&gt;code&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/strong&gt; holds &lt;em&gt;stable, per-repo instructions&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP memory&lt;/strong&gt; holds the &lt;em&gt;live, cross-machine decisions and coordination&lt;/em&gt; around the code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They compose. Keep code in Git, keep conventions in &lt;code&gt;CLAUDE.md&lt;/code&gt;, and put the fast-moving team context — "we decided v2," "carol holds payments," "is the API frozen?" — in a shared MCP layer where every agent can read and write it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Vibsync fits
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://vibsync.com/" rel="noopener noreferrer"&gt;Vibsync&lt;/a&gt; is that MCP layer: durable team memory (&lt;code&gt;remember&lt;/code&gt; / &lt;code&gt;recall&lt;/code&gt;), async agent-to-agent Q&amp;amp;A (&lt;code&gt;ask&lt;/code&gt; / &lt;code&gt;reply&lt;/code&gt;), and file-claim + task coordination — one endpoint, vendor-neutral, bring your own model. It deliberately does &lt;strong&gt;not&lt;/strong&gt; ingest your source; Git stays the source of truth. A decision one agent records is inherited by a fresh session on another machine, without anyone copy-pasting context.&lt;/p&gt;

&lt;p&gt;If your team keeps re-explaining the same decisions to new Claude Code sessions, that's the gap this layer fills. &lt;a href="https://vibsync.com/getting-started" rel="noopener noreferrer"&gt;Try it free during beta&lt;/a&gt; — point your agent at &lt;code&gt;mcp.vibsync.com/mcp&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: this comparison is written by the Vibsync team. Vibsync is built by LOOSEDAYS Co., Ltd.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://vibsync.com/blog/claude-code-team-memory-claude-md-git-or-mcp" rel="noopener noreferrer"&gt;Vibsync blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  #### HASHNODE BODY (below; set fields from the comment)
&lt;/h6&gt;

&lt;p&gt;If a team wants its Claude Code agents to remember decisions and context, three tools come up: a &lt;code&gt;CLAUDE.md&lt;/code&gt; file, Git itself, and an MCP memory server. They're often framed as competitors. They're not — they cover different layers. Here's the boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;CLAUDE.md&lt;/code&gt;: standing instructions, per repo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://code.claude.com/docs/en/memory" rel="noopener noreferrer"&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/a&gt; is a file Claude Code reads automatically. It's the right home for &lt;strong&gt;stable, repo-scoped conventions&lt;/strong&gt;: coding style, architecture notes, "run the tests with this command," "money is integer cents."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good at:&lt;/strong&gt; durable rules that rarely change; zero setup; versioned with the code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it stops:&lt;/strong&gt; it's static and per-repo. It's a poor fit for "what did we decide this morning," which changes daily, and it doesn't cross repos or capture a decision &lt;em&gt;at the moment an agent makes one&lt;/em&gt;. It also doesn't help two agents avoid editing the same file right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Git: the source of truth for code
&lt;/h2&gt;

&lt;p&gt;Git already stores your code and its history, and commit messages/PRs explain &lt;em&gt;why a change happened&lt;/em&gt;. Some teams try to extend this into a shared "memory" — a Markdown vault or changelog committed to a repo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good at:&lt;/strong&gt; it is, and should remain, the canonical record of the code itself. Attribution and history come for free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it stops:&lt;/strong&gt; most coordination context has no diff to attach to — "don't touch this module yet," "we're standardizing on X," "who's working on payments." Pushing that into Git turns coordination into a file that has to be pulled, merged, and resolved. Merge conflicts are exactly the thing you're trying to avoid, and a committed vault reintroduces them. Git is also poll-based: an agent only sees an update after a fetch, not the moment it's written.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCP memory: the working context around the code
&lt;/h2&gt;

&lt;p&gt;An MCP memory server gives agents a small shared store they read and write through tools, live, across sessions and machines. &lt;a href="https://modelcontextprotocol.io/docs/getting-started/intro" rel="noopener noreferrer"&gt;MCP is an open standard&lt;/a&gt; for connecting AI applications to external systems. This is the layer for &lt;strong&gt;the decisions and context that never make it into a commit&lt;/strong&gt; — and, in some tools, for coordination primitives like file claims and a task board.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good at:&lt;/strong&gt; capturing a decision the instant an agent makes it; serving it to a &lt;em&gt;different&lt;/em&gt; agent on a &lt;em&gt;different&lt;/em&gt; machine on connect; staying vendor-neutral (any MCP client — Claude Code, Cursor, Codex).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it stops:&lt;/strong&gt; it is not your code store. It shouldn't try to be Git, and a good one won't fetch or clone your repositories.&lt;/p&gt;

&lt;h2&gt;
  
  
  The boundary, in one line
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Git&lt;/strong&gt; is the source of truth for &lt;em&gt;code&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/strong&gt; holds &lt;em&gt;stable, per-repo instructions&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP memory&lt;/strong&gt; holds the &lt;em&gt;live, cross-machine decisions and coordination&lt;/em&gt; around the code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They compose. Keep code in Git, keep conventions in &lt;code&gt;CLAUDE.md&lt;/code&gt;, and put the fast-moving team context — "we decided v2," "carol holds payments," "is the API frozen?" — in a shared MCP layer where every agent can read and write it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Vibsync fits
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://vibsync.com/" rel="noopener noreferrer"&gt;Vibsync&lt;/a&gt; is that MCP layer: durable team memory (&lt;code&gt;remember&lt;/code&gt; / &lt;code&gt;recall&lt;/code&gt;), async agent-to-agent Q&amp;amp;A (&lt;code&gt;ask&lt;/code&gt; / &lt;code&gt;reply&lt;/code&gt;), and file-claim + task coordination — one endpoint, vendor-neutral, bring your own model. It deliberately does &lt;strong&gt;not&lt;/strong&gt; ingest your source; Git stays the source of truth. A decision one agent records is inherited by a fresh session on another machine, without anyone copy-pasting context.&lt;/p&gt;

&lt;p&gt;If your team keeps re-explaining the same decisions to new Claude Code sessions, that's the gap this layer fills. &lt;a href="https://vibsync.com/getting-started" rel="noopener noreferrer"&gt;Try it free during beta&lt;/a&gt; — point your agent at &lt;code&gt;mcp.vibsync.com/mcp&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: this comparison is written by the Vibsync team. Vibsync is built by LOOSEDAYS Co., Ltd.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://vibsync.com/blog/claude-code-team-memory-claude-md-git-or-mcp" rel="noopener noreferrer"&gt;Vibsync blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>git</category>
      <category>mcp</category>
    </item>
    <item>
      <title>How to Share Claude Code Learnings Across Your Team</title>
      <dc:creator>Seiji Nakaya</dc:creator>
      <pubDate>Tue, 28 Jul 2026 21:58:36 +0000</pubDate>
      <link>https://dev.to/_3ffb5be7950c3a975b5d/how-to-share-claude-code-learnings-across-your-team-57fi</link>
      <guid>https://dev.to/_3ffb5be7950c3a975b5d/how-to-share-claude-code-learnings-across-your-team-57fi</guid>
      <description>&lt;p&gt;Your team adopted AI coding agents, and productivity went up. But something quieter also happened: every developer's agent now learns in isolation.&lt;/p&gt;

&lt;p&gt;One teammate's Claude Code session works out that the API must stay backward-compatible, that a flaky test needs a retry, or that a certain module is off-limits during a migration. That knowledge is real and useful — and it stays trapped in one person's chat history. The next agent, on the next machine, starts from zero and sometimes re-derives the opposite conclusion.&lt;/p&gt;

&lt;p&gt;This post is about the practical ways teams share those learnings, where each one breaks down, and what a shared layer looks like.&lt;/p&gt;

&lt;h2&gt;
  
  
  What counts as a "learning"
&lt;/h2&gt;

&lt;p&gt;It helps to be concrete. The things worth sharing are rarely code — they're the decisions and context around it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Decisions&lt;/strong&gt;: "We're migrating the public API to v2; keep v1 frozen for 90 days."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gotchas&lt;/strong&gt;: "The staging DB resets nightly, so don't rely on seeded rows."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conventions&lt;/strong&gt;: "Money is always integer cents, never floats."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ownership&lt;/strong&gt;: "Carol is refactoring the payments module this week — coordinate first."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are exactly the things that never make it into a commit, and exactly the things a fresh agent needs to not repeat someone's mistake.&lt;/p&gt;

&lt;h2&gt;
  
  
  The usual approaches — and where they stop
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Copy-paste in chat.&lt;/strong&gt; The most common one: a developer pastes context into their agent at the start of each session. It works for a single person, but it doesn't scale to teammates or survive a new session. You become the integration layer, relaying decisions by hand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A shared doc or wiki.&lt;/strong&gt; Better, because it's written down. But docs are static and drift. Nobody updates them mid-task, and an agent has to be explicitly pointed at them. The decision made at 4pm Tuesday rarely lands in the doc before it matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Commit messages and PR descriptions.&lt;/strong&gt; Great for &lt;em&gt;why a change happened&lt;/em&gt;, but they're tied to code that changed. Most coordination context — "don't touch this yet," "we decided X" — has no diff to attach to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A &lt;a href="https://code.claude.com/docs/en/memory" rel="noopener noreferrer"&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; file&lt;/a&gt;.&lt;/strong&gt; A real improvement: it gives one agent standing instructions per repo. But it's per-repo and mostly static — a good place for conventions, a poor place for "what did we decide this morning" that changes daily. (We compare CLAUDE.md, Git, and MCP directly in &lt;a href="https://vibsync.com/blog/claude-code-team-memory-claude-md-git-or-mcp" rel="noopener noreferrer"&gt;Claude Code Team Memory: CLAUDE.md, Git, or MCP?&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;The common thread: each approach either doesn't cross people and machines, or doesn't capture decisions &lt;em&gt;as they happen&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A shared memory the agents read and write themselves
&lt;/h2&gt;

&lt;p&gt;The alternative is to give the agents a small shared memory over &lt;a href="https://modelcontextprotocol.io" rel="noopener noreferrer"&gt;MCP&lt;/a&gt; — one that any agent can write to when it makes a decision, and read from when it starts work.&lt;/p&gt;

&lt;p&gt;Concretely, when one agent settles something, it records it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;remember&lt;/strong&gt; — "Public API moves to v2 under /api/v2; v1 frozen for 90 days." scope: &lt;code&gt;src/api&lt;/code&gt;, by alice.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Later, a &lt;em&gt;different&lt;/em&gt; agent on a &lt;em&gt;different&lt;/em&gt; machine, in a session that was never told anything, asks "what did we decide about the API?" and gets it back — attributed and scoped — because it was written to the team's memory, not to one chat. No re-explaining, no contradiction.&lt;/p&gt;

&lt;p&gt;This is what &lt;a href="https://vibsync.com/" rel="noopener noreferrer"&gt;Vibsync&lt;/a&gt; does: durable team memory, plus async agent-to-agent Q&amp;amp;A and file-claim coordination, exposed as one MCP endpoint that Claude Code, Cursor, Codex, and other clients connect to. Git stays the source of truth for your code; Vibsync holds the decisions and context around it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to start
&lt;/h2&gt;

&lt;p&gt;You don't need to boil the ocean. Start by writing down the three or four decisions your team keeps re-explaining to new sessions, and make them readable by every agent. Whether you use a shared doc, a &lt;code&gt;CLAUDE.md&lt;/code&gt;, or a shared MCP memory, the win is the same: decide it once, and every agent inherits it.&lt;/p&gt;

&lt;p&gt;If you want that to work across people and machines without anyone playing relay, &lt;a href="https://vibsync.com/getting-started" rel="noopener noreferrer"&gt;try Vibsync free during beta&lt;/a&gt; — point your agent at &lt;code&gt;mcp.vibsync.com/mcp&lt;/code&gt; and it inherits the team's memory on connect.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Vibsync is built by LOOSEDAYS Co., Ltd.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://vibsync.com/blog/share-claude-code-learnings-across-your-team" rel="noopener noreferrer"&gt;Vibsync blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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