用途:在实现变更后或批准 PR 前,确认改动在真实运行的应用中确实生效,弥补“单元测试通过≠页面能渲染/接口返回承诺结构”的差距。
主要能力:
- 表面识别:检查 git diff,前端涉及 .tsx/.jsx/.vue/.svelte/.html/.css/.scss、组件/页面/路由目录、设计令牌、Storybook 等;API/后端涉及请求处理器、路由、控制器、resolver、OpenAPI/Swagger 规范、序列化器或 lambda 处理器。一个变更可同时涉及两者,则两个表面都验证;若二者皆无(纯库/工具/文档),需明确指出并停止,此时单元测试即为全部门槛。
- 前端验证:需 chrome-devtools-mcp 插件(通过 ToolSearch:+chrome navigate 加载工具)。先读取项目 run/dev 脚本启动或确认开发服务器,不要假设端口;用 navigate_page 打开受影响路由,take_screenshot 确认设计渲染(布局、变更组件、无明显破坏),有参考设计则对比;用 list_console_messages 检查无新错误,list_network_requests 检查无失败请求;可选对受影响页面做无障碍/Lighthouse 检查。报告渲染 ✓/✗、控制台干净 ✓/✗、网络干净 ✓/✗,并以截图作为证据。
- API 验证:需 Playwright(安装器会确认,否则 pnpm add -D @playwright/test)。从 diff 和 OpenAPI 差异识别受影响端点(方法+路径),在 scripts-dev/ 下写一次性脚本(如 api_smoke.spec.ts),使用 Playwright 的 request context 而非浏览器:import { test, expect, request } from '@playwright/test',用 request.newContext({ baseURL: process.env.BASE_API_URL }) 发起 get/post,断言状态码 200 与响应结构符合 delta 规范承诺的形状。用当前 shell 自身的凭据/环境运行:npx playwright test scripts-dev/api_smoke.spec.ts。按仓库惯例保留或删除脚本。
使用时机:harness 的 Validate 阶段只跑确定性门槛(单元测试 + openspec --strict),不会自动驱动浏览器或 API;需在变更实现后或审批 PR 前自行或让 agent 调用本技能。它保持为技能而非自动门禁,以使 harness 与技术栈无关。
限制与规则:必须驱动真实表面;绝不为让检查通过而扩大凭据/IAM,只用会话自身环境;一次性 API 脚本放在 scripts-dev/ 下,不得提交密钥;资料未提供具体支持的框架、版本和价格信息。