An honest update to the v1 explainer. What changed, what stuck, what's still up for grabs — informed by your pushback, the prior-chat ingestion (session 85df5ee5), and the conventions research that just landed.
~/dev/, an exact mirror of your VPS /home/dev/ — same folder names, same shape, no wrapper. Inside it, projects/ is just where projects live (no double duty). Master folders like handoffs/, ideas/, context/, knowledge/ sit as siblings to projects/. Multi-CLI parity (Claude/Gemini/Codex/OpenCode) works naturally because each project carries its own per-CLI config and shared skills live in ~/.agents/skills/. Your knowledge system is its own downstream subcategory and gets its own handoff stack.
Why this beats v1 (the lovebuilt/ wrapper): exact VPS parity (~/dev/projects/n8n/ ↔ /home/dev/projects/n8n/), projects/ keeps its narrow meaning, master folders (handoffs/ideas/context/) sit at their conceptual scope (cross-project), multi-CLI parity is natural per-project, and your hidden CLI configs (~/.claude/, ~/.gemini/) sit at the actual user root because Claude Code hardcodes them there. The macOS clutter is invisible noise; ~/dev/ is the only visible folder we care about.
Out of iCloud. Conventions research agrees: most community setups use ~/projects/ or ~/dev/ (community split). The refinement: we're going with ~/dev/ because it mirrors your VPS exactly and keeps projects/ available for its narrow meaning.
lovebuilt/ wrapper is dead. Flat ~/dev/ mirror with master folders as siblings to projects/. ~10 new folder categories adopted from VPS (already implemented).
~/projects/lovebuilt/ ├── CLAUDE.md ├── memory/ ├── _handoffs/ ├── _dev0/ ├── _resources/ ├── wiki/ ├── n8n/ ├── kdp/ ├── lever/ └── praul/ ← "personal/family"
~/dev/ ├── .agents/skills/ (cross-CLI) ├── projects/ │ ├── CLAUDE.md │ ├── n8n/, kdp/, lever/, praul/, ... ├── handoffs/ ├── ideas/ (5-stage) ├── context/ (deep knowledge) ├── knowledge/ (wiki + vaults) ├── questions/ ├── apps/ ├── reports/ ├── scripts/ ├── shared/ (bootstrap) ├── _dev0/ └── _resources/
Why it shifted: Three independent forces converged.
85df5ee5, 2026-04-01) — the VPS architecture was already built with this exact flat shape and 7 numbered ADRs locking in the decisions 00a.PRAUL reframe (P-2): Not personal/family. It's your brain-dump routing intelligence — Personal Robot for Achieving Unlimited Lifetimes, ingests anything (business musings, $5M ideas, emotional struggles, kids dreams, gratitude), classifies, routes to the right downstream vault.
Out of scope for this migration. Separate handoff later. 2,286 references to /Users/coach in ~/.claude/ alone, plus macOS short-name renames touch keychain/login/FileVault recovery. Doing it after the new home settles makes the future project smaller.
GitHub private repo (slow tier, canonical) + existing lsyncd (fast tier, real-time scratch). The prior chat already locked in "git-based config sync" as Decision 007 ADR 007. Aligned.
Wiki belongs under ~/dev/knowledge/, NOT inside a project folder. ~/wiki stays as the friendly symlink — that part holds. The full vault topology (personal master / business / Lever / friend-shares / client vaults / etc.) is its own knowledge-system handoff stack, scheduled after the foundational migration.
What's settled NOW:
~/dev/knowledge/. Distinct security/encryption model from code work.~/wiki is a user-global symlink → ~/dev/knowledge/wiki/. Nothing hardcodes paths into knowledge other than via the symlink.~/Documents/) and one-way mirrors into the wiki — so it inherits sync, version, secret-scan.What's deferred: vault topology (one vs many), RAG vs NLM vs Obsidian-only, sync mechanism, encryption stack, brain-dump routing logic, security hardening, multi-user permissions. All in the knowledge-system handoff stack at _dev0/migration/knowledge/.
Manual sed for the 647 mutable refs is right. The session-history symlink trick is the right idea — BUT the conventions research surfaced that it relies on undocumented Claude Code path-keying behavior, possibly tied to open Anthropic issues #38469 / #40300 / #65 05-reference §F.
Action: RT-A (architecture review) must verify those bug numbers actually exist on github.com/anthropics/claude-code. If real and unresolved, the symlink approach is fragile — Migration 02 needs a fallback (re-indexed copy of the project-id directory). 5-minute test session before commitment is non-negotiable.
Build ~/dev/_basecamp/ with CLAUDE.md (minimal MCPs) + INDEX.md ("if you want X, open folder Y"). Routing skill = v2 only when the static index outgrows itself (~15+ entries).
VS Code eagerly spawns every configured MCP per session (~534 processes for 16 sessions). iTerm lazy-loads. Conventions research adds: community patterns also lean iTerm or plain shell as canonical, with VS Code reserved for editing. Fresh-chat workflow stays: open iTerm → cd ~/dev/projects/<sub-project> → claude.
The conventions research caught this. Your VPS already implements ~10 folders A–H ignored. The Mac mirror inherits all of them.
| Folder | What it's for | Why A–H missed it |
|---|---|---|
ideas/ | 5-stage lifecycle: parking-lot → backburner → frontburner → in-progress → done (+ done/abandoned) | The plan file leaned on "memory/" being the catch-all |
context/ | Deep on-demand knowledge (businesses, people, clients, decisions, goals). Distinct from memory/ | A–H collapsed memory + context into one concept |
.agents/skills/ | Cross-CLI skill convention. Symlinked into each CLI's skill dir. Universal YAML+MD format. | A–H said "multi-CLI" but didn't name the mechanism |
questions/ | Questions-by-recipient (josh/, hcyr/, publishing/, general/) with TEMPLATE.md | Useful pattern, just unlogged |
apps/ | Built/runnable things — distinct from projects (WIPs) | A–H collapsed these |
reports/ | Generated outputs (maintenance, audits, session-summaries/) | A–H put session summaries under _dev0/; the VPS convention is here |
scripts/ | Automation, sync helpers | — |
shared/ | Bootstrap context loaded via @import into every CLAUDE.md (soul, user, priorities — small files) | A–H discussed CLAUDE.md walk-up but missed the @import-based pattern |
downloads/ | Curated subfolders (siteintel/, etc.) | "Mac already has this" hid it from A–H |
knowledge/ | Karpathy wiki + downstream vaults — own security model | A–H put the wiki under projects/lovebuilt/; wrong layer |
These are open questions reviewers should chew on or that get answered downstream. Listed honestly so we don't pretend they're decided.
| Open question | Where it gets resolved |
|---|---|
Does Claude Code's CLAUDE.md walk-up correctly inherit from ~/dev/projects/CLAUDE.md when you cd into a sub-project? Or do we need explicit @import in each sub-project's CLAUDE.md? | RT-A must test in 5 minutes; if walk-up fails, we adopt the @import-everywhere pattern from prior-chat ADRs. |
Does Claude Code accept a symlinked project-id directory at ~/.claude/projects/-Users-coach-…/? | RT-A test. Must verify Anthropic bugs #38469/#40300/#65 are real before committing. |
Where exactly does session-summary logging live? Prior chat picked ~/reports/session-summaries/; CC Advanced suggests SessionEnd hook + Memory 2.0; Paterson uses ~/llm-data/daily-log/ | Orchestrator picks based on 00b-prior-chat-jsonl-mined.md patterns + your preference. |
| Wiki as git submodule vs regular subfolder of the lovebuilt repo? | Subfolder for now. Promote only if a second consumer materializes. |
| Vault topology for the knowledge system (one vault with permissions vs many separate vaults) | Knowledge-system research handoff (_dev0/migration/knowledge/01). Post-migration. |
| RAG vs NotebookLM vs Obsidian-only for personal KB queries | Same — knowledge-system handoff stack. |
When does the static _basecamp/INDEX.md need to become a v2 routing skill? | Trigger: ~15 entries. |
| Ship the "VS Code zombie reaper" preemptively? | Lean: yes, 10-line script. |
When you're ready to spawn the 00.1 orchestrator chat, it has a much richer evidence base than v1 had. It reads:
architecture-decisions.md — the source doc with §A–H + Handoff section_dev0/migration/review/pending-revisions.md — P-1 (drop wrapper), P-2 (PRAUL reframe)_dev0/migration/review/voices/01.md, 01.1.md, 01b.md — three authoring chats' perspectives on review approach_dev0/migration/review/research/conventions/00a, 00b, 01–05 — full conventions research plus prior-chat synthesis_dev0/migration/review/method.md + the new adversarial-review skill — review charter shape_dev0/migration/knowledge/00-jonah-brain-dump-2026-04-29.md — knowledge brain dump (downstream context)From all that, the orchestrator drafts the actual reviewer charters — Red Team A (architecture A–H), Red Team B (handoff §1–§9), Synthesis. Then those run.
Things in this v2 that I'd attack if I were the reviewer:
~/dev/? §E now puts it inside the dev mirror. Some would argue knowledge isn't "dev" — it's life context. Counter: keeping it inside ~/dev/ means it gets the same sync, secret-scan, and version control. Trade-off accepted..agents/skills/ convention is "emerging" — fragile? Two tools (Mission Control, Praktor) cited. If those projects die, are we stranded? Counter: the format is just YAML+MD. Worst case we copy files into each CLI's native skill dir.shared/ bootstrap files via @import — recursive? Max 5 hops per Anthropic docs. Our chain is 1–2 hops. Headroom OK, but flag.knowledge/) — it's the brain-dump router; it talks to vaults inside knowledge/. Should it live under knowledge/ instead? Counter: Praul is a *tool*, not knowledge itself. Tool ↔ data separation justifies project peer.handoffs/ at different levels? ~/dev/handoffs/ (master) and _dev0/handoffs/ (migration-specific) — naming collision. Counter: distinct paths, distinct purposes. But worth a sticky-note.RT-A and RT-B will find more. These are the ones I can already see from inside.
_dev0/migration/architecture-decisions.md — the source doc itself (still v1, NOT yet rewritten)_dev0/migration/review/pending-revisions.md — P-1, P-2 (the actual revisions queued)_dev0/migration/review/research/conventions/05-reference.md — the synthesis the reviewers will citeDrop your final notes whenever. I'll fold them into the orchestrator charter.