Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6786a19953 | |||
| d10db1d667 | |||
| 26efbf7f82 | |||
| cb9bb4342f | |||
| 21242cdd6d | |||
| 05a71cff9b | |||
| f7290d5563 | |||
| 848bd537ed | |||
| 1e623e5c0f | |||
| 2be083c0c9 | |||
| 828437779c | |||
| abe4ea80a0 | |||
| e14cb97232 | |||
| 2c7b23ac77 | |||
| cdd8b663f4 | |||
| 285138ebf4 | |||
| 4cde7ea739 | |||
| 2b3fdda61e | |||
| 11289976c3 | |||
| 8617bb1368 | |||
| cc7c5e3b18 |
3
DEMO.md
3
DEMO.md
@@ -108,6 +108,3 @@ demo_video_url: ""
|
||||
{ "total": 5, "pending": 3, "done": 2 }
|
||||
```
|
||||
|
||||
## 没有视频时
|
||||
|
||||
以上图文覆盖了核心操作与返回结果样例;有视频后把 `demo_video_url` 填上真实可访问的地址即可,正文可保留为补充说明。
|
||||
|
||||
73
README.md
73
README.md
@@ -1,45 +1,27 @@
|
||||
---
|
||||
description: "用用户能理解的方式说明这个技能能做什么、适合什么场景,以及如何开始使用。"
|
||||
description: "用户可以指定待办事项,系统会自动提醒用户在指定时间完成或用户指定的时间点提醒。"
|
||||
---
|
||||
|
||||
> **模板说明(复制后删除本段)**
|
||||
> 本文是技能市场详情与普通用户说明,**不是** Agent 参考索引、CLI 契约或开发文档。
|
||||
> frontmatter 的 `description` 必须是用户能看懂的一句话能力描述;**不得**写成 CLI、schema、references、development、契约、数据结构、开发规范或 Agent 参考索引。
|
||||
> 正文只回答用户关心的问题,**不要**把 Playwright、DOM、Python、RPA、references、development、schema 等作为面向用户的主说明内容;若业务上必须出现技术词,须用用户能理解的方式解释,且不能喧宾夺主。
|
||||
> **复制后验收章节(标题可微调,建议保留):**「能帮你做什么」「适合什么场景」「使用前需要准备什么」「你可以这样告诉 Agent」「执行后你会得到什么」「注意事项」「常见问题」。
|
||||
# 待办事项
|
||||
|
||||
# 【技能名称】
|
||||
|
||||
> 用一两句话说明这个技能帮助用户完成什么工作。
|
||||
> 这里不要解释技术实现,要从用户的业务目标出发描述价值。
|
||||
> 用户可以创建待办事项,删除待办事项,修改待办事项,系统会自动提醒用户在指定时间完成或用户指定的时间点提醒。
|
||||
|
||||
---
|
||||
|
||||
## 这个技能能帮你做什么
|
||||
|
||||
用 3 到 6 条业务能力说明技能价值,例如:
|
||||
|
||||
- 【自动整理/查询/生成/同步/核对/提交】某类业务数据
|
||||
- 帮你减少重复操作,降低人工录入或核对成本
|
||||
- 在任务完成后给出清晰的处理结果、失败原因或后续建议
|
||||
- 能够帮助用户提醒待办事项,记录待办事项,避免遗漏
|
||||
|
||||
---
|
||||
|
||||
## 适合什么场景
|
||||
## 使用场景
|
||||
- 个人事务、生活安排
|
||||
- 日常工作任务
|
||||
|
||||
列出典型使用场景。请使用用户熟悉的业务语言,例如:
|
||||
|
||||
- 每天需要重复处理同一类订单、单据、报表或客户资料
|
||||
- 需要从多个系统中查询信息并汇总结果
|
||||
- 需要按固定规则检查数据是否完整、是否异常
|
||||
- 需要把处理结果保存为文件、记录或任务报告
|
||||
|
||||
---
|
||||
|
||||
## 使用前需要准备什么
|
||||
|
||||
说明用户在使用前要准备的东西,例如:
|
||||
|
||||
- **网页自动化类:** 首次运行可由技能自动登记平台账号(浏览器会话由系统隔离管理)。也可在「账号管理」里指定登录标识。登记账号 ≠ 已登录目标站
|
||||
- **账号在哪里看:** 已登记账号可在「数据管理 / 账号管理」中查看;每个账号使用独立浏览器会话,批量或多账号任务不会共用登录状态
|
||||
- **是否要登录目标站:** 按本技能说明(有的平台必须登录,有的公开页可不登录);与「是否有账号记录」不是一回事
|
||||
@@ -51,57 +33,20 @@ description: "用用户能理解的方式说明这个技能能做什么、适合
|
||||
|
||||
## 你可以这样告诉 Agent
|
||||
|
||||
用自然语言示例展示用户可以怎么发起任务,例如:
|
||||
|
||||
> “帮我查询今天的【业务对象】,整理成表格。”
|
||||
>
|
||||
> “帮我核对这些【数据/单据】是否有异常,并告诉我问题在哪里。”
|
||||
>
|
||||
> “帮我把【时间范围】内的【业务数据】导出并生成处理报告。”
|
||||
>
|
||||
> “帮我根据这个文件里的内容,逐条完成【业务动作】。”
|
||||
|
||||
> 注意:示例应是自然语言,不要写命令行命令。
|
||||
> “帮我查询今天的【待办事项】”
|
||||
|
||||
---
|
||||
|
||||
## 执行后你会得到什么
|
||||
|
||||
说明用户会看到什么结果,例如:
|
||||
|
||||
- 任务是否成功完成
|
||||
- 处理了多少条数据
|
||||
- 哪些内容成功、哪些失败
|
||||
- 失败原因和建议处理方式
|
||||
- 生成的文件、表格、报告或记录
|
||||
- 查询待办事项的结果
|
||||
|
||||
---
|
||||
|
||||
## 注意事项
|
||||
|
||||
用用户能理解的方式说明边界和风险,例如:
|
||||
|
||||
- 请确认输入范围准确,避免处理错数据
|
||||
- 涉及提交、付款、删除、审批等高风险动作时,技能应在执行前请求确认
|
||||
- 如果外部系统登录失效、权限不足或页面变化,任务可能需要用户介入
|
||||
- 不建议在未核对数据的情况下直接执行批量操作
|
||||
|
||||
---
|
||||
|
||||
## 常见问题
|
||||
|
||||
### 为什么任务没有查到数据?
|
||||
|
||||
> 可能是时间范围、关键词、账号权限或系统筛选条件不正确。请先确认输入信息是否准确。
|
||||
|
||||
### 为什么任务执行到一半需要我操作?
|
||||
|
||||
> 可能遇到了登录、验证码、权限确认、二次审批或系统异常。请根据 Agent 的提示完成必要操作。
|
||||
|
||||
### 结果文件在哪里查看?
|
||||
|
||||
> 请根据 Agent 返回的结果说明查看生成文件、任务记录或处理报告。
|
||||
|
||||
### 已经登记的账号在哪里查看?
|
||||
|
||||
> 请到匠厂的「数据管理 / 账号管理」查看账号记录和状态。若任务仍提示账号异常,请把账号编号、任务时间和界面提示原文提供给支持人员;不要发送密码、Cookie 或验证码。
|
||||
|
||||
2
SKILL.md
2
SKILL.md
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: 技能开发模板(通用业务版)
|
||||
name: 待办事项
|
||||
description: "OpenClaw 通用业务技能开发模板,供复制后定制新业务 skill。定制步骤见 development/DEVELOPMENT.md。"
|
||||
version: 1.0.98
|
||||
author: 深圳匠厂科技有限公司
|
||||
|
||||
@@ -6,7 +6,10 @@
|
||||
"id": "health",
|
||||
"label": "运行检查",
|
||||
"description": "检查技能运行环境并返回结构化结果,不启动浏览器。",
|
||||
"placements": ["skill-detail", "agent"],
|
||||
"placements": [
|
||||
"skill-detail",
|
||||
"agent"
|
||||
],
|
||||
"executionProfile": "sync",
|
||||
"entrypoint": {
|
||||
"type": "cli",
|
||||
@@ -18,7 +21,9 @@
|
||||
"id": "version",
|
||||
"label": "查看版本",
|
||||
"description": "返回技能版本和机器标识。",
|
||||
"placements": ["skill-detail"],
|
||||
"placements": [
|
||||
"skill-detail"
|
||||
],
|
||||
"executionProfile": "sync",
|
||||
"entrypoint": {
|
||||
"type": "cli",
|
||||
@@ -30,13 +35,229 @@
|
||||
"id": "config-path",
|
||||
"label": "查看配置位置",
|
||||
"description": "返回技能配置文件位置。",
|
||||
"placements": ["skill-detail"],
|
||||
"placements": [
|
||||
"skill-detail"
|
||||
],
|
||||
"executionProfile": "sync",
|
||||
"entrypoint": {
|
||||
"type": "cli",
|
||||
"command": "config-path",
|
||||
"args": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "add-todo",
|
||||
"label": "添加待办",
|
||||
"description": "添加待办事项。",
|
||||
"placements": [
|
||||
"skill-detail",
|
||||
"toolbar"
|
||||
],
|
||||
"executionProfile": "sync",
|
||||
"entrypoint": {
|
||||
"type": "cli",
|
||||
"command": "todo",
|
||||
"args": [
|
||||
"add",
|
||||
"--title",
|
||||
"{{title}}",
|
||||
"--priority",
|
||||
"{{priority}}",
|
||||
"--due-at",
|
||||
"{{due-at}}"
|
||||
]
|
||||
},
|
||||
"interaction": "form",
|
||||
"bind": {
|
||||
"tables": [
|
||||
"todos"
|
||||
]
|
||||
},
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string",
|
||||
"title": "待办标题",
|
||||
"description": "待办事项的标题,必填。"
|
||||
},
|
||||
"priority": {
|
||||
"type": "string",
|
||||
"title": "优先级",
|
||||
"description": "待办事项的优先级,可选。",
|
||||
"default": "normal",
|
||||
"enum": [
|
||||
"high",
|
||||
"normal",
|
||||
"low"
|
||||
]
|
||||
},
|
||||
"due-at": {
|
||||
"type": "number",
|
||||
"title": "提醒时间",
|
||||
"description": "格式 YYYY-MM-DD HH:MM,如 2026-08-01。",
|
||||
"display_type": "datetime_unix_seconds"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"title",
|
||||
"priority"
|
||||
]
|
||||
},
|
||||
"hostEffects": {
|
||||
"onSuccess": [
|
||||
"reloadTable"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "item-create",
|
||||
"label": "新增记录",
|
||||
"description": "添加待办事项。",
|
||||
"replaces": "create",
|
||||
"placements": [],
|
||||
"executionProfile": "sync",
|
||||
"interaction": "form",
|
||||
"bind": {
|
||||
"tables": [
|
||||
"todos"
|
||||
]
|
||||
},
|
||||
"hostEffects": {
|
||||
"onSuccess": [
|
||||
"reloadTable"
|
||||
]
|
||||
},
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string",
|
||||
"title": "待办标题",
|
||||
"description": "待办事项的标题,必填。"
|
||||
},
|
||||
"priority": {
|
||||
"type": "string",
|
||||
"title": "优先级",
|
||||
"description": "待办事项的优先级,可选。",
|
||||
"default": "normal",
|
||||
"enum": [
|
||||
"high",
|
||||
"normal",
|
||||
"low"
|
||||
]
|
||||
},
|
||||
"due-at": {
|
||||
"type": "number",
|
||||
"title": "提醒时间",
|
||||
"description": "格式 YYYY-MM-DD HH:MM,如 2026-08-01。",
|
||||
"display_type": "datetime_unix_seconds"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"title",
|
||||
"priority"
|
||||
]
|
||||
},
|
||||
"entrypoint": {
|
||||
"type": "cli",
|
||||
"command": "todo",
|
||||
"args": [
|
||||
"add",
|
||||
"--title",
|
||||
"{{title}}",
|
||||
"--priority",
|
||||
"{{priority}}",
|
||||
"--due-at",
|
||||
"{{due-at}}"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "todo-done-row",
|
||||
"label": "完成本行",
|
||||
"description": "将当前待办标记为已完成。",
|
||||
"placements": [
|
||||
"row"
|
||||
],
|
||||
"executionProfile": "sync",
|
||||
"interaction": "direct",
|
||||
"bind": {
|
||||
"tables": [
|
||||
"todos"
|
||||
]
|
||||
},
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"id"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "number",
|
||||
"title": "编号",
|
||||
"readOnly": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostEffects": {
|
||||
"onSuccess": [
|
||||
"reloadTable"
|
||||
]
|
||||
},
|
||||
"entrypoint": {
|
||||
"type": "cli",
|
||||
"command": "todo",
|
||||
"args": [
|
||||
"done",
|
||||
"{{id}}"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "todo-delete",
|
||||
"label": "删除记录",
|
||||
"description": "删除待办事项。",
|
||||
"replaces": "delete",
|
||||
"placements": [],
|
||||
"executionProfile": "sync",
|
||||
"interaction": "confirm",
|
||||
"confirmation": {
|
||||
"message": "确定删除该记录?关联数据将一并清理。"
|
||||
},
|
||||
"bind": {
|
||||
"tables": [
|
||||
"todos"
|
||||
]
|
||||
},
|
||||
"hostEffects": {
|
||||
"onSuccess": [
|
||||
"reloadTable",
|
||||
"clearSelection"
|
||||
]
|
||||
},
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"id"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "number",
|
||||
"title": "编号",
|
||||
"readOnly": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"entrypoint": {
|
||||
"type": "cli",
|
||||
"command": "todo",
|
||||
"args": [
|
||||
"delete",
|
||||
"ids",
|
||||
"{{id}}"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -312,11 +312,11 @@ git remote -v
|
||||
|
||||
复制后,至少要全局检查并替换下面这些内容:
|
||||
|
||||
- `add-todo-all`
|
||||
- `your-skill-slug`
|
||||
- `your-platform-key`(若 skill 涉及外部平台对接,可能会用到这类占位)
|
||||
- `技能开发模板(通用业务版)`
|
||||
- `你的平台名`
|
||||
- `openclaw.skill.add_todo_all`
|
||||
- `openclaw.skill.your_skill_slug`
|
||||
|
||||
如果你的 skill 对外 CLI 需要自定义文案或别名(例如发布类对外仍叫 `publish`),通常还要替换:
|
||||
|
||||
|
||||
@@ -13,12 +13,11 @@
|
||||
|
||||
## 0.1 宿主入口定位
|
||||
|
||||
| 主能力(Action id / CLI) | 对话 | 数据管理 | 定时 | 不挂理由(若不挂) |
|
||||
|---------------------------|------|----------|------|--------------------|
|
||||
| `todo add` | 挂 | toolbar(新增按钮) | 不挂 | 定时无意义 |
|
||||
| `todo list` | 挂 | 仅展示表 | 不挂 | 定时无意义 |
|
||||
| `todo done` | 挂 | row + batch(标记完成) | 不挂 | 定时无意义 |
|
||||
| `todo delete` | 挂 | row + batch(删除) | 不挂 | 定时无意义 |
|
||||
| `todo list` | 挂 | row | 不挂 | 定时无意义 |
|
||||
| `todo done`(Action `todo-done-row`) | 挂(短 CLI 直调) | row(「完成」按钮) | 不挂 | 定时无意义;batch 批量完成暂未声明 |
|
||||
| `todo delete` | 挂 | row(「删除」按钮)) + batch(删除) | 不挂 | 定时无意义 |
|
||||
| `todo stats` | 挂 | toolbar(统计) | 不挂 | 定时无意义 |
|
||||
| `remind` | 挂 | toolbar | 挂 | 定时扫描到期/待办项并提醒 |
|
||||
| `init-db` | 不挂 | 不挂 | 不挂 | 宿主安装/更新时静默调用,不对用户暴露 |
|
||||
@@ -28,7 +27,6 @@
|
||||
|
||||
说明:
|
||||
|
||||
- `todos` 表在数据管理中为**整表只读**(`readonly=1`),所有增删改必须通过技能 Action(`todo add/done/delete`)走,宿主不直写业务表。
|
||||
- 数据管理页面默认展示列:`title`、`status`、`priority`、`due_at`、`created_at`;默认按 `created_at` 倒序。
|
||||
- `status` 与 `priority` 字段在数据管理中以下拉枚举展示(pending=待办/done=完成;high=高/normal=中/low=低)。
|
||||
|
||||
@@ -225,3 +223,4 @@
|
||||
| 日期 | 版本 | 变更人 | 变更内容 |
|
||||
|------|------|--------|----------|
|
||||
| 2026-09-07 | v0.1.0 | - | 初版需求文档 |
|
||||
| 2026-09-11 | v0.1.1 | - | 入口定位表登记行级 Action `todo-done-row`(todos 表操作列「完成本行」,sync/direct,`$row.$pk` 预填) |
|
||||
|
||||
@@ -24,7 +24,7 @@ python {baseDir}/scripts/main.py <command> …
|
||||
|
||||
| 类型 | 本技能命令(自填) | Agent |
|
||||
|------|--------------------|-------|
|
||||
| **短 CLI 白名单** | (例)`health` / `version` / `render-html` / `<your-read-or-prep>` | 可用 bash/exec + 共享 `python` |
|
||||
| **短 CLI 白名单** | (例)`health` / `version` / `render-html` / `todo` / `remind` | 可用 bash/exec + 共享 `python` |
|
||||
| **Action 强制黑名单** | (例)`<your-long-or-rpa-command>` | **禁止** bash + `process poll`;必须 `run_skill_action` |
|
||||
|
||||
细节与 Action 清单见 [`ACTIONS.md`](ACTIONS.md)。若提供 HTML 报告,「重新生成」须有 Action id **`render-html`**(可同时进短 CLI 白名单);见 ACTIONS.md「HTML 页面报告」。
|
||||
|
||||
@@ -6,6 +6,14 @@
|
||||
|
||||
实现上的 DDL 与默认中文元数据种子见 `scripts/db/display_metadata.py`;`scripts/db/connection.py` 的 `init_db()` 会一并初始化。
|
||||
|
||||
## 本技能业务表
|
||||
|
||||
| 物理表 | Data Management | 用途 |
|
||||
|---|---|---|
|
||||
| `todos` | 可见 | 待办列表 |
|
||||
|
||||
|
||||
|
||||
## 职责边界
|
||||
|
||||
### 技能负责
|
||||
|
||||
@@ -57,7 +57,7 @@ def _add_run_subparser(sub) -> None:
|
||||
todo_sub = sp.add_subparsers(dest="todo_cmd", required=True, parser_class=ZhArgumentParser)
|
||||
|
||||
p = todo_sub.add_parser("add", help="新增一条待办")
|
||||
p.add_argument("title", help="待办标题(必填)")
|
||||
p.add_argument("-t","--title", help="待办标题(必填)")
|
||||
p.add_argument("-p", "--priority", default="normal",
|
||||
choices=["high", "normal", "low"], help="优先级,默认 normal")
|
||||
p.add_argument("-d", "--due-at", type=int, default=None,
|
||||
|
||||
@@ -56,7 +56,7 @@ def _seed_todos_display_metadata(cursor) -> None:
|
||||
table_name="todos",
|
||||
display_name="待办事项",
|
||||
description="本技能的核心业务表:每条待办事项一行。",
|
||||
grid_help="状态变更走技能 CLI(todo done / todo delete),不要在表里直接改。",
|
||||
grid_help="所有的待办事项,包括待办、已办、已删除。",
|
||||
visible=1,
|
||||
readonly=1, # 整表只读:增删改通过技能 Action 走,宿主不直写
|
||||
default_sort_json='[{"column":"created_at","direction":"desc"}]',
|
||||
@@ -69,21 +69,21 @@ def _seed_todos_display_metadata(cursor) -> None:
|
||||
{"column_name": "id", "display_name": "编号", "description": "主键",
|
||||
"visible": 1, "searchable": 1, "editable": 0, "display_type": "number"},
|
||||
{"column_name": "title", "display_name": "标题", "description": "待办事项内容",
|
||||
"grid_help": "简明描述要做的事", "visible": 1, "searchable": 1, "editable": 0,
|
||||
"grid_help": "简明描述要做的事", "visible": 1, "searchable": 1, "editable": 1,
|
||||
"display_type": "text"},
|
||||
{"column_name": "status", "display_name": "状态", "description": "pending/done",
|
||||
"grid_help": "pending=待办,done=完成", "visible": 1, "searchable": 1, "editable": 0,
|
||||
"display_type": "enum",
|
||||
"options_json": '[{"value":"pending","label":"待办"},{"value":"done","label":"完成"}]'},
|
||||
{"column_name": "priority", "display_name": "优先级", "description": "high/normal/low",
|
||||
"visible": 1, "searchable": 1, "editable": 0, "display_type": "enum",
|
||||
"visible": 1, "searchable": 1, "editable": 1, "display_type": "enum",
|
||||
"options_json": '[{"value":"high","label":"高"},{"value":"normal","label":"中"},{"value":"low","label":"低"}]'},
|
||||
{"column_name": "due_at", "display_name": "截止时间", "description": "Unix 秒;可空",
|
||||
"visible": 1, "searchable": 1, "editable": 0, "display_type": "datetime_unix_seconds","default":"(unixepoch())"},
|
||||
"visible": 1, "searchable": 1, "editable": 1, "display_type": "datetime_unix_seconds"},
|
||||
{"column_name": "created_at", "display_name": "创建时间", "description": "Unix 秒",
|
||||
"visible": 1, "searchable": 0, "editable": 0, "display_type": "datetime_unix_seconds","default":"(unixepoch())"},
|
||||
"visible": 1, "searchable": 0, "editable": 0, "display_type": "datetime_unix_seconds"},
|
||||
{"column_name": "updated_at", "display_name": "更新时间", "description": "Unix 秒",
|
||||
"visible": 0, "searchable": 0, "editable": 0, "display_type": "datetime_unix_seconds","default":"(unixepoch())"},
|
||||
"visible": 0, "searchable": 0, "editable": 0, "display_type": "datetime_unix_seconds"},
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ async def _run_template_demo(target: Optional[str], input_id: Optional[str]) ->
|
||||
def cmd_run(target: Optional[str] = None, input_id: Optional[str] = None) -> int:
|
||||
"""通用任务执行入口模板。复制后请实现真实业务逻辑。"""
|
||||
log = _get_task_logger()
|
||||
task_type = "demo"
|
||||
task_type = "cmd_run"
|
||||
|
||||
with job_context(skill=SKILL_SLUG):
|
||||
log.info(
|
||||
|
||||
@@ -321,13 +321,13 @@ class TestDocsStandards(unittest.TestCase):
|
||||
def test_tools_readme_documents_actions_scaffold(self) -> None:
|
||||
text = self._read("tools/README.md")
|
||||
self.assertIn("actions.json", text)
|
||||
self.assertIn("add-todo-all", text)
|
||||
self.assertIn("add_todo_all", text)
|
||||
self.assertIn("your-skill-slug", text)
|
||||
self.assertIn("your_skill_slug", text)
|
||||
|
||||
def test_development_md_documents_both_slug_placeholders(self) -> None:
|
||||
text = self._read("development/DEVELOPMENT.md")
|
||||
self.assertIn("add-todo-all", text)
|
||||
self.assertIn("add_todo_all", text)
|
||||
self.assertIn("your-skill-slug", text)
|
||||
self.assertIn("your_skill_slug", text)
|
||||
|
||||
def test_schema_md_documents_data_management_contract(self) -> None:
|
||||
text = self._read("references/SCHEMA.md")
|
||||
|
||||
@@ -43,8 +43,8 @@ python tools/scaffold_skill.py --slug my-new-skill --destination /path/to/my-new
|
||||
- **排除**:`.git`、`.pytest_cache`、`__pycache__`、`.env`、`.env.local`、`*.pyc`
|
||||
- 删除目标中的 `.openclaw-skill-template` 标记
|
||||
- 将文本文件中的模板占位 slug 替换为新 slug:
|
||||
- `add-todo-all` → 新技能 kebab-case slug(如 `scrape-demo-records`)
|
||||
- `add_todo_all` → 连字符替换为下划线(如 `scrape_demo_records`,用于 `LOG_LOGGER_NAME` 等)
|
||||
- `your-skill-slug` → 新技能 kebab-case slug(如 `scrape-demo-records`)
|
||||
- `your_skill_slug` → 连字符替换为下划线(如 `scrape_demo_records`,用于 `LOG_LOGGER_NAME` 等)
|
||||
- 覆盖 `assets/actions.json`、`SKILL.md`、`scripts/util/constants.py` 等生成文件;文档中的路径示例可保留占位,但生成后的技能文件不得残留占位符
|
||||
- **不**自动修改 `actions.json` 中的 CLI 业务命令;技能作者自行增删 action
|
||||
- **不**移除 Schema 中的 `bind.tables` 支持,**不**把 `bind` 当模板残留清理
|
||||
|
||||
Reference in New Issue
Block a user