其他
当项目缺少可脚本化验证手段时…
为任意语言/框架/平台的项目生成一个项目本地的验证技能(.cursor/skills/verify-<app>/),让后续 agent 能像用户一样启动、操作并证明应用行为。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 47/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 47/100 ×0.15
适用场景
当项目缺少可脚本化验证手段时,生成项目本通用
解决思路
- 先访谈代码库而非用户:从代码中回答以下问题,只对无法观察到的事项询问用户——Surface(用户实际接触什么:Web UI、CLI/TUI、桌面应用、API、移动应用、库;一个仓库可能有多个,选主要的并记录其余);Run(本地如何启动:优先用仓库自带的 dev 命令,如 package scripts、Makefile、README quickstart,记录端口、环境变量、种子数据、认证);Drive(agent 如何以编程方式交互:优先用现有 harness,如 Playwright/Cypress 规格、expect 脚本、PTY 助手、可 curl 的端点、调试端口;否则选通用方案:Web 和 Electron 用浏览器/CDP,CLI/TUI 用 tmux/PTY harness,服务用纯 HTTP);Observe(可捕获哪些证据:截图、终端记录、响应体、日志、退出码、数据库状态);Isolate(能否并行运行两个实例:端口、数据目录、配置文件;若不能,在生成的技能中说明,拒绝双重驱动共享实例胜过破坏用户会话)。
- 若检出代码无法按原样构建或启动,先修复(或精确报告)再生成;针对损坏基线写出的技能会教出错误步骤。当无关的缺失资源阻塞启动时(如 API 从不提供的静态目录、示例配置),生成的技能可以创建它,明确标记为验证脚手架,并在清理时移除。
- 生成 .cursor/skills/verify-<app>/SKILL.md,包含 YAML frontmatter(name: verify-<app>,以及一个 description,写明应用名、surface 和何时使用——没有 frontmatter 技能永远不会注册),并包含以下各节,每节都基于访谈实际发现(不留占位符):Launch(启动验证用的确切命令,以及如何判断就绪:日志行、端口响应、提示符;包含 teardown。对于短生命周期的 CLI 或 TUI 没有需要保持存活的服务器:launch 意味着构建二进制(或安装依赖)一次,然后在各自隔离的 PTY 或 tmux 会话中启动每次驱动);Doctor(一个只读检查,回答“这个实例值得驱动吗?”——进程是否在运行、版本/构建是否正确、端口是否归我们所有、认证是否有效;任何看起来不对劲时 agent 首先运行它);Drive(harness 配方,使用本仓库真实的 selector/命令而非示例;优先使用稳定句柄,如 ARIA 标签、data 属性、提示字符串、路由路径,而非坐标和 Tab 顺序);Evidence(为证明捕获什么、放在哪里。说明证明标准:走真实用户路径,而非内部 setter 或仅测试用端点;捕获动作和结果状态,而非仅最终屏幕;验证副作用(写入的文件、插入的行、发送的消息)与可见内容;仅在生产边界已隔离外部系统处使用 mock。当安全路径是 dry-run 或测试模式时,通过观察(文件、网络、git refs)验证它实际跳过了什么,而非信任其名称:有些 dry-run 仍会访问网络或打开浏览器);Cleanup(如何拆除本次运行创建的实例。绝不按进程名 kill;只 kill 自己启动的。清理移除实例和临时状态,绝不移除证据:证明产物在 teardown 后仍存活于技能指定的位置);Helpers(技能附带的任何脚本都可执行,且其调用方式在技能正文中展示;需要读者逆向工程的 helper 不算 helper)。
- 创建 .cursor/skills/verify-<app>/features/README.md,以及每个可识别的用户可见功能一个文件(从路由、命令、菜单或文档中先选前 3-5 个)。遵循 references/feature-map-example/ 中的形态,包含 README 索引和每个功能一个文件。每个文件从用户视角回答:该功能是什么、如何到达、如何用 harness 驱动、什么可观察的最终状态证明其有效。四个 H2 为 Sub-features、How to get to it (user POV)、Driving it with <harness>、Gotchas。该 map 是仓库维护的验证来源;当 map 列出多个入口点时,只驱动一个方便入口的证明是不完整的。
- 交付前证明生成的技能:端到端运行它自己的指令一次——launch、doctor、驱动一个已映射功能(一个就够;map 的存在是为了后续运行覆盖其余)、捕获证据、清理。清理后确认证据仍存在于指定位置——吃掉证明的清理会使此步骤失败。修复失败之处,并在每次失败迭代后也运行生成的清理,以免损坏的尝试遗留进程和端口。从未执行过的生成技能是草稿,不是交付物。
- 向用户指出 /maintain-verification-skill 以便在应用变化时保持 map 诚实。仅在用户询问时建议节奏。
适用边界 · 注意事项
- 仓库无法构建或启动且尚未修复时——针对损坏基线生成的技能会教出错误步骤
- 无法并行运行两个实例(端口、数据目录、配置文件冲突)时,不应双重驱动共享实例,以免破坏用户会话
- 用户未要求时不要主动建议维护节奏