mcpField
V
verify

verify

github.com/factory-aiテスト・品質12191 回インストール1 週間前に更新
リポジトリ

verify について

verifyは、ワークフローの冒頭で定めた条件に照らして最終成果物を確認するスキルです。動画、スクリーンショット、スナップショット、QAレポートの検証手順とステータスを定めています。

主な機能

  1. 01PASS、FAIL、BLOCKEDのステータス付与
  2. 02動画のメタデータとデコード確認
  3. 03証拠となるフレームの確認
  4. 04スクリーンショットとスナップショットの証拠確認
  5. 05QAレポートの網羅性と構成確認

活用シーン

  1. 01合成動画の要件適合確認
  2. 02報告された主張の証拠確認
  3. 03スクリーンショットによるテスト結果の確認
  4. 04QAレポートの手順や証拠の不足確認

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/verifyを入力して読み込まれたか確認します。

詳細

検証

オーケストレーターにより、ここへルーティングされました。このアトムは、ワークフローの開始時に交わした約束に照らして、最終成果物を確認します。

入力

次のものを受け取ります。

  1. コミットメント:コマンドの解析ステップで作成された、成果物に含まれる内容についての約束
  2. Compose の出力:完成した成果物と、そのメタデータ

合成は任意です。デスクトップの生のスクリーンショット/状態と、ドライバーから引き継いだエビデンスを成果物としてもかまいません。アクションの終了ステータスや 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 で終了し、stderr が空であること
解像度fidelity の Compose で解決された値と一致すること。compact/standard は 1920x1080、inspect は 2560x1440(side-by-side のデフォルト)、または props で明示された width/height
ピクセル形式pix_fmt=yuv420p かつ color_space=bt709 であること(ストリームが yuvj420p の場合、レンダリングで render-showcase.sh を経由していません)
ファイルサイズGitHub への埋め込みでは 5 MB 未満であること(ハードリミットは 25 MB)
再生時間4s + longest_clip / speed + 3.5s(Compose の再生時間チェックポイント)と一致し、さらに、このデモタイプの Compose ペーシング表にある目標範囲内であること:30~45s(単一機能)、45~75s(左右比較)、60~120s(複数フェーズ)。最小値を下回る場合は失敗です。speed factor を下げて再合成するか、ステップを増やして再キャプチャしてください。
ファイル名PR 番号または内容を表す識別子が含まれていること
コミットメントのチェック

解析ステップの各コミットメントを確認します。

コミットメント確認方法
タイトルカード動画の最初の 5 秒を確認し、PR 情報を表示した静止フレームから始まること
左右比較レイアウト仕切りで区切られた 2 つのパネルが動画に表示されること
ショーケースの仕上がり解像度が解決済みの fidelity と一致し、ウィンドウの枠と角丸が表示されること
キーストロークオーバーレイ操作時にピル型のオーバーレイが表示されること
エフェクトコミットされたティアに対応するエフェクトが含まれていること(実用向け:ズーム/キーストローク、フル:スポットライト、ズーム、コールアウト、キーストローク)
速度に関する注記タイトルカードに再生速度が記載されていること
コンテンツのチェック

メタデータから画面に何が表示されているかは分かりません。各証明ポイントについて、フレームを抽出して確認してください。

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秒を超えて続かない

スクリーンショット/スナップショットの納品物

証明用
チェック項目合格条件
証拠がある主張する各証明ポイントにスクリーンショット/スナップショットがある
環境が明記されているドライバー、ターミナル/ブラウザー、OS が特定されている
結論が記載されている証拠が主張を明確に裏付けている、または反証している
前後が対になっている比較する場合、両方の分岐が同じキャプチャポイントで示されている
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.

コメント