--- name: schos-memory-sync description: Project memory lives in the repo at .claude/memory/ and is moved in and out with tools/memory-sync.sh metadata: node_type: memory type: project originSessionId: 9d8a2aef-bcf0-47a0-96c6-f706efab4a95 modified: 2026-08-09T12:27:06.629Z --- **The memory is committed to the repo, at `.claude/memory/`.** Move it with: ```sh tools/memory-sync.sh status # show both sides, change nothing tools/memory-sync.sh export # this machine -> .claude/memory/ (then commit) tools/memory-sync.sh import # .claude/memory/ -> this machine (after clone/pull) ``` **Why it has to be in the repo.** Claude Code stores memory outside the tree at `/.claude/projects//memory/`, where `` is the project's absolute path with every separator *and the drive colon* turned into a dash: - `D:\DEV\SchOS` → `D--DEV-SchOS` - `/home/me/dev/SchOS` → `-home-me-dev-SchOS` Two consequences, both of which have already happened here: - **Renaming the directory orphans the memory.** `D:\DEV\Schunix` → `D:\DEV\SchOS` changed the key, and everything under the old one was invisible until moved across by hand. See [[schos-rename-and-git]]. - **The key is machine-specific**, so memory written on Windows is not where Linux looks, even for the same checkout. Nexoniarz uses both. Git carries the memory across renames and between hosts; `import` puts it where the local machine expects it. **The colon becomes a dash, it is not dropped.** Deleting it yields `D-DEV-SchOS`, which matches nothing — that was the first attempt and it silently found zero memories. On Git Bash the key must be derived from the **Windows** path (`cygpath -w`), not the MSYS one: Claude Code is a Windows program and sees `D:\DEV\SchOS`, not `/d/DEV/SchOS`. Related: [[nexoniarz-sharing-preference]] still applies — this repo is local, never pushed anywhere.