manifest.json Schema 参考
manifest.json 是技能的身份文件。技能市场依赖它来展示、搜索、分类和审核技能。本文档列出所有字段的完整说明。
完整 Schema
{
"id": "weather-reporter",
"name": "天气预报助手",
"version": "1.0.0",
"author": {
"name": "开发者名称",
"avatar": "https://example.com/avatar.png",
"url": "https://github.com/username"
},
"description": "每日定时推送天气预报,支持多城市配置",
"longDescription": "完整的技能描述,支持 Markdown...",
"category": "lifestyle",
"tags": ["天气", "定时任务", "推送"],
"price": "free",
"rating": 4.5,
"installs": 1280,
"minCeeCoreVersion": "1.0.0",
"dependencies": {
"openclaw": ">=1.0.0"
},
"permissions": ["http", "cron"],
"createdAt": "2026-08-27T00:00:00Z",
"updatedAt": "2026-08-27T00:00:00Z",
"icon": "icon.png",
"screenshots": ["screenshots/01.png", "screenshots/02.png"],
"config": {},
"features": [
"每日定时天气推送",
"支持全球城市",
"极端天气预警"
],
"changelog": [
{
"version": "1.0.0",
"date": "2026-08-27",
"changes": ["初始版本,支持每日天气推送"]
}
]
}
字段详解
id — 技能唯一标识
| 属性 | 说明 |
|---|
| 类型 | string |
| 必填 | ✅ 是 |
| 格式 | 英文小写,连字符分隔,如 weather-reporter |
| 规则 | 全局唯一,不可与已有技能重复 |
"id": "weather-reporter"
命名建议:使用 动词-名词 或 功能-描述 格式,如 daily-report、code-review、english-tutor。
name — 技能显示名称
| 属性 | 说明 |
|---|
| 类型 | string |
| 必填 | ✅ 是 |
| 长度 | 建议 ≤ 10 个汉字 |
| 用途 | 在技能市场列表和详情页展示 |
"name": "天气预报助手"
version — 技能版本号
| 属性 | 说明 |
|---|
| 类型 | string |
| 必填 | ✅ 是 |
| 格式 | 语义化版本 主版本.次版本.修订号 |
| 示例 | "1.0.0"、"2.1.3" |
"version": "1.0.0"
遵循 语义化版本规范:
- 主版本:不兼容的 API 修改
- 次版本:向下兼容的功能新增
- 修订号:向下兼容的问题修正
author — 作者信息
| 子字段 | 类型 | 必填 | 说明 |
|---|
name | string | ✅ | 作者显示名称 |
avatar | string | ❌ | 头像 URL |
url | string | ❌ | 个人主页或 GitHub 链接 |
"author": {
"name": "张三",
"avatar": "https://github.com/zhangsan.png",
"url": "https://github.com/zhangsan"
}
description — 一句话描述
| 属性 | 说明 |
|---|
| 类型 | string |
| 必填 | ✅ 是 |
| 长度 | ≤ 60 字 |
| 用途 | 技能卡片上的简介 |
"description": "每日定时推送天气预报,支持多城市配置"
longDescription — 详细描述
| 属性 | 说明 |
|---|
| 类型 | string |
| 必填 | ❌ 否 |
| 格式 | Markdown |
| 用途 | 技能详情页的完整介绍 |
"longDescription": "## 功能介绍\n\n天气预报助手可以...\n\n## 使用场景\n\n- 出门前查看天气..."
category — 分类
| 属性 | 说明 |
|---|
| 类型 | string |
| 必填 | ✅ 是 |
| 可选值 | 见下方分类表 |
| 分类 ID | 中文名 | 图标 | 说明 |
|---|
chat | 对话与聊天 | 💬 | 对话式 AI 能力 |
automation | 自动化任务 | ⚡ | 定时/触发式自动化 |
analytics | 数据分析 | 📊 | 数据处理与分析 |
content | 内容创作 | ✏️ | 文本/图片/代码生成 |
integration | 工具集成 | 🔌 | 第三方服务连接 |
office | 效率办公 | 💼 | 办公场景专项 |
education | 学习教育 | 📚 | 学习辅助 |
lifestyle | 生活娱乐 | 🎮 | 生活/娱乐场景 |
"category": "lifestyle"
| 属性 | 说明 |
|---|
| 类型 | string[] |
| 必填 | ❌ 否 |
| 数量 | 1-5 个 |
| 用途 | 搜索聚合和关联推荐 |
"tags": ["天气", "定时任务", "推送"]
标签用中文,每个标签 2-4 个字,表达技能的核心功能点。
price — 定价
| 属性 | 说明 |
|---|
| 类型 | string |
| 必填 | ❌ 否 |
| 默认值 | "free" |
| 可选值 | "free"(免费) |
"price": "free"
当前版本:所有技能免费。付费功能将在后续版本支持。
rating — 评分
| 属性 | 说明 |
|---|
| 类型 | number |
| 必填 | ❌ 否 |
| 范围 | 0-5 |
| 默认值 | 0 |
"rating": 4.5
评分由用户评价系统自动计算,提交时可不填。
installs — 安装量
"installs": 1280
由系统自动统计,提交时可不填。
minCeeCoreVersion — 最低固件版本
| 属性 | 说明 |
|---|
| 类型 | string |
| 必填 | ❌ 否 |
| 格式 | 语义化版本 |
| 用途 | 技能依赖的最低 CeeCore 设备固件版本 |
"minCeeCoreVersion": "1.0.0"
如果你的技能用了新版本才有的特性,务必标注此字段。
dependencies — 依赖
| 属性 | 说明 |
|---|
| 类型 | object |
| 必填 | ❌ 否 |
| 格式 | { "依赖名": "版本约束" } |
"dependencies": {
"openclaw": ">=1.0.0"
}
版本约束支持:
>=1.0.0:不低于 1.0.0
^1.0.0:兼容 1.x.x
~1.0.0:兼容 1.0.x
permissions — 权限声明
| 属性 | 说明 |
|---|
| 类型 | string[] |
| 必填 | ✅ 是 |
| 用途 | 声明技能需要的系统权限 |
| 权限 | 说明 |
|---|
http | 网络访问(调用外部 API) |
cron | 定时任务 |
notification | 推送通知 |
file | 文件读写 |
clipboard | 剪贴板访问 |
location | 位置信息 |
"permissions": ["http", "cron"]
原则:只声明技能实际需要的权限,不声明多余的。审核时会检查权限合理性。
createdAt / updatedAt — 时间戳
| 属性 | 说明 |
|---|
| 类型 | string |
| 必填 | ✅ 是 |
| 格式 | ISO 8601 UTC 时间 |
"createdAt": "2026-08-27T00:00:00Z",
"updatedAt": "2026-08-27T00:00:00Z"
icon — 图标路径
| 属性 | 说明 |
|---|
| 类型 | string |
| 必填 | ❌ 否 |
| 默认值 | "icon.png" |
"icon": "icon.png"
screenshots — 展示截图
| 属性 | 说明 |
|---|
| 类型 | string[] |
| 必填 | ❌ 否 |
| 数量 | 0-5 张 |
"screenshots": ["screenshots/01.png", "screenshots/02.png"]
features — 功能特性列表
| 属性 | 说明 |
|---|
| 类型 | string[] |
| 必填 | ❌ 否 |
| 用途 | 在技能详情页展示的核心功能点 |
"features": [
"每日定时天气推送",
"支持全球城市",
"极端天气预警"
]
changelog — 版本历史
| 子字段 | 类型 | 必填 | 说明 |
|---|
version | string | ✅ | 版本号 |
date | string | ✅ | 发布日期 |
changes | string[] | ✅ | 变更内容列表 |
"changelog": [
{
"version": "1.1.0",
"date": "2026-09-15",
"changes": ["新增多城市支持", "修复极端天气不提醒的 bug"]
},
{
"version": "1.0.0",
"date": "2026-08-27",
"changes": ["初始版本"]
}
]
必填字段速查
| 字段 | 必填 |
|---|
id | ✅ |
name | ✅ |
version | ✅ |
author.name | ✅ |
description | ✅ |
category | ✅ |
permissions | ✅ |
createdAt | ✅ |
updatedAt | ✅ |
技能提交前校验
# 校验 JSON 格式
python3 -m json.tool manifest.json > /dev/null && echo "✓ JSON 格式正确"
# 校验必填字段
python3 -c "
import json
with open('manifest.json') as f:
m = json.load(f)
required = ['id','name','version','description','category','permissions','createdAt','updatedAt']
for field in required:
assert field in m, f'缺少必填字段: {field}'
assert m[field], f'字段 {field} 为空'
assert 'name' in m['author'], '缺少 author.name'
print('✓ 必填字段完整')
"
← 技能测试与调试 | 内置工具 API 参考 →