amir-motion 是做什麼的?
Amir 的產品影片規則。影片在 30 到 60 秒內向非技術決策者解釋產品:每個步驟一句話、讓產品自己說話、聲音與畫面同步、每種格式與語言都有乾淨的剪輯,並且只包含屬於我們的內容。
<skill-dir> 是此檔案所在資料夾:~/.claude/skills/amir-motion(適用於 Claude Code),~/.agents/skills/amir-motion(適用於 Pi 及其他代理)。
「調用技能」代表:在 Claude Code 中使用 Skill 工具,在 Pi 中使用 /skill:<名稱>,或者直接讀取 <skills folder>/<名稱>/SKILL.md 並遵循其內容。
三項技能,一部影片。 amir-motion 擁有規則、範本、音效與稽核關卡。它在特定步驟中調用另外兩項技能:
| 技能 | 負責事項 | 調用時機 |
|---|---|---|
stageshow | 產品 UI 的外觀:節制、構圖、裁切、焦點物件、滑鼠游標故事、海報幀 | 步驟 1,4 |
remotion-best-practices | Remotion 的使用方式:專案、標記、Studio、渲染、字幕、升級(導向 remotion-*) | 步驟 2,5,8 |
當上述技能與以下規則衝突時,以本規則為準(例如 stageshow 基於時間的 Act API 不得進入影片:規則 6)。
10 條規則(強制性)
| # | 規則 | 硬性限制 |
|---|---|---|
| 1 | 少說廢話 | 每個步驟一句話,最多 10 個字,使用決策者能懂的簡單詞彙。一次只移動一個物件。總長度 30 至 60 秒。 |
| 2 | 閱讀時間 | 每句話停留在畫面上的時間 ≥ 1.5 秒 + 每個字 0.3 秒,字元速率 ≤ 17 字元/秒,以實際秒數計算。文字在閱讀期間不得移動。 |
| 3 | 展示,而非書寫 | 產品自己解釋;字幕只命名步驟名稱。用 React 重建產品 UI(絕不使用截圖)。整合項目 = 標誌。數字 = 計數器或圖表,且必須是真實數據。 |
| 4 | 字型符合主題 | 最多 3 種字型家族(襯線展示體、無襯線 UI、等寬體)。3 種文字大小(展示、字幕、標籤),皆來自 theme.ts。字幕 ≥ 48 px,故事指向的任何 UI 文字 ≥ 30 px 或由鏡頭拉近。 |
| 5 | 無紅色,僅一種強調色 | 紅色僅用於錯誤或破壞性操作,除非品牌色表中包含紅色。僅一種強調色,且該顏色具有含義(代表結果或變化)。所有顏色僅定義於 theme.ts 中。 |
| 6 | 單一時鐘 | 每個節拍都是其所屬場景時鐘中的一個數字。畫面、字幕與聲音都讀取相同的數字。所有元素都從幀數衍生:不使用 CSS 動畫、計時器、Math.random、Date,也不使用 stageshow 的 Act 執行時期。 |
| 7 | 移動,而非淡出 | 場景間的切換如同單一相機運動(上升、下沉、推近、拉遠),絕不使用灰色交叉淡出。開始與停止需有緩動(僅使用 token),結束約為進入時間的一半,每部影片只有一個英雄時刻。 |
| 8 | 聲音佔影片一半 | 原創合成配樂,使用同一調性,以時間軸為基礎建構;每個進場、點擊與重點效果都有提示音,閒置動畫則無提示音。總體響度 -14 LUFS,峰值 ≤ -1 dBFS。 |
| 9 | 每種格式都是一次重新剪輯 | 16:9 主版本加上重新構圖的 9:16 版本(非裁切),法文與英文版本共用同一份文案檔案。第 0 幀為真正的縮圖。在靜音模式下可讀。文字位於畫面 80% 範圍內。 |
| 10 | 只保留屬於我們的內容 | 程式碼、文案、檔案名稱、圖片、中繼資料中不得出現前客戶、內部工具或第三方品牌。每個素材都必須在 ASSETS.md 中有來源。不得使用虛構的數字、標誌或推薦。 |
詳細資料與數值:references/rules.md。規則來源:references/source.md。
工作流程
- 檢查。 執行
node <skill-dir>/scripts/doctor.mjs。它會檢查 Node(22.18+),並從官方來源安裝stageshow與 Remotion 技能(若缺少)。它會為 Claude Code 和 Pi 安裝;使用--agent <id>為其他代理安裝。如果安裝了任何項目,請告知使用者:新技能將在下一次會話中載入;與此同時,可直接讀取其SKILL.md檔案。 - 簡報。 與使用者共同填寫
BRIEF.md:目標、觀眾、承諾(≤ 8 個字)、格式、長度、品牌及其來源、證據。接著是節拍表:每個步驟一行(字幕、產品展示內容、音效)。故事弧線與範例:references/brief.md。對於每個產品場景,以 stageshow 的方式規劃:調用stageshow,並為每個場景記錄焦點物件、動作、成果、省略的內容,以及最接近的黃金範例(hero-demo、payout-flow、choreography、table-edit、loading...)。顯示節拍表並在開始任何場景前獲得同意(由 Amir 決定內容實質)。 - 建立骨架。 調用
remotion-best-practices,並在整個建置過程中保持其路由器開啟。接著執行:範本會取代路由器的「建立新專案」步驟;請遵循其「開啟預覽」步驟(node <skill-dir>/scripts/new.mjs <資料夾> --name "產品名稱" --forbid "前客戶,internal.host" --install cd <資料夾> && npm run score && npm run devremotion-studio),讓使用者觀看建置過程。在 Windows 上請使用短路徑(C:/Users/<我>/<產品名稱>-motion):無頭 Chrome 在路徑超過 260 字元時會失敗。範本結構圖:references/architecture.md。 - 品牌。 將產品的色板、顯示字型與標誌放入
theme.ts與public/,並在ASSETS.md中為每個項目標註來源行。依照 stageshow 的references/looks.md方式對應產品自己的 token。沒有品牌來源?請詢問。切勿自行發明。 - 產品場景(stageshow)。 對於每個顯示產品的場景:開啟你在步驟 1 中指定的黃金範例(
<stageshow>/examples/<黃金範例>/),並閱讀 stageshow 的references/craft.md(節制、字型、間距、圖示)、references/framing.md(裁切、邊距、版面)與references/motion.md(故事、游標、變化數值)。使用theme.ts、AppWindow、cursorAt與toStage在 Remotion 中建置,並參考references/faux-ui.md中的表格將每個 stageshow 動作轉換為 Remotion 節拍。複製黃金範例的結構與比例,但絕不複製其產品識別。 - Remotion 標記。 在編寫場景程式碼之前,透過路由器載入
remotion-markup;使用remotion-captions處理逐字字幕,使用remotion-multimedia處理真實影片素材,使用remotion-maps處理地圖,使用remotion-interactivity在 Studio 中暴露屬性。所有操作皆須遵守這些規則。 - 音效。 在
cues.ts中使用相同的節拍編號編寫提示音,在scripts/score.mts中設定編曲,然後執行npm run score。詳細資料:references/sound.md。 - 每日進度。 執行
npm run stills,為每個版本生成一張聯絡表(每個場景進場後、中間點、離場前,以及第 0 幀)。開啟 PNG 檔案並檢視,使用 stageshow 的審查眼光(references/review.md):目光首先落在何處?是否落在結果上?是否有任何物件顯得平板、空洞或被框住?修正並重複。切勿在已開啟「減少動態效果」的機器上的瀏覽器中判斷動畫效果。 - 稽核關卡與渲染。 執行
npm run lint,然後npm run audit。修復所有 FAIL,權衡每個 WARN。接著執行npm run finish(渲染選項:透過路由器使用remotion-render),然後再次執行npm run audit:它會測量每個 MP4 的響度、檔案大小與幀率。規則 1、3、4 與 7 需要人工檢視:references/checklist.md。 - 審查與交付。 在交付任何內容之前,將聯絡表與簡報交給一位不受汙染的審查者。交付 MP4、聯絡表、未解決的 WARN 以及未檢查的項目。格式與命名方式:
references/delivery.md。
紅旗警訊(立即停止並修正)
- 字幕超過 10 個字,或同時出現兩段需要觀眾閱讀的字幕。
- 一句話解釋了產品可以透過實際操作來展示的內容。
- 使用產品截圖、真實客戶名稱、真實工單號碼,或非我們所有的標誌。
- 在場景中直接貼入 stageshow 的
Act、a.click()或setTimeout,而非將其轉換為節拍。 - 未指定命名 stageshow 黃金範例就建置產品場景。
- 在場景中直接輸入十六進位色值或字型大小。
interpolate()在開始或停止的物件上未使用緩動效果;所有物件同時淡入。- 在
Soundtrack.tsx中手動輸入幀號,或聲音落在兩個節拍之間。 - 在兩個深色視窗之間使用交叉淡出(灰色迷霧)。
- 9:16 版本是透過裁切 16:9 版本製作的。
- 第 0 幀為空白或未完成。
- 「在 Studio 中看起來很好」:在生成聯絡表並通過稽核之前,任何操作都不算完成。