The crossmem-loader skill
The CLI knows where your history is. The skill knows what to do about it — when to reach for it, how to let you choose, and how to turn a raw transcript into something worth resuming into.
You do not install it. It ships inside the CLI and lands in ~/.claude/skills/crossmem-loader and ~/.agents/skills/crossmem-loader the moment crossmem is installed — postinstall on npm, first command on Homebrew, go install or a downloaded binary. Any agent that reads SKILL.md picks it up from there, and an upgrade refreshes it.
crossmem install --skills --agents # force a reinstall
crossmem uninstall --skills --agents # remove it, and stop it coming back
CROSSMEM_NO_SKILL_INSTALL=1 crossmem … # skip it for this run A stamp at ~/.config/crossmemcli/skills.stamp records what was installed, so after the first run the check costs one small file read. $CLAUDE_SKILLS_DIR and $AGENTS_SKILLS_DIR relocate the targets.
When your agent reaches for it
The skill's description is written so an agent invokes it before listing or reading files — guessing at prior context wastes exactly the tokens crossmem exists to save.
Resuming
“pick up where I left off”, “where did I leave off”, “catch me up on this folder”, “I hit a usage limit in Codex”, “import my Claude memory”.
Persisting
“save this context”, “write it down”, “commit the context”, “so the next session doesn't re-pay for this”.
Export / import
“dump every conversation”, “training corpus”, “RAG corpus”, “carry conversations to another machine”, “no model names”.
Diagnosing
“crossmem can't see my Devin sessions”, “no sessions found”, “where does it look for X”, “my tool keeps its sessions somewhere else”.
The load flow
The skill's hot path, and the reason it exists as a skill rather than a flag.
List this folder's recent sessions
crossmem list . --limit 5, or--jsonto pick programmatically. If the folder is a git worktree, sessions from the repository's other checkouts come too — that is usually where the work being resumed was actually done, and each row'sworkspaceshows which checkout it came from.Show them, then ask — never auto-load
A numbered list in agent · recency · summary shape, then a confirm:
1. claude · 15 hours ago · export conversations as q&a 2. codex · 2 days ago · windows store paths "There's a claude session from 15 hours ago: export conversations as q&a. Load it?"The skill waits for a yes, a number, or a summary.
lastQuestionis the strongest content signal — it points at unfinished work;firstQuestionis the goal. Recency labels the row; it is not a reason to pick on your behalf. Guessing wrong costs you a whole reconstructed context, which is the one failure this tool is supposed to prevent.Load the chosen session in full
crossmem load --session <ref> --full. The skill passes--fullexplicitly even when your config already sets it, so its behavior never depends on your machine's defaults.Write the brief — the filtering step
Ignore the harness boilerplate:
CLAUDE.md/AGENTS.mdblocks,<system-reminder>, command hooks, previously-pasted bundles, and the agent's own narration about loading crossmem. From the real work left over, synthesize role · decisions (built, chosen, rejected, and why) · current state.Weight the tail for current state and open threads, the head for the original goal. Where they conflict the tail wins — it is the later decision. State what is unfinished explicitly; that is what you are resuming into.
Offer to persist it
If the work continues past this session,
crossmem update .writes a committable.crossmem/so the next session — yours, another tool's, or a teammate's — starts from the brief instead of paying to rebuild it.
When .crossmem/context.md already exists, the skill reads it before running list/load: a curated brief costs one file read where a full load costs a whole transcript. It falls through to the load flow when the brief is missing, stale against what you're describing, or too thin to act on.
What it is told never to do
Never invent the elided middle.
When the bundle's[... middle of the session elided ...]marker plainly hides a decision the tail refers back to, the skill says so and asks, or narrows with--provider— it does not reconstruct the missing reasoning.Never blur guardrails and history.
crossmem guardrails .prints the repo's authoritative instruction files. Transcripts say what happened; guardrails say what must be. A transcript that contradicts a guardrail loses.Never touch secrets.
No credential files,*.env, auth databases orvault/directories — and never echo a secret value into a brief.Never auto-pick a session
when several are plausible.
What's in the skill
Progressive disclosure — the routing table loads first, and a reference file is read only when that branch is taken.
| File | Holds |
|---|---|
SKILL.md | routing table, the load hot path, guardrails vs. history, safety |
references/persisting.md | crossmem update and the committable .crossmem/ |
references/portability.md | export/import of qa.jsonl — training, RAG, moving machines |
references/troubleshooting.md | scan, config, env overrides, debug logging |