SKILL.md
SKILL.mdBrowse 2 files
3,557 tokens
15,786 bytes
Token encoding: o200k_base
Snapshot 24fd22b
1---2name: openclaw-migration3description: Import an OpenClaw setup (memories, skills) into Hermes.4version: 1.0.05author: Hermes Agent (Nous Research)6license: MIT7platforms: [linux, macos, windows]8metadata:9 hermes:10 tags: [Migration, OpenClaw, Hermes, Memory, Persona, Import]11 related_skills: [hermes-agent]12---13 14# OpenClaw -> Hermes Migration15 16Use this skill when a user wants to move their OpenClaw setup into Hermes Agent with minimal manual cleanup.17 18## CLI Command19 20For a quick, non-interactive migration, use the built-in CLI command:21 22```bash23hermes claw migrate # Full interactive migration24hermes claw migrate --dry-run # Preview what would be migrated25hermes claw migrate --preset user-data # Migrate without secrets26hermes claw migrate --overwrite # Overwrite existing conflicts27hermes claw migrate --source /custom/path/.openclaw # Custom source28```29 30The CLI command runs the same migration script described below. Use this skill (via the agent) when you want an interactive, guided migration with dry-run previews and per-item conflict resolution.31 32**First-time setup:** The `hermes setup` wizard automatically detects `~/.openclaw` and offers migration before configuration begins.33 34## What this skill does35 36It uses `scripts/openclaw_to_hermes.py` to:37 38- import `SOUL.md` into the Hermes home directory as `SOUL.md`39- transform OpenClaw `MEMORY.md` and `USER.md` into Hermes memory entries40- merge OpenClaw command approval patterns into Hermes `command_allowlist`41- migrate Hermes-compatible messaging settings such as `TELEGRAM_ALLOWED_USERS`, and map OpenClaw workspace settings to Hermes working-directory configuration42- copy OpenClaw skills into `~/.hermes/skills/openclaw-imports/`43- optionally copy the OpenClaw workspace instructions file into a chosen Hermes workspace44- mirror compatible workspace assets such as `workspace/tts/` into `~/.hermes/tts/`45- archive non-secret docs that do not have a direct Hermes destination46- produce a structured report listing migrated items, conflicts, skipped items, and reasons47 48## Path resolution49 50The helper script lives in this skill directory at:51 52- `scripts/openclaw_to_hermes.py`53 54When this skill is installed from the Skills Hub, the normal location is:55 56- `~/.hermes/skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py`57 58Do not guess a shorter path like `~/.hermes/skills/openclaw-migration/...`.59 60Before running the helper:61 621. Prefer the installed path under `~/.hermes/skills/migration/openclaw-migration/`.632. If that path fails, inspect the installed skill directory and resolve the script relative to the installed `SKILL.md`.643. Only use `find` as a fallback if the installed location is missing or the skill was moved manually.654. When calling the terminal tool, do not pass `workdir: "~"`. Use an absolute directory such as the user's home directory, or omit `workdir` entirely.66 67With `--migrate-secrets`, it will also import a small allowlisted set of Hermes-compatible secrets, currently:68 69- `TELEGRAM_BOT_TOKEN`70 71## Default workflow72 731. Inspect first with a dry run.742. Present a simple summary of what can be migrated, what cannot be migrated, and what would be archived.753. If the `clarify` tool is available, use it for user decisions instead of asking for a free-form prose reply.764. If the dry run finds imported skill directory conflicts, ask how those should be handled before executing.775. Ask the user to choose between the two supported migration modes before executing.786. Ask for a target workspace path only if the user wants the workspace instructions file brought over.797. Execute the migration with the matching preset and flags.808. Summarize the results, especially:81 - what was migrated82 - what was archived for manual review83 - what was skipped and why84 85## User interaction protocol86 87Hermes CLI supports the `clarify` tool for interactive prompts, but it is limited to:88 89- one choice at a time90- up to 4 predefined choices91- an automatic `Other` free-text option92 93It does **not** support true multi-select checkboxes in a single prompt.94 95For every `clarify` call:96 97- always include a non-empty `question`98- include `choices` only for real selectable prompts99- keep `choices` to 2-4 plain string options100- never emit placeholder or truncated options such as `...`101- never pad or stylize choices with extra whitespace102- never include fake form fields in the question such as `enter directory here`, blank lines to fill in, or underscores like `_____`103- for open-ended path questions, ask only the plain sentence; the user types in the normal CLI prompt below the panel104 105If a `clarify` call returns an error, inspect the error text, correct the payload, and retry once with a valid `question` and clean choices.106 107When `clarify` is available and the dry run reveals any required user decision, your **next action must be a `clarify` tool call**.108Do not end the turn with a normal assistant message such as:109 110- "Let me present the choices"111- "What would you like to do?"112- "Here are the options"113 114If a user decision is required, collect it via `clarify` before producing more prose.115If multiple unresolved decisions remain, do not insert an explanatory assistant message between them. After one `clarify` response is received, your next action should usually be the next required `clarify` call.116 117Treat `workspace-agents` as an unresolved decision whenever the dry run reports:118 119- `kind="workspace-agents"`120- `status="skipped"`121- reason containing `No workspace target was provided`122 123In that case, you must ask about workspace instructions before execution. Do not silently treat that as a decision to skip.124 125Because of that limitation, use this simplified decision flow:126 1271. For `SOUL.md` conflicts, use `clarify` with choices such as:128 - `keep existing`129 - `overwrite with backup`130 - `review first`1312. If the dry run shows one or more `kind="skill"` items with `status="conflict"`, use `clarify` with choices such as:132 - `keep existing skills`133 - `overwrite conflicting skills with backup`134 - `import conflicting skills under renamed folders`1353. For workspace instructions, use `clarify` with choices such as:136 - `skip workspace instructions`137 - `copy to a workspace path`138 - `decide later`1394. If the user chooses to copy workspace instructions, ask a follow-up open-ended `clarify` question requesting an **absolute path**.1405. If the user chooses `skip workspace instructions` or `decide later`, proceed without `--workspace-target`.1415. For migration mode, use `clarify` with these 3 choices:142 - `user-data only`143 - `full compatible migration`144 - `cancel`1456. `user-data only` means: migrate user data and compatible config, but do **not** import allowlisted secrets.1467. `full compatible migration` means: migrate the same compatible user data plus the allowlisted secrets when present.1478. If `clarify` is not available, ask the same question in normal text, but still constrain the answer to `user-data only`, `full compatible migration`, or `cancel`.148 149Execution gate:150 151- Do not execute while a `workspace-agents` skip caused by `No workspace target was provided` remains unresolved.152- The only valid ways to resolve it are:153 - user explicitly chooses `skip workspace instructions`154 - user explicitly chooses `decide later`155 - user provides a workspace path after choosing `copy to a workspace path`156- Absence of a workspace target in the dry run is not itself permission to execute.157- Do not execute while any required `clarify` decision remains unresolved.158 159Use these exact `clarify` payload shapes as the default pattern:160 161- `{"question":"Your existing SOUL.md conflicts with the imported one. What should I do?","choices":["keep existing","overwrite with backup","review first"]}`162- `{"question":"One or more imported OpenClaw skills already exist in Hermes. How should I handle those skill conflicts?","choices":["keep existing skills","overwrite conflicting skills with backup","import conflicting skills under renamed folders"]}`163- `{"question":"Choose migration mode: migrate only user data, or run the full compatible migration including allowlisted secrets?","choices":["user-data only","full compatible migration","cancel"]}`164- `{"question":"Do you want to copy the OpenClaw workspace instructions file into a Hermes workspace?","choices":["skip workspace instructions","copy to a workspace path","decide later"]}`165- `{"question":"Please provide an absolute path where the workspace instructions should be copied."}`166 167## Decision-to-command mapping168 169Map user decisions to command flags exactly:170 171- If the user chooses `keep existing` for `SOUL.md`, do **not** add `--overwrite`.172- If the user chooses `overwrite with backup`, add `--overwrite`.173- If the user chooses `review first`, stop before execution and review the relevant files.174- If the user chooses `keep existing skills`, add `--skill-conflict skip`.175- If the user chooses `overwrite conflicting skills with backup`, add `--skill-conflict overwrite`.176- If the user chooses `import conflicting skills under renamed folders`, add `--skill-conflict rename`.177- If the user chooses `user-data only`, execute with `--preset user-data` and do **not** add `--migrate-secrets`.178- If the user chooses `full compatible migration`, execute with `--preset full --migrate-secrets`.179- Only add `--workspace-target` if the user explicitly provided an absolute workspace path.180- If the user chooses `skip workspace instructions` or `decide later`, do not add `--workspace-target`.181 182Before executing, restate the exact command plan in plain language and make sure it matches the user's choices.183 184## Post-run reporting rules185 186After execution, treat the script's JSON output as the source of truth.187 1881. Base all counts on `report.summary`.1892. Only list an item under "Successfully Migrated" if its `status` is exactly `migrated`.1903. Do not claim a conflict was resolved unless the report shows that item as `migrated`.1914. Do not say `SOUL.md` was overwritten unless the report item for `kind="soul"` has `status="migrated"`.1925. If `report.summary.conflict > 0`, include a conflict section instead of silently implying success.1936. If counts and listed items disagree, fix the list to match the report before responding.1947. Include the `output_dir` path from the report when available so the user can inspect `report.json`, `summary.md`, backups, and archived files.1958. For memory or user-profile overflow, do not say the entries were archived unless the report explicitly shows an archive path. If `details.overflow_file` exists, say the full overflow list was exported there.1969. If a skill was imported under a renamed folder, report the final destination and mention `details.renamed_from`.19710. If `report.skill_conflict_mode` is present, use it as the source of truth for the selected imported-skill conflict policy.19811. If an item has `status="skipped"`, do not describe it as overwritten, backed up, migrated, or resolved.19912. If `kind="soul"` has `status="skipped"` with reason `Target already matches source`, say it was left unchanged and do not mention a backup.20013. If a renamed imported skill has an empty `details.backup`, do not imply the existing Hermes skill was renamed or backed up. Say only that the imported copy was placed in the new destination and reference `details.renamed_from` as the pre-existing folder that remained in place.201 202## Migration presets203 204Prefer these two presets in normal use:205 206- `user-data`207- `full`208 209`user-data` includes:210 211- `soul`212- `workspace-agents`213- `memory`214- `user-profile`215- `messaging-settings`216- `command-allowlist`217- `skills`218- `tts-assets`219- `archive`220 221`full` includes everything in `user-data` plus:222 223- `secret-settings`224 225The helper script still supports category-level `--include` / `--exclude`, but treat that as an advanced fallback rather than the default UX.226 227## Commands228 229Dry run with full discovery:230 231```bash232python ~/.hermes/skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py233```234 235When using the terminal tool, prefer an absolute invocation pattern such as:236 237```json238{"command":"python /home/USER/.hermes/skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py","workdir":"/home/USER"}239```240 241Dry run with the user-data preset:242 243```bash244python ~/.hermes/skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py --preset user-data245```246 247Execute a user-data migration:248 249```bash250python ~/.hermes/skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py --execute --preset user-data --skill-conflict skip251```252 253Execute a full compatible migration:254 255```bash256python ~/.hermes/skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py --execute --preset full --migrate-secrets --skill-conflict skip257```258 259Execute with workspace instructions included:260 261```bash262python ~/.hermes/skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py --execute --preset user-data --skill-conflict rename --workspace-target "/absolute/workspace/path"263```264 265Do not use `$PWD` or the home directory as the workspace target by default. Ask for an explicit workspace path first.266 267## Important rules268 2691. Run a dry run before writing unless the user explicitly says to proceed immediately.2702. Do not migrate secrets by default. Tokens, auth blobs, device credentials, and raw gateway config should stay out of Hermes unless the user explicitly asks for secret migration.2713. Do not silently overwrite non-empty Hermes targets unless the user explicitly wants that. The helper script will preserve backups when overwriting is enabled.2724. Always give the user the skipped-items report. That report is part of the migration, not an optional extra.2735. Prefer the primary OpenClaw workspace (`~/.openclaw/workspace/`) over `workspace.default/`. Only use the default workspace as fallback when the primary files are missing.2746. Even in secret-migration mode, only migrate secrets with a clean Hermes destination. Unsupported auth blobs must still be reported as skipped.2757. If the dry run shows a large asset copy, a conflicting `SOUL.md`, or overflowed memory entries, call those out separately before execution.2768. Default to `user-data only` if the user is unsure.2779. Only include `workspace-agents` when the user has explicitly provided a destination workspace path.27810. Treat category-level `--include` / `--exclude` as an advanced escape hatch, not the normal flow.27911. Do not end the dry-run summary with a vague “What would you like to do?” if `clarify` is available. Use structured follow-up prompts instead.28012. Do not use an open-ended `clarify` prompt when a real choice prompt would work. Prefer selectable choices first, then free text only for absolute paths or file review requests.28113. After a dry run, never stop after summarizing if there is still an unresolved decision. Use `clarify` immediately for the highest-priority blocking decision.28214. Priority order for follow-up questions:283 - `SOUL.md` conflict284 - imported skill conflicts285 - migration mode286 - workspace instructions destination28715. Do not promise to present choices later in the same message. Present them by actually calling `clarify`.28816. After the migration-mode answer, explicitly check whether `workspace-agents` is still unresolved. If it is, your next action must be the workspace-instructions `clarify` call.28917. After any `clarify` answer, if another required decision remains, do not narrate what was just decided. Ask the next required question immediately.290 291## Expected result292 293After a successful run, the user should have:294 295- Hermes persona state imported296- Hermes memory files populated with converted OpenClaw knowledge297- OpenClaw skills available under `~/.hermes/skills/openclaw-imports/`298- a migration report showing any conflicts, omissions, or unsupported data299 Discovery context
Discovered by repository scan. No exact path reference found in the snapshot’s root AGENTS.md.