[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-weaviate-migrate-memories":3,"mdc-wnqbn6-key":36,"related-org-weaviate-migrate-memories":363,"related-repo-weaviate-migrate-memories":405},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"migrate-memories","migrate local memories to Engram","Migrate memories from another local memory system into Engram. Supported sources: claude-mem, and Claude Code's own local file memories (~\u002F.claude\u002Fprojects\u002F*\u002Fmemory\u002F). Use this whenever the user wants to import, migrate, transfer, or backfill memories from claude-mem, Claude Code local memory, or a previous memory tool into Engram, mentions switching memory systems, asks to bring old coding-session history or per-project memory files into Engram, wants to re-import memories with their original dates, or wants to roll back \u002F undo a previous Engram migration — even if they don't say the word \"migrate\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"weaviate","Weaviate","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fweaviate.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Context","context","tag",{"name":17,"slug":18,"type":15},"Knowledge Management","knowledge-management",{"name":20,"slug":21,"type":15},"Memory","memory",{"name":23,"slug":24,"type":15},"Migration","migration",6,"https:\u002F\u002Fgithub.com\u002Fweaviate\u002Fengram-plugins","2026-08-27T13:31:51.681269",null,0,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"Weaviate Engram plugins: long-term, cross-session memory for AI coding assistants.","https:\u002F\u002Fgithub.com\u002Fweaviate\u002Fengram-plugins\u002Ftree\u002FHEAD\u002Fplugin\u002Fskills\u002Fmigrate-memories","---\nname: migrate-memories\ndescription: >\n  Migrate memories from another local memory system into Engram. Supported sources:\n  claude-mem, and Claude Code's own local file memories (~\u002F.claude\u002Fprojects\u002F*\u002Fmemory\u002F).\n  Use this whenever the user wants to import, migrate, transfer, or backfill memories from\n  claude-mem, Claude Code local memory, or a previous memory tool into Engram, mentions\n  switching memory systems, asks to bring old coding-session history or per-project memory\n  files into Engram, wants to re-import memories with their original dates, or wants to\n  roll back \u002F undo a previous Engram migration — even if they don't say the word\n  \"migrate\".\n---\n\n# Migrate memories into Engram\n\nEverything runs through one CLI bundled with the plugin. It is safe by design: dry-run by\ndefault, strictly read-only on the source store, and resumable — a local checkpoint (one\nper source) records every migrated item, so interrupted or repeated runs never send\nanything twice.\n\nInvoke it through the wrapper in this skill's `scripts\u002F` directory (next to this SKILL.md).\nIt is self-locating — no environment variables or harness-specific paths needed:\n\n```bash\nbash \u003Cthis skill's directory>\u002Fscripts\u002Fmigrate.sh [flags]\n```\n\n## Flow\n\n1. **Detect sources.** Run `migrate.sh --detect` — it lists every supported source and\n   whether its store exists on this machine. If the user already named a source, honor\n   that. If exactly one is present, use it. If several are present, ask the user which to\n   migrate — claude-mem, Claude Code local memories (`claude-memory`), or both — before\n   doing anything else; each then goes through the full flow below with\n   `--source \u003Cname>`.\n2. **Dry-run first, always.** Run with the user's flags but WITHOUT `--execute` or\n   `--rollback`, even if the user included them — those only run after step 4. The dry-run\n   writes nothing and shows exactly what would migrate, so the user decides from facts.\n3. **Present the report**: how many memories per scope and day; which source projects\n   were skipped because their required scope properties could not be resolved — usually\n   the project's directory no longer exists anywhere the CLI looks (offer\n   `--map=NAME=owner\u002Frepo`, or `--repos-dir DIR` if their repositories live somewhere\n   unusual); and the sample item. Topics are not part of the plan, and the source is not\n   pre-filtered: Engram's extraction classifies each memory into the group's topics and\n   decides what to keep.\n4. **Ask the user explicitly whether to proceed.** Executing writes to their Engram cloud\n   store — never run `--execute` or `--rollback` without a fresh confirmation from the\n   user in this conversation.\n5. **Execute**: re-run the same command with `--execute` appended. Conversations are\n   submitted in chronological order without waiting on each pipeline run (Engram queues\n   internally); the command then waits for the pipeline to settle and reports what\n   committed. Exit codes: 0 done, 1 failed submissions\u002Fruns, 3 some runs still in the\n   pipeline — re-running the same command reconciles and continues safely from the\n   checkpoint.\n6. **Summarize**: submitted \u002F committed \u002F failed \u002F still in the pipeline, and remind the\n   user that a re-run retries only what's missing. When migrating both sources, summarize\n   each.\n\n## Options to surface when relevant\n\n- `--limit N --execute` — a small smoke run before committing to a full migration.\n- `--repos-dir DIR` — extra directory to search for project repositories (repeatable).\n  Rarely needed: project directories are found through Claude Code's own session\n  registry, which records every directory the user worked in regardless of layout.\n- `--rollback` — deletes every memory the migration created (via the server's per-run\n  manifests, so organically stored memories are untouchable) and resets the checkpoint.\n  Destructive: treat like `--execute`, explicit confirmation first.\n- `--source NAME` \u002F `--db PATH` — other adapters or a non-default store location.\n\nIf asked about timestamps: memories carry their original dates as extraction context, so\nthe memory *content* reflects when things happened — but the `created_at` shown by search\nis always the ingestion time; that's a server-side limit.\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,50,56,70,119,126,269,275,336,357],{"type":42,"tag":43,"props":44,"children":46},"element","h1",{"id":45},"migrate-memories-into-engram",[47],{"type":48,"value":49},"text","Migrate memories into Engram",{"type":42,"tag":51,"props":52,"children":53},"p",{},[54],{"type":48,"value":55},"Everything runs through one CLI bundled with the plugin. It is safe by design: dry-run by\ndefault, strictly read-only on the source store, and resumable — a local checkpoint (one\nper source) records every migrated item, so interrupted or repeated runs never send\nanything twice.",{"type":42,"tag":51,"props":57,"children":58},{},[59,61,68],{"type":48,"value":60},"Invoke it through the wrapper in this skill's ",{"type":42,"tag":62,"props":63,"children":65},"code",{"className":64},[],[66],{"type":48,"value":67},"scripts\u002F",{"type":48,"value":69}," directory (next to this SKILL.md).\nIt is self-locating — no environment variables or harness-specific paths needed:",{"type":42,"tag":71,"props":72,"children":77},"pre",{"className":73,"code":74,"language":75,"meta":76,"style":76},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","bash \u003Cthis skill's directory>\u002Fscripts\u002Fmigrate.sh [flags]\n","bash","",[78],{"type":42,"tag":62,"props":79,"children":80},{"__ignoreMap":76},[81],{"type":42,"tag":82,"props":83,"children":86},"span",{"class":84,"line":85},"line",1,[87,92,98,104,109,114],{"type":42,"tag":82,"props":88,"children":90},{"style":89},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[91],{"type":48,"value":75},{"type":42,"tag":82,"props":93,"children":95},{"style":94},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[96],{"type":48,"value":97}," \u003C",{"type":42,"tag":82,"props":99,"children":101},{"style":100},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[102],{"type":48,"value":103},"this",{"type":42,"tag":82,"props":105,"children":106},{"style":100},[107],{"type":48,"value":108}," skill",{"type":42,"tag":82,"props":110,"children":111},{"style":94},[112],{"type":48,"value":113},"'",{"type":42,"tag":82,"props":115,"children":116},{"style":100},[117],{"type":48,"value":118},"s directory>\u002Fscripts\u002Fmigrate.sh [flags]\n",{"type":42,"tag":120,"props":121,"children":123},"h2",{"id":122},"flow",[124],{"type":48,"value":125},"Flow",{"type":42,"tag":127,"props":128,"children":129},"ol",{},[130,166,192,218,242,259],{"type":42,"tag":131,"props":132,"children":133},"li",{},[134,140,142,148,150,156,158,164],{"type":42,"tag":135,"props":136,"children":137},"strong",{},[138],{"type":48,"value":139},"Detect sources.",{"type":48,"value":141}," Run ",{"type":42,"tag":62,"props":143,"children":145},{"className":144},[],[146],{"type":48,"value":147},"migrate.sh --detect",{"type":48,"value":149}," — it lists every supported source and\nwhether its store exists on this machine. If the user already named a source, honor\nthat. If exactly one is present, use it. If several are present, ask the user which to\nmigrate — claude-mem, Claude Code local memories (",{"type":42,"tag":62,"props":151,"children":153},{"className":152},[],[154],{"type":48,"value":155},"claude-memory",{"type":48,"value":157},"), or both — before\ndoing anything else; each then goes through the full flow below with\n",{"type":42,"tag":62,"props":159,"children":161},{"className":160},[],[162],{"type":48,"value":163},"--source \u003Cname>",{"type":48,"value":165},".",{"type":42,"tag":131,"props":167,"children":168},{},[169,174,176,182,184,190],{"type":42,"tag":135,"props":170,"children":171},{},[172],{"type":48,"value":173},"Dry-run first, always.",{"type":48,"value":175}," Run with the user's flags but WITHOUT ",{"type":42,"tag":62,"props":177,"children":179},{"className":178},[],[180],{"type":48,"value":181},"--execute",{"type":48,"value":183}," or\n",{"type":42,"tag":62,"props":185,"children":187},{"className":186},[],[188],{"type":48,"value":189},"--rollback",{"type":48,"value":191},", even if the user included them — those only run after step 4. The dry-run\nwrites nothing and shows exactly what would migrate, so the user decides from facts.",{"type":42,"tag":131,"props":193,"children":194},{},[195,200,202,208,210,216],{"type":42,"tag":135,"props":196,"children":197},{},[198],{"type":48,"value":199},"Present the report",{"type":48,"value":201},": how many memories per scope and day; which source projects\nwere skipped because their required scope properties could not be resolved — usually\nthe project's directory no longer exists anywhere the CLI looks (offer\n",{"type":42,"tag":62,"props":203,"children":205},{"className":204},[],[206],{"type":48,"value":207},"--map=NAME=owner\u002Frepo",{"type":48,"value":209},", or ",{"type":42,"tag":62,"props":211,"children":213},{"className":212},[],[214],{"type":48,"value":215},"--repos-dir DIR",{"type":48,"value":217}," if their repositories live somewhere\nunusual); and the sample item. Topics are not part of the plan, and the source is not\npre-filtered: Engram's extraction classifies each memory into the group's topics and\ndecides what to keep.",{"type":42,"tag":131,"props":219,"children":220},{},[221,226,228,233,235,240],{"type":42,"tag":135,"props":222,"children":223},{},[224],{"type":48,"value":225},"Ask the user explicitly whether to proceed.",{"type":48,"value":227}," Executing writes to their Engram cloud\nstore — never run ",{"type":42,"tag":62,"props":229,"children":231},{"className":230},[],[232],{"type":48,"value":181},{"type":48,"value":234}," or ",{"type":42,"tag":62,"props":236,"children":238},{"className":237},[],[239],{"type":48,"value":189},{"type":48,"value":241}," without a fresh confirmation from the\nuser in this conversation.",{"type":42,"tag":131,"props":243,"children":244},{},[245,250,252,257],{"type":42,"tag":135,"props":246,"children":247},{},[248],{"type":48,"value":249},"Execute",{"type":48,"value":251},": re-run the same command with ",{"type":42,"tag":62,"props":253,"children":255},{"className":254},[],[256],{"type":48,"value":181},{"type":48,"value":258}," appended. Conversations are\nsubmitted in chronological order without waiting on each pipeline run (Engram queues\ninternally); the command then waits for the pipeline to settle and reports what\ncommitted. Exit codes: 0 done, 1 failed submissions\u002Fruns, 3 some runs still in the\npipeline — re-running the same command reconciles and continues safely from the\ncheckpoint.",{"type":42,"tag":131,"props":260,"children":261},{},[262,267],{"type":42,"tag":135,"props":263,"children":264},{},[265],{"type":48,"value":266},"Summarize",{"type":48,"value":268},": submitted \u002F committed \u002F failed \u002F still in the pipeline, and remind the\nuser that a re-run retries only what's missing. When migrating both sources, summarize\neach.",{"type":42,"tag":120,"props":270,"children":272},{"id":271},"options-to-surface-when-relevant",[273],{"type":48,"value":274},"Options to surface when relevant",{"type":42,"tag":276,"props":277,"children":278},"ul",{},[279,290,300,317],{"type":42,"tag":131,"props":280,"children":281},{},[282,288],{"type":42,"tag":62,"props":283,"children":285},{"className":284},[],[286],{"type":48,"value":287},"--limit N --execute",{"type":48,"value":289}," — a small smoke run before committing to a full migration.",{"type":42,"tag":131,"props":291,"children":292},{},[293,298],{"type":42,"tag":62,"props":294,"children":296},{"className":295},[],[297],{"type":48,"value":215},{"type":48,"value":299}," — extra directory to search for project repositories (repeatable).\nRarely needed: project directories are found through Claude Code's own session\nregistry, which records every directory the user worked in regardless of layout.",{"type":42,"tag":131,"props":301,"children":302},{},[303,308,310,315],{"type":42,"tag":62,"props":304,"children":306},{"className":305},[],[307],{"type":48,"value":189},{"type":48,"value":309}," — deletes every memory the migration created (via the server's per-run\nmanifests, so organically stored memories are untouchable) and resets the checkpoint.\nDestructive: treat like ",{"type":42,"tag":62,"props":311,"children":313},{"className":312},[],[314],{"type":48,"value":181},{"type":48,"value":316},", explicit confirmation first.",{"type":42,"tag":131,"props":318,"children":319},{},[320,326,328,334],{"type":42,"tag":62,"props":321,"children":323},{"className":322},[],[324],{"type":48,"value":325},"--source NAME",{"type":48,"value":327}," \u002F ",{"type":42,"tag":62,"props":329,"children":331},{"className":330},[],[332],{"type":48,"value":333},"--db PATH",{"type":48,"value":335}," — other adapters or a non-default store location.",{"type":42,"tag":51,"props":337,"children":338},{},[339,341,347,349,355],{"type":48,"value":340},"If asked about timestamps: memories carry their original dates as extraction context, so\nthe memory ",{"type":42,"tag":342,"props":343,"children":344},"em",{},[345],{"type":48,"value":346},"content",{"type":48,"value":348}," reflects when things happened — but the ",{"type":42,"tag":62,"props":350,"children":352},{"className":351},[],[353],{"type":48,"value":354},"created_at",{"type":48,"value":356}," shown by search\nis always the ingestion time; that's a server-side limit.",{"type":42,"tag":358,"props":359,"children":360},"style",{},[361],{"type":48,"value":362},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":364,"total":404},[365,382,397],{"slug":8,"name":8,"fn":366,"description":367,"org":368,"tags":369,"stars":379,"repoUrl":380,"updatedAt":381},"search and manage Weaviate vector collections","Search, query, and manage Weaviate vector database collections. Use for semantic search, hybrid search, keyword search, natural language queries with AI-generated answers, collection management, data exploration, filtered fetching, data imports from PDF\u002FCSV\u002FJSON\u002FJSONL files, create example data and collection creation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[370,373,376],{"name":371,"slug":372,"type":15},"AI","ai",{"name":374,"slug":375,"type":15},"Database","database",{"name":377,"slug":378,"type":15},"Search","search",101,"https:\u002F\u002Fgithub.com\u002Fweaviate\u002Fagent-skills","2026-07-17T06:07:22.572532",{"slug":383,"name":383,"fn":384,"description":385,"org":386,"tags":387,"stars":379,"repoUrl":380,"updatedAt":396},"weaviate-cookbooks","build AI applications with Weaviate","Use this skill when the user wants to build AI applications with Weaviate. It contains a high-level index of architectural patterns, 'one-shot' blueprints, and best practices for common use cases. Currently, it includes references for building a Query Agent Chatbot, Data Explorer, Multimodal PDF RAG (Document Search), Basic RAG, Advanced RAG, Basic Agent, Agentic RAG, and optional guidance on how to build a frontend for each of them.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[388,391,392,395],{"name":389,"slug":390,"type":15},"AI Infrastructure","ai-infrastructure",{"name":374,"slug":375,"type":15},{"name":393,"slug":394,"type":15},"RAG","rag",{"name":377,"slug":378,"type":15},"2026-07-17T06:05:43.91763",{"slug":4,"name":4,"fn":5,"description":6,"org":398,"tags":399,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[400,401,402,403],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":23,"slug":24,"type":15},3,{"items":406,"total":85},[407],{"slug":4,"name":4,"fn":5,"description":6,"org":408,"tags":409,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[410,411,412,413],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":23,"slug":24,"type":15}]