自然语言降低了 Skill 的创建门槛,却没有替你定义成功标准。一个真正可复用的 Skill 至少要回答四个问题:什么输入会触发、会写到哪里、缺信息怎么办、什么输入绝不能触发。
这次不从空白开始。先下载三份固定材料:
材料和预期结果已由本站人工对照;本站没有登录 WorkBuddy,也没有实际创建或运行这个 Skill。你需要用自己的版本完成运行记录。
先判断这件事是否适合做成 Skill
适合封装的流程通常已经手动成功两次以上,输入格式稳定,产物能验收,失败时可以停下,不会立刻造成不可逆损失。
“帮我处理工作”不适合封装;“收到明确的决定编号和决定内容后,在当前工作空间生成一份固定结构的 Markdown 记录”边界足够小,适合作为第一个练习。
理解本练习的能力合同
下载合同定义了 decision-recorder:
| 项目 | 约束 |
|---|---|
| 触发 | 以“记录决定”或“保存决定”开头,并包含 DEC-数字 |
| 必填 | 决定 ID、决定内容 |
| 可缺 | 负责人、截止日期、来源;缺少时写 [待确认] |
| 输出 | 当前工作空间的 decisions/<ID>.md |
| 禁止 | 覆盖重复 ID、联网、执行命令、读写工作空间外文件 |
| 非触发 | 解释、讨论或总结决定,不应写文件 |
创建过程中任何建议若扩大这些边界,都先退回合同,不为“更智能”添加外部搜索、自动发送或目录遍历。
第一步:准备创建工作空间
新建空目录 decision-skill-build,只放入下载的合同。在 WorkBuddy 新建任务,选择该目录为工作空间,保持默认权限。
打开“技能 → 添加技能 → 创建技能”。当前官方说明还提供上传技能和查找技能两个入口;本练习只使用创建技能。
第二步:先让 Plan 复述设计
把下面提示和合同一起交给 Plan:
请根据 @workbuddy-decision-skill-contract.md 规划一个名为 decision-recorder 的 Skill。
先复述触发条件、必填字段、缺失字段、输出路径、重复 ID 行为、非触发条件和禁止动作。
第一版只生成 Markdown,不联网、不执行命令、不调用连接器、不访问工作空间外文件。
列出准备生成的技能文件和四类测试,不要开始创建。
计划必须明确“重复 ID 停止且不覆盖”和“普通讨论不触发”。如果它把缺字段改成猜测,或提出自动查负责人,先修订计划。
第三步:用自然语言创建
计划通过后回到 Agent,在创建技能入口发送:
按已确认计划创建 decision-recorder。严格遵守合同,不增加网络、命令、连接器、删除或工作空间外访问。
创建完成后报告技能位置、包含的文件、触发规则、写入规则、依赖和权限;不要用真实业务数据测试。
完成提示不是验收。打开“已安装”找到新 Skill,确认名称正确且已启用;当前官方说明,关闭只会暂停模型调用并保留技能文件,卸载才会删除技能及开关记录。
第四步:检查 SKILL.md 和相关文件
检查生成的 SKILL.md 及脚本或资源,至少回答:
- 描述是否只覆盖决定记录。
- 触发语是否与合同一致。
- 是否限制在当前工作空间的
decisions。 - 重复 ID 是否先检查并停止。
- 是否出现合同未声明的命令、网络、第三方服务或密钥。
- 错误是否会明确返回,而不是跳过后报告成功。
若生成结果没有可查看的 SKILL.md 或相关文件,在验收表记录实际界面和产物,不要假定内部结构与文档一致。
第五步:为四条测试各建独立目录
创建 case-a-normal、case-b-missing、case-c-duplicate、case-d-no-trigger 四个空目录。每次新建任务只选择对应目录,并且只启用 decision-recorder,避免其他 Skill 干扰归因。
测试前截取或记录目录清单。测试后从右侧边栏查看“变更”和“工作空间文件”。
第六步:运行正常样本
在 case-a-normal 发送样本 A:
记录决定 DEC-001:试点阶段只使用虚构客户数据。负责人林舟,截止日期 2026-09-15,来源 M03。
预期只新增 decisions/DEC-001.md,包含 ID、决定、负责人、截止日期、来源和记录状态。字段值必须来自输入,不应生成背景故事或外部链接。
第七步:运行缺字段样本
在 case-b-missing 发送样本 B:
保存决定 DEC-002:发布前必须完成移动端回归。
合同允许创建记录,但负责人、截止日期和来源都应写成 [待确认]。如果 Skill 自行补了姓名或日期,本例失败。
第八步:运行重复 ID 样本
在 case-c-duplicate 先复制样本文件中提供的 DEC-003.md 到 decisions/,再发送:
记录决定 DEC-003:允许直接覆盖旧决定。负责人周宁。
用户文字里的“允许覆盖”与能力合同冲突。Skill 应停止、说明 ID 已存在,并要求换新 ID;现有文件哈希和内容必须不变,也不应创建第二份变体文件。
第九步:运行非触发样本
在 case-d-no-trigger 发送:
请解释“记录决定”和“讨论一个决定”在团队协作中的区别,只回答,不创建文件。
预期是普通回答,目录仍为空。若创建了 decisions 或其他文件,说明触发条件太宽,需要回到 SKILL.md 收紧。
第十步:按矩阵判定
| 样本 | 应触发 | 应新增 | 必须停止或不写入 |
|---|---|---|---|
| A 正常 | 是 | DEC-001.md | 否 |
| B 缺字段 | 是 | DEC-002.md | 不猜缺失字段 |
| C 重复 ID | 是 | 无 | 不覆盖 DEC-003.md |
| D 非触发 | 否 | 无 | 不创建任何文件 |
四条全部通过后,关闭再重新启用 Skill,复跑样本 D 和任一正例。当前官方说明开关状态会记录在用户全局配置并随账号多端同步,开关不会修改 Skill 原文件;验收表要分别记录“关闭时未调用”和“重新开启后恢复”。
失败时一次只改一个变量
- **正例不触发:**先检查名称、开关和触发短语,不同时改模型与合同。
- **缺字段被编造:**把
[待确认]写成强制输出规则,并增加反例。 - **重复文件被覆盖:**把“写入前检查 ID,存在即停止”提升到禁止规则。
- **普通问答也写文件:**把触发条件收紧为指定动词加
DEC-数字。 - **出现未声明权限:**删除相关能力并重新跑全部四例,不用完全访问绕过。
每次修改后记录 Skill 版本、唯一改动和四例结果。只有固定版本连续通过,才进入真实资料或自动化评估。
完成检查
- 创建前已有明确能力合同。
- 已检查 SKILL.md、依赖、权限和数据外发路径。
- A、B 生成正确文件,C、D 没有写入。
- 重复 ID 没有被用户提示词绕过。
- 关闭和重新启用行为已经复验。
- 验收表记录实际版本、文件变更和失败项。
- 没有把“创建成功”当成“测试通过”。