sesaloy/hermes-mobile/openclaw-migration
Claude Code and agent skill by sesaloy/hermes-mobile
- community
Checking that the SKILL.md file is still in the repository.
Migrate a user's OpenClaw customization footprint into Hermes Agent. Imports Hermes-compatible memories, SOUL.md, command allowlists, user skills, and selected workspace assets from ~/.openclaw, then reports exactly what could not be migrated and why.
Install
npx vskill@latest install sesaloy/hermes-mobile/openclaw-migrationSKILL.md
The same SKILL.md was published earlier as devsoul2026/hermes-one-click/openclaw-migration.
OpenClaw -> Hermes Migration
Use this skill when a user wants to move their OpenClaw setup into Hermes Agent with minimal manual cleanup.
CLI Command
For a quick, non-interactive migration, use the built-in CLI command:
The 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.
First-time setup: The hermes setup wizard automatically detects ~/.openclaw and offers migration before configuration begins.
What this skill does
It uses scripts/openclaw_to_hermes.py to:
- import
SOUL.mdinto the Hermes home directory asSOUL.md - transform OpenClaw
MEMORY.mdandUSER.mdinto Hermes memory entries - merge OpenClaw command approval patterns into Hermes
command_allowlist - migrate Hermes-compatible messaging settings such as
TELEGRAM_ALLOWED_USERS, and map OpenClaw workspace settings to Hermes working-directory configuration - copy OpenClaw skills into
~/.hermes/skills/openclaw-imports/ - optionally copy the OpenClaw workspace instructions file into a chosen Hermes workspace
- mirror compatible workspace assets such as
workspace/tts/into~/.hermes/tts/ - archive non-secret docs that do not have a direct Hermes destination
- produce a structured report listing migrated items, conflicts, skipped items, and reasons
Path resolution
The helper script lives in this skill directory at:
scripts/openclaw_to_hermes.py
When this skill is installed from the Skills Hub, the normal location is:
~/.hermes/skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py
Do not guess a shorter path like ~/.hermes/skills/openclaw-migration/....
Before running the helper:
- Prefer the installed path under
~/.hermes/skills/migration/openclaw-migration/. - If that path fails, inspect the installed skill directory and resolve the script relative to the installed
SKILL.md. - Only use
findas a fallback if the installed location is missing or the skill was moved manually. - When calling the terminal tool, do not pass
workdir: "~". Use an absolute directory such as the user's home directory, or omitworkdirentirely.
With --migrate-secrets, it will also import a small allowlisted set of Hermes-compatible secrets, currently:
TELEGRAM_BOT_TOKEN
Default workflow
- Inspect first with a dry run.
- Present a simple summary of what can be migrated, what cannot be migrated, and what would be archived.
- If the
clarifytool is available, use it for user decisions instead of asking for a free-form prose reply. - If the dry run finds imported skill directory conflicts, ask how those should be handled before executing.
- Ask the user to choose between the two supported migration modes before executing.
- Ask for a target workspace path only if the user wants the workspace instructions file brought over.
- Execute the migration with the matching preset and flags.
- Summarize the results, especially:
- what was migrated
- what was archived for manual review
- what was skipped and why
User interaction protocol
Hermes CLI supports the clarify tool for interactive prompts, but it is limited to:
- one choice at a time
- up to 4 predefined choices
- an automatic
Otherfree-text option
It does not support true multi-select checkboxes in a single prompt.
For every clarify call:
- always include a non-empty
question - include
choicesonly for real selectable prompts - keep
choicesto 2-4 plain string options - never emit placeholder or truncated options such as
... - never pad or stylize choices with extra whitespace
- never include fake form fields in the question such as
enter directory here, blank lines to fill in, or underscores like_____ - for open-ended path questions, ask only the plain sentence; the user types in the normal CLI prompt below the panel
If a clarify call returns an error, inspect the error text, correct the payload, and retry once with a valid question and clean choices.
When clarify is available and the dry run reveals any required user decision, your next action must be a `clarify` tool call. Do not end the turn with a normal assistant message such as:
- "Let me present the choices"
- "What would you like to do?"
- "Here are the options"
If a user decision is required, collect it via clarify before producing more prose. If 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.
Treat workspace-agents as an unresolved decision whenever the dry run reports:
kind="workspace-agents"status="skipped"- reason containing
No workspace target was provided
In that case, you must ask about workspace instructions before execution. Do not silently treat that as a decision to skip.
Because of that limitation, use this simplified decision flow:
- For
SOUL.mdconflicts, useclarifywith choices such as:
keep existingoverwrite with backupreview first
- If the dry run shows one or more
kind="skill"items withstatus="conflict", useclarifywith choices such as:
keep existing skillsoverwrite conflicting skills with backupimport conflicting skills under renamed folders
- For workspace instructions, use
clarifywith choices such as:
skip workspace instructionscopy to a workspace pathdecide later
- If the user chooses to copy workspace instructions, ask a follow-up open-ended
clarifyquestion requesting an absolute path. - If the user chooses
skip workspace instructionsordecide later, proceed without--workspace-target. - For migration mode, use
clarifywith these 3 choices:
user-data onlyfull compatible migrationcancel
user-data onlymeans: migrate user data and compatible config, but do not import allowlisted secrets.full compatible migrationmeans: migrate the same compatible user data plus the allowlisted secrets when present.- If
clarifyis not available, ask the same question in normal text, but still constrain the answer touser-data only,full compatible migration, orcancel.
Execution gate:
- Do not execute while a
workspace-agentsskip caused byNo workspace target was providedremains unresolved. - The only valid ways to resolve it are:
- user explicitly chooses
skip workspace instructions - user explicitly chooses
decide later - user provides a workspace path after choosing
copy to a workspace path - Absence of a workspace target in the dry run is not itself permission to execute.
- Do not execute while any required
clarifydecision remains unresolved.
Use these exact clarify payload shapes as the default pattern:
{"question":"Your existing SOUL.md conflicts with the imported one. What should I do?","choices":["keep existing","overwrite with backup","review first"]}{"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"]}{"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"]}{"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"]}{"question":"Please provide an absolute path where the workspace instructions should be copied."}
Decision-to-command mapping
Map user decisions to command flags exactly:
- If the user chooses
keep existingforSOUL.md, do not add--overwrite. - If the user chooses
overwrite with backup, add--overwrite. - If the user chooses
review first, stop before execution and review the relevant files. - If the user chooses
keep existing skills, add--skill-conflict skip. - If the user chooses
overwrite conflicting skills with backup, add--skill-conflict overwrite. - If the user chooses
import conflicting skills under renamed folders, add--skill-conflict rename. - If the user chooses
user-data only, execute with--preset user-dataand do not add--migrate-secrets. - If the user chooses
full compatible migration, execute with--preset full --migrate-secrets. - Only add
--workspace-targetif the user explicitly provided an absolute workspace path. - If the user chooses
skip workspace instructionsordecide later, do not add--workspace-target.
Before executing, restate the exact command plan in plain language and make sure it matches the user's choices.
Post-run reporting rules
After execution, treat the script's JSON output as the source of truth.
- Base all counts on
report.summary. - Only list an item under "Successfully Migrated" if its
statusis exactlymigrated. - Do not claim a conflict was resolved unless the report shows that item as
migrated. - Do not say
SOUL.mdwas overwritten unless the report item forkind="soul"hasstatus="migrated". - If
report.summary.conflict > 0, include a conflict section instead of silently implying success. - If counts and listed items disagree, fix the list to match the report before responding.
- Include the
output_dirpath from the report when available so the user can inspectreport.json,summary.md, backups, and archived files. - For memory or user-profile overflow, do not say the entries were archived unless the report explicitly shows an archive path. If
details.overflow_fileexists, say the full overflow list was exported there. - If a skill was imported under a renamed folder, report the final destination and mention
details.renamed_from. - If
report.skill_conflict_modeis present, use it as the source of truth for the selected imported-skill conflict policy. - If an item has
status="skipped", do not describe it as overwritten, backed up, migrated, or resolved. - If
kind="soul"hasstatus="skipped"with reasonTarget already matches source, say it was left unchanged and do not mention a backup. - 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 referencedetails.renamed_fromas the pre-existing folder that remained in place.
Migration presets
Prefer these two presets in normal use:
user-datafull
user-data includes:
soulworkspace-agentsmemoryuser-profilemessaging-settingscommand-allowlistskillstts-assetsarchive
full includes everything in user-data plus:
secret-settings
The helper script still supports category-level --include / --exclude, but treat that as an advanced fallback rather than the default UX.
Commands
Dry run with full discovery:
When using the terminal tool, prefer an absolute invocation pattern such as:
Dry run with the user-data preset:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingandroid/app/src/main/python/optional-skills/migration/openclaw-migration/SKILL.md
Popularity
- Repository stars
- 50
- Repository forks
- 15
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/sesaloy/hermes-mobile/openclaw-migration)