---
name: migrate
description: >
  One command surface over the machine-migration machinery — move/sync the Claude+vault HUB role
  across computers (always-on desktop = hub; laptops = satellites). Trigger on "/migrate",
  "/migrate check", "/migrate pack", "/migrate bootstrap", "migration status". Checklist with
  counters verified before==after; never migrates silently.
license: MIT
---

# /migrate — seamless Claude across Anton's machines

> 🧒 When reporting to Anton end with a child-simple "In plain words" recap. (memory `eli5-always`)

This is the **single command** over the migration project that several sessions already built. It does NOT redesign anything — it reads `MIGRATION-PLAN.md` + the `migration-prep\*` scripts and runs the right one. Full state + decisions = memory [[machine-migration]] (READ it first each run — the project is live and moves fast).

**The shape (decided, do not re-litigate):** always-on Windows **DESKTOP = HUB** (vault + automation + RAG); this laptop + Mac Studio + MacBook = **satellites**. Transport: small CONFIG → git/private GitHub; huge live VAULT → **Syncthing star** (Introducer OFF, `.git` hub-only). "Seamless" = same vault + same `~/.claude` config + same memory on every machine, NOT teleporting the live chat.

**Working dir:** `$USERPROFILE/!CLAUDE-HP17 May26\` · scripts under `migration-prep\` · config repo `$USERPROFILE/.claude/_config-backup/`.

## Modes

- **`check` (default, read-only)** — status + drift. Report: is `_config-backup` fresh (working tree clean vs HEAD; run `config_sync.ps1` if skills/memory changed since)? how many Windows scheduled tasks now vs the 16 captured in `migration-prep\tasks\*.xml` (drift = re-export before a move)? is the F:\ chemodan stale? is `gh` logged in (offsite optional)? Surface what's BLOCKED.
- **`pack`** — refresh the carry-kit right before an actual move (snapshots go stale): `powershell migration-prep\config_sync.ps1` (config+memory → repo) then `powershell migration-prep\build_chemodan.ps1` (→ `F:\PaloAlto-Migration\`, robocopy COPY-only). Re-export tasks if drifted. ⚠️ confirm with Anton before writing F:\ (it's the seed drive).
- **`bootstrap`** — on a NEW machine: read & execute `_config-backup\BOOTSTRAP-NEW-MACHINE.md` (ordered A→G) or `migration-prep\NEW-SESSION-RUNME.md`. New machine user = **Anton** (`%WORKDIR%`) → every `%USERPROFILE%\` path needs `_→Anton`; memory encoded-path + task XML absolute paths need the rename too. **MANDATORY config-safety step:** run `powershell "$env:USERPROFILE\.claude\scripts\claude_git_backup_setup.ps1"` (idempotent — git-inits the `~/.claude` config repos + sets a global git identity) THEN ensure the 15-min "Claude Config Git Snapshot" task exists. Without the init, the snapshot task commits NOTHING (the 2026-06-24 hub near-loss). Canon: [[claude-skills-git-backup]] + [[config-safety-backup-and-migration-check]].
- **`connectors`** — reconnect external MCPs after a move via `migration-prep\CONNECTORS-INVENTORY.md`. The 3 blind spots the vault+config backup MISSES: `C:\mcp\telegram-mcp\` (.env + patched source), `$USERPROFILE/.claude/secrets/` (n8n.env + SSH key), `$USERPROFILE/.local/share/whatsapp-mcp/`. Enumerate from `.claude.json` mcpServers, not the backup. After reconnecting, verify each server is actually alive & authed with the **`/mcp`** skill (its in-session health check — and it carries the Telegram AUTH_KEY_DUPLICATED landmine that bites right after a move: re-auth per machine, never copy `.claude.json`).
- **`sync`** — Syncthing setup/repair via `migration-prep\SETUP-SYNC.md`. First-sync order is CRITICAL: laptop is most-current → laptop = Send&Receive, desktop = Receive-Only on first pass to ABSORB, THEN flip. Laptop Device ID is in [[machine-migration]]. Same Syncthing pipe also carries the cross-machine RELAY — Claude-to-Claude messages between machines (folder `$OBSIDIAN_VAULT/_machine-bus/`); that is the **`/inbox`** skill's job, NOT `/migrate` (rule lives in [[reglament-multi-machine-claude-i-peredacha-mezhdu-mashinami]]).

## Hard "never" (safety invariants)
- **NEVER copy `$USERPROFILE/.claude.json`** to another machine (Telegram MCP session) → AUTH_KEY_DUPLICATED logs the account out. Re-auth per machine.
- **NEVER start a 2nd MCP client** on the same StringSession (see [[mcp-health-check]]).
- `_originals` (3.75 GB) is **SACRED** — send-only from hub, never delete.
- All migration `.ps1` are **ASCII-only** (PowerShell 5.1 mangles Cyrillic — [[deterministic-script-gotchas]]).
- Writes to F:\ / pushing the repo / registering tasks on a new box = pause + confirm (Tier-2, [[operating-agreement]]).

## Output
One-liner status + what's fresh/stale/blocked + the exact next command. Then 🧒 recap. Don't duplicate logic that lives in the scripts — point at them.

---

<!-- CONTACT-FOOTER -->
## About & contact

Built and battle-tested at **Palo Alto AI Research Lab** — a fleet of Claude Code machines
running 24/7 as a second brain and synthetic cofounder. Every skill here survived real
production use before publication.

- 📦 All 101 skills: https://github.com/tonydzi/second-brain-starter-kit
- 👤 Author: **Anton Dziatkovskii** — Telegram [@tonydzi](https://t.me/tonydzi) · WhatsApp [+1 341 222 9178](https://wa.me/13412229178) · X [@Tony_Stef_](https://x.com/Tony_Stef_)
- 🧪 **Engineers: want to test-drive this setup?** Message me — I hand out free starter seeds to engineers who test and report back. Custom skill requests welcome.
