📐 架构设计原则
世界上有一种Skill,它功能强大但代码优美,它简单易用但扩展性强。这种Skill的开发者都遵循了以下原则:
⚡ 单一职责
一个Skill只做一件事,做好一件事。比如"browser-automation"只做浏览器控制,不负责数据处理。
🔌 插件化设计
主逻辑和扩展功能分离,用户可以根据需要选择性加载。像乐高积木一样灵活组合。
🛡️ 最小权限
Skill只请求必要的权限。一个天气查询Skill不需要访问你的文件系统。
📊 可观测性
内置日志、监控、指标,方便调试和性能分析。出了问题能快速定位。
📝 代码规范与结构
推荐的目录结构
my-awesome-skill/
├── SKILL.md # 必选:说明文档
├── config.schema.json # 可选:配置结构定义
├── package.json # 可选:Node.js依赖管理
├── scripts/
│ ├── main.js # 主逻辑
│ ├── utils.js # 工具函数
│ └── test.js # 单元测试
├── examples/
│ ├── basic-usage.md # 基础使用示例
│ └── advanced-usage.md # 高级使用示例
└── README.md # 推荐:英文说明(ClawHub展示用)
SKILL.md 编写规范
# My Awesome Skill
## 功能描述
一段话说明你的Skill能做什么(50-100字最好)
## 安装方法
\`\`\`bash
openclaw skills install my-awesome-skill
\`\`\`
## 配置说明
| 配置项 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| api_key | string | 是 | API密钥 |
| timeout | number | 否 | 超时时间(默认30秒)|
## 使用方法
### 示例1:基础用法
\`\`\`yaml
tools:
- my-awesome-skill
\`\`\`
### 示例2:高级用法
\`\`\`yaml
tools:
- my-awesome-skill
my-awesome-skill:
timeout: 60
\`\`\`
## 注意事项
- 需要Node.js v18+
- 确保API Key有足够配额
💡 妙趣提示
好的SKILL.md = 好文档 + 好教程 + 好营销。你的文档写得越清晰,被下载的次数就越多。这就像相亲照片——第一印象决定了别人会不会进一步了解你!
🧪 测试策略
测试金字塔
给你的Skills建立完善的测试体系:
- 单元测试:测试每个功能模块(覆盖率 > 80%)
- 集成测试:测试Skill在OpenClaw中的运行
- 端到端测试:模拟真实使用场景
- 安全测试:使用skill-vetter审查代码
# scripts/test.js 示例
const assert = require('assert');
// 测试函数
function test_parseConfig() {
const input = { "timeout": 60 };
const result = parseConfig(input);
assert.equal(result.timeout, 60);
console.log('✅ test_parseConfig passed');
}
// 运行测试
test_parseConfig();
⚠️ 常见问题
"我写了个Skill但是没人用" — 最常见的原因:文档不清晰、没有测试用例、缺少使用示例。
解决方案:按照上面的模板完善SKILL.md,添加至少3个使用示例。
🚀 部署与发布
持续集成/持续部署(CI/CD)
# .github/workflows/skill-ci.yml
name: Skill CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- run: npm install
- run: npm test
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run skill-vetter
run: openclaw skills vet ./
版本号规范(语义化版本)
v1.0.0— 第一个正式版本v1.1.0— 新增功能(向后兼容)v1.1.1— Bug修复(向后兼容)v2.0.0— 不兼容的变更
🎬 总结
开发一个优秀的Skill并不难,关键在于:
- ✅ 设计清晰的架构
- ✅ 编写规范化的代码
- ✅ 建立完善的测试体系
- ✅ 注重安全审查
- ✅ 提供优秀的文档和示例
凌晨4点17分,我终于写完了我的第一个Skill。 那一刻,世界安静得只剩下代码编译的声音。如果你也想体验这种成就感,现在就动手吧!