mcpField
V
verify

verify

github.com/factory-ai测试与质量12191 次安装1 周前更新
代码仓库

关于 verify

verify 是用于按工作流前期约定检查最终交付物的技能,定义状态标签,并提供视频、截图、快照和 QA 报告的核验流程。

主要功能

  1. 01标记 PASS、FAIL 或 BLOCKED 状态
  2. 02检查视频元数据和解码情况
  3. 03查看画面中的证明要点
  4. 04核验截图和快照证据
  5. 05检查 QA 报告覆盖度与结构

适用场景

  1. 01按要求核验合成视频
  2. 02检查报告声明的证据
  3. 03审阅基于截图的测试结果
  4. 04查找 QA 报告中的缺失步骤或证据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/factory-ai/factory-plugins --skill verify

安装后在 Claude Code 中输入/verify确认已加载。

详细介绍

验证

协调器将你路由到此处。此原子会根据工作流开始时作出的承诺,检查最终交付物。

输入

你会收到:

  1. 承诺:来自命令的解析步骤,即对交付物内容作出的保证
  2. 合成输出:完成的产物及其元数据

合成是可选的:原始桌面截图/状态以及驱动程序的证据交接也可以作为交付物。验证任务的后置条件,而不只是操作的退出状态或 effect 字段。

状态词汇

每个步骤、检查和后置条件都必须且只能使用以下一种状态;命令和驱动程序原子使用相同的状态词。

状态含义计为
PASS已观察到后置条件成立满足
FAIL已观察到后置条件不成立未满足——这是一项发现
BLOCKED无法观察后置条件:无法捕获、权限等待未解决、缺少二进制文件或连接,或环境阻止了步骤执行两者皆非。说明阻碍因素以及解除阻碍的方法

BLOCKED 绝不会归入 PASS 或 FAIL。包含 BLOCKED 步骤的交付物是不完整的,除非用户接受部分证据。/verify 的声明判定(CONFIRMED / REFUTED / INCONCLUSIVE)针对的是证据是否充分,而非步骤状态:任何声明所依赖的 BLOCKED 步骤都会使判定为 INCONCLUSIVE;即使所有步骤都已执行但仍无法确定声明,判定也会是 INCONCLUSIVE。

视频交付物

技术检查

对最终的 .mp4 运行 ffprobe,然后进行完整解码:

ffprobe -v quiet -print_format json -show_format -show_streams <video>
ffmpeg -v error -xerror -i <video> -f null -   # -xerror: exit non-zero on the first decode error
检查项通过条件
文件存在且可解码ffprobe 退出码为 0,且时长 > 0;并且 ffmpeg -xerror 解码退出码为 0,且标准错误输出为空
分辨率与保真度合成所解析的结果一致:compact/standard 为 1920x1080,inspect 为 2560x1440(side-by-side 的默认值),或属性中的显式 width/height
像素格式pix_fmt=yuv420p 且 color_space=bt709(yuvj420p 流表示渲染绕过了 render-showcase.sh)
文件大小GitHub 嵌入视频需小于 5 MB(硬性上限为 25 MB)
时长等于 4s + longest_clip / speed + 3.5s(合成时长检查点),并且处于此演示类型的合成节奏表目标范围内:30-45s(单项功能)、45-75s(并排对比)、60-120s(多阶段)。低于最短时长即为失败——请使用更低的速度系数重新合成,或重新捕获更多步骤。
文件名包含 PR 编号或有意义的标识符
承诺检查

逐项检查解析步骤中的每项承诺:

承诺验证方法
标题卡视频以显示 PR 信息的静态画面开场(检查前 5s)
并排布局视频显示由分隔线隔开的两个面板
展示润色分辨率符合解析出的保真度,且可见窗口边框和圆角
击键叠加层在交互节点显示胶囊形叠加层
效果存在与承诺层级相符的效果(实用型:缩放/击键;完整型:聚光灯、缩放、标注、击键)
速度说明标题卡提及播放速度
内容检查

元数据无法展示屏幕上的内容。对于每个证明点,都要提取画面帧并查看:

ffmpeg -v error -y -ss <t> -i <video> -frames:v 1 "${RUN_DIR}/proof-<t>.png"   # then Read the PNG
  • “需要证明的内容”分析中的每项主张,都有视频中的可见证据,并已在你报告的时间戳处通过提取的画面帧确认
  • 两种状态(之前/之后、输入/结果)都显示在屏幕上
  • 最终状态:片段从 t = 4.0s 播放至 t = 4.0s + longest_clip / speed,全程清晰可见;之后,最后一帧会在片尾淡入淡出期间保持显示。在片段结束前提取最终证明帧(例如 t = 4.0 + longest_clip / speed - 0.1),不要从淡入淡出期间提取
  • 并排显示时,较短的片段会停留在最后一帧;请确认停留的面板显示的是预期的最终状态,而不是尚未完成的步骤
  • 没有超过 3 秒且缺少可见活动的空档

截图/快照交付物

用于证明
检查项通过条件
存在证据每个提出的证明点都有截图/快照
说明环境已标明驱动程序、终端/浏览器和操作系统
提供结论证据明确支持或反驳该主张
配对展示前后状态如需比较,在相同的截取点展示两个分支
用于 QA 报告
检查项通过条件
步骤覆盖每个已定义的测试步骤都有状态(PASS / FAIL / BLOCKED)
附上证据每个步骤都有截图/快照
记录失败FAIL 步骤有证据和说明;BLOCKED 步骤注明阻碍因素及解除阻碍所需的条件
报告结构Markdown 报告遵循 QA 模板

失败处理

如果任何检查未通过:

  1. 确定问题出在哪个阶段(采集或合成)
  2. 报告具体失败情况:“已提交并排布局,但输出只有一个面板”
  3. 返回失败的阶段并修复问题
  4. 修复后重新验证

在满足所有承诺之前,不要报告交付物已完成。

输出

## Verification

### Technical
- Decode: ffmpeg -xerror exit 0 ✓
- Resolution: 2560x1440 (inspect, side-by-side) ✓
- Duration: 52.5s = 4 + 45 + 3.5 ✓
- Size: 3.2 MB ✓
- Format: yuv420p / bt709 ✓

### Commitments
- [x] Title card with PR info
- [x] Side-by-side comparison layout
- [x] Showcase hero preset applied
- [x] Keystroke overlay visible

### Content
- [x] Fork creates independent session (frame at 0:18 read: new session id in header)
- [x] History diverges after fork (frame at 0:32 read: differing last messages)

All commitments met. Deliverable ready.

评论

支持 Markdown