用途
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。 - 开发服务器仅在由本技能启动时才会被停止。