关于 create-verification-skill
Create a verification skill 会为代码仓库生成本地 skill,用于启动应用、操作面向用户的功能并收集行为证据。它面向首次接触代码库的 Agent,指引内容根据仓库实际情况编写。
主要功能
- 01检查应用界面与启动方式
- 02生成启动、诊断和操作说明
- 03将用户功能映射为验证步骤
- 04采集证据并在清理后保留
- 05交付前运行生成的 skill
适用场景
- 01为仓库应用建立可重复检查
- 02通过实际应用流程验证用户旅程
- 03为功能验证运行准备证据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ cursor/ plugins --skill create-verification-skill安装后在 Claude Code 中输入/create-verification-skill确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/feature-map-example/create-note.mdREADME.mdsearch.md详细介绍
创建验证技能
每个严肃的项目都需要一种脚本化方式来驱动真实应用并验证其行为:启动应用,像用户一样体验某项功能,并捕获证据。此技能会根据仓库生成一个项目本地技能(.cursor/skills/verify-<app>/)。你编写生成结果的目标是下一个 Agent,而非人类:它会在任务进行到一半时第一次读到这些内容,且从未见过这个应用。
1. 了解仓库,而不是询问用户
从代码库中找到以下问题的答案,只向用户询问你无法观察到的信息:
- 界面: 用户实际接触的是什么?Web UI、CLI/TUI、桌面应用、API、移动应用还是库?一个仓库可能有多个界面;请选择主要界面,并注明其他界面。
- 运行: 如何在本地启动应用?优先采用仓库自身文档中的开发命令(package 脚本、Makefile、README 快速入门)。注明端口、环境变量、种子数据和身份验证。
- 驱动: Agent 可以通过什么方式与应用进行编程交互?首先查看现有测试工具——Playwright/Cypress 测试、expect 脚本、PTY 辅助工具、可用 curl 请求的端点、调试端口。然后再选择通用方案:Web 和 Electron 使用浏览器/CDP,CLI/TUI 使用 tmux/PTY 测试工具,服务使用普通 HTTP。
- 观察: 可以捕获哪些证据?屏幕截图、终端记录、响应正文、日志、退出代码、数据库状态。
- 隔离: 能否并行运行两个实例(端口、数据目录、配置文件)?如果不能,请在生成的技能中说明:拒绝同时驱动共享实例,总比破坏用户会话好。
如果当前检出版本无法构建或启动,请先修复(或准确报告问题)再生成;针对有问题的基础版本编写的技能会教错步骤。如果无关的缺失资源阻碍了启动(例如 API 从不提供服务的静态目录、示例配置),生成的技能可以创建该资源,但必须明确标记为验证辅助文件,并在清理时将其移除。
2. 生成技能
编写 .cursor/skills/verify-<app>/SKILL.md,添加 YAML frontmatter(包含 name: verify-<app>,以及一个说明应用、操作界面和适用场景的 description——没有 frontmatter,技能就不会注册),并添加以下各节。每节内容都必须依据访谈的实际发现(不得留有占位符):
- **启动:**用于启动应用以进行验证的确切命令,以及判断应用已就绪的方法(日志行、提示词)。从空数据目录启动时,必须能进入可用状态,包括完成任何迁移和写入种子数据。就绪意味着应用可用,而不只是进程有响应。数据库健康检查通过时,初始化脚本可能仍在运行。说明如何拆除实例。对于生命周期较短的 CLI 或 TUI,无需让服务持续运行:启动是指构建二进制文件(或安装依赖)一次,然后在各自隔离的 PTY 或 tmux 会话中启动每次操作。
- **诊断:**执行一项只读检查,回答“这个实例是否值得操作?”——进程正在运行、版本或构建正确、端口由我们占用、身份验证有效。只要出现任何异常,Agent 就会先运行此检查。
- **操作:**提供操作流程配方,使用此仓库中的实际选择器或命令,而非示例。优先使用稳定的标识(ARIA 标签、data 属性、提示词字符串、路由路径),而非坐标和 Tab 键顺序。
- **证据:**说明要为证明捕获哪些内容,以及保存位置。说明证明标准:走真实用户路径,而非调用内部 setter 或仅供测试的端点;捕获操作和操作后的状态,而不只是最终界面;核实可见内容之外的副作用(写入的文件、插入的行、发送的消息);仅在生产边界已隔离外部系统时使用 mock。若安全操作路径是 dry-run 或测试模式,应通过观察(文件、网络、Git 引用)核实它实际跳过了什么,而不是仅凭名称判断:有些 dry-run 仍会访问网络或打开浏览器。
- **清理:**说明如何拆除本次运行创建的实例。绝不按进程名结束进程;只结束自己启动的进程。清理时移除实例和临时状态,绝不删除证据:证明材料必须保留在技能中指定的位置。
- **辅助工具:**技能附带的任何脚本都必须可执行,并且技能正文中必须展示其调用方式。需要读者逆向分析才能用的脚本,不算辅助工具。
3. 填充功能映射
创建 .cursor/skills/verify-<app>/features/README.md,并为你能识别的每项面向用户的功能创建一个文件(先根据路由、命令、菜单或文档挑选 3–5 项)。遵循 references/feature-map-example/ 中的格式,包括 README 索引和每项功能对应的文件。每个文件都要从用户视角回答:这项功能是什么、如何找到它、如何用操作框架驱动它,以及哪些可观察到的最终状态能够证明它正常工作。四个二级标题必须是 Sub-features、How to get to it (user POV)、Driving it with <harness> 和 Gotchas。如果种子数据缺少某段操作流程所需的前置条件,该流程应报告失败,并在相应功能的 Gotchas 中说明原因。绝不能为了让操作流程通过而降低标准。功能映射是仓库维护的验证依据;如果映射中列出了其他入口点,只验证一个方便的入口点并不完整。
4. 交付前证明生成的技能有效
端到端运行一次技能自身的指令:启动、运行 doctor、驱动一个已映射功能(一个就够;这份映射是为了后续运行覆盖其余功能)、收集证据、清理。清理后,确认指定位置仍有证据——如果清理操作删除了证据,就不算通过此步骤。修复所有失败之处,并且每次迭代失败后都运行生成的清理操作,以免失败的尝试遗留进程和端口。未经实际运行的生成技能只是草稿,不是可交付成果。如果你是在真实目标的替代环境中验证的(例如用容器代替全新的 VM,用本地技术栈代替远程技术栈),请列出替代环境执行、而目标环境不会执行的所有设置步骤。在真实目标上运行并覆盖这些步骤之前,它们都仍未经过验证。
5. 提供维护流程
引导用户使用 /maintain-verification-skill,以便在应用发生变化时保持映射准确。只有在用户询问时,才建议维护周期。