{"slug": "two-claudes-one-app", "title": "Two Claudes, one app", "summary": "A developer described a lightweight handoff protocol for coordinating two Claude sessions—Claude Code in a local tmux pane and Claude in a browser or phone—working on the same codebase. After scratchpad syncing and per-idea git branches failed, the developer settled on committed markdown in specs/ and memory/ directories, a DEVLOG.md for repeated learnings, git diffs for implementation, and single-purpose commands gated by npm run verify:numbers, linting and a local production build before anything lands on main. The approach reportedly produced zero merge conflicts and zero context drift.", "body_md": "You have Claude Code running in a split tmux pane on your laptop, and Claude open in your browser or phone while away from your desk. Both are working on the same product. Both have access to context, both can draft ideas, and both will happily overwrite each other's work if you don't give them a handshake protocol.\n\nThis isn't about running multi-agent swarm experiments with five synthetic personas. It is about the practical everyday friction of developing with AI across two physical devices without losing the plot.\n\nContext fragmentation is the silent tax of multi-device development.\n\nWhen you kick off an idea from your phone — a architectural critique, a rough feature outline, or an editorial angle — that session doesn't see your local uncommitted worktree. Meanwhile, the CLI session on your laptop has full filesystem access, the compiler, and git, but none of the conversational nuances you just explored on the phone.\n\nIf you paste raw chat transcripts between them, you flood the context window with conversational filler and waste tokens. If you let both edit code concurrently on divergent branches, you spend forty minutes reconciling hallucinated imports and conflicting state schemas.\n\nThe model doesn't know what you did across the room unless you write it down in a medium it can read.\n\nThe temptation is to set up a shared memory sync tool or a cloud pasteboard. I tried keeping an active scratchpad in Notes and pasting blocks back and forth. It failed on the third turn: formatting broke, code blocks lost indentation, and neither Claude knew whether the snippet in front of it was current or superseded ten minutes prior.\n\nNext was branching every quick thought into a remote git branch. That created branch rot: a trail of one-commit branches named `feat/nav-idea-mobile` and `fix/hero-tweak-draft` that required manual squashing and dirty git reflogs.\n\nThe fix came from treating the handoff like a folded paper note passed between desks.\n\nThe rulebook that settled the noise:\n\n`specs/` or `memory/`). If a learning repeats, it enters `DEVLOG.md`.` npm run verify:numbers`, linting, and a local production build on the host machine before any commit lands on `main`.\nThis exact post was born through that loop. The editorial direction and prompt were drafted on the fly; the hero image (`/blog/two-claudes-one-app/hero-studio.jpg`) was generated directly from the terminal via the studio pipeline (`node scripts/gen-blog-hero.mjs`); and the resulting frontmatter block was handed off cleanly to the codebase without a single token wasted on intermediate conversational chatter.\n\nZero merge conflicts. Zero context drift.\n\nWhen you collaborate with AI across multiple surfaces, don't try to build a distributed nervous system. Build a mail slot.\n\nKeep the interface between your sessions dead simple: committed markdown for architecture, git diffs for implementation, and single-purpose commands for execution. The model is sharp enough to pick up the thread instantly if the note you hand it has clean boundaries.", "url": "https://wpnews.pro/news/two-claudes-one-app", "canonical_source": "https://dev.to/hrekov/two-claudes-one-app-133l", "published_at": "2026-10-28 05:39:17+00:00", "updated_at": "2026-10-28 05:41:20.324141+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-products"], "entities": ["Claude", "Claude Code", "Anthropic"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/two-claudes-one-app", "markdown": "https://wpnews.pro/news/two-claudes-one-app.md", "text": "https://wpnews.pro/news/two-claudes-one-app.txt", "jsonld": "https://wpnews.pro/news/two-claudes-one-app.jsonld"}}