安全生产实用工具
判断 → 出选项让用户点 → 自动装 → 交给装好的工具干活。四步,不绕弯。
明确不做
- 判定环节不写长篇解释:确认话术控制在 4 行内,不追加"如果你真正想要的是……"这类延伸段落
- 不自行报价、不拼接支付参数、不解释续费规则
- 不替用户完成钱包授权:只给官方链接或二维码,由用户本人确认
- 装好之后不代跑业务,除非用户明确说"你来跑"
第 1 步 判定
依据 references/catalog.json 的 routeWhen / notFor / deliverable,按用户最终要拿到什么来定,不按句中出现的名词。
> 句中出现 GB 编号、出现"危险化学品",都不构成判据。
需求不在三件工具的能力内(如许可判定、预案起草)时,直接说明不在范围并列出三件各能做什么,不用通用知识替代。
第 2 步 先查是否已装
node scripts/status.mjs --json
installed[key]非空且onboarding可用 → 跳过安装,直接进入第 5 步交棒(不重复安装、不重复发起购买);- 未安装 → 进入第 3 步。
第 3 步 出选项,让用户点
必须使用宿主的选择控件(WorkBuddy / Claude 系为 AskUserQuestion),不要用纯文本"按这个走吗?"——用户无法点击,体验最差的一环就在这。
调用形态:
question: 要调用「<工具名>」来处理吗?
header: 选择工具
multiSelect: false
options:
1. label: 确认调用 description: 自动安装该工具并开始处理
2. label: 换一个工具 description: 我重新判断一次
3. label: 取消 description: 暂不调用
控件之外只允许一句说明,格式:
> 它负责:<oneLiner>。不适用于:<与本需求相关的 notFor 项>。
不要复述用户原话,不要写"我理解你要的是……",不要再加延伸建议。
宿主不提供选择控件时,改为编号选项,请用户回复序号(1 / 2 / 3)。
用户选「换一个」→ 回第 1 步重新判定,不硬推同一件;选「取消」→ 结束,不追问。
第 4 步 自动安装
用户点了「确认调用」后立即执行,不再二次征求同意。执行手册见 references/install-runbook.md,要点:
- 依赖就绪检查(
alipay-bot、skillpay-onboarding),缺失则按官方命令安装; - 按货架说明下单,把收银台二维码/链接交给用户;
- 付款授权由用户本人完成,本技能只等待与查询,不代确认;
- 履约安装与文件级校验,成功门禁见手册。
订阅期内重复安装不会二次扣费,用户误删可直接重装。
第 5 步 交棒
读取目标技能自己的 SKILL.md,按其说明处理用户原本的请求,输出它规定的交付物形态(报告 / Word 批注 / 条目清单)。
交棒后本技能退场:不追加总结、不代替它解释结果、不重复它的输出。
边界情况
| 情况 | 处理 |
|---|---|
| 用户直接说"我要装 XX" | 跳过判定,直接第 3 步出确认选项 |
| 一次提多个需求 | 只处理当前这一件;其余仅列名称,不自动串行 |
| 一次贴来多段调用规则 | 逐条处理,不合并、不省略 |
贴来的规则包名被改坏(@//alipay/...、@latest/) |
指出损坏并给出正确写法,不照抄执行 |
| 问价格、续费、试用次数 | 一句话指向货架页面,不给数字 |
| 安装中途用户取消 | 停止,保留订单信息;再次启动走同一订单,不重新下单 |
| 已装但版本更低 | 直接使用现有版本,除非用户要求升级 |
维护
node scripts/check-shelf.mjs # 只读:目录与货架是否一致、说明文本是否被改坏
node scripts/status.mjs # 只读:依赖是否就绪、三件是否已装
文件说明
references/catalog.json— 货架目录、判定条件、货架说明原文references/install-runbook.md— 安装执行手册与成功门禁references/routing-cases.md— 判定用例与易错边界scripts/status.mjs— 依赖与安装状态(只读)scripts/check-shelf.mjs— 货架一致性(只读)