Appearance
OpenClaw Skill 打包发布:从本地到 ClawHub 完全指南
开发完 Skill 只是第一步,让更多人用上才是目的。从本地开发到 ClawHub 发布,每个环节都有规范和技巧。掌握完整发布流程,让你的技能快速触达用户。
发布流程概览
┌─────────────────────────────────────────────────────────────┐
│ Skill 发布完整流程 │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 本地开发 │ │ 打包测试 │ │ 发布上架 │
├─────────────┤ ├─────────────┤ ├─────────────┤
│ • 目录结构 │ │ • 功能测试 │ │ • ClawHub │
│ • SKILL.md │ │ • 兼容测试 │ │ • 审核标准 │
│ • 代码编写 │ │ • 文档完善 │ │ • 版本更新 │
└─────────────┘ └─────────────┘ └─────────────┘
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 版本管理 │ │ 用户反馈 │ │ 持续迭代 │
├─────────────┤ ├─────────────┤ ├─────────────┤
│ • 语义版本 │ │ • Issue │ │ • Bug修复 │
│ • 变更日志 │ │ • 用户评价 │ │ • 功能增强 │
│ • 回滚机制 │ │ • 数据统计 │ │ • 版本迭代 │
└─────────────┘ └─────────────┘ └─────────────┘目录结构规范
标准 Skill 目录结构
my-skill/
├── SKILL.md # 技能说明文档(必需)
├── config.json # 配置规范(可选)
├── package.json # 依赖声明(可选)
├── README.md # 详细文档(推荐)
├── CHANGELOG.md # 变更日志(推荐)
├── LICENSE # 开源协议(推荐)
├── scripts/ # 脚本文件
│ ├── main.js # 主入口
│ └── utils.js # 工具函数
├── templates/ # 模板文件
│ └── prompt.tpl # 提示词模板
├── tests/ # 测试文件
│ └── main.test.js # 单元测试
└── assets/ # 资源文件
├── icon.png # 技能图标
└── screenshot.png # 截图展示文件命名规范
| 文件 | 命名规范 | 示例 |
|---|---|---|
| 目录名 | 小写字母 + 连字符 | my-skill |
| SKILL.md | 固定名称 | SKILL.md |
| 脚本文件 | 小写驼峰 | main.js, utils.js |
| 配置文件 | 固定名称 | config.json |
SKILL.md 编写规范
基础模板
markdown
---
name: my-skill
version: 1.0.0
description: 简洁描述技能功能(50字以内)
author: your-name
tags: [工具, 自动化, 效率]
permissions: [browser-use, file-read]
minVersion: 2026.1.0
---
# 技能名称
详细描述技能的功能、使用场景和注意事项。
## 功能特点
- 功能 1:描述
- 功能 2:描述
- 功能 3:描述
## 使用方法
### 基础用法
用户:帮我执行某个任务
Agent:[执行技能]
### 高级用法
用户:带参数执行任务
Agent:[执行高级功能]
## 配置说明
| 配置项 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| apiKey | string | 是 | API 密钥 |
| timeout | number | 否 | 超时时间,默认 30000 |
## 注意事项
- 注意事项 1
- 注意事项 2必填字段说明
| 字段 | 类型 | 说明 | 示例 |
|---|---|---|---|
| name | string | 技能唯一标识 | my-skill |
| version | string | 版本号(语义版本) | 1.0.0 |
| description | string | 简短描述 | 数据抓取工具 |
| author | string | 作者信息 | 张三 |
可选字段说明
| 字段 | 类型 | 说明 | 示例 |
|---|---|---|---|
| tags | array | 标签分类 | [工具, 效率] |
| permissions | array | 权限声明 | [browser-use] |
| minVersion | string | 最低版本要求 | 2026.1.0 |
| homepage | string | 项目主页 | https://... |
| repository | string | 代码仓库 | https://github.com/... |
config.json 配置规范
配置示例
json
{
"required": ["apiKey"],
"properties": {
"apiKey": {
"type": "string",
"title": "API密钥",
"description": "从控制台获取的API密钥",
"minLength": 32,
"maxLength": 64
},
"baseUrl": {
"type": "string",
"title": "服务地址",
"description": "API服务地址",
"default": "https://api.example.com",
"format": "uri"
},
"timeout": {
"type": "number",
"title": "超时时间",
"description": "请求超时时间(毫秒)",
"default": 30000,
"minimum": 5000,
"maximum": 120000
},
"retryCount": {
"type": "number",
"title": "重试次数",
"description": "请求失败重试次数",
"default": 3,
"minimum": 0,
"maximum": 5
}
}
}配置类型支持
| 类型 | 说明 | 示例 |
|---|---|---|
| string | 字符串 | "apiKey": "sk-xxx" |
| number | 数字 | "timeout": 30000 |
| boolean | 布尔值 | "debug": true |
| array | 数组 | "tags": ["a", "b"] |
| object | 对象 | "options": {"key": "value"} |
打包流程
步骤 1:检查目录结构
bash
# 检查必要文件
ls my-skill/SKILL.md
ls my-skill/scripts/
# 检查文件完整性
tree my-skill/步骤 2:本地测试
bash
# 加载本地 Skill
openclaw skill load ./my-skill
# 测试功能
openclaw skill test my-skill
# 运行单元测试
cd my-skill && npm test步骤 3:打包压缩
bash
# 打包为 zip
zip -r my-skill-v1.0.0.zip my-skill/
# 排除不必要文件
zip -r my-skill-v1.0.0.zip my-skill/ \
-x "*.git*" \
-x "*node_modules*" \
-x "*.DS_Store"步骤 4:验证打包
bash
# 解压验证
unzip -l my-skill-v1.0.0.zip
# 检查文件列表
Archive: my-skill-v1.0.0.zip
Length Date Time Name
--------- ---------- ----- ----
1024 2026-04-08 18:00 my-skill/SKILL.md
512 2026-04-08 18:00 my-skill/config.json
2048 2026-04-08 18:00 my-skill/scripts/main.js
--------- -------
3584 3 filesClawHub 发布流程
注册账号
1. 访问 ClawHub:https://clawhub.openclaw.ai
2. 点击「注册」
3. 填写邮箱、密码
4. 验证邮箱
5. 完善开发者信息创建技能
1. 登录 ClawHub
2. 进入「我的技能」
3. 点击「发布新技能」
4. 填写基本信息:
- 技能名称
- 简短描述
- 详细介绍
- 分类标签上传文件
1. 选择「上传技能包」
2. 选择打包好的 zip 文件
3. 等待上传完成
4. 系统自动验证文件结构提交审核
1. 预览技能详情
2. 检查配置信息
3. 点击「提交审核」
4. 等待审核结果(通常 1-3 个工作日)审核状态
| 状态 | 说明 | 后续操作 |
|---|---|---|
| 待审核 | 等待审核中 | 无需操作 |
| 审核中 | 正在审核 | 等待结果 |
| 已通过 | 审核通过 | 已上架 |
| 已拒绝 | 审核未通过 | 查看原因并修改 |
审核标准
必须满足的条件
| 条件 | 要求 | 常见问题 |
|---|---|---|
| 功能完整 | 核心功能可用 | 功能未实现、报错 |
| 文档完善 | SKILL.md 完整 | 缺少使用说明 |
| 代码规范 | 无安全隐患 | 硬编码密钥、SQL注入 |
| 权限声明 | 权限使用合理 | 未声明或过度申请 |
| 无侵权 | 不侵犯他人权益 | 抄袭他人代码 |
常见拒绝原因
❌ 拒绝原因 1:功能不完整
问题:核心功能未实现或报错
解决:完善功能,修复 bug
❌ 拒绝原因 2:文档不清晰
问题:缺少使用说明或配置说明
解决:补充 SKILL.md 文档
❌ 拒绝原因 3:安全问题
问题:硬编码敏感信息
解决:使用环境变量或配置项
❌ 拒绝原因 4:权限问题
问题:申请了不必要的权限
解决:只申请必需权限
❌ 拒绝原因 5:重复技能
问题:与已有技能功能重复
解决:增加差异化功能版本管理
语义版本规范
主版本号.次版本号.修订号
MAJOR.MINOR.PATCH
示例:1.2.3
- MAJOR (1):不兼容的重大变更
- MINOR (2):新增功能,向后兼容
- PATCH (3):Bug 修复,向后兼容版本更新规则
| 变更类型 | 版本变更 | 示例 |
|---|---|---|
| Bug 修复 | PATCH +1 | 1.0.0 → 1.0.1 |
| 新增功能 | MINOR +1 | 1.0.0 → 1.1.0 |
| 重大变更 | MAJOR +1 | 1.0.0 → 2.0.0 |
变更日志示例
markdown
# CHANGELOG.md
## [1.2.0] - 2026-04-08
### Added
- 新增批量处理功能
- 支持自定义输出格式
### Changed
- 优化性能,响应速度提升 50%
### Fixed
- 修复特殊字符编码问题
- 修复并发请求偶发崩溃
## [1.1.0] - 2026-03-15
### Added
- 新增错误重试机制
- 支持自定义超时时间
### Fixed
- 修复空数据处理问题
## [1.0.0] - 2026-02-01
### Added
- 初始版本发布
- 基础数据抓取功能发布实战案例
案例一:发布数据抓取技能
## 步骤 1:准备目录结构
$ tree data-fetcher/
data-fetcher/
├── SKILL.md
├── config.json
├── package.json
├── scripts/
│ ├── main.js
│ └── parser.js
└── assets/
└── icon.png
## 步骤 2:编写 SKILL.md
---
name: data-fetcher
version: 1.0.0
description: 网页数据抓取与结构化工具
author: 张三
tags: [数据抓取, 网页解析]
permissions: [browser-use, network-access]
---
# 数据抓取器
从网页中提取结构化数据,支持多种输出格式...
## 步骤 3:本地测试
$ openclaw skill load ./data-fetcher
✅ Skill loaded: data-fetcher
$ openclaw skill test data-fetcher
✅ All tests passed
## 步骤 4:打包
$ zip -r data-fetcher-v1.0.0.zip data-fetcher/ \
-x "*.git*" -x "*node_modules*"
## 步骤 5:上传 ClawHub
1. 登录 ClawHub
2. 发布新技能
3. 上传 zip 文件
4. 填写技能信息
5. 提交审核
## 步骤 6:审核通过
审核结果:✅ 已通过
审核意见:功能完整,文档清晰
上架时间:2026-04-08 18:30持续迭代
收集用户反馈
用户反馈渠道:
1. ClawHub 评论区
2. GitHub Issues
3. 开发者邮箱
4. 社区论坛版本迭代流程
1. 收集用户反馈
2. 分析问题优先级
3. 制定迭代计划
4. 开发新版本
5. 测试验证
6. 更新 CHANGELOG
7. 发布新版本
8. 通知用户更新版本更新推送
bash
# 发布新版本后,通知已安装用户
openclaw skill notify data-fetcher --version 1.1.0 --message "
新增功能:
- 批量处理支持
- 自定义输出格式
修复问题:
- 特殊字符编码
- 并发请求崩溃
"发布清单
发布前逐项检查:
□ 目录结构
□ SKILL.md 存在且格式正确
□ 脚本文件完整
□ 配置文件格式正确
□ 文档完善
□ 功能描述清晰
□ 使用方法完整
□ 配置说明明确
□ 功能测试
□ 核心功能正常
□ 边界情况处理
□ 错误提示友好
□ 安全检查
□ 无硬编码敏感信息
□ 权限申请合理
□ 无安全漏洞
□ 版本管理
□ 版本号正确
□ CHANGELOG 更新
□ Git 标签创建总结
| 阶段 | 关键点 | 常见问题 |
|---|---|---|
| 准备 | 目录结构规范 | 缺少必要文件 |
| 编写 | SKILL.md 完整 | 文档不清晰 |
| 测试 | 功能验证 | 测试不充分 |
| 打包 | 排除不必要文件 | 包含敏感信息 |
| 发布 | 审核标准 | 功能不完整 |
| 迭代 | 用户反馈 | 响应不及时 |
发布成功的关键:
- 完整的文档:让用户快速上手
- 充分的测试:避免上线后出问题
- 规范的代码:通过安全审核
- 及时迭代:响应用户需求
从本地开发到 ClawHub 发布,每一步都有规范可循。按照流程操作,让你的技能快速触达用户。
