Skills github-to-clawhub

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/antonia-sz/github-to-clawhub" ~/.claude/skills/clawdbot-skills-github-to-clawhub && rm -rf "$T"
manifest: skills/antonia-sz/github-to-clawhub/SKILL.md
source content

GitHub → ClawHub 一键转化发布

把任意 GitHub 开源项目转化为 OpenClaw skill,发布到 clawhub.com。


前置要求

条件说明
GitHub URL目标项目的 GitHub 链接
clawhub token格式:
clh_xxx
,在 clawhub.com → Profile → API Keys 获取
exec 权限OpenClaw 需要能执行 shell 命令(本地部署默认有)

如果用户还没提供 token,先询问 token,再继续


执行流程

Step 1:读取原项目信息

web_fetch https://raw.githubusercontent.com/{owner}/{repo}/main/README.md

提取以下信息:

  • 项目的核心功能(一句话)
  • 技术路径(调 API / 本地计算 / 多 Agent / 纯提示词)
  • 是否依赖外部服务、本地 GPU、特殊硬件
  • License 类型(MIT / Apache / GPL 等)

排除标准(遇到这些直接告知用户不适合做 skill):

  • 需要本地 GPU / 大 VRAM
  • 纯前端/移动端 UI 项目,无 API 可调
  • 需要复杂本地服务部署才能运行
  • 涉及敏感/违规内容

Step 2:clawhub 查重

knot_skills search "{关键词1} {关键词2}"

搜索 2-3 次,覆盖不同角度的关键词。

判断标准:

  • 完全重复(功能完全相同)→ 告知用户,询问是否换 slug 继续,或放弃
  • 部分重叠(有相似但不完全相同)→ 说明差异,继续发布
  • 空白地带(无相似 skill)→ 直接继续

Step 3:确定 skill 元信息

与用户确认(如果未提供):

  • slug
    :URL 友好名称,全小写 + 连字符,如
    opinion-analyzer
  • displayName
    :展示名称,如
    Opinion Analyzer — 多视角舆情分析助手
  • tags
    :逗号分隔,如
    analysis,sentiment,research

Slug 命名规则:

  • 全小写 + 连字符,无空格
  • 不能和已有 slug 完全重复(Step 2 查重时会发现)
  • 描述性词汇优先(
    jd-interview-prep
    interview
    好)

Step 4:撰写 SKILL.md

这是核心步骤,决定 skill 质量。

SKILL.md 结构:

---
name: {slug}
description: >
  {触发场景描述,包含5-10个触发词,这决定了 AI 什么时候加载这个 skill}
author: {作者}
version: 1.0.0
---

# {displayName}

灵感来源:[{原项目名}]({GitHub URL}) ⭐ {star 数}

{一句话核心价值}

---

## 使用方式
{2-3 个调用示例}

---

## 执行流程
{分步骤,具体到"做什么、怎么做"}

---

## 输出格式
{交付物的结构模板}

---

## 注意事项
{边界条件、限制}

撰写原则:

  1. description
    触发词要够多够准,这是 skill 被激活的唯一入口
  2. 执行流程具体到操作层面,不能写"帮你分析"这种废话
  3. 输出格式给出模板,AI 不会自己发明格式
  4. 不是翻译 README,是把原项目逻辑转化为 AI 行为规范

Step 5:创建本地文件

SKILL_DIR="/root/.openclaw/workspace/skills/SKILL-{slug}"
mkdir -p "$SKILL_DIR"
# 写入 SKILL.md

如果原项目有实用脚本/配置文件需要随 skill 分发,也放入此目录。

Step 6:发布到 clawhub

CLAWHUB_TOKEN={token} \
clawhub publish {SKILL_DIR} \
  --slug {slug} \
  --name "{displayName}" \
  --version 1.0.0 \
  --changelog "Initial release: {一句话描述}" \
  --tags "{tags}"

常见错误处理:

错误原因解决方案
Path must be a folder
传了文件路径改为传目录路径
Slug is already taken
slug 被占用换更具体的 slug 重试
rate limit exceeded
每小时限 5 个新 skill用 qqbot-cron 创建 65 分钟后的重试任务
400
(acceptLicenseTerms)
CLI 版本 bugpatch publish.js,加
acceptLicenseTerms: true
401 Unauthorized
token 无效/过期让用户在 clawhub.com 重新生成 token

频率限制时的 patch CLI 方法:

PUBLISH_JS=$(find /usr/local/lib -name "publish.js" -path "*/clawhub/*" | head -1)
grep -q "acceptLicenseTerms" "$PUBLISH_JS" || \
  sed -i 's/skillName:/acceptLicenseTerms: true, skillName:/' "$PUBLISH_JS"

Step 7:验证发布

knot_skills search "{slug}"

成功后回复:

✅ 已发布:{displayName}
📦 slug:{slug}
🌐 https://clawhub.com/skills/{slug}

快速模式

用户如果一句话提供了所有信息:

"把 https://github.com/xxx/yyy 做成 skill,token 是 clh_xxx"

直接从 Step 1 执行到底,完成后汇报结果,不需要逐步确认

缺少信息时,只问缺少的那个,不重复已知内容。


示例

输入: "把 https://github.com/666ghj/BettaFish 做成 skill,token clh_xxx"

执行过程:

  1. fetch README → 多 Agent 舆情分析系统
  2. knot_skills search → 无重复
  3. slug:
    opinion-analyzer
    ,name:
    Opinion Analyzer — 多视角舆情分析助手
  4. 撰写 SKILL.md(多视角分析流程、报告模板)
  5. 创建目录,写文件
  6. clawhub publish
    → ✅ 成功