From mnemo-mcp
Restores encrypted memory passport from S3 or Google Drive for fresh mnemo-mcp installs on new machines or VMs, with passphrase handling and LWW merge.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mnemo-mcp:passport-bootstrap [backend: s3 | gdrive][backend: s3 | gdrive]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Restore an encrypted memory passport from a configured backend so a
Restore an encrypted memory passport from a configured backend so a fresh mnemo-mcp install picks up the user's full memory history.
Trigger on explicit signals:
Do NOT trigger when the user is on an already-configured machine
(check config(action="status") first - if total_memories > 0,
ask before importing because import LWW-merges and may NOT overwrite
local rows newer than the bundle).
Call config(action="status") and inspect the response. The default
backend is the first entry of SYNC_BACKEND env (defaults to
gdrive). If both s3 and gdrive are configured, ask the user
which one to import from. If neither is configured, stop and tell the
user they need to run the relay form first
(config(action="setup_start") in HTTP mode, or set
SYNC_S3_BUCKET + GOOGLE_DRIVE_CLIENT_ID env vars in stdio mode).
The bundle is AES-256-GCM-encrypted with an Argon2id-derived key from
the user's passphrase. The MCP server needs the RAW passphrase to
decrypt - the Argon2id hash stored in config.enc is verification-
only.
In stdio mode: instruct the user to set SYNC_PASSPHRASE env var
before running mnemo-mcp (or to relaunch with the env exported).
In HTTP mode: prompt the user to submit the relay form's passphrase field again (the raw value is held in process memory only and is cleared on restart - it is NEVER persisted).
Call config(action="import_passport", key="<backend>") where
<backend> is s3 or gdrive. The server pulls the latest bundle
from the chosen backend, decrypts with the supplied passphrase, and
applies each row via last-write-wins per row (local rows newer than
the bundle row are preserved + an audit row is written to
sync_overrides).
After the response lands, call config(action="status") again and
confirm total_memories matches expectations. If the response from
step 3 reports inserted > 0 but total_memories did not move,
something else is wrong (caller should escalate, not silently
proceed).
config(action="sync_now") from another
machine, or the bucket name in the relay form was wrong. Ask them
to verify on the source machine.KeyError on backend name -> backend isn't registered. Means
SYNC_S3_BUCKET is empty (for s3) or the gdrive token is missing.
Run the relay form to populate.config(action="sync_now") before import - that would
push the empty local DB on top of the remote, deleting other
machines' state.memory(action="import", data=...) - that imports
Phase 1 JSONL files, NOT Phase 2 encrypted passport bundles.npx claudepluginhub n24q02m/mnemo-mcpCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.