Yesterday afternoon on the M1 I finished the Bitwarden sync for MCP secrets. It worked, but the job was only half done. The M5 still had to pull, add a line to ~/.zshrc, check the Bitwarden CLI login, upload the Slack and bank values that only lived there, and install a watcher. Six steps on a machine I was not sitting at.
I used to keep that kind of list in my head, or in a chat message to myself that I never read again. This time I asked Claude to leave a note for the M5 instead.
One file in git, one line per note
The notes live in handoff.txt in the same repo that syncs my ~/.claude folder. Each line has four tab-separated fields: the target Mac, the Mac that wrote it, the date, and the text.
m5 m1 2026-11-04 14:04 make -C ~/.claude pull, then make -C ~/.claude secrets, then /reload-plugins
A small ms-handoff skill decides what to write. The sync script does the rest: it commits only that file and pushes. On the other Mac the note shows up in three places.
flowchart LR
A["Claude on M1<br/>/ms-handoff"] --> B["handoff.txt<br/>(git push)"]
B --> C["hourly watcher<br/>on M5"]
B --> D["new terminal<br/>on M5"]
C --> E[macOS notification]
D --> F["handoff go 1"]
F --> G["Claude on M5<br/>works the note"]
| Where | When | What it does |
|---|---|---|
| macOS notification | every hour, before any pull | tells me there is something new |
| New terminal | every time I open one | prints the notes as a checklist |
/ms-handoff in Claude | when I ask | lists the notes and works through them |
The first version was a wall of text
This morning on the M5 the note showed up exactly as planned. It was also hard to read: one numbered line, wrapped by the terminal, with six steps joined by "then" and a long URL in the middle. A second note with five unrelated tasks looked even worse.
So the script now formats a note before it prints it:
Notes from the other Mac (1) handoff go <n>
1 from m1 Wed 4 Nov, 14:04
◦ make -C ~/.claude pull
◦ add source ~/.claude/scripts/todo.zsh to ~/.zshrc
◦ bw status (must show the right account and server)
◦ make -C ~/.claude secrets
◦ make -C ~/.claude install-watcher
◦ /reload-plugins
A new step starts at every ", then " and at every sentence end, but never inside a code span. Commands print in cyan without the backticks, URLs are blue, and lines wrap with a hanging indent. When the output is not a terminal, for example inside Claude, it drops the colours so nobody sees raw escape codes.
The splitting rule also changed how notes get written. The skill now tells Claude to join steps with ", then ", so every note turns into a clean list on the other side.
From a note to a session in one command
Claude Code sessions are stored on the Mac that ran them, so there is no "continue on the other computer". The note is the bridge. To make the bridge short, handoff go 1 starts a new Claude session in the current folder with the full note as the prompt, plus one instruction: run handoff done 1 when everything is finished.
Run it in the repo the note is about, not in ~/.claude. Claude starts where you are, so the folder decides which project rules it loads.
One step still needs me. make secrets unlocks Bitwarden and asks for the master password, and the ! shell inside Claude can't take hidden input. The CLI crashed with a readline error. Commands that ask for a password go in a normal terminal tab.
What it took
About 100 lines of handoff code in the sync script, a five-line zsh file, a launchd job and a skill of under 50 lines. The format took two rounds, both on the real note: the first one wrapped badly, the second coloured the indent of a wrapped command. Next time I'd test the output with the longest note I have before I call it done, not with a one-line example.

Related notes
Cleaning 199 GB of duplicates out of Google Photos from inside Chrome
Google Photos has no API to delete photos, so Claude did it in my browser: fingerprint thumbnails in the page, bin RAW files that have a JPEG twin, check every selection against Google's own counter.
Holacracy why and where we are
I have been testing Holacracy with my team at Bravelab.io for 6 months. Companies are complex organisms. We gave ourselves the space to experiment.



