Skills skills-compat
Ensures OpenClaw skills.md format works with both nanobot and overstory. Loads skills, registers tools, maps between systems.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/austindixson/skills-compat" ~/.claude/skills/clawdbot-skills-skills-compat && rm -rf "$T"
manifest:
skills/austindixson/skills-compat/SKILL.mdsource content
Skills Compatibility Layer
Description
Ensures the OpenClaw SKILL.md format works seamlessly across nanobot, overstory, and Ollama. Discovers and loads skills, parses frontmatter, builds a unified tool registry, and exports tool definitions in each system's native format.
Architecture
┌─────────────────┐ ┌───────────────┐ │ skill_loader.py │─────▶│ SkillLoader │──▶ Parses SKILL.md + _meta.json └─────────────────┘ └───────────────┘ │ ▼ ┌─────────────────┐ ┌───────────────┐ │ tool_registry.py │─────▶│ ToolRegistry │──▶ Unified tool catalog └─────────────────┘ └───────────────┘ │ ┌───────────┼───────────┐ ▼ ▼ ▼ nanobot overstory Ollama format format format
- skill_loader.py — Discovers skills directories, parses YAML frontmatter from SKILL.md files, extracts tool definitions from
, returns structured_meta.json
objects.SkillDefinition - tool_registry.py — Singleton tool registry. Registers tools from skills, MCP servers, or manual definitions. Exports the full catalog in nanobot, overstory, or Ollama JSON-schema format.
Requirements
- Python 3.9+
- No external dependencies (stdlib only — uses
,json
,sqlite3
,pathlib
for YAML-subset parsing)re
Commands
Discover skills
python3 scripts/skill_loader.py discover --dir /path/to/skills --json
Load a single skill
python3 scripts/skill_loader.py load --skill /path/to/skills/agent-swarm --json
List registered tools
python3 scripts/tool_registry.py list --json python3 scripts/tool_registry.py list --capability code --json
Export tool definitions
python3 scripts/tool_registry.py export --format nanobot python3 scripts/tool_registry.py export --format overstory python3 scripts/tool_registry.py export --format ollama
Register tools from a skill
python3 scripts/tool_registry.py register --skill agent-swarm --dir /path/to/skills
Usage as Python Module
from skill_loader import SkillLoader from tool_registry import ToolRegistry loader = SkillLoader() loader.load_all("/path/to/skills") skill = loader.get_skill("agent-swarm") print(skill.name, skill.version, skill.tools) registry = ToolRegistry.instance() registry.register_skill_tools("agent-swarm", "/path/to/skills") for tool in registry.list_tools(): print(tool["name"], tool["skill"]) nanobot_tools = registry.export_for_nanobot() overstory_tools = registry.export_for_overstory() ollama_tools = registry.export_for_ollama()
Skill Definition Format
Skills are discovered by looking for directories containing a
SKILL.md file. The frontmatter block (between --- delimiters) is parsed as key-value pairs:
--- name: my-skill displayName: My Skill description: What this skill does version: 1.0.0 ---
If a
_meta.json file exists alongside SKILL.md, tool names and additional metadata are extracted from it.
Export Formats
nanobot
[{"name": "tool_name", "skill": "skill-name", "description": "...", "parameters": {...}}]
overstory
[{"tool": "tool_name", "source_skill": "skill-name", "description": "...", "input_schema": {...}}]
Ollama
[{"type": "function", "function": {"name": "tool_name", "description": "...", "parameters": {...}}}]