ホーム / 全スキル / コンテンツ制作 / render-qa-and-surgical-changes
コンテンツ制作 · saranambiar/hyperframes-video-agent-skills

render-qa-and-surgical-changes

承認済みの同期を壊すことなく、最終動画レンダリングの検証や微小で安全な修正を行います。プルーフフレーム、コンタクトシート、メディアプローブ、陳腐化したテーマのスキャン、正確なタイムスタンプ検証、持ち越しフレームの更新、影響を受けたシーンのみを再レンダリングするワークフローなどが含まれます。最終QA、HD/レンダリング検証、テキスト/音声/カラーの微修正、または承認済みタイミング後のリグレッションチェックを求められた場合に使用します。

L4 高権限 · 段階的認可と監査V1 コミット固定コマンド実行ファイル書き込みDual-pass Audit
Author saranambiarGitHub saranambiar/hyperframes-video-agent-skills ↗Stars 48License Apache-2.0(仓库根 LICENSE 为 Apache License Version 2.0;GitHub API license.spdx_id = Apache-2.0)Commit f6b043d9fd
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

まず5つの外科手術的ルールで境界を設定する:完成品ではなくソースを修正する、影響を受けたシーンのみを再レンダリングする、承認済みの現在のタイムラインからアセンブリを再構築する、無関係なセグメントの再デザイン/再タイミング/再同期を行わない、完了を宣言する前に重複や持ち越し(carryover)フレームを検索する。

skills/render-qa-and-surgical-changes/SKILL.md
- Patch source artifacts, not the final MP4, when source scenes and assembly scripts exist.
ここで行っていること:「外科的」の定義(最小限のスコープ+承認済み部分への非接触)を規定。これはシリーズ全体の最終段階における最優先原則であり、workflows/surgical-final-edit.md や end-to-end-video-playbook にも繰り返し登場します。

QAシーケンスは5段階に固定:完成品のプローブ(再生時間/解像度/フレームレート/オーディオトラック/サンプリングレート/チャンネル)→ プルーフフレーム抽出(シーン境界、変更箇所、キャプションスタイルフレーム、末尾CTA)→ コンタクトシート作成(変更前後の比較を含む)→ オーディオ検査(ナレーションの存在、指定箇所でのBGMの可聴性、末尾の無音/フェードの正確さ、カット後の言葉の途切れがないか)→ テーマとテキストの検査(陳腐化した色、持ち越し重複タグ、ロゴや製品画面録画の誤着色がないか)。

skills/render-qa-and-surgical-changes/SKILL.md
5. Check theme and text.
ここで行っていること:検収作業を機械的検証(プローブとフレーム抽出)と人間の目視・聴覚確認(コンタクトシートと音声)の2つに分解し、双方の実施を必須としています。

ユーザーから指定されたタイムスタンプは3フレーム(該当時刻+直前+直後)で証拠を抽出し、ソースシーンだけでなく必ず完成品上で検証する。同一のビジュアルが次のシーンにも現れる場合は境界フレームも抽出する。

skills/render-qa-and-surgical-changes/SKILL.md
- Extract a frame at that exact time.
ここで行っていること:「ユーザーが指定したその1秒」を客観的根拠となる3フレームの証拠に落とし込み、「ソースシーンは正しく直したが完成品が再構築されていない」といった偽の合格を防ぎます。

3つの安全な置換手順:音声(新旧の長さをプローブ → 同長ならパスを差し替えて再構築、差異があればテンポ調整またはビジュアルの再タイミングを判断、要求がない限り後続シーンの開始点を動かさない、文言変更時は字幕を再生成)、テキスト(ソース修正 → 次のシーンの持ち越し文言を検索 → 再レンダリング → 再構築 → 表示時刻でフレーム抽出)、テーマ(テーマスキャナーを使用、編集可能なソースのみ修正、ロゴや画面録画は除外、SVGを確認、次シーンの持ち越しを確認)。

skills/render-qa-and-surgical-changes/SKILL.md
- Search next scene for carryover copy.
ここで行っていること:最も頻出する3種類の最終修正を「まず検索、変更、再構築、証拠抽出」という共通プロセスとして定型化し、検索によってリグレッションを防止します。

作業前の事前検索:すべてのソースシーンファイル内のテキストや色、アセンブリスクリプト内の音声パスと長さ、字幕スクリプト内の古い文言を検索する。公開ドキュメントの更新が必要な場合のみ templates/examples を検索し、生成物は一切検索しない(ビジュアルQA時を除く)。

skills/render-qa-and-surgical-changes/SKILL.md
- Ignore generated renders unless doing visual QA.
ここで行っていること:検索の境界を明確にし、修正漏れを防ぎつつ(全ソースを検索)、レンダリング成果物を無駄に検索する事態を回避します(成果物はソースではないため)。

QA出力パッケージを固定:プローブテキストまたはコンソール要約、proof-*.png、contact-sheet.jpg、動的同期検証用の preview-*.mp4、最終レンダリングパス。生成物はGitにコミット不要(公開サンプルを除く)であることを明記する。

skills/render-qa-and-surgical-changes/SKILL.md
preview-*.mp4` for moving sync checks.
ここで行っていること:検収の証跡を標準化しつつ、リポジトリの .gitignore(renders/、snapshots/、captions/*.ass を全除外)に準拠して「成果物はコミットしない」という規律を徹底します。

停止条件の定義:ロックされたシーンの承認と衝突する変更、末尾フレームのソース素材が見つからない、テキストや音声の変更が未承認のスクリプト変更を示唆している、ロゴの色変更だがブランド帰属が不明確——これらに遭遇した場合は作業を止めて確認する。それ以外は最小限の安全な変更を実施して検証する。

skills/render-qa-and-surgical-changes/SKILL.md
- A text/audio change implies a script change the user has not approved.
ここで行っていること:無条件の実行にブレーキをかけ、AGENTS.md の「Never mutate approved scenes unless the user explicitly asks(ユーザーの明示的な要求がない限り承認済みシーンを変更しない)」と整合させています。

2コア機能

01リポジトリ内の6つのスクリプト実行インターフェース:probe_media.py(プローブ)、extract_proof_frames.py(フレーム抽出)、make_contact_sheet.py(コンタクトシート作成)、build_ass_captions.py(字幕構築)、scan_theme_colors.py(陳腐化したテーマ色スキャン)、timeline_manifest_to_ffmpeg.py(マニフェストからアセンブリプランへの変換)
02正確なタイムスタンプ検証手順(該当時刻+直前+直後、完成品での検証、次シーンに同一ビジュアルが続く場合の境界フレーム抽出)
03音声の安全な置換手順(単一ナレーション):新旧の長さをプローブ → 同長ならパス差し替えと再構築 → 差異があればテンポ調整かビジュアル再調整を判断 → 後続シーンの開始点維持を確認 → 文言変更時は字幕を再生成
04テキストの安全な置換手順:ソースシーン修正 → 次シーンの持ち越し文言を検索 → 文言変更時は旧字幕も検索 → 影響シーンを再レンダリング → 再構築 → 表示タイミングでフレーム抽出
05テーマの安全な置換手順:テーマスキャナーの利用、編集可能ソースのみの変更、ロゴや製品画面録画の保護、SVG値の確認、次シーンの持ち越し確認
06QA出力パッケージと「生成物をGitコミットしない」規律、および4つの停止条件(Stop Conditions)と「最小限の安全な変更を実施して検証する」デフォルト動作
07失敗モードのリファレンス(ビジュアル6項目、音声6項目、字幕4項目、リグレッションチェック5項目)を検収チェックリストとして直接利用可能

3外部依存関係

KindDependency / Endpoint
cliffprobe / ffmpeg(经仓库脚本间接依赖:探针与抽帧、接触表合成;缺失即 SystemExit)
package仓库根脚本 scripts/probe_media.py(ffprobe JSON 封装:时长/体积/码率/视频编码与分辨率/帧率/像素格式/音频编码/采样率/声道)
package仓库根脚本 scripts/extract_proof_frames.py(按 -ss 精确抽帧并可拼接触表)与 scripts/make_contact_sheet.py
package仓库根脚本 scripts/scan_theme_colors.py(按允许色白名单扫文本源文件,跳过 node_modules/.git/renders/snapshots/assembly/dist/build,发现 review 项时退出码 1)
package仓库根脚本 scripts/build_ass_captions.py(字幕)与 scripts/timeline_manifest_to_ffmpeg.py(清单转装配计划)
package模板 templates/change-request.md(收尾小改动前必须先填:改动内容、保留项、实现规则、证明表、验收标准)

4推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
段階的・都度認可、サンドボックス推奨
管理者向け
承認フロー、ロールバック可能、全履歴監査
判定根拠(ファイルパスと抜粋)
  • scripts/: ローカルスクリプトまたはコマンドの実行: (ホストエージェントにより実行。すべてリポジトリルートの scripts/ に配置され、本スキルディレクトリには非同梱)scripts/probe_media.py —— ffprobe を呼び出し
  • 本地工作目录: ファイルの読み書きと成果物出力: プローブテキストまたはコンソール要約(QA出力パッケージ)
監査ノート: 本スキルディレクトリには SKILL.md + references/failure-modes.md(純粋な指示書)のみが含まれます。実際の実行面はリポジトリルートの scripts/ にある6つの決定論的スクリプトであり、これらは ffprobe/ffmpeg のサブプロセス呼び出しとローカルファイルの読み書きのみを行います(urllib/requests/socket やネットワーク分岐がないことを1点ずつ確認済み)。また、templates/change-request.md も使用します。**外部サービスへの素材送信は一切ありません**:スクリプトおよびスキルディレクトリ全体の検証により、http(s):// エンドポイント、fetch/requests、トークンや環境変数の読み取りが存在しないことを確認しています。scan_theme_colors.py はホワイトリスト外の色を検出した際に終了コード1で終了しますが、これは不整合のレポートであり破壊的動作ではありません。同一シリーズの9つのスキルは同様の基準で判定されています(ディレクトリ内は SKILL.md および references のみ、挙動はローカルのファイル読み書きおよびローカルCLIのみで、エンドポイント・認証情報・外部への素材送信は一切なし)。

5二重目の独立検証

  • [ok] 本 skill 的执行面「无网络」是否成立(逐个脚本核对) — 六个脚本的 import 只有 argparse/csv/json/re/shutil/subprocess/pathlib(scan_theme_colors 另用 re/pathlib),无 urllib/requests/socket/http;子进程调用仅 ffprobe/ffmpeg,参数为本地路径。故无素材外发、无端点查询,不构成黄档或橙档。
  • [ok] SKILL.md 点名的六个脚本是否都真实存在 — pin 内 scripts/ 下有 build_ass_captions.py、extract_proof_frames.py、make_contact_sheet.py、probe_media.py、scan_theme_colors.py、timeline_manifest_to_ffmpeg.py——与 SKILL.md 的 Use repo scripts when available 清单逐项对应。
  • [ok] 「抽该时刻 + 略前 + 略后」是否可用脚本实现 — extract_proof_frames.py 接受可重复的 --time(label=timestamp 形式),每个时刻用 ffmpeg -ss 精确抽一帧并按序号与标签命名,可直接表达 0.05s 级的前后帧;--contact-sheet 可一次拼出对比表。
  • [discrepancy] 本 skill 是否点名了 ffmpeg/ffprobe 本身 — SKILL.md 全文只点名仓库脚本(含名字里带 ffmpeg 的 timeline_manifest_to_ffmpeg.py),未直接写 ffprobe/ffmpeg 命令;CLI 依赖由脚本内部承担(probe_media.py 的 shutil.which("ffprobe")、extract_proof_frames.py 的 shutil.which("ffmpeg") 缺失即报错退出)。使用者需知道脚本依赖 PATH 上的 ffmpeg/ffprobe。
  • [ok] 「生成物不入库」与仓库实际忽略规则是否一致 — SKILL.md 的 Generated QA files do not need to be committed unless they are public examples. 与仓库 .gitignore(忽略 renders/、snapshots/、assembly/、captions/*.ass、captions/*.json 与各类视频扩展名)一致。
  • [ok] QA 输出包的五个产物是否都有生成路径 — probe 摘要来自 probe_media.py;proof-*.png 来自 extract_proof_frames.py;contact-sheet.jpg 来自 extract_proof_frames.py 的 --contact-sheet 或 make_contact_sheet.py;preview-*.mp4 由宿主用 ffmpeg 生成(文档未点名脚本,属流程项);最终渲染路径由项目输出。除 preview 外均有随包工具。

6結論

  • 「外科手術的」5ルールにより変更スコープを最小化し、無関係なセグメントの再デザイン・再タイミング・再同期を禁止することで、最終段階で最も起きやすい事故を未然に排除
  • 3種類の安全な置換(音声/テキスト/テーマ)を「まず持ち越しを検索 → 修正 → 再構築 → 証拠抽出」の共通フローに落とし込み、主要な失敗パターンを網羅
  • 検収の証拠を検証可能な成果物群(プローブ要約+プルーフPNG+コンタクトシート+プレビューMP4)として提示し、ユーザー指定のタイムスタンプに対しても3フレームで立証
  • 付属する6つのスクリプトはすべてローカル完結・ネットワーク通信なしの確定的なツールであり、不整合時には終了コードで通知(テーマスキャンで要レビュー項目がある場合は exit 1)
  • 無条件で作業を進めず、明確な停止条件と「最小限の安全な変更」をデフォルト動作として規定
  • 最適な用途: 適合ケース:動画が完成間近または承認された後の最終仕上げ作業——最終QA、HDおよびレンダリングの検証、テキスト/音声/カラーの微修正、承認済みタイミング後のリグレッションチェック、シーン境界や指定タイムスタンプの証拠抽出、陳腐化したテーマ色のクリーンアップ、持ち越しフレームの更新、および影響を受けたシーンのみを再レンダリングしてアセンブリを再構築する制御されたワークフロー。
    不向きな用途: 非適合ケース:① 初期デザイン段階の大幅な変更(motion-design-systems または scene-builder を使用すべきであり、本スキルのルールでは再デザインを明示的に禁止しています)、② ナレーションの再録やタイムライン全体の再構築が必要なプロジェクト(audio-sync-assembly を使用)、③ 字幕スタイルの刷新やBGMのリミックス(captions-and-music-bed を使用)、④ リポジトリルートの scripts/ や templates/ を参照できず単一のスキルディレクトリのみをコピーした環境(実行機能が不足します)、⑤ 環境に ffmpeg/ffprobe が存在しない場合。
    Install Agent-Ready
    ① Verified Mirror 2026-09-28
    Option A · Direct DownloadDownload render-qa-and-surgical-changes.tar.gz
    sha256: 47a9915a5d91b665…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit f6b043d9fd.