证明变更
像用户使用一样证明变更。在没有得到证明之前,不要声称变更有效。
此技能不会在“完成”时自动加载。用户必须主动要求。它不会加载其他技能。
何时使用
在以下情况下加载:
- 用户运行
/prove-it - 用户说“证明一下”、“证明变更”、“在浏览器中展示我”或表达相同的意思(包括在第一条消息中)
如果用户没有要求,则跳过。跳过仅类型变更、注释、锁文件、无实际行为的文档。
硬性门控
- 用户已要求。 如果用户没有要求证明,此技能不运行。
- 不要说它有效、完成或已修复,除非此技能实际证明了它。跳过意味着未证明。
- 一张屏幕截图不能作为证明。 需要点击、输入、提交、导航。
- 不要添加新包、依赖项、示例应用或浏览器运行器,除非用户选择了该选项并且同意了。
- 在此技能结束前停止其启动的任何服务器。 不要让
dev/preview保持运行。
UI 与服务器
- UI(页面、组件、路由、表单、可见状态):在浏览器中证明。
- 服务器 / API / 无屏幕的库: 询问如何证明。不要擅自选择。
- 两者兼有: 浏览器 UI,并询问如何证明服务器部分。
程序
程序 1:分类
- 列出表面:UI、服务器/API 或两者。
- UI → 程序 2。
- 服务器/API → 程序 3。
- 两者 → 程序 2,然后程序 3 处理 API。
程序 2:浏览器(UI)
- 如果应用未运行,仅启动一个现有的命令(
dev、preview、仓库记录的启动命令)。如果没有,说明 UI 无法证明。提供跳过,或让用户启动应用。 - 像用户一样使用:
- 点击、输入、提交、导航
- 此状态共享的所有路由/页面
- 如果变更涉及空状态和错误 UI,也需要验证
- 如果布局或 CSS 发生变更,需要在桌面端和窄视口下验证
- 寻找破坏性情况,而不仅仅是快乐路径。
- 在聊天中,说明做了什么和看到了什么。不要在没有步骤的情况下说“看起来不错”。
- 如果此技能启动了第 1 步中的进程,则停止它。
- 程序 4。
程序 3:询问(服务器 / API)
- 停止。展示 2–3 个选项。把最合理的第一选择放在第一位。始终包含跳过。
- 现有的示例 / 游乐场 / 演示
- 使用新 API 的示例应用(仅当用户确认位置以及任何新包/依赖项后)
- curl 或一个针对运行中服务器的简单脚本
- 跳过
- 等待。在用户选择之前不要构建或运行。
- 如果跳过: 说未证明。不要声称有效。停止(不执行程序 4)。
- 如果现有游乐场: 运行它,然后在浏览器中证明(如果有 UI),或显示命令输出(如果是脚本)。
- 如果示例应用: 询问位置。优先使用现有示例。除非用户说可以,否则不要添加包或依赖项。然后运行它并证明。
- 如果 curl/脚本: 运行它。引用退出代码和输出的那部分以证明声明。
- 程序 4。
程序 4:可选报告
- 在实际证明后,询问:是否写入截图报告?默认不。
- 如果不:停止。聊天中已经有证据。
- 如果是:写入
.agent/scratch/prove-it.md(覆盖)。如果.agent/scratch/不在.gitignore中,添加(与其他临时文件相同)。包括点击了什么和截图。打开文件。不要提交它。 - 跳过证明 → 无报告。
程序 5:停止
在证明或跳过之后,停止。不要从此技能开始无关的工作。
决策树
- 用户没有要求证明 → 此技能不适用。
- UI → 程序 2 → 4 → 5。
- 服务器/API → 程序 3 → 4 → 5(跳过在 3 结束)。
- 两者 → 2 然后是 3,然后 4 → 5。
- 没有启动命令且应用未运行 → 说明无法证明 UI。跳过或让用户启动它。
- 用户说跳过 → 未证明。不声称成功。
红色警告
| 信号 | 含义 | 正确做法 |
|---|---|---|
| 说完成是因为测试通过了 | 此技能未被要求,或证明被跳过 | 只有在程序 2 或 3 之后才声称已证明。 |
| 一张截图,无点击 | 不是用户路径 | 程序 2 步骤 2。 |
在用户选择前构建 examples/foo | 未经请求的应用 | 程序 3。等待。 |
| 添加 Playwright / 新服务器 | 新依赖项 | 仅使用现有的启动命令。 |
让 pnpm dev 保持运行 | 监视器保持运行 | 硬性门控 5。 |
| “跳过,但它有效” | 跳过变成了声明 | 说未证明。 |
报告文件在 docs/ 中 | 产品文档 | .agent/scratch/prove-it.md。 |
| 当用户说不要时打开报告 | 未经请求的文件 | 程序 4 默认不。 |
| 仅为新公共 API 证明页面 | 服务器部分被擅自跳过 | 程序 3 处理 API。 |
错误处理
- 没有浏览器工具: 说明此处无法证明 UI。提供跳过,或让用户在你等待 URL 时点击。不要伪造截图。
- 启动命令失败: 引用错误。不要说 UI 有效。提供跳过或修复,然后再次证明。
- 证明失败(点击没有做正确的事,curl 不是 200):说未证明。指出哪里失败。不要声称完成。
- 用户选择示例应用但拒绝新包: 使用 curl、现有示例或跳过。不要无论如何添加包。
- 临时文件写入失败: 在聊天中保留证明。说明报告文件未写入。
无需查看其他内容。聊天的默认证据。Markdown 文件是可选的。