بنقرة واحدة
portability-claude
// Checklist-first guide for importing Claude data into NeuDrive and exporting NeuDrive context back into Claude-compatible materials.
// Checklist-first guide for importing Claude data into NeuDrive and exporting NeuDrive context back into Claude-compatible materials.
Use neuDrive as the canonical hub for platform import, export, listing, and status workflows through MCP plus platform-native entrypoints.
Guide for importing ChatGPT data into NeuDrive or restoring NeuDrive data into ChatGPT-compatible structures.
Guide for importing Codex workspace conventions into NeuDrive or exporting NeuDrive context back into Codex workflows.
Fallback guide for migrating data from platforms that do not yet have a dedicated NeuDrive portability manual.
| name | portability/claude |
| description | Checklist-first guide for importing Claude data into NeuDrive and exporting NeuDrive context back into Claude-compatible materials. |
| when_to_use | Use when the user asks to migrate, back up, restore, import, or export Claude data and skills. |
| tags | ["portability","migration","backup","claude","neudrive"] |
| source | system |
| read_only | true |
Use this manual when the task involves Claude Web, Claude exports, Claude memory, Claude projects, Claude skills, or restoring neuDrive context back into Claude-compatible materials.
Treat Claude portability as a category-mapping task, not just a zip-upload task.
Claude's real data surface is broader than memory + skills.
For Claude skills work, read this manual before choosing import_skill, import_skills_archive, or prepare_skills_upload.
If the user says "all skills", /mnt/skills/user, public + examples, workspace zip, or any other multi-skill request, do not start with import_skill and do not reduce the migration to SKILL.md only.
This manual follows Claude's current public surfaces:
Profile preferencesStylesMemoryStandalone chatsProjectsSkillsConnectors / external sourcesExport packagesProfile preferencesStylesstyle entity, so preserve exact style text when it matters.Memorymemory summary, manual memory edits, and chat history into one bucket.Standalone chatsProjectsSkillsConnectors / external sourcesExport packagesClaude exported data zip: the official account export from Claude settings.Claude memory export: the separate memory export/import flow.Claude Web skills workspace zip: a full zip of /mnt/skills/user from the Claude Web sandbox.update_profile for durable account-wide preferences, principles, and stable working rules.save_memory for dated notes, extracted facts, scratch material, and small derived memories.create_project, log_action, and get_project to rebuild project structure manually when the imported data really belongs to a Claude project.write_file for any imported file-like data that should be preserved in neuDrive, not just for projects. If some Claude material does not fit profile, memory, project, or skill cleanly, it may still be imported under a sensible custom directory structure.import_skill as the formal public MCP path for one skill whose files can be represented as a map[path]string. Nested relative paths are allowed, so text and code files such as SKILL.md, prompts, .py, .js, .ts, .sh, .json, .yaml, .xml, and .xsd can stay on this path.import_skill path, import the whole skill directory, not just SKILL.md. Include every text/code file the skill needs, such as scripts/, prompts/, config files, schemas, and helper sources.import_skill as the primary transport. Package the full directories first and choose prepare_skills_upload or, only when already known small enough, import_skills_archive.import_skills_archive only for archives already known to be small enough for one MCP tool call. For Claude Web, that means the zip must already be known to be <= 64 KB. Do not cat base64(zip), paste archive base64 into chat, or otherwise emit long archive strings into the conversation, because that can crash the conversation session.write_file to patch one file, archive unsupported exports, or preserve additional imported Claude data under custom paths when no first-class neuDrive domain exists.64 KB, or if the size cannot be checked safely, do not read or base64 it into MCP args. Do not cat base64(zip) or otherwise print long archive strings into the conversation.prepare_skills_upload plus /agent/import/skills as the prepared upload path for Claude Web zips larger than 64 KB, zips whose size cannot be checked safely, or any archive that should not be inlined into one tool call.prepare_skills_upload, first POST the returned connectivity_probe_url. If it returns 200, upload directly from the Claude sandbox with the returned curl_example and do not hand the zip off to the user.Settings -> Capabilities -> Code execution and file creation -> Additional allowed domains and add the neuDrive host, such as neudrive.ai on the official service. Then retry the probe and direct upload.browser_upload_url or ask the user to run the returned curl_example manually./skills/<name>/... in neuDrive. Do not ask the user for a separate destination directory.Claude exported data zip separate from skills archive flows. It currently uses /api/import/claude-data and does not have public MCP parity.Claude memory export separate from full account export. It currently uses /api/import/claude-memory and does not have public MCP parity.| Claude category | Claude source | neuDrive target | Preferred interface | Fallback interface | Current parity / notes |
|---|---|---|---|---|---|
| Profile preferences | account-wide preference text | /memory/profile/preferences | update_profile, read_profile | /api/import/profile | Strong direct mapping |
| Styles | Claude style presets or custom styles | /memory/profile/preferences, archive note if exact style text matters | update_profile for stable rules, write_file for exact style archive | none | No first-class style object in neuDrive |
| Claude memory summary or exported memory text | account memory, manual memory edits, memory export | /memory/profile/*, /memory/scratch/*, /memory/claude/memory.md | /api/import/claude-memory when exported memory text is available; otherwise update_profile + save_memory | write_file for archive notes | Public MCP parity does not exist for the Claude memory import HTTP path |
| Standalone chats | non-project chat history | /memory/conversations/*.md or archive notes | /api/import/claude-data when the official export zip is available | write_file, save_memory | No first-class public MCP conversation importer |
| Project instructions | project-level guidance | /projects/<name>/context.md | create_project, write_file, get_project | archive note under /projects/<name>/... | Manual reconstruction path |
| Project knowledge / uploaded files | project knowledge base, docs, code snippets, attached files | /projects/<name>/... when rebuilding manually; /skills/claude-<project>/... via current full export importer | create_project, write_file, list_directory, read_file | /api/import/claude-data | Current full export importer does not rebuild first-class neuDrive projects |
| Project chats and project memory summary | chats inside a project, project-specific memory | archive notes, /memory/conversations/*.md, project notes | /api/import/claude-data for exported conversations; otherwise manual archive with write_file | save_memory for distilled facts | No first-class public MCP importer for project chats or project memory |
| Single text/code skill directory | one Claude skill whose files are all text-based and can be represented as strings, including nested paths like scripts/run.py | /skills/<name>/... | import_skill(name, files) | import_skills_archive for a small exact-byte archive, or prepare_skills_upload when the archive should not be inlined | Good for SKILL.md, prompts, Python/source files, configs, and other text assets. Still send the whole skill directory, not just SKILL.md. |
| Claude Web skills workspace zip | /mnt/skills/user full workspace zip, or any multi-skill / binary-heavy zip | /skills/<name>/... | prepare_skills_upload, then POST connectivity_probe_url, then direct curl_example upload when the probe returns 200 | browser_upload_url, user-run curl_example, or import_skills_archive only when the zip is already known to be <= 64 KB | Must preserve full directories, scripts, prompts, and assets. Do not read or base64 a larger Claude Web zip into MCP args. |
| Connectors / external sources | connected services, selected repos/files, imported external context | /projects/<name>/..., setup notes, archive manifests | write_file, log_action, search_memory | manual recreation notes | Usually preserve setup metadata, not third-party data ownership |
| Official full data export zip | official Claude account export | /memory/claude/memory.md, /memory/conversations/*.md, /skills/claude-<project>/... | /api/import/claude-data | none on the public MCP surface | Current importer expects users.json, memories.json, projects.json, conversations.json |
| Account/user metadata from export | users.json inside the full export zip | archive note only if manually preserved | write_file if manually archiving extracted metadata | none | Current full export importer does not map users.json into a first-class neuDrive domain |
available, missing, or blocked:
profile preferences, styles, memory, standalone chats, project instructions, project knowledge, project chats, skills, connectors, official exports.Claude exported data zip, route that package to /api/import/claude-data first and explicitly note that there is no public MCP equivalent yet./api/import/claude-memory; otherwise split the content into durable profile rules for update_profile and smaller derived notes for save_memory.profile preferences with update_profile. Do not bury stable account-wide rules inside scratch memory.styles by extracting the stable formatting and communication rules into update_profile, and preserve the exact style text as an archive note when the exact wording matters.standalone chats separately from memory summaries. Use the full export path when available; otherwise preserve them as archive notes or files instead of pretending there is direct conversation parity.project instructions into /projects/<name>/context.md with create_project plus write_file.project knowledge into /projects/<name>/... when doing manual reconstruction. If using the official full export zip, note that the current importer writes project docs under /skills/claude-<project>/... rather than creating first-class neuDrive projects.project chats and project memory summary as archive notes or conversation files unless the full export importer is being used. Do not claim first-class public MCP parity here.skills, choose the path by payload shape instead of by platform name alone:
map[path]string -> import_skill(name, files)scripts/run.py, prompts/review.txt, data/schema.xsd, or bin/tool.shSKILL.md; if scripts/, prompts, config, schemas, or helper files exist, include them too/mnt/skills/user, public + examples, a workspace export, or any other multi-skill batch -> do not use import_skill; package one full archive first64 KB or the size cannot be checked safely -> prepare_skills_uploadimport_skills_archive only when the archive is already known small enough for one MCP tool call/skills/<skill-name>/... in neuDrive. A fallback upload page or upload command should target the /skills root by default and should not ask the user to pick another destination directory.SKILL.md-only skill exports. Preserve the entire skill directory and keep SKILL.md, scripts, prompts, config, schemas, and binary assets together.<= 64 KB. Do not split one skill directory into partial fragments unless a future chunked import flow exists.prepare_skills_upload is chosen, package one complete zip first, then try the direct sandbox upload path before involving the user.connectivity_probe_url.200, use the returned curl_example from the Claude sandbox and finish the upload directly.Settings -> Capabilities -> Code execution and file creation -> Additional allowed domains, then retry the probe and direct upload.browser_upload_url for ordinary users or ask the user to run the returned curl_example manually.write_file under a clear custom directory structure instead of forcing them into a project.connectors / external sources as setup metadata, selected-file manifests, or project notes. Do not claim that third-party service data has been imported unless those files were actually captured.imported, archived, and blocked items, with the exact interface used for each category.When /mnt/skills/user exists and the goal is to move Claude Web skills into neuDrive, prefer a full archive:
cd /mnt/skills/user
zip -r /mnt/user-data/outputs/neudrive-skills.zip .
Then choose the transport path that matches the payload:
import_skill. The files map may include nested paths like scripts/main.py.
SKILL.md/mnt/skills/user, public + examples, or any multi-skill workspace64 KB, do not read the bytes64 KB, or the size is unknown, call prepare_skills_upload.connectivity_probe_url.
200, use the returned curl_example from the Claude sandbox and finish the upload directlySettings -> Capabilities -> Code execution and file creation -> Additional allowed domains, then retrybrowser_upload_url or ask the user to run the returned curl_example manually<= 64 KB, read the zip bytes, base64-encode the archive, and call import_skills_archive with platform="claude-web" and the original archive name.64 KB limit.All of these paths still import into the neuDrive /skills root.
When prepare_skills_upload is used for Claude Web skill import, the agent should switch from "inline MCP import" mode to "prepared upload" mode.
Preferred flow:
scripts/, prompts, config files, schemas, fonts, or other helper assetsSKILL.md-only shortcutprepare_skills_upload.connectivity_probe_url.200, upload the zip directly from the Claude sandbox with the returned curl_example.
Settings -> Capabilities -> Code execution and file creationneudrive.ai, under Additional allowed domainscurl_example manually/skills root by default. The user should not choose or type another destination path.Suggested agent wording:
I packaged your Claude Web skills as a full zip, including all files under each skill directory, not just
SKILL.md. I first tested whether Claude can POST directly to the neuDrive host. If that probe succeeds, I will upload the zip directly from the Claude sandbox with the prepared curl command. If Claude blocks that POST, please openSettings -> Capabilities -> Code execution and file creation -> Additional allowed domains, add the neuDrive host, and then I can retry the direct upload. If you already added it and this same Claude Web conversation still cannot POST, the new setting may require a new conversation before it takes effect. In that case, you can start a new conversation and retry, or I can fall back to the browser upload page or give you the curl command to run yourself.
If the token response includes both a browser upload link and a curl example, keep the direct sandbox curl path as the first choice after a successful probe. If direct upload stays blocked, use the browser path for ordinary users and the curl path for terminal-comfortable users. Do not ask ordinary users to manually build multipart requests if a browser upload link exists.
profile preferences, styles, memory, standalone chats, project instructions, project knowledge, project chats, skills, connectors.read_profile into Claude-ready profile preferences.style, derive it from the formatting and communication rules in profile or archived notes, and mark it as a manual Claude style setup step./memory/conversations/*.md as chat archive/reference material unless the user explicitly wants manual conversation restoration notes.project instructions from /projects/<name>/context.md.project knowledge from /projects/<name>/... and related files.skills one directory at a time for single-skill cases, or as a full archive for many skills or asset-heavy skills.connectors / external sources as manual setup instructions and selected-file manifests. Do not claim that neuDrive can restore third-party app connections natively./api/import/claude-memory./api/import/claude-data./memory/claude/memory.md, conversations under /memory/conversations/*.md, and project documents under /skills/claude-<project>/...; this is useful but not full first-class project parity.users.json into a first-class neuDrive domain.import_skill is the right path for one text/code skill whose files can be represented as strings, including nested paths such as scripts/*.py. Even then, import the whole skill directory, not just SKILL.md.import_skills_archive unless it is already known to be <= 64 KB. If the size is unknown, default to prepare_skills_upload.prepare_skills_upload plus /agent/import/skills is the prepared upload path for Claude Web archives that should not be inlined into one tool call.prepare_skills_upload is used, direct sandbox upload via the returned curl_example is preferred after the returned connectivity_probe_url succeeds.Settings -> Capabilities -> Code execution and file creation -> Additional allowed domains before retrying direct upload.64 KB limit. True chunked import for one oversized skill does not exist yet.Use or adapt this prompt when another agent needs to execute Claude portability work:
Read
/skills/portability/claude/SKILL.mdfirst. Inventory the Claude-side categories asprofile preferences,styles,memory,standalone chats,project instructions,project knowledge,project chats,skills,connectors, andofficial exports. Map each category to the nearest neuDrive domain instead of mixing them together. Useupdate_profilefor durable account-wide rules,save_memoryfor smaller derived notes,create_projectfor true Claude project reconstruction, andwrite_filefor any additional imported Claude files or metadata that should be preserved even when they do not fit a first-class neuDrive domain. The agent may design a sensible custom directory structure for those files. Useimport_skillonly for one text/code skill whose files can be represented as strings. If the user asks for all skills,/mnt/skills/user,public + examples, or any multi-skill workspace, do not useimport_skill; package the full directories first. Never simplify a skill toSKILL.mdonly; include the whole skill directory and all neededscripts/, prompts, config, schemas, and assets. For Claude Web skills zips, check zip size before reading contents. If the zip is larger than64 KB, or if the size cannot be checked safely, do not read or base64 it into MCP args; switch toprepare_skills_uploadinstead. Afterprepare_skills_upload, first POST the returnedconnectivity_probe_url. If it returns200, use the returnedcurl_exampleto upload directly from the Claude sandbox. If that POST fails in Claude Web, tell the user to add the neuDrive host toSettings -> Capabilities -> Code execution and file creation -> Additional allowed domains, then retry. If the user already added the domain and the probe still fails in the current Claude Web conversation, explain that the new setting may require a new conversation before it takes effect, and ask whether they want to start a new conversation and retry or use the fallback now. If the user does not add it, does not want to start a new conversation, or direct upload is still blocked, fall back to the returned browser upload link or ask the user to run the returned curl command manually. Only useimport_skills_archivewhen the zip is already known to be<= 64 KB. All skill imports land under/skills/<name>/...in neuDrive, and the browser upload page targets the/skillsroot by default. Preserve unsupported structures as archive notes, structured metadata, or custom file trees instead of dropping them, and finish withimported,archived, andblockeditems plus the exact interface used for each category.
{{CURRENT_USER_SNAPSHOT}}