Capture Research State (Desktop)
Use this skill to turn the current Claude Desktop session into durable, portable
research context -- a snapshot another device can pick up later.
The destination is a visible folder at the vault root: 00-Claude-Context/. It
contains an append-only session-snapshots/ subfolder plus seven durable
Markdown files that summarize the cumulative research state. Obsidian Sync /
iCloud / OneDrive / Syncthing replicates the folder; the next device sees it.
This skill does not replace the existing handoff skill (that one writes to
the Claude Code memory dir + 00_Inbox/, single-device). Use handoff for a
session-end checkpoint visible to the next chat on the same machine; use this
skill when you want continuity across devices.
Operating Rules (do not violate)
- Work only inside the selected research vault and its
00-Claude-Context/ folder.
- Never write into Claude app data, audit logs, credentials, browser stores,
caches, keychains, or operating-system configuration.
- Treat
00-Claude-Context/session-snapshots/ as append-only. Never
overwrite or delete an existing snapshot, even if asked.
- If the context folder is missing or invalid, run the bundled helper:
python "${CLAUDE_PLUGIN_ROOT}/bin/research_sync_agent.py" init --vault "{vault path}".
If python is not on PATH, fall back to py -3.12 on Windows. If neither is
available, build the schema by hand from
${CLAUDE_PLUGIN_ROOT}/references/context-schema.md.
- Consult
${CLAUDE_PLUGIN_ROOT}/references/context-schema.md before changing
any context file.
Capture Procedure
- Resolve the vault path. Prefer
OBSIDIAN_VAULT_PATH from the environment; if
absent, ask the user once and remember for the rest of the session.
- Confirm
00-Claude-Context/manifest.json exists. If missing, run init (see
rule 4) before continuing.
- Build a snapshot in memory with these sections:
- Current goal -- one paragraph.
- Active evidence and files -- papers, vault notes, datasets, code paths.
- Claims established -- what was settled this session (with citation keys).
- Decisions made -- including reasoning.
- Open questions -- unresolved items blocking progress.
- Task ledger changes -- completed, active, deferred, abandoned.
- Preferences or corrections learned -- user steering this session.
- Resume prompt -- a 2-4 sentence imperative for the next session.
- Write the snapshot to
00-Claude-Context/session-snapshots/{YYYY-MM-DDTHHMMSSZ}-{device-slug}.md.
The timestamp is UTC, ISO 8601 with the Z suffix. The device slug comes
from the active machine's hostname (lowercased, alphanumerics + dashes).
If a file with that exact name somehow exists, append -{pid} for collision
avoidance -- never overwrite.
- Update the seven durable files from the new snapshot. Each update preserves
prior content; you are appending or rewriting summary sections, not deleting:
current-state.md -- overwrite the "Latest snapshot summary" sections.
research-memory.md -- append durable facts.
preferences.md -- append/correct user preferences.
decision-log.md -- append today's decisions with date.
open-questions.md -- add new, mark closed-but-keep-history.
task-ledger.md -- move tasks between Active and Done.
paper-map.md -- only when papers / claims / tags changed.
- Bump
manifest.json's snapshot_count and last_updated (and
last_updated_device to your slug).
- Report one line to the user:
Captured: snapshot {filename}, durable files updated. Resume on another device with "resume research state".
Conflict prevention
- Don't run
init if manifest.json already exists -- it's idempotent for
files but you don't need to call it.
- If
validate (or your inspection) reveals a stale or corrupt durable file,
prefer surgical edits to a single key rather than rewriting the file from
scratch.
Quality bar
The next device should be able to read current-state.md, task-ledger.md,
and the latest snapshot, then continue the research without asking the user to
re-explain what happened. If you can't write a snapshot that passes that bar,
report the gap honestly rather than fabricating context.
1---2name: capture-research-state3description: Snapshot the current research session into the Obsidian vault for cross-device resume. Use for "save research state", "snapshot session", "checkpoint research".4---56# Capture Research State (Desktop)78Use this skill to turn the current Claude Desktop session into durable, portable9research context -- a snapshot another device can pick up later.1011The destination is a visible folder at the vault root: `00-Claude-Context/`. It12contains an append-only `session-snapshots/` subfolder plus seven durable13Markdown files that summarize the cumulative research state. Obsidian Sync /14iCloud / OneDrive / Syncthing replicates the folder; the next device sees it.1516This skill does **not** replace the existing `handoff` skill (that one writes to17the Claude Code memory dir + `00_Inbox/`, single-device). Use `handoff` for a18session-end checkpoint visible to the next chat on the *same* machine; use this19skill when you want continuity across devices.2021## Operating Rules (do not violate)22231. Work only inside the selected research vault and its `00-Claude-Context/` folder.242. Never write into Claude app data, audit logs, credentials, browser stores,25 caches, keychains, or operating-system configuration.263. Treat `00-Claude-Context/session-snapshots/` as **append-only**. Never27 overwrite or delete an existing snapshot, even if asked.284. If the context folder is missing or invalid, run the bundled helper:29 `python "${CLAUDE_PLUGIN_ROOT}/bin/research_sync_agent.py" init --vault "{vault path}"`.30 If `python` is not on PATH, fall back to `py -3.12` on Windows. If neither is31 available, build the schema by hand from32 `${CLAUDE_PLUGIN_ROOT}/references/context-schema.md`.335. Consult `${CLAUDE_PLUGIN_ROOT}/references/context-schema.md` before changing34 any context file.3536## Capture Procedure37381. Resolve the vault path. Prefer `OBSIDIAN_VAULT_PATH` from the environment; if39 absent, ask the user once and remember for the rest of the session.402. Confirm `00-Claude-Context/manifest.json` exists. If missing, run `init` (see41 rule 4) before continuing.423. Build a snapshot in memory with these sections:43 - **Current goal** -- one paragraph.44 - **Active evidence and files** -- papers, vault notes, datasets, code paths.45 - **Claims established** -- what was settled this session (with citation keys).46 - **Decisions made** -- including reasoning.47 - **Open questions** -- unresolved items blocking progress.48 - **Task ledger changes** -- completed, active, deferred, abandoned.49 - **Preferences or corrections learned** -- user steering this session.50 - **Resume prompt** -- a 2-4 sentence imperative for the next session.514. Write the snapshot to52 `00-Claude-Context/session-snapshots/{YYYY-MM-DDTHHMMSSZ}-{device-slug}.md`.53 The timestamp is UTC, ISO 8601 with the `Z` suffix. The device slug comes54 from the active machine's hostname (lowercased, alphanumerics + dashes).55 If a file with that exact name somehow exists, append `-{pid}` for collision56 avoidance -- never overwrite.575. Update the seven durable files from the new snapshot. Each update preserves58 prior content; you are appending or rewriting summary sections, not deleting:59 - `current-state.md` -- overwrite the "Latest snapshot summary" sections.60 - `research-memory.md` -- append durable facts.61 - `preferences.md` -- append/correct user preferences.62 - `decision-log.md` -- append today's decisions with date.63 - `open-questions.md` -- add new, mark closed-but-keep-history.64 - `task-ledger.md` -- move tasks between Active and Done.65 - `paper-map.md` -- only when papers / claims / tags changed.666. Bump `manifest.json`'s `snapshot_count` and `last_updated` (and67 `last_updated_device` to your slug).687. Report one line to the user: `Captured: snapshot {filename}, durable files69 updated. Resume on another device with "resume research state".`7071## Conflict prevention7273- Don't run `init` if `manifest.json` already exists -- it's idempotent for74 files but you don't need to call it.75- If `validate` (or your inspection) reveals a stale or corrupt durable file,76 prefer surgical edits to a single key rather than rewriting the file from77 scratch.7879## Quality bar8081The next device should be able to read `current-state.md`, `task-ledger.md`,82and the latest snapshot, then continue the research without asking the user to83re-explain what happened. If you can't write a snapshot that passes that bar,84report the gap honestly rather than fabricating context.