搜索

PythonReactSEOPDF
OpenClaw

clawhub-publisher

将本地 skill 目录发布到 clawhub.com 的自动化发布助手。 当用户说"发布这个 skill 到 clawhub"、"把 XX skill 上传到 clawhub"、 "clawhub publish"、"发布到 clawhub" 等时触发。 自动处理:token 验证、CLI bug patch、slug 冲突、频率限制重试。

antonia-sz0 来源安装数☆ 0 仓库 Starsv1.0.0

安装与使用

请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。

SkillHub CLI

skillhub install antonia-sz/clawhub-publish-skill

打开来源仓库,查看说明和兼容环境后,按来源提供的命令或步骤安装。

将来源链接提供给你的 Agent,让它先读取说明、核对依赖,并向你说明将执行的安装步骤。

查看来源 ↗使用指南

技能说明

ClawHub Publisher — Skill 自动发布器

把本地 skill 目录一键发布到 clawhub.com,自动处理所有已知坑。


需要用户提供

参数 说明 示例
skill 目录路径 本地 skill 文件夹(必须包含 SKILL.md) /root/.openclaw/workspace/skills/SKILL-xxx
clawhub token 格式 clh_xxx,clawhub.com → Profile → API Keys 获取 clh_7XoVic...
slug URL 名称,全小写+连字符 my-skill-name
displayName 展示名称 My Skill — 一句话描述
tags 逗号分隔(可选) productivity,writing

如果缺少任何必填项,只问缺少的那个,不要重复已知信息。


执行流程

Step 1:环境检查
# 确认 clawhub CLI 已安装
which clawhub || npm install -g clawhub
clawhub --version

# 确认 skill 目录存在且包含 SKILL.md
ls {skill_dir}/SKILL.md
Step 2:Patch CLI(如需要)

clawhub CLI 存在一个 bug:publish 时 payload 缺少 acceptLicenseTerms: true,服务端会返回 400。

检查并修复:

PUBLISH_JS=$(find /usr/local/lib /usr/lib -name "publish.js" -path "*/clawhub/*" 2>/dev/null | head -1)

# 检查是否已 patch
grep -q "acceptLicenseTerms" "$PUBLISH_JS" && echo "已 patch" || \
  # 在 payload 构建处加入 acceptLicenseTerms: true
  sed -i 's/skillName:/acceptLicenseTerms: true, skillName:/' "$PUBLISH_JS" && echo "patch 完成"

💡 patch 是幂等的,重复执行无害。

Step 3:查重(可选但推荐)
# 用 knot_skills 搜索是否已有同名/同功能 skill
knot_skills search "{slug关键词}"

如果发现完全重复的 skill,告知用户,询问是否继续(换 slug 或放弃)。

Step 4:执行发布
CLAWHUB_TOKEN={token} \
clawhub publish {skill_dir} \
  --slug {slug} \
  --name "{displayName}" \
  --version {version:-1.0.0} \
  --changelog "{changelog:-Initial release}" \
  --tags "{tags:-latest}"
Step 5:错误处理

遇到以下错误时,按对应方案处理:

Error: Path must be a folder → 检查传入的是目录路径还是文件路径,修正后重试

slug already taken / 409 → 在 slug 后加 -v2 或更具体的后缀,询问用户确认后重试

**`r...

来源信息

Source
github
Repository
openclaw/skills
Path
skills/antonia-sz/clawhub-publish-skill
Version
1.0.0
Commit
83e94fbcf696367be35eb3b5b145d280907583ec
分类来源
rules
状态
active
可见性
public

这些信息来自收录时的来源分析,可能滞后;使用前请核对最新来源文件。

来源内容

SKILL.md
# ClawHub Publisher — Skill 自动发布器

把本地 skill 目录一键发布到 clawhub.com,自动处理所有已知坑。

---

## 需要用户提供

| 参数 | 说明 | 示例 |
|------|------|------|
| `skill 目录路径` | 本地 skill 文件夹(必须包含 SKILL.md) | `/root/.openclaw/workspace/skills/SKILL-xxx` |
| `clawhub token` | 格式 `clh_xxx`,clawhub.com → Profile → API Keys 获取 | `clh_7XoVic...` |
| `slug` | URL 名称,全小写+连字符 | `my-skill-name` |
| `displayName` | 展示名称 | `My Skill — 一句话描述` |
| `tags` | 逗号分隔(可选) | `productivity,writing` |

如果缺少任何必填项,**只问缺少的那个**,不要重复已知信息。

---

## 执行流程

### Step 1:环境检查

```bash
# 确认 clawhub CLI 已安装
which clawhub || npm install -g clawhub
clawhub --version

# 确认 skill 目录存在且包含 SKILL.md
ls {skill_dir}/SKILL.md
```

### Step 2:Patch CLI(如需要)

clawhub CLI 存在一个 bug:publish 时 payload 缺少 `acceptLicenseTerms: true`,服务端会返回 400。

检查并修复:

```bash
PUBLISH_JS=$(find /usr/local/lib /usr/lib -name "publish.js" -path "*/clawhub/*" 2>/dev/null | head -1)

# 检查是否已 patch
grep -q "acceptLicenseTerms" "$PUBLISH_JS" && echo "已 patch" || \
  # 在 payload 构建处加入 acceptLicenseTerms: true
  sed -i 's/skillName:/acceptLicenseTerms: true, skillName:/' "$PUBLISH_JS" && echo "patch 完成"
```

> 💡 patch 是幂等的,重复执行无害。

### Step 3:查重(可选但推荐)

```bash
# 用 knot_skills 搜索是否已有同名/同功能 skill
knot_skills search "{slug关键词}"
```

如果发现完全重复的 skill,告知用户,询问是否继续(换 slug 或放弃)。

### Step 4:执行发布

```bash
CLAWHUB_TOKEN={token} \
clawhub publish {skill_dir} \
  --slug {slug} \
  --name "{displayName}" \
  --version {version:-1.0.0} \
  --changelog "{changelog:-Initial release}" \
  --tags "{tags:-latest}"
```

### Step 5:错误处理

遇到以下错误时,按对应方案处理:

**`Error: Path must be a folder`**
→ 检查传入的是目录路径还是文件路径,修正后重试

**`slug already taken` / `409`**
→ 在 slug 后加 `-v2` 或更具体的后缀,询问用户确认后重试

**`r...

相关技能

OpenClaw

1password

daggerkun007

Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.