SuperAPI AI 工具集

verify

测试与质量

查看项目

更新于 10-16 06:27

技能介绍

用途

Verify 是一个多阶段质量门禁(quality gate),应在完成实现之后、执行 superpowers:finishing-a-development-branch 之前运行。它用于对当前代码变更进行系统性校验,确保代码质量达标后再进入分支收尾流程。

该技能采用 fail-fast 策略:一旦某个阶段失败,立即停止,不再继续后续阶段。

主要能力与阶段

阶段 1 — 获取变更文件

运行 git diff HEAD --name-only,保存变更文件列表。后续所有条件阶段都会基于该列表进行判断。

阶段 2 — Lint

仅对变更文件运行 lint(必须带参数,否则会超时):

bun lint <changed-files-space-separated>

若失败则停止,不进入阶段 3。

阶段 3 — Typecheck

运行:

bun typecheck

若失败则停止,不进入阶段 4。

阶段 4 — 编码规范审计(条件触发)

触发条件:任一变更文件匹配 **/*.ts 或 **/*.tsx。

通过 Task 工具派发一个通用子代理,提示其读取 ./coding-standards/SKILL.md(完整技能,包括 Code Smell Checklist),并针对变更的 .ts/.tsx 文件逐项检查 Code Smell Checklist。对每个违规项报告:文件路径与大致行号、违反的检查项、违规代码片段。仅报告违规;若全部干净则报告“No violations found.”。

若失败则停止,不进入阶段 5。

阶段 5 — UI 验证(条件触发)

触发条件:任一变更文件匹配 src/app/**/*.tsx、src/components/** 或 src/styles/**。

5a — 确定验收标准

检查当前对话,用户可能已描述预期行为、Linear 工单或规格说明。若有活跃或引用的 Linear issue,使用 mcp__linear__get_issue 获取。若仍不明确,使用 AskUserQuestion 提供最合理的选项,并始终包含“Other (describe)”选项。

5b — 启动开发服务器(若尚未运行)

if curl -s http://localhost:3000 > /dev/null 2>&1; then
  echo "Dev server already running — skipping start"
  DEV_STARTED_BY_VERIFY=false
else
  bun dev &
  DEV_PID=$!
  DEV_STARTED_BY_VERIFY=true
  until curl -s http://localhost:3000 > /dev/null 2>&1; do sleep 2; done
  echo "Dev server ready"
fi

5c — 派发 Agent-Browser 任务

通过 Task 工具生成通用子代理。在提示中:告知其读取 ./agent-browser/SKILL.md 获取完整命令参考和会话管理模式;包含 5a 的验收标准;包含要导航的相关路由;要求使用 --session-name verify(自动保存/恢复 Clerk 会话);要求使用 screenshot --annotate 在关键状态截图(提供视觉布局和编号引用);要求按标准报告通过/失败,并在完成后关闭会话。

示例提示(需根据功能调整路由和标准):

Read ./agent-browser/SKILL.md for browser automation command reference, then verify the following at http://localhost:3000.

Use --session-name verify for ALL commands. This auto-saves Clerk session state after
first login so subsequent runs skip authentication.

Route: /[relevant path]

Acceptance criteria:
- <criterion 1>
- <criterion 2>

Workflow:
1. agent-browser --session-name verify open http://localhost:3000/[route]
2. agent-browser --session-name verify wait --load networkidle
3. Check current URL — if redirected to Clerk login:
   a. agent-browser --session-name verify snapshot -i
   b. Fill email with $AGENT_BROWSER_EMAIL, password with $AGENT_BROWSER_PASSWORD
   c. agent-browser --session-name verify wait --url "**/localhost:3000**"
   (On subsequent runs, Clerk session is restored automatically — skip this step)
4. For each criterion: navigate/interact as needed, take annotated screenshot, verify
5. agent-browser --session-name verify screenshot --annotate  (at each key state)
6. Report pass/fail per criterion with screenshot evidence
7. agent-browser --session-name verify close

凭据:$AGENT_BROWSER_EMAIL / $AGENT_BROWSER_PASSWORD 来自 env.example → .env.local。重置过期会话:agent-browser state clear verify。

5d — 停止开发服务器(仅当由本技能启动时)

if [ "$DEV_STARTED_BY_VERIFY" = "true" ]; then
  kill $DEV_PID 2>/dev/null
fi

阶段触发汇总

变更文件包含 触发阶段
**/*.ts 或 **/*.tsx 阶段 4:编码规范审计
src/app/**/*.tsx、src/components/**、src/styles/** 阶段 5:UI 验证
以上均无 仅阶段 1–3

最终报告

当所有阶段通过时,输出:

✅ Lint              — N files
✅ Typecheck
✅ Coding standards — N files, no violations  (if triggered)
✅ UI verified       — N/N criteria passed    (if triggered)

→ Ready for: superpowers:finishing-a-development-branch

适用场景

  • 用户说“verify”“check my work”“am I done”“run checks”或“validate”时。
  • 实现完成后、合并开发分支前。
  • 需要对变更文件进行 lint、类型检查、编码规范审计和 UI 验证时。

限制

  • 采用 fail-fast,任一阶段失败即停止。
  • Lint 必须带变更文件参数,否则会超时。
  • 阶段 4 和阶段 5 为条件触发,仅在变更文件匹配特定模式时执行。
  • UI 验证依赖 agent-browser 技能和 Clerk 会话管理,需要配置 $AGENT_BROWSER_EMAIL / $AGENT_BROWSER_PASSWORD。
  • 开发服务器仅在由本技能启动时才会被停止。