--- description: "规范化的新技能模板说明;复制后替换名称、CLI 示例与 task_service 等业务实现。" --- # 技能模板说明 这个仓库是**给开发者复制的新技能模板**,不是终端用户直接调用的业务 skill。 ## 它提供什么 - 标准目录结构 - 最小 CLI 入口(`run` / `logs` / `log-get` / `health` / `version`) - 通用任务日志表骨架(`task_logs`) - `service` 层占位模块(`task_service.py`、通用 `sibling_bridge.py`) - 成熟的隔离测试体系(IsolatedDataRoot、FakeAdapter、6 档测试 target、profile 策略) - 与现有规范 skill 一致的发布脚本与 GitHub workflow ## 复制后你需要改什么 - `SKILL.md` 中的名称、描述、slug、触发说明 - `SKILL.md` 中 `metadata.openclaw.developer_ids`(如需让非公开技能默认授权给开发者查看) - `references/CLI.md` 里的命令示例 - `scripts/util/constants.py` 中的 slug / 版本 / logger 名 - `scripts/service/task_service.py` 中的 `cmd_run` 真实业务逻辑 - 如有特定 task_type,在 `references/SCHEMA.md` 中补充字段映射说明 ## `developer_ids` 是做什么的 `metadata.openclaw.developer_ids` 是平台发布元数据,不是终端用户文案。 它用于声明:当技能发布后,如果平台侧将该技能设置为 `access_scope = 0`(不公开),哪些开发者用户仍应自动获得可见权限。 约定如下: - 字段位置:`SKILL.md` -> `metadata.openclaw.developer_ids` - 推荐格式:正整数数组,例如 `[1032, 12428]` - 发布效果:发布接口会把这些用户补写到 `skill_user_access` - 第一个 ID 会作为主开发者同步到 `skills.developer_id` 如果你的技能本来就是公开技能,或暂时不需要开发者专属可见性,这个字段可以留空数组。 ## 不建议再保留的旧结构 - 旧模板里的 `docs/` - 旧模板里的 `optional/` - 旧入口 `scripts/skill_main.py` 新模板统一使用 `scripts/main.py` 作为入口。