跳转至

第七章:打包与发布

打包流程

使用打包脚本

# 基本用法
python scripts/package_skill.py path/to/skill-folder

# 指定输出目录
python scripts/package_skill.py path/to/skill-folder ./dist

打包过程

┌─────────────────────────────────────────────────────────────┐
│                                                              │
│  1. 验证 Skill                                               │
│     ┌─────────────────────────────────────────────────────┐ │
│     │  - 检查 YAML frontmatter 格式                       │ │
│     │  - 验证必需字段                                      │ │
│     │  - 检查命名规范                                      │ │
│     │  - 验证目录结构                                      │ │
│     └─────────────────────────────────────────────────────┘ │
│                           │                                  │
│                           ▼                                  │
│  2. 创建 .skill 文件                                         │
│     ┌─────────────────────────────────────────────────────┐ │
│     │  - 收集所有文件                                      │ │
│     │  - 创建 ZIP 压缩包                                   │ │
│     │  - 重命名为 .skill 扩展名                            │ │
│     └─────────────────────────────────────────────────────┘ │
│                           │                                  │
│                           ▼                                  │
│  3. 输出结果                                                 │
│     ┌─────────────────────────────────────────────────────┐ │
│     │  skill-name.skill → 输出目录                        │ │
│     └─────────────────────────────────────────────────────┘ │
│                                                              │
└─────────────────────────────────────────────────────────────┘

验证失败处理

# 验证失败示例
$ python scripts/package_skill.py my-skill

验证失败:
   description 太短(< 20 字符)
   缺少 references/ 目录引用
   发现禁止文件: README.md

请修复以上问题后重试。

.skill 文件格式

文件结构

skill-name.skill (ZIP 格式)
├── SKILL.md
├── references/
│   └── ...
├── scripts/
│   └── ...
└── assets/
    └── ...

查看内容

# 解压查看
unzip -l skill-name.skill

# 或
unzip skill-name.skill -d skill-name

发布渠道

ClawHub 技能市场

# 发布到 ClawHub
clawhub publish skill-name.skill

# 或使用 API
curl -X POST https://api.clawhub.ai/skills \
  -H "Authorization: Bearer $TOKEN" \
  -F "skill=@skill-name.skill"

Git 仓库

# 发布到 Git 仓库
cd skill-name
git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/user/skill-name.git
git push -u origin main

本地安装

# 从本地目录安装
cp -r skill-name ~/.openclaw/skills/

# 或从 .skill 文件安装
unzip skill-name.skill -d ~/.openclaw/skills/

版本管理

版本号规范

主版本.次版本.修订版本

示例:
1.0.0 - 初始版本
1.1.0 - 新增功能
1.1.1 - Bug 修复
2.0.0 - 重大变更

版本更新流程

# 1. 更新内容
vim SKILL.md

# 2. 测试验证
pytest tests/

# 3. 重新打包
python scripts/package_skill.py skill-name

# 4. 发布更新
clawhub publish skill-name.skill --version 1.1.0

变更日志

虽然不在 Skill 中包含 CHANGELOG.md,但发布时应记录变更:

# 发布说明

## v1.1.0 (2024-01-15)

### 新增
- 支持批量处理功能
- 新增 watermark.py 脚本

### 修复
- 修复大文件处理内存问题

### 变更
- 优化 description 触发条件

发布检查清单

release-checklist:
  pre-release:
    - [ ] 所有测试通过
    - [ ] 文档更新完成
    - [ ] 版本号已更新
    - [ ] 变更记录已准备

  packaging:
    - [ ] 验证通过
    - [ ] .skill 文件生成成功
    - [ ] 文件大小合理(< 10MB)

  publishing:
    - [ ] 发布渠道已选择
    - [ ] 发布说明已编写
    - [ ] 用户通知已发送

安装验证

用户安装后验证

# 验证 Skill 已安装
ls ~/.openclaw/skills/

# 验证 Skill 可用
# 在 Agent 中测试触发

安装后测试

# 测试 Skill 功能

1. 测试触发
   用户: "帮我处理这个 PDF"
   预期: Skill 被触发

2. 测试基本功能
   用户: "提取这个 PDF 的文本"
   预期: 正确提取文本

3. 测试高级功能
   用户: "给这个 PDF 加水印"
   预期: 正确添加水印

小结

本章介绍了打包与发布:

  • 使用打包脚本创建 .skill 文件
  • 理解打包验证流程
  • 选择发布渠道
  • 版本管理规范
  • 发布检查清单

下一章将介绍最佳实践。