| name | skill-porter |
| description | Convert skills from ClawHub, Claude, Gemini, Codex formats to Nanobot-native format. Use when user wants to port/migrate/convert skills to work with Nanobot (HKUDS/nanobot). Primary focus: ClawHub skills. Keywords: convert skill, port skill, migrate skill, nanobot skill, clawhub to nanobot. |
Skill Porter
Convert skills from various AI agent ecosystems to Nanobot-native format.
Supported Sources
| Source | Priority | Status |
|---|
| ClawHub | Primary | Full support |
| Claude Skills | Secondary | Full support |
| Gemini Skills | Secondary | Full support |
| Codex Skills | Secondary | Full support |
Nanobot Architecture Reference
Nanobot is a Python-based ultra-lightweight AI agent. Key characteristics:
Memory Structure
workspace/
├── SOUL.md # Bot personality (Dream-managed, DO NOT EDIT)
├── USER.md # User profile (Dream-managed, DO NOT EDIT)
├── memory/
│ ├── MEMORY.md # Long-term facts (Dream-managed)
│ └── history.jsonl # Append-only JSONL history
Built-in Tools
read_file, write_file, edit_file - File operations
list_directory - Directory listing
exec - Shell command execution
grep - Search files (use for history.jsonl)
web_search, web_fetch - Web operations
MCP Tools
Configure in ~/.nanobot/config.json:
{
"tools": {
"mcpServers": {
"server-name": {
"command": "npx",
"args": ["-y", "@scope/server-package"],
"enabledTools": ["tool1", "tool2"]
}
}
}
}
Conversion Process
Step 1: Analyze Source Skill
Use read_file to read the source SKILL.md and identify:
- Skill type: Prompt-only vs tool-dependent
- Tool dependencies: Which tools/commands are referenced
- Path references: Hardcoded paths that need adjustment
- Source-specific features: Plugins, commands, lifecycle hooks
Step 2: Determine Compatibility
High compatibility (direct port):
- Pure prompt/rule skills
- No source-specific tool names
- No hardcoded source paths
Medium compatibility (needs adaptation):
- Uses tool names that differ between systems
- References source config paths
- Uses source-specific commands
Low compatibility (needs rewrite):
- Strong plugin dependencies
- Lifecycle hooks
- Marketplace features
Step 3: Apply Transformations
Tool Name Mappings
| Source Tool | Nanobot Equivalent |
|---|
read | read_file |
write | write_file |
edit | edit_file |
exec | exec (same) |
browser | MCP: Playwright |
message | Channel config |
cron | Nanobot cron |
memory_search | grep on history.jsonl |
Path Mappings
| Source Path | Nanobot Path |
|---|
~/.openclaw/ | ~/.nanobot/ |
{workspace_root_dir} | {workspace} |
{bundled_skill_dir} | nanobot/skills/ |
MEMORY.md | memory/MEMORY.md |
memory/YYYY-MM-DD.md | memory/history.jsonl |
Command Mappings
| Source Command | Nanobot Command |
|---|
openclaw gateway | nanobot gateway |
/status | /status (same) |
Step 4: Generate Output
Create the converted SKILL.md with:
- Preserved frontmatter (name, description)
- Transformed tool references
- Updated path references
- MCP requirements if needed
Step 5: Document Migration
Create MIGRATION.md with:
- What was changed
- What needs manual setup
- What couldn't be converted
Scripts
scripts/convert_skill.py
Main conversion script.
python scripts/convert_skill.py <source_path> [--output <output_path>] [--dry-run] [--verbose]
Options:
--output: Output directory
--dry-run: Show changes without writing
--verbose: Detailed output
scripts/batch_convert.py
Convert multiple skills.
python scripts/batch_convert.py <input_dir> --output <output_dir>
scripts/validate_nanobot.py
Validate a skill for Nanobot compatibility.
python scripts/validate_nanobot.py <skill_path>
Example Usage
Convert a single ClawHub skill:
Convert the weather-advisor skill from ClawHub to Nanobot format.
Batch convert:
Convert all skills in ~/my-skills/ to Nanobot format.
Check compatibility:
Check if the email-skill is compatible with Nanobot.
Important Notes
-
Dream-managed files: SOUL.md, USER.md, MEMORY.md are auto-managed. Do NOT include instructions to edit these files.
-
MCP for missing tools: If a skill needs tools Nanobot doesn't have built-in, generate MCP server config.
-
Channel differences: Nanobot uses channel-specific configs (Telegram, Discord, etc.) instead of a unified message tool.
-
Memory access: Use grep tool to search memory/history.jsonl. Format: JSONL with cursor, timestamp, content fields.
-
Config location: Nanobot config is at ~/.nanobot/config.json.
Limitations
These features have no Nanobot equivalent:
browser tool (use MCP Playwright)
canvas tool (no equivalent)
nodes tool (no equivalent)
Output Format
Converted skills are output as:
<skill-name>-nanobot/
├── SKILL.md # Converted skill
├── MIGRATION.md # Migration notes
└── mcp_requirements.json # MCP servers needed (if any)