Communitygithub.com

ONIKOSIOLA/video-editing-kit

用於建立、編輯、重新定時或渲染 HyperFrames 合成或影格子合成,特別是適用於多影格宣傳/發佈影片、當影格「通過檢查」但尚未被檢視時、當重新定時 GSAP 動畫時,或當輸出品質感覺低於先前執行時。也適用於除錯空白影格、靜默間隙、被埋沒/重疊的卡片,或從未註冊的時間軸。

video-editing-kit 是什麼?

這個技能「HyperFrames Quality Gates」是一套嚴謹的品質驗證流程,專門為 HyperFrames 影片製作流程設計。它的核心信念是:創意本身並不足以產出高品質影片,關鍵在於確實的驗證紀律。此技能強制要求開發者在每一個影格建立或編輯後,依序執行一系列非協商的檢查關卡,包括遵守故事板指示、確保每個影格僅有一個主要動態、自我檢查常見的機械陷阱、以及最重要的「尋點測試」(seek-test) – 在瀏覽器中手動搜尋時間軸的多個關鍵點並截圖檢視像素。它支援多影格協作模式,要求每個工作程序獨立運作,並在組裝後由編排器重新驗證所有影格。此技能特別強調,僅依賴 lint 工具或檢查器是不夠的,唯有親自檢視渲染後的像素才能發現如空白影格、元素重疊、靜默間隙等真正問題。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ONIKOSIOLA/video-editing-kit/tree/HEAD/skills/hyperframes-quality-gates

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

HyperFrames 品質關卡

概述

一個優秀的 HyperFrames 執行與平庸執行之間的差距,不在於創意,而在於驗證紀律。優秀的執行將每個影格視為未經證明的,直到其像素在多個尋點時間被檢視過。平庸的執行則信任檢查器,並在程式碼通過 lint 後就直接產出。

核心原則:lint 工具檢查的是矩形和屬性;只有渲染後的像素才能說真話。在親眼看到影格之前,永遠不要宣告一個影格完成。

非協商關卡

對於你建立或編輯的每個影格,必須依序通過這些關卡。因為「只是一個小改動」而跳過關卡,就是品質下降的原因。

  1. 閱讀故事板本身的 ## Video direction 區塊,並遵守它,而非預設的樣板。 當故事板要求 sentence case 而預設的 frame.md 使用大寫時,以故事板為準。專案方向優先於預設設定。
  2. 每個影格只有一個主要動態。 如果你的影格同時有兩個元素在動作,刪減其中一個。先讓所有元素動起來然後靜止(「幻燈片模式」),以及所有元素持續漂浮(「螢幕保護模式」)都是失敗的。
  3. 自我檢查機械陷阱(見下方表格),在宣告完成之前,在你的檔案中 grep 檢查這些陷阱。
  4. 在瀏覽器中進行尋點測試後再回報完成。 複製 <template>,註冊時間軸,然後在以下時間點執行 timeline.seek(t, false):t=0、每個場景邊界 ±0.05 秒,以及最後一幀。為每個時間點截圖。檢視它們。 沒有經過尋點測試的影格報告是未經驗證的主張。
    • suppressEvents 陷阱:單純的 .seek(t) 會抑制 onUpdate 回呼 — 計數器/打字效果在你的測試環境中看起來壞了,但在渲染器中是正常的。務必傳入 false。
  5. 在重新定時後,重新推導受影響剪輯的 data-start/data-duration。 GSAP 動畫時間和剪輯的可見時間窗口是兩個獨立的系統;只重新定時其中一個而不更新另一個,會導致不可見的元素或靜默間隙。這是回歸問題的頭號來源。
  6. 組裝後,在每個剪輯邊界和每個影格的中點為完整影片拍攝快照,並親自閱讀聯絡表圖像。 修正看起來不對的地方,重新拍攝快照,然後才進行渲染。

機械陷阱表格(在你的檔案中 grep 這些)

陷阱症狀修復方法
id 以數字開頭 + querySelector("#...")SyntaxError 靜默地終止時間軸註冊 → 空白影格在 id 前加上字母,或先使用 getElementById
CSS transform: 用於 GSAP 動畫的元素上GSAP 在第一次動畫時覆蓋 CSS 偏移量將偏移量設定為 left/top;transform 只屬於 GSAP
在內邊距卡片上缺少 box-sizing: border-box寬度膨脹、置中偏移、卡片碰撞在每個有內邊距的卡片上設定
@font-face 指向 fonts.gstatic.com / 任何 CDN非確定性渲染;離線時中斷本地檔案位於 assets/fonts/ 下,使用專案根目錄相對路徑
用肉眼估算重疊數學後續的卡片埋沒了前面卡片的文字使用 getBoundingClientRect() 在保持時間點計算矩形;驗證截圖中每個堆疊元素的關鍵文字是否可見
檢查器對於裁剪/緊湊行高的文字產生重疊發現誤判(矩形重疊,但字形沒有)先驗證像素,然後再使用 data-layout-allow-overlap — 不要盲目地抑制
在手機模擬框中截圖被拉伸/重新著色不自然的效果始終使用原生長寬比;使用 overflow:hidden 裁剪,絕不進行非均勻縮放
外部磁碟上的 ._* AppleDouble 檔案中斷建置/渲染在組裝/渲染前執行 find . -name '._*' -delete
Node < 22CLI 執行失敗前置:export PATH="$HOME/.nvm/versions/node/v22*/bin:$PATH"(或使用 nvm use 22)

編排模式(多影格建置)

  • 每個影格一個工作程序,每個工作程序一個檔案;工作程序絕不觸碰共享檔案。
  • 在分派工作程序之前,暫存共享資產(字型、標誌、螢幕截圖);資料包指定確切路徑。
  • 每個資料包包含:該影格的故事板區塊原文、全域的 Video direction 區塊、上述的陷阱表格,以及尋點測試要求。
  • 無論工作程序回報了什麼,編排器在組裝後都重新執行 lint + check + 聯絡表檢查 — 工作程序的自我回報只是主張,不是證明。

紅旗 — 停下來驗證

  • 「Lint 和 check 通過了,所以影格是正確的」 → 檢查無法看到被埋沒的文字或靜默間隙。請看像素。
  • 「我重新定時了動畫;完成了」 → 你也重新定時了剪輯的 data-* 時間窗口嗎?
  • 「我會跳過尋點測試,程式碼很簡單」 → 空白影格錯誤(數字開頭的 id 選擇器)正是在簡單的程式碼中出現,而且只有尋點測試抓到了它。
  • 「那張卡片大概沒有覆蓋另一張」 → 計算矩形;然後截圖。
  • 「這次就用 CDN 字型,沒關係的」 → 不行;渲染必須在無網路環境下進行。

以上所有情況都意味著:執行你正打算跳過的那個關卡。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能