verify について
verifyは、ワークフローの冒頭で定めた条件に照らして最終成果物を確認するスキルです。動画、スクリーンショット、スナップショット、QAレポートの検証手順とステータスを定めています。
主な機能
- 01PASS、FAIL、BLOCKEDのステータス付与
- 02動画のメタデータとデコード確認
- 03証拠となるフレームの確認
- 04スクリーンショットとスナップショットの証拠確認
- 05QAレポートの網羅性と構成確認
活用シーン
- 01合成動画の要件適合確認
- 02報告された主張の証拠確認
- 03スクリーンショットによるテスト結果の確認
- 04QAレポートの手順や証拠の不足確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ factory-ai/ factory-plugins --skill verifyインストール後、Claude Code で/verifyを入力して読み込まれたか確認します。
詳細
検証
オーケストレーターにより、ここへルーティングされました。このアトムは、ワークフローの開始時に交わした約束に照らして、最終成果物を確認します。
入力
次のものを受け取ります。
- コミットメント:コマンドの解析ステップで作成された、成果物に含まれる内容についての約束
- 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 テンプレートに従っている |
失敗時の対応
チェックに失敗した場合:
- 問題が発生した段階(キャプチャまたは合成)を特定する
- 具体的な失敗を報告する:「並べて表示するレイアウトを指定したが、出力は単一パネルになっている」
- 失敗した段階に戻り、修正する
- 修正後に再確認する
すべての要件が満たされるまで、納品物が完成したと報告しないでください。
出力
## 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.