MemoBridge extracts, standardizes, and migrates AI memories across tools and workspaces. AI assistants accumulate valuable context over time — user preferences, project history, knowledge progress, vocabulary lists, daily routines. This skill ensures none of that is lost when switching tools or machines.
Node.js >= 22.0.0 must be installed. The MemoBridge CLI is available at the project root.
ToolExtractImportMethodCodeBuddy✅✅Direct file read ( .codebuddy/ + .memory/)OpenClaw✅✅Direct file read ( ~/.openclaw/workspace/)Hermes Agent✅✅Direct file read ( ~/.hermes/memories/)Claude Code✅✅Direct file read ( CLAUDE.md + ~/.claude/)Cursor✅✅Direct file read ( .cursorrules + ~/.cursor/)ChatGPT✅ (prompt)✅Prompt-guided export, instruction-based importDoubao / 豆包✅ (prompt)✅Prompt-guided export, instruction-based importKimi✅ (prompt)✅Prompt-guided export, context injection import
Run the detect command to discover all AI tools on the system:
bash
cd {project_root}
node dist/cli.js detect
This scans for local tools (CodeBuddy/OpenClaw/Hermes/Claude Code/Cursor) and lists cloud tools (ChatGPT/Doubao/Kimi) that require prompt-guided export.
For local tools (direct file access):
bash
# CodeBuddy — auto-scans all workspaces
node dist/cli.js extract --from codebuddy -o ./memo-bridge.md
# CodeBuddy — specific workspace
node dist/cli.js extract --from codebuddy --workspace /path/to/project -o ./memo-bridge.md
# OpenClaw
node dist/cli.js extract --from openclaw -o ./memo-bridge.md
# Hermes Agent
node dist/cli.js extract --from hermes -o ./memo-bridge.md
# Claude Code
node dist/cli.js extract --from claude-code -o ./memo-bridge.md
# Cursor (with workspace for project rules)
node dist/cli.js extract --from cursor --workspace /path/to/project -o ./memo-bridge.md
For cloud tools (prompt-guided), generate the optimal export prompt:
bash
node dist/cli.js prompt --for doubao
node dist/cli.js prompt --for kimi
node dist/cli.js prompt --for chatgpt
Then instruct the user to: copy the prompt → paste into the AI tool's chat → copy the AI's response → save as a file.
For file-based tools:
bash
# To Claude Code (appends to CLAUDE.md)
node dist/cli.js import --to claude-code --input ./memo-bridge.md
# To Hermes Agent (auto-trims to 2200 UTF-8 bytes)
node dist/cli.js import --to hermes --input ./memo-bridge.md
# To OpenClaw (appends to MEMORY.md)
node dist/cli.js import --to openclaw --input ./memo-bridge.md
# To Cursor (requires --workspace)
node dist/cli.js import --to cursor --input ./memo-bridge.md --workspace /path/to/project
# To CodeBuddy
node dist/cli.js import --to codebuddy --input ./memo-bridge.md --workspace /path/to/project
For instruction-based tools:
bash
# Generates text for user to paste into ChatGPT/Doubao/Kimi
node dist/cli.js import --to doubao --input ./memo-bridge.md
node dist/cli.js import --to chatgpt --input ./memo-bridge.md
node dist/cli.js import --to kimi --input ./memo-bridge.md
bash
node dist/cli.js migrate --from codebuddy --to claude-code
node dist/cli.js migrate --from openclaw --to hermes
OptionDescription--workspace <path>Specify a single workspace path--scan-dir <path>Specify root directory for auto-discovery--output <path>Output file path (default: ./memo-bridge.md)--input <path>Input file path--dry-runPreview mode, no actual writes--overwriteOverwrite existing files instead of appending--verboseDetailed output
Third-party adapters can be registered at runtime via the public registry API — useful when a user has a proprietary or yet-unsupported tool:
typescript
import { extractorRegistry, importerRegistry, BaseExtractor } from 'memo-bridge';
class MyToolExtractor extends BaseExtractor {
readonly toolId = 'my-tool' as any;
async extract() { /* ... */ }
}
extractorRegistry.register('my-tool' as any, () => new MyToolExtractor());
See references/adapter-guide.md for the full three-step adapter recipe.
The standard interchange format is memo-bridge.md — Markdown with YAML front matter. See references/format-spec.md for the complete specification.
Key properties:
extensions section preserves tool-specific data
(Hermes skills, OpenClaw SOUL/DREAMS, …) across migrations without
polluting the common memory lists.X-API-Key,
database connection strings with embedded credentials).c:\program files can't bypass the
denylist./etc, /bin,
/usr, etc. — except OS-managed temp subtrees ( /var/folders/,
/var/tmp/, /private/tmp/).--from / --to / --for args
are validated against the registered tool list before dispatch.--workspace or --scan-dir flags--dry-run firstTo build the CLI before first use:
bash
cd {project_root}
npm install
npm run build
The project has 395 unit tests and a GitHub Actions CI that runs
lint → test → build on every push. To verify the local install:
bash
npm test # ~500ms