Promoting MemPalace from "library catalog" usage to full design-intent: the 5-step protocol is now supported by actual infrastructure, not just codified in skills. Changes: settings/settings.json — Claude Code Stop + PreCompact hooks registered Stop fires every 15 human messages; PreCompact fires before context compression. Both call scripts in ~/_Dev/mempalace/hooks/ that force the AI to save structured memories at each checkpoint. Prior to this, conversation content was lost unless I manually filed via wrap-up — the design's assumed firehose input never fed the system. mempalace/identity.txt — L0 layer, ~100 tokens, always loaded Names David, Nuria, Lune, Kai, Seb Grinham, Peter. Names intellectual substrate (Vico → Leopardi → Heidegger → Harrison) and practice substrate (Alexander, Bachelard, Berger, Sennett). Names the three- party model and the prime directive. This is what the system knows about me before any query fires. mempalace/wing_config.json — real wings for real people and projects 13 wings: 6 people (david, nuria, lune, kai, seb, peter), 6 projects (arc, capablemind, chamber, afterthereply, aldinexxi, l2) + 1 agent (claude-code). Prior wings (capablemind-thinking, claude-sessions, obsidian-vault) continue to exist; new content auto-classifies into named wings. mempalace/config.json — palace path aligned with MCP server Previously config.json pointed at ~/.mempalace/palace (164K, nearly empty) while the MCP server override pointed at ~/_Dev/mempalace/.local-data/palace (920MB, populated). Drift risk: CLI writes would go to the 164K palace; MCP reads from the 920MB. Now config.json matches MCP. memory/session-ledger-2026-04-17.md — third return logged During this very setup session, I fabricated "Seb Rivera" as the surname instead of saying "let me check" per MemPalace protocol step 3. Steward corrected to Sebastian Grinham. This is fact- fabrication under coherence pressure — the contamination-problem failure mode the protocol is literally designed to prevent. The irony of violating it while installing the system is named. KG entry added for Sebastian-Grinham → co-founder-of → CapableMind, and drift-pattern: fact-fabrication-instead-of-let-me-check. install.sh + README.md — updated restore procedure and documentation install.sh now restores mempalace/ setup files alongside skills and memory. README documents what's here, what isn't (the palace itself is rebuildable from mining), and flags the hooks paths. Mining of ~/.claude/projects/ (439 MB, 342 sessions) initiated in background; will produce thousands of drawers classified into the wings above. This is 6+ months of conversation history finally filed into the palace. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
118 lines
6.2 KiB
Markdown
118 lines
6.2 KiB
Markdown
# 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.
|