# Claude Code configuration — backup & restore This directory holds the durable Claude Code configuration that should survive a machine wipe: custom skills, accumulated memory, and user-level settings. The working copies at `~/.claude/*` are symlinks pointing here, so edits flow both directions automatically. --- ## What's preserved here ### `skills/` — custom skills we've authored | Skill | Purpose | |---|---| | `audit/` | Scans thinking folder + vault inbox for organizational drift; report-only | | `symmetria/` | Practice-of-return discipline; prime-directive foregrounding under context pressure | | `vault-update-people/` | Searches Obsidian vault for new mentions of a person; proposes People-file updates | | `wake-up/` | Restores full session context from memory, governance, and git at session start | | `wrap-up/` | Captures session state for future restoration; the quality of the next wake depends on this | Marketplace-installed skills (from Claude Code plugins) are not backed up here — they are regenerable on any fresh install. ### `memory/` — auto-memory for the main project scope The substrate of continuity. 55+ files including: - `MEMORY.md` — the index, loaded at every session start - `session-2026-*.md` — session records (full Dasein-frame wrap-ups: pulling thread, pause statement, literal question for next-Claude) - `session-ledger-*.md` — Symmetria daily ledgers (returns, recalibrations, authorization moves, bypasses) - `project-*.md` — active project state snapshots (ARC rework, Chamber, L2 review, etc.) - `feedback-*.md` — steward preferences and corrections learned over time - Many others Real path: `~/.claude/projects/-Users-davidglidden/memory/` symlinks here. ### `settings/settings.json` — Claude Code user settings Sanitized. Contains hook registrations (including the MemPalace auto-save hooks) and feature flags. No secrets. ### `mempalace/` — MemPalace setup files The bootstrap configuration for MemPalace. These files live at `~/.mempalace/` but are also backed up here because they represent the accumulated understanding of who-is-who and what-is-what. The palace itself (`~/_Dev/mempalace/.local-data/palace/`, ~1GB) is NOT backed up — it's rebuildable by re-running `mempalace mine` against the same source data. | File | Purpose | |---|---| | `config.json` | Palace path + default topic wings + hall keywords | | `identity.txt` | L0 layer — loaded every session; ~100 tokens identifying who I am, who the steward is, intellectual substrate | | `wing_config.json` | Named wings for real people and projects (wing_david, wing_nuria, wing_lune, wing_kai, wing_seb, wing_peter, wing_arc, wing_capablemind, wing_chamber, wing_afterthereply, wing_aldinexxi, wing_l2, wing_claude-code) | The auto-save hooks (wired in `settings/settings.json` via `Stop` and `PreCompact` events) point at `~/_Dev/mempalace/hooks/mempal_save_hook.sh` and `mempal_precompact_hook.sh`. If MemPalace is reinstalled elsewhere, update those paths. --- ## What is deliberately NOT here ### `settings.local.json` Kept **local-only** because its permissions allowlist has historically contained operational secrets (HuggingFace tokens embedded in approved Bash commands; SSH passwords in approved `expect` scripts). The `.local.json` naming convention exists for exactly this reason. Before backing any settings.local.json up anywhere, audit it for secrets and redact them. ### Session transcripts (`sessions/`, `history.jsonl`, `projects/*/sessions/`) Too large; ephemeral by design; not needed to restore identity. ### Caches, telemetry, runtime state `cache/`, `file-history/`, `paste-cache/`, `telemetry/`, `statsig/`, `stats-cache.json`, `scheduled_tasks.lock`, `session-env/`, `mcp-needs-auth-cache.json`, `debug/`, `tasks/`, `todos/` — all regenerate naturally. ### Marketplace-installed skills and agents `plugins/`, and the many non-custom entries under `skills/` and `agents/` come from Claude Code's plugin system. Reinstallable on a fresh machine. --- ## Restore procedure On a fresh machine, after cloning dotfiles: ```bash cd ~/dotfiles/claude ./install.sh ``` The install script: 1. Verifies `~/dotfiles/claude/` is present 2. Creates `~/.claude/skills/` and `~/.claude/projects/-Users-davidglidden/` if missing 3. Symlinks each custom skill from `~/.claude/skills/X → ~/dotfiles/claude/skills/X` 4. Symlinks the memory tree from `~/.claude/projects/-Users-davidglidden/memory → ~/dotfiles/claude/memory` 5. Copies `settings.json` into place if no existing file (does not overwrite) 6. Skips anything already present — idempotent After running: the first Claude Code session on the new machine has full memory, all custom skills, and baseline settings. --- ## Why this matters Without this backup, a machine wipe means: - All session memory lost — `/wake-up` would have nothing to restore from - All custom skills lost — the practice-of-return discipline, session lifecycle, audit workflows - The collaboration history with Claude Code loses its thread The memory tree is the single most irreplaceable artifact — it accumulates through dialogue and cannot be reconstructed from any other source. 384 KB of text that represents months of learning about preferences, active projects, decisions, and open horizons. --- ## Maintenance These files are **live**. Claude Code writes to them during normal operation (ledger updates, memory file creation/edits, settings changes). Because the working copies at `~/.claude/*` are symlinks into this directory, every write lands here automatically. Then `git status` in `~/dotfiles/` shows what's changed and invites a commit. Recommended cadence: commit dotfiles/claude/ changes alongside other dotfiles work, roughly weekly or when a significant session has concluded. The `/wrap-up` skill should be treated as a natural commit moment for the memory tree. ## Fragility to watch - **Symlinks break if `~/dotfiles/claude/` is moved.** Keep dotfiles at `~/dotfiles/`. - **macOS Time Machine / backup tools may or may not follow symlinks.** Verify your backup solution sees files, not just broken links. - **If Claude Code's internal path conventions change** (e.g., the project-scope slug `-Users-davidglidden` changes), the symlink stops pointing where Claude Code looks. Re-create with the new path.