/install claude-skill-sync
Claude Code ↔ OpenClaw Skill Sync
Goal
Scan skill directories for both Claude Code and OpenClaw, compare their contents, and perform a bidirectional sync — asking the user for confirmation before making any changes, and asking the user to resolve conflicts when the same skill exists in both tools with different content.
Both sides store full SKILL.md content. There are no wrapper stubs.
Steps
1. Scan Claude Code Skills
List all immediate subdirectories (one level deep, not recursive) under ~/.claude/skills/ that contain a SKILL.md file.
Record the name (directory name) and read the full content of each SKILL.md.
2. Scan OpenClaw Skills
List all immediate subdirectories (one level deep, not recursive) under ~/.openclaw/workspace/skills/ that contain a SKILL.md file.
Record the name (directory name) and read the full content of each SKILL.md.
3. Compare and Categorize
Build four categories by matching skill names across both directories:
A. Claude Code only — exists in Claude Code, no entry in OpenClaw at all.
B. OpenClaw only — exists in OpenClaw, no entry in Claude Code at all.
C. In sync — exists in both, content is textually identical after stripping leading/trailing whitespace from each line and ignoring line-ending differences (LF vs CRLF). No action needed.
D. Conflict — exists in both, but content differs after the normalization above.
4. Present the Report
Output a summary before taking any action:
## Skill Sync Report
### In Sync ✅
{count} skills are already in sync.
{list skill names, one per line}
### Claude Code Only — missing from OpenClaw (A)
- {skill-name}
### OpenClaw Only — missing from Claude Code (B)
- {skill-name}
### Conflicts — same name, different content (D)
- {skill-name}
If all skills are in sync, output "✅ All skills are in sync. Nothing to do." and stop.
5. Handle Category A — Copy to OpenClaw
For each skill in category A, ask the user:
"{skill-name}" exists in Claude Code but is missing from OpenClaw. Copy it to OpenClaw? [y/n/all/skip-all]
y→ copy this skilln→ skip this skillall→ copy all remaining category A skills without asking againskip-all→ skip all remaining category A skills (applies to this category only — you will still be prompted for categories B and D)
To copy a Claude Code skill to OpenClaw:
- Read the
versionfield from theSKILL.mdfrontmatter. If absent, use1.0.0. - Create directory
~/.openclaw/workspace/skills/{name}/ - Write the full
SKILL.mdcontent to~/.openclaw/workspace/skills/{name}/SKILL.mdas-is. - Write
~/.openclaw/workspace/skills/{name}/_meta.json:
{
"slug": "{name}",
"version": "{version}"
}
6. Handle Category B — Copy to Claude Code
For each skill in category B, ask the user:
"{skill-name}" exists in OpenClaw but is missing from Claude Code. Copy it to Claude Code? [y/n/all/skip-all]
y→ copy this skilln→ skipall→ copy all remaining category B skills without askingskip-all→ skip all remaining category B skills (applies to this category only — you will still be prompted for category D)
To copy an OpenClaw skill to Claude Code:
- Create directory
~/.claude/skills/{name}/ - Write the full
SKILL.mdcontent to~/.claude/skills/{name}/SKILL.mdas-is. Do not copy_meta.json— it is OpenClaw-specific.
7. Handle Category D — Resolve Conflicts
For each conflict, show the user:
Conflict: {skill-name}
Claude Code version (first 5 lines of body, i.e. content after the closing --- of frontmatter):
{lines}
OpenClaw version (first 5 lines of body, i.e. content after the closing --- of frontmatter):
{lines}
Which version should be kept?
[1] Keep Claude Code version → overwrites OpenClaw
[2] Keep OpenClaw version → overwrites Claude Code
[3] Skip — leave both as-is
Apply the user's choice:
- Choice 1 → overwrite
~/.openclaw/workspace/skills/{name}/SKILL.mdwith the Claude Code content. Update~/.openclaw/workspace/skills/{name}/_meta.jsonversion to match the frontmatter of the winning file. If_meta.jsondoes not exist, create it. - Choice 2 → overwrite
~/.claude/skills/{name}/SKILL.mdwith the OpenClaw content. No changes to_meta.json— it is OpenClaw-specific and remains as-is. - Choice 3 → do nothing for this skill.
8. Summary
After all actions are complete, output:
## Sync Complete
- Copied to OpenClaw: {count}
- Copied to Claude Code: {count}
- Conflicts resolved: {count}
- Skipped: {count}
Security Rules
- When presenting conflict previews, show at most the first 5 lines of the body to the user. You may read complete file contents internally in order to copy or write files.
- Never output token values, API keys, or credentials that may appear in skill files.
- Always use
~/.claude/and~/.openclaw/path notation. Never expand~to an absolute path. - If a
versionfield is absent from a SKILL.md frontmatter, use1.0.0as the default.
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install claude-skill-sync - 安装完成后,直接呼叫该 Skill 的名称或使用
/claude-skill-sync触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Claude Code ↔ OpenClaw Skill Sync 是什么?
This skill should be used when the user wants to sync, synchronize, or compare skills between Claude Code and OpenClaw. Use it for requests like "sync my ski... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 102 次。
如何安装 Claude Code ↔ OpenClaw Skill Sync?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install claude-skill-sync」即可一键安装,无需额外配置。
Claude Code ↔ OpenClaw Skill Sync 是免费的吗?
是的,Claude Code ↔ OpenClaw Skill Sync 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Claude Code ↔ OpenClaw Skill Sync 支持哪些平台?
Claude Code ↔ OpenClaw Skill Sync 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Claude Code ↔ OpenClaw Skill Sync?
由 rushingAI(@rushingai)开发并维护,当前版本 v1.0.0。