--- 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` 作为入口。 ## 参考文档索引 | 文档 | 内容 | |------|------| | `DEVELOPMENT.md` | 从复制模板到开发出新 skill 的完整教程 | | `RUNTIME.md` | 运行时目录结构与 `CLAW_*` 环境变量约定 | | `CLI.md` | CLI 命令与参数示例 | | `SCHEMA.md` | task_logs 与字段映射说明 | | `TESTING.md` | 测试 target 与隔离体系 | | **`RPA.md`** | **三端 RPA 标准(浏览器/桌面/手机):选型、拟人操作、反反爬、人工兜底、存证** | | **`ADAPTER.md`** | **真实/仿真 × API/RPA 四档适配器模式** | | **`CONFIG.md`** | **`.env` 配置规范与首次自动落盘机制** | | `REQUIREMENTS.md` | 依赖与运行要求 | > 开发"操作浏览器/桌面/手机"或"对接 ERP/CRM/SaaS/银行"类 skill 前,**务必先读 `RPA.md` + `ADAPTER.md` + `CONFIG.md`** 这三份标准,避免重复踩坑。