migrate-memory
Skill1 starsChanged 40 days agoMITView on GitHub
Carry an agent group's memory across a provider switch, in either direction (e.g. Claude ↔ Codex, or any provider to/from another). Run after the operator switches a group's provider with `ncl groups config update --provider`. The coding agent reads the source provider's memory store, distills it into the target provider's store, and restarts the group. Triggers on "migrate memory", "carry memory over", "the agent forgot everything after the switch".
7 other projects use a version of this.
Adopted by
Most recently taken up by
- nanocoai/nanoclawtheir own version, first seen Nov 3, 2026
- prathish-ks/isthmustheir own version, first seen Oct 12, 2026
- gavrielc/nanoclawtheir own version, first seen Oct 8, 2026
- qwibitai/nanoclawtheir own version, first seen Oct 8, 2026
- TomGranot/groupguardtheir own version, first seen Sep 3, 2026
- corygabrielsen/skillstheir own version, first seen May 19, 2026
Used with
Projects with it also use add-anydoc, add-clidash and 5 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
TomGranotSkilladd-anydoc
Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when agents need to read attached Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV, or text-based PDF files without uploading them to a hosted parser.
Also in 5 projects that use this
TomGranotSkilladd-clidash
Add clidash — a zero-dependency, read-only web dashboard that derives its tabs and tables at runtime from any CLI that lists resources as JSON. Ships pre-wired for NanoClaw's ncl CLI (agent groups, sessions, channels, users, roles), plus message-activity charts, a log tail, and a read-only file viewer for group skills/CLAUDE.md/profiles.
Also in 5 projects that use this
- +5 more from TomGranot
Other versions7 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 7
- gavrielc/nanoclaw★ 31ksame name
- nanocoai/nanoclaw★ 31ksame name
- qwibitai/nanoclaw★ 31ksame name
- b1rdmania/ghostclaw★ 91same name
- TomGranot/groupguard★ 3same name
- prathish-ks/isthmus★ 2same name
- corygabrielsen/skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository54 other files it gives its agents.
- container/AGENTS.mdAGENTS.md
- container/CLAUDE.mdCLAUDE.md
- add-atomic-chat-toolSkill
- add-codexSkill
- add-dashboardSkill
- add-deltachatSkill
- add-discordSkill
- add-emacsSkill
- add-gcal-toolSkill
- add-gchatSkill
- add-githubSkill
- add-gmail-toolSkill
- add-imessageSkill
- add-karpathy-llm-wikiSkill
- add-linearSkill
- add-macos-statusbarSkill
- add-matrixSkill
- add-mnemonSkill
- add-ollama-providerSkill
- add-ollama-toolSkill
- add-opencodeSkill
- add-piSkill
- add-resendSkill
- add-rtkSkill
- add-signalSkill
- add-slackSkill
- add-teamsSkill
- add-telegramSkill
- add-vercelSkill
- add-webexSkill
- add-wechatSkill
- add-whatsapp-cloudSkill
- add-whatsappSkill
- archive-tripSkill
- customizeSkill
- debugSkill
- get-qodo-rulesSkill
- init-first-agentSkill
- init-onecliSkill
- learnSkill
- manage-channelsSkill
- manage-mountsSkill
- migrate-from-openclawSkill
- migrate-from-v1Skill
- migrate-nanoclawSkill
- nano-pvt-hubSkill
- new-knowledge-graph-tutorSkill
- new-tripSkill
- qodo-pr-resolverSkill
- reflectSkill
- setupSkill
- update-nanoclawSkill
- update-skillsSkill
- use-native-credential-proxySkill
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 1 is distinctive, and 4 are very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 30
Read groups/<folder>/CLAUDE.local.md and any workspace files it references.
- Very specific: line 31
If memory/memories/imported-agent-memory.md already exists, a previous import happened — show the operator what's there and ask before …
- Very specific: line 33
If memory/index.md exists, add the following:
- Distinctive: line 34
Leave the source store exactly as it is.
- Very specific: line 38
Read memory/index.md, then the files it points to under memory/memories/ (and memory/data/ where durable).
“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Migrate memory across a provider switch
NanoClaw does not migrate memory at runtime — each provider keeps its own store, and carrying content across is the operator's move, executed by you (the coding agent). This skill is the whole mechanism: read the source store, infer what is durable, write it into the target store, restart.
You translate between store shapes, not provider names. There are two:
- Flat file —
CLAUDE.local.mdat the group workspace root (the Claude provider; may reference satellite files in the workspace). - Scaffold tree —
memory/(any provider withusesMemoryScaffold, e.g. Codex).memory/index.mdis the index; durable notes live undermemory/memories/;memory/memories/imported-agent-memory.mdis the conventional landing file for imported memory.
A switch only needs migration when it crosses shapes. Two providers that both use the scaffold share the same memory/ tree, so switching between them carries nothing — the memory is already there. The work is always one of: flat → scaffold, or scaffold → flat.
Principles: copy, never move (the source store stays intact — it IS the rollback), idempotent (re-running must not duplicate), distill, don't dump (you are the inference step: keep identity/seed instructions, user preferences, durable facts; drop conversational residue).
Step 1: Identify the group, both providers, and the direction
ncl groups list, thenncl groups config get --id <group-id>— note the current (target)provider. Ask the operator which group, and which provider it switched from, if either is ambiguous.- Map each provider to its store shape (flat
CLAUDE.local.mdvsmemory/scaffold), then inspectgroups/<folder>/:- Same shape on both sides (e.g. scaffold → scaffold) → the store is shared; nothing to migrate. Tell the operator and stop.
- Flat → scaffold (source has
CLAUDE.local.mdcontent, target uses the scaffold) → Step 2. - Scaffold → flat (source has a
memory/tree, target is Claude) → Step 3. - Source missing or empty → nothing to migrate; tell the operator and stop.
Step 2: flat → scaffold (CLAUDE.local.md → memory/)
- Read
groups/<folder>/CLAUDE.local.mdand any workspace files it references. - If
memory/memories/imported-agent-memory.mdalready exists, a previous import happened — show the operator what's there and ask before overwriting; integrate only what's new. - Distill the content into
groups/<folder>/memory/memories/imported-agent-memory.md(create the directories if missing — the container scaffolds the rest of the tree at boot and never clobbers your files). Lead with anything that defines who the agent is or how it must behave; references to satellite files keep their workspace-root paths. - If
memory/index.mdexists, add the following:- [Imported agent memory](memories/imported-agent-memory.md) — seed instructions and memory carried over from a previous provider. Read it first and treat it as binding; it may define who you are and how to behave. Integrate its facts into your memory as you work; never modify files that belong to another provider's memory system. - Leave the source store exactly as it is.
Step 3: scaffold → flat (memory/ → CLAUDE.local.md)
- Read
memory/index.md, then the files it points to undermemory/memories/(andmemory/data/where durable). - Integrate the durable facts into
groups/<folder>/CLAUDE.local.mdunder a clearly marked section (e.g.## Imported from memory/ (<date>)), deduplicating against what's already there. If the section already exists, update it instead of appending a second one. - Leave the source store exactly as it is.
Step 4: Restart and verify
ncl groups restart --id <group-id>Tell the operator to send the group a quick test message that depends on a migrated fact (a preference, a project name). If the agent doesn't know it, re-check that the target file landed in the right group folder.
Note: switching the provider is an operator action — ncl groups config update --id <group-id> --provider <name> from the host. See docs/provider-migration.md for what carries over automatically.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

