claude: back up custom skills, memory, and settings with symlink pattern
The ~/.claude/ directory was previously local-only — a machine wipe
would have lost the accumulated memory, custom skills, and settings.
This commit moves the durable parts into dotfiles with the same
symlink-to-home pattern used for CLAUDE.md, PENDING.md, REVIEWED.md,
and L2-BOOTSTRAP.md.
Preserved (symlinked from ~/.claude/* into here):
skills/audit/ — thinking-folder drift scanner
skills/symmetria/ — practice-of-return discipline
skills/vault-update-people/ — Obsidian People-file maintainer
skills/wake-up/ — session restoration
skills/wrap-up/ — session state capture
memory/ — 55+ memory files (MEMORY.md, sessions,
ledgers, project state, feedback, etc.)
settings/settings.json — user preferences (hooks, flags, no secrets)
Deliberately NOT backed up:
settings.local.json — contains operational secrets (HF_TOKEN,
SSH password in expect scripts); by naming
convention, *.local.* is not synced.
Needs separate review and probable rotation.
sessions/, history.jsonl, caches, telemetry — ephemeral
plugins/, marketplace skills and agents — reinstallable
The working copies at ~/.claude/skills/* and
~/.claude/projects/-Users-davidglidden/memory are symlinks into this
directory, so every write flows here automatically. install.sh
recreates the symlinks on a fresh machine.
FOLLOW-ON (flagged, not in this commit):
settings.local.json contains a HuggingFace token and an SSH password
as plaintext strings inside allowed Bash command patterns. These
should be rotated and moved to secure storage (keychain / pass /
env file outside the settings file).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
dcbba606ea
commit
119285cf43
@@ -0,0 +1,147 @@
|
||||
---
|
||||
name: wrap-up
|
||||
description: Capture session state for future restoration. The quality of the next wake-up depends entirely on the quality of this wrap-up. Captures not just what we did but what is still pulling, what is the live concern, and what question we want to find still open when we return.
|
||||
---
|
||||
|
||||
# Session Wrap-Up
|
||||
|
||||
Capture the full session state so that `/wake-up` can restore it completely. This is the other half of the continuity pair — what you save here is what gets reconstructed next time.
|
||||
|
||||
## Principle
|
||||
|
||||
Capture what matters for reconstruction. Not a changelog — the **working state**: what we were thinking, what we decided, what's unresolved, what is *still pulling*, what question we want to find waiting when we return.
|
||||
|
||||
The goal is for the next session to wake **into** the work, not be informed about it. That requires three tenses, not one:
|
||||
|
||||
- **Past** (what we did + decided + ruled out — facts and rationale)
|
||||
- **Present** (the mood/disposition — what felt load-bearing vs deferred-with-reason; what tensions surfaced and how we returned from them)
|
||||
- **Future** (what is *pulling* — the singular thread the next session should resume *toward*, and the question we are intentionally leaving open)
|
||||
|
||||
Without the future tense, restoration is amnesiac-recovery, not waking. The next session gets a memory but no project. The pause itself becomes a hole rather than a phenomenon.
|
||||
|
||||
## Procedure
|
||||
|
||||
### 1. Synthesize the session
|
||||
|
||||
Review the conversation and produce a structured session record. The structure matters less than honoring all three tenses.
|
||||
|
||||
**Past — what we did**
|
||||
- Decisions made, work completed, artifacts created/modified. Be specific (file paths, issue numbers, commit hashes).
|
||||
- Decisions made and *why*. Rationale matters more than the decision for continuity. Include any steward preferences or feedback that should travel.
|
||||
- Decisions explicitly NOT made — and why we deferred. The negative space matters as much as the positive.
|
||||
|
||||
**Present — the mood of the work**
|
||||
- What tensions surfaced this session, and how we returned from them. (Pull from Symmetria's daily ledger if active — see step 1.5.)
|
||||
- What felt load-bearing vs deferred-with-reason. Not all open horizons are equal.
|
||||
- What patterns of confidence proved imprecise (recalibrations).
|
||||
|
||||
**Future — what is pulling**
|
||||
- **The pulling thread** — *singular*. If the next session could carry only one concern across the pause, this is it. Force the choice; don't list.
|
||||
- **Other open horizons, ranked.** What's load-bearing? What's deferred-with-reason? What's parked-without-deadline?
|
||||
- **The pause statement** — explicit acknowledgment: *"I am about to be away from this. I don't know what will have changed when I return. Here is what I want to find still pulling."* Names the gap as a phenomenon, not a hole.
|
||||
- **A literal question for next-Claude** — not a task; a *question*. The thing the next session should hold open until it's resolved or honestly recognized as unanswerable. Captures the unborn part of the work.
|
||||
|
||||
### 1.5. Merge the Symmetria ledger if present
|
||||
|
||||
If `~/.claude/projects/-Users-davidglidden/memory/session-ledger-YYYY-MM-DD.md` exists for today, read it and integrate its signal into the session record:
|
||||
|
||||
- **Returns** become anchors in the "present/mood" section (these are the practice's actual record).
|
||||
- **Recalibrations** become entries under "confidence to re-examine" in the future-Claude briefing.
|
||||
- **Authorization moves** + **Bypasses** become anchors in the "decisions made and why" section.
|
||||
- **Open horizons** from the ledger merge into the Future section's ranking.
|
||||
|
||||
The ledger is signal, not narration. Pull what carries forward; don't transcribe everything.
|
||||
|
||||
### 2. Update session memory file
|
||||
|
||||
Write or update a session memory file at `~/.claude/projects/-Users-davidglidden/memory/session-[date]-[descriptor].md`:
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: Session [date] [time-of-day] — [short descriptor]
|
||||
description: [one-line summary including the pulling thread]
|
||||
type: project
|
||||
---
|
||||
```
|
||||
|
||||
The description field should include the pulling thread, not just what happened. Example:
|
||||
- ❌ "Closed five bottleneck issues; substrate validated."
|
||||
- ✓ "Substrate validated end-to-end; pulling thread is the L1 amendments for ProjectionChain + Pause-as-event, awaiting Seb's reactions to the multi-mode retention frame."
|
||||
|
||||
### 3. Update MEMORY.md index
|
||||
|
||||
- Move any previous "Active Session" entry to "Archived Sessions"
|
||||
- Add the new session file as the Active Session entry
|
||||
- Update any other memory entries that changed during the session (project state, new decisions, new feedback)
|
||||
- Remove or update any entries that are now stale
|
||||
|
||||
### 4. File to MemPalace
|
||||
|
||||
If MemPalace MCP tools are available, use `mempalace_add_drawer` to file the session summary:
|
||||
|
||||
- **wing:** `claude-sessions`
|
||||
- **room:** `handoffs`
|
||||
- **content:** The full session record from step 1, including the pulling thread + pause statement + literal question. These semantic hooks make the session findable later by *what was pulling*, not just *what happened*.
|
||||
- **tags:** session date, key topics, the pulling thread keyword
|
||||
|
||||
### 5. Check for loose ends
|
||||
|
||||
Run these checks and report results:
|
||||
|
||||
**Uncommitted work:**
|
||||
```bash
|
||||
git status --short
|
||||
```
|
||||
in each active repo. Report any modified/untracked files.
|
||||
|
||||
**Unpushed commits:**
|
||||
```bash
|
||||
git log --oneline @{upstream}..HEAD
|
||||
```
|
||||
in each active repo. Report any commits not yet pushed.
|
||||
|
||||
**PENDING.md** — flag any items that need steward attention before next session.
|
||||
|
||||
### 6. Vault sync
|
||||
|
||||
Sync the thinking mirror to Obsidian vault:
|
||||
|
||||
- Source: `~/_Dev/CapableMind-AI/docs/thinking/David/`
|
||||
- Destination: `~/Library/Mobile Documents/iCloud~md~obsidian/Documents/David, root-and-branch/08. Notes/CapableMind/thinking-mirror/`
|
||||
|
||||
Use rsync to copy new/modified files, preserving directory structure. Report what was synced.
|
||||
|
||||
If the destination doesn't exist or the iCloud path isn't accessible, skip silently and note it.
|
||||
|
||||
### 7. Output
|
||||
|
||||
Produce a brief summary for the steward:
|
||||
|
||||
```
|
||||
## Wrap-up — [date]
|
||||
|
||||
**Pulling thread:** [the singular concern]
|
||||
**Question we're leaving open:** [the literal question for next-Claude]
|
||||
|
||||
**Session captured:** [memory file path]
|
||||
**MemPalace filed:** [yes/no]
|
||||
**Uncommitted work:** [list or "none"]
|
||||
**Unpushed commits:** [list or "none"]
|
||||
**PENDING items:** [count needing attention]
|
||||
**Vault synced:** [count of files, or "skipped"]
|
||||
|
||||
[Any warnings or things to address before closing]
|
||||
```
|
||||
|
||||
The pulling thread + question are first because they are what *waking* needs to inherit. The rest is restoration material.
|
||||
|
||||
## Important constraints
|
||||
|
||||
- **Write for the next session, not this one.** The steward has full context right now. The person who needs this is future-Claude with an empty context window.
|
||||
- **Rationale over facts.** "We decided X" is less useful than "We decided X because Y, and Z was the alternative we rejected."
|
||||
- **Be honest about incompleteness.** If work is half-done, say so. Don't round up.
|
||||
- **Don't fabricate.** If you're unsure what happened earlier in the session, say so rather than guessing.
|
||||
- **Pulling thread is singular.** If you cannot name one, that means the session lacked a thread — name *that* honestly. ("This session was diagnostic-only; no thread to carry forward except the question of what to do next.")
|
||||
- **The literal question for next-Claude is required.** Even if it's small. *"Did Seb push anything overnight?"* counts. The discipline of leaving a question (not just a task) is what makes the wake feel like resumption rather than briefing.
|
||||
- **Don't skip Thistleweld observations** if the companion was active. These have caught real bugs (allSettled swallowing, Levenshtein NONE, resource monitor feedback loop).
|
||||
- **Don't skip the Symmetria ledger merge** if active. The returns and recalibrations are the practice's actual evidence; losing them defeats the practice.
|
||||
Reference in New Issue
Block a user