Install
openclaw skills install clawhub-publisher-tool一键发布技能到ClawHub平台。自动完成登录、版本更新、发布全流程。 适用场景: - "帮我发布这个技能" - "升级技能到新版本" - "把编辑助手发布到ClawHub" - "发布技能"
openclaw skills install clawhub-publisher-tool快速将本地技能发布到 ClawHub 平台,支持版本自动升级。
确认要发布的技能:
~/agents/skills/<技能名>SKILL.md 文件package.json 文件,包含以下字段:
displayName 或 display_name:发布到 ClawHub 显示的名称(必填)version:当前版本号name:技能 slugSKILL.md 结构规范:
SKILL.md 的 frontmatter 部分,只有 name 和 description 在顶层,其他所有属性都放在 metadata 下:
---
name: skill-name # 顶层:技能名
description: | # 顶层:描述
技能描述...
metadata: # 所有其他属性放 metadata 下
version: 1.0.0
author: your-name
homepage: https://clawhub.ai/skills/skill-name
tags:
- skill
openclaw:
requires:
env.vars: {}
dependencies: [] # 依赖技能
config: {} # 配置字段
---
❌ 错误示例(其他属性放在顶层):
---
name: skill-name
description: |
技能描述
version: 1.0.0 # ❌ 错误:应放在 metadata 下
dependencies: [] # ❌ 错误:应放在 metadata 下
config: {} # ❌ 错误:应放在 metadata 下
---
✅ 正确示例:
---
name: skill-name
description: |
技能描述
metadata:
version: 1.0.0
author: your-name
# ... 其他属性
---
从 package.json 读取版本:
# 读取 package.json 中的 displayName(用于发布名称,兼容 display_name)
node -p "require('./package.json').displayName || require('./package.json').display_name"
# 读取 package.json 中的 version
node -p "require('./package.json').version"
版本号递增规则:
编辑 package.json 更新版本号:
{
"name": "editor-assistant",
"displayName": "小编助手",
"version": "1.4.0",
"description": "帮你创作超有个人风格的公众号/小红书推文"
}
同时必须更新 SKILL.md 中的 metadata.version:
---
name: editor-assistant
description: |
小编助手...
metadata:
version: 1.4.0
author: your-name
homepage: https://clawhub.ai/skills/editor-assistant
---
clawhub login --token "<你的token>" --no-browser
发布前必须校验三处版本一致性,缺一不可:
package.json 中的 versionSKILL.md 中 metadata.version(或顶级 version: 字段)clawhub publish 命令的 --version 参数SKILL_DIR="~/agents/skills/<技能名>"
# 1. 读取 package.json 版本
$PKG_VERSION = node -p "require('$SKILL_DIR/package.json').version" 2>$null
if ([string]::IsNullOrEmpty($PKG_VERSION)) { $PKG_VERSION = $null }
# 2. 读取 SKILL.md metadata.version(优先)或顶级 version:
$SKILL_META_VERSION = $null
if (Select-String -Path "$SKILL_DIR/SKILL.md" -Pattern "^\s*metadata:" -Quiet) {
$SKILL_META_VERSION = Select-String -Path "$SKILL_DIR/SKILL.md" -Pattern "^\s+version:" | Select-Object -First 1 | ForEach-Object { ($_ -split ":")[1].Trim() }
}
if ([string]::IsNullOrEmpty($SKILL_META_VERSION)) {
$SKILL_META_VERSION = Select-String -Path "$SKILL_DIR/SKILL.md" -Pattern "^\s*version:" | Select-Object -First 1 | ForEach-Object { ($_ -split ":")[1].Trim() }
}
# 3. 读取 package.json displayName
$DISPLAY_NAME = node -p "require('$SKILL_DIR/package.json').displayName || require('$SKILL_DIR/package.json').display_name" 2>$null
Write-Host "📋 版本校验(三处必须完全一致):"
Write-Host " package.json version: $PKG_VERSION"
Write-Host " SKILL.md metadata.version: $SKILL_META_VERSION"
Write-Host " displayName: $DISPLAY_NAME"
# 校验
if ([string]::IsNullOrEmpty($PKG_VERSION) -or [string]::IsNullOrEmpty($SKILL_META_VERSION)) {
Write-Host "⚠️ 错误: 版本信息不完整!"
Write-Host " 请确保 package.json 和 SKILL.md 都设置了 version。"
exit 1
}
if ($PKG_VERSION -ne $SKILL_META_VERSION) {
Write-Host "⚠️ 错误: 版本不一致!"
Write-Host " package.json version: $PKG_VERSION"
Write-Host " SKILL.md metadata.version: $SKILL_META_VERSION"
Write-Host " 请先修复版本不一致问题,再发布。"
exit 1
}
Write-Host "✅ 版本校验通过"
修复版本不一致的方法:
如果发现 package.json 和 SKILL.md 版本不一致,先确定要使用哪个版本(如 1.4.0),然后同时更新两处:
# 更新 package.json
$pkg = Get-Content "$SKILL_DIR/package.json" | ConvertFrom-Json
$pkg.version = "1.4.0"
$pkg | ConvertTo-Json | Set-Content "$SKILL_DIR/package.json"
# 更新 SKILL.md metadata.version
(Get-Content "$SKILL_DIR/SKILL.md") -replace '^\s+version:\s*.*', " version: 1.4.0" | Set-Content "$SKILL_DIR/SKILL.md"
版本一致后,读取配置进行发布:
DISPLAY_NAME=$(node -p "require('$SKILL_DIR/package.json').displayName || require('$SKILL_DIR/package.json').display_name")
VERSION=$(node -p "require('$SKILL_DIR/package.json').version")
SKILL_NAME=$(node -p "require('$SKILL_DIR/package.json').name")
clawhub publish "$SKILL_DIR" \
--slug "$SKILL_NAME" \
--name "$DISPLAY_NAME" \
--version "$VERSION" \
--changelog "<更新说明>"
示例:
clawhub publish "~/agents/skills/editor-assistant" \
--slug editor-assistant \
--name "小编助手" \
--version 1.4.0 \
--changelog "v1.4.0: 添加配置管理和依赖技能说明"
如果技能目录包含 publish.sh,可以直接运行:
cd <技能目录>
./publish.sh [版本号] [更新说明]
该脚本会自动读取 package.json 中的配置。
| 操作 | 命令 |
|---|---|
| 登录 | clawhub login --token "<token>" --no-browser |
| 查看当前用户 | clawhub whoami |
| 发布技能 | clawhub publish "<路径>" --slug <slug> --name <显示名> --version <ver> --changelog "<说明>" |
| 查看帮助 | clawhub publish --help |
Token 存储在配置文件中,首次登录后无需重复登录:
%USERPROFILE%\.clawhub\config.json~/.clawhub/config.json🚀 有了这个技能,发布技能就像发朋友圈一样简单!