A walkthrough of every architectural decision we just landed for moving your work out of iCloud — no jargon, with diagrams.
~/Documents/VS Code/Claude Code/N8N-BUILDER/. iCloud keeps evicting it. We're moving it to ~/projects/lovebuilt/, splitting it into clean per-project folders inside, syncing to a private GitHub repo, and giving the Karpathy wiki a permanent home with a friendly shortcut. Nothing has moved yet — these are just the blueprints.
~/projects/ is the new top-level home. Out of iCloud, no more evictions.
| Option | Verdict |
|---|---|
~/projects/ | WIN — your VPS already uses /home/dev/projects/, so Mac and VPS become a path-for-path mirror |
~/code/ | Common but breaks VPS naming parity |
~/dev/ | Ambiguous — could mean "dev VPS" |
~/jonah-workspace/ | Cute, more friction to type |
Stay nested in ~/Documents/ | REJECTED — this is the bug we're fixing |
Hybrid monorepo. One big ~/projects/lovebuilt/ umbrella, but each child project (n8n, kdp, lever, etc.) is self-contained with its own CLAUDE.md and MCP set so you can cd into it and start a focused chat.
Hundreds of files reference handoffs/handoff-dev-environment-master.md, _dev0/INDEX.md, etc. A pure split would either break those links or force ugly duplication. The hybrid keeps the cross-references intact.
Not this migration. A separate handoff later.
There are 2,286 references to /Users/coach in ~/.claude/ alone (most of them are immutable session transcripts we don't even rewrite). On top of that, a macOS short-name rename touches keychain, login, FileVault recovery — it's its own multi-day project. Doing it AFTER the new path home is in use also makes that future project smaller, because we'll know which references actually get hit in normal operation.
Two-tier sync. GitHub private repo for the canonical, versioned, browse-from-your-phone copy. Existing lsyncd for the live, real-time scratch flow.
.env and .mcp.json always gitignoredbrainstorms/, memory/, _handoffs/active/Real home: ~/projects/lovebuilt/wiki/. Friendly shortcut: ~/wiki (a symlink).
~/Documents/. (iCloud Drive ≠ Documents — different sync behavior, no eviction.)~/projects/lovebuilt/wiki/~/wiki. That way the wiki can move later without breaking anything.
Manual sed with review for the 647 mutable refs. Symlink the 1,864 session-history transcripts — never rewrite them. No LLM-driven rewrite.
| What | Count | How we fix it |
|---|---|---|
| References inside N8N-BUILDER (full path) | 82 | sed + manual diff review |
References inside N8N-BUILDER (/Users/coach prefix) | 143 | sed + review |
References in ~/.claude/skills/ + plans/ | ~422 | sed + review |
| Session-history JSONL transcripts | 1,864 | DO NOT REWRITE. Symlink the old project-id directory to the new one. |
The session JSONL files are immutable conversation logs. Rewriting them would corrupt the audit trail for zero functional gain — Claude Code only needs to resolve the old project ID, not see updated paths inside the messages. A simple symlink does that.
Build ~/projects/lovebuilt/_basecamp/ with a small CLAUDE.md and a one-page INDEX.md mapping "if you want to do X, open folder Y." That's it. The full routing skill is v2.
This costs ~30 minutes to build and immediately solves your stated complaint: "I don't know which folder to start a chat in." The fancier auto-routing-via-LLM version comes later, only if the static page outgrows itself.
iTerm is the canonical Claude Code interface. VS Code is for editing files. They're different tools.
VS Code eagerly spawns every MCP server you've configured for every session — measured at ~534 processes for 16 open sessions. iTerm lazy-loads. Treating iTerm as the chat interface means you stop paying the MCP tax for every editor window.
cd ~/projects/lovebuilt/<sub-project>claudeCLAUDE.md and .mcp.json — only the MCPs that project actually needs.VS Code workspace files (*.code-workspace) live one-per-sub-project for multi-root editing when you want it. They don't spawn Claude sessions.
| Open question | When we'll resolve it |
|---|---|
Does Claude Code's CLAUDE.md walk-up correctly inherit from lovebuilt/ root when you cd into a sub-project? | Migration 02 must run a 5-min test session |
| Does Claude Code accept a symlinked project-id directory or canonicalize and reject? | Migration 02 must test before committing to the symlink |
| Wiki as git submodule vs. regular subfolder? | Subfolder for now; promote only if a second consumer materializes |
When does the static _basecamp/INDEX.md outgrow itself and need v2? | Suggested trigger: ~15 entries |
| Ship a "VS Code zombie reaper" preemptively? | Lean: yes, it's a 10-line script |
architecture-decisions.mdNothing has moved yet. This was a research handoff — blueprints only.