About agent-import
agent-import is a Starchild skill for loading migration bundles exported by another agent. It guides the agent through reviewing the contents with the user, then applying supported settings, identity, memory, tasks, keys, and files.
Key features
- 01Download and extract a migration bundle
- 02Review bundle contents before applying
- 03Transfer settings, identity, and memory
- 04Register and implement scheduled tasks
- 05Request environment keys and copy files
Use cases
- 01Move agent settings and identity to Starchild
- 02Review and restore memories from an export
- 03Recreate scheduled tasks from a migration bundle
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ starchild-ai-agent/ official-skills --skill agent-importAfter installing, type/agent-importin Claude Code to confirm it loaded.
Bundled filesscripts/download.py
Details
From the project READMEAgent Import — Migration Bundle Loader
Download and load a migration bundle into this Starchild agent. The bundle is created by another agent using the agent-export skill.
Quick Start
When user provides a migration code and download token:
1. Run the import script to download & extract
2. Review the extracted data with the user
3. Apply each component using native tools
Step 1 — Download & Extract
The user will provide two values from the source agent: a CODE (8 chars) and a DOWNLOAD_TOKEN.
python3 skills/agent-import/scripts/download.py <CODE> <DOWNLOAD_TOKEN>
The script downloads through the Fly internal network only (sc-agent-migration.internal). Public download is forbidden by relay policy. If the internal network is unreachable, import fails and must be retried from a Fly machine. The download token authorizes the download; it is single-use and expires with the code (1 hour TTL).
On success the script extracts the bundle to migration/ and prints a summary of what's included.
Step 2 — Review Contents
Read and summarize what the bundle contains before applying anything:
cat migration/manifest.json
cat migration/memory/agent.json 2>/dev/null
cat migration/memory/user.json 2>/dev/null
cat migration/identity/profile.json 2>/dev/null
cat migration/identity/soul.md 2>/dev/null
cat migration/user/settings.json 2>/dev/null
cat migration/tasks/tasks.json 2>/dev/null
cat migration/env/keys.json 2>/dev/null
find migration/files/ -type f 2>/dev/null
Always show the user a summary and ask for confirmation before applying.
Step 3 — Apply Components
Apply each component using Starchild native tools. The order matters:
3a. User Settings (first — sets timezone/language for everything else)
Read migration/user/settings.json, then call:
user_settings(action="update", settings={
"name": "...",
"what_to_call": "...",
"timezone": "...",
"language": "..."
})
Only include fields that are present in the JSON.
3b. Agent Identity
Read migration/identity/profile.json, then call:
agent_profile(action="update", profile={
"name": "...",
"vibe": "...",
"emoji": "...",
"creature": "..."
})
3c. SOUL.md
If migration/identity/soul.md exists, read it and write to prompt/SOUL.md.
Merge with existing SOUL.md if it has content. Don't overwrite platform defaults blindly — integrate the personality bits.
3d. Memory — Agent
Read migration/memory/agent.json, for each entry call:
memory(action="add", target="memory", content="<entry>")
⚠️ Memory has a 5000 char limit. If the bundle has many entries, prioritize the most useful ones. Check current usage with memory(action="read") first.
3e. Memory — User
Read migration/memory/user.json, for each entry call:
memory(action="add", target="user", content="<entry>")
⚠️ User memory has a 3000 char limit. Prioritize preferences and corrections.
3f. Tasks
Read migration/tasks/tasks.json, for each task:
scheduled_task(action="register", title=..., schedule=..., description=..., channels=...)- Write the
run.pyscript based on the description - Test it:
bash("python3 tasks/{job_id}/run.py") scheduled_task(action="activate", job_id=...)
Tasks need actual implementation — the description is a spec, not runnable code. Use your judgment to build each task's script.
3g. Environment Keys
Read migration/env/keys.json, then call:
request_env_input(env_vars=[...], reason="Migration from <source>")
This prompts the user to enter values securely.
3h. Files
Copy files from migration/files/ to the workspace:
cp -r migration/files/* . 2>/dev/null
Review what's being copied and skip anything that would overwrite important existing files.
Step 4 — Cleanup
rm -rf migration/ migration-bundle.tar.gz
Error Handling
| Error | Cause | Fix |
|---|---|---|
401 unauthorized | Wrong or missing download token | Re-check the token from the source agent output |
404 not found | Code already used or never existed | Ask source agent to re-export |
410 expired | Code older than 1 hour | Ask source agent to re-export |
403 internal_only | Download attempted from non-Fly-internal network | Run import from a Fly machine / internal network |
429 rate limited | Too many failed attempts | Wait 1 hour |
| Invalid tar.gz | Corrupted upload | Re-export from source agent |
| No manifest.json | Invalid bundle structure | Bundle must have manifest.json at root |