--- name: winlab-pptx description: "Loki 的唯一簡報 skill: 產 .pptx(NOT .key)涵蓋兩類 deck:報告 / 技術簡報(lab talk / pitch / demo,英文高密度)、分鏡簡報(現場工作坊 / hands-on 課程,一頁一 beat 同圖差分)。Triggers on '做簡報', '做投影片', 'slide deck', 'presentation', 'powerpoint', 'pptx', '技術簡報', '實驗室簡報', 'lab talk', 'winlab slides', 'pptx 架構圖', '工作坊簡報', 'hands-on 簡報', '分鏡簡報', 'workshop deck', '一頁一 beat', 'lessig', 'review 我的投影片', 'outline 一下', 'rewrite this deck'. NOT Markdown 成果報告 / 手冊 / runbook,那是 project-docs. NOT 單句潤稿,那是 academic-sentence." --- # WinLab pptx 只產 `.pptx`(沒有 `.key` 路線)。引擎是 `python-pptx` 把內容填進 `template.pptx` 母片:版式、配色、字型、logo、footer 全鎖在母片,agent 只灌文字和設層級,不從零畫。架構圖用 pptx 原生 block+line(可編輯 shape,不是嵌圖)。 讀的順序 = 做的順序:§1 分類 → §2 共用底線 → §3A / §3C 擇一 → §4 落地引擎 → §5 Self-review。 黃金標準是 `assets/kilo-sense-talk.pptx`(老闆認可的報告 deck,source 在 iCloud `Projects/zyx1121/sense/`)。落地預設(layout、字型、字色、架構圖樣式)都從它抽出;拿不準時 render 它來對。 ## §1 先分類:目的 → deck 類型 兩類的密度、語言、標題、節奏直接衝突,選錯整份走鐘。定了就只讀對應專章,§4 共用。 | | 報告 deck(技術簡報) | 分鏡 deck(工作坊簡報) | |---|---|---| | 場景 | lab talk / pitch / demo / 現場報告 | 現場工作坊 / hands-on(邊講邊操作) | | 語言 | 投影片英文 | 英文短標題 + 中文一句 caption | | 密度 | 高,nested bullets 塞滿 | 極低,一頁一 beat、一句話 | | 標題 | claim / dash 句型 | 英文短語,是節奏器不是內容 | | 頁數 | 正常 | 傳統的 3–4 倍(翻頁即動畫) | | 專章 | §3A | §3C | 分鏡 deck 一頁 ≤15 秒,節奏由翻頁製造。 母片是為報告 deck 做的(title 36 / body 24pt)。分鏡 deck 的落地缺口見該章「落地限制」,別假裝母片預設就對。 ## §2 共用底線:WinLab 官方規範 Source of truth 是 NYCU-WinLab/plugin 的 `winlab:slides` skill(https://github.com/NYCU-WinLab/plugin/tree/main/skills/slides,實驗室共識,RFC 2119;取代舊的 winlab-skills repo)。以下是它的 MUST / MUST NOT,兩類 deck 都守(例外見末),報告 deck 以此當 lab talk 驗收底線。官方更新就回來對齊。 - 標題:清楚表達該頁意圖、全 deck 唯一、直接對應主題;同主題一頁放不下用 `(1/2)` `(2/2)`。 - Context before detail:先背景 / 動機 / 問題,再細節 / 方法 / 數字,不一上來丟實作或結果。每主題照 situation → problem → decision → outcome 鋪,連續 slide 因果接得上。 - Make the point obvious:每頁 takeaway 一眼可見(claim 標題 / 粗體 / 色 / callout / 頂部一句結論),不埋進密集段落、表格 cell 或長 bullet 末。 - One topic, one slide:同主題的介紹 + 結論放同一頁;不把同內容拆多頁、不換標題重講、不把不相關主題塞一頁。 - Bullet 階層:層級關係清楚(§3A 的 L0–L3)。 - 縮寫:所有英文縮寫給全名(官方 SHOULD:在前段 slide 的 title 或 L0 bullet 給)。 - 流程圖 / pipeline:附步驟描述(見 §4 架構圖)。 刻意偏離官方(其餘照守): 1. 官方 SHOULD「每 bullet ≤1 行」是單一密度;我們按類別分:報告 deck 高密度 nested(撐不過一行才拆下一層)、分鏡 deck 一句話。 2. 分鏡 deck 刻意違反「標題唯一」與「One topic, one slide」:同圖差分讓同標題 / 同主題跨數十頁,是節奏設計。報告 deck 仍守。 ## §3A 報告 deck(技術簡報) 投影片英文、高密度,整份是一條線。 ### Cover 全用 `cover` layout,三件東西: - Title:整份 deck 名稱(英文) - 日期 `YYYY/M/D`(斜線,不是 ISO `YYYY-MM-DD`)→ spec `date` - 中文姓名 詹詠翔(整份英文也一樣)→ spec `author` 機構 / footer(如 `NYCU CS`)是母片自帶,不寫進 spec。 ### Outline - 每條是幾個字的 section label,不是句子:`Plugin Structure` / `Components` / `Use Cases`,不寫 `What problem we are trying to solve` - 一條 = 一個 section;section 內多張 slide 只限不同內容的展開(例:`Components` 對一張總表 + 每元件一張) - 排列順序 = section 出場順序;`current` 指對當前 section ### Content slides - Title = 這頁的 claim 或冒號句型,例 `Skill: instructions Claude can load on demand`。不用破折號(Loki 的投影片規則)。`Background` / `Details` / `Discussion` 這種空殼分類名禁用。 - Body 多數用 nested bullets;N 項並排比較用 `two-col` 或架構圖;檔案 / 目錄結構用 ASCII tree(`├── └── │` 等寬)整段塞進一個 bullet 的 text。 - builder 沒有原生 table:N items × M dimensions 用 `two-col`(2 項)或畫成架構圖;真要表格就 render 後進 PowerPoint 手加,或擴 builder(TODO)。 - 命名編碼行為:元件 / 實驗組 / baseline 的名字說明行為(`lazy-wake` vs `eager-wake`),不用 `config1` / `Method A`;定了全 deck 一致。 - 資訊不裸奔:定義 / 公式 / 架構圖 / 數據圖後接一句「這代表…」;圖表由講者指認特徵(「注意 t=30 這裡驟降 = hibernation 觸發」);數字給參照系(`8GB → 4.8GB,同機多跑一倍 agent`),不裸給百分比。 #### Bullet hierarchy(L0–L3,寫進 `bullets[].level`) | Level | 角色 | 範例 | |-------|------|------| | L0 | section header,以 `:` 結尾 | `File:` / `Trigger:` / `What it does:` | | L1 | section 下的單一 item | `Claude picks based on description` | | L2 | L1 的細分、選項、多步驟 | `` with frontmatter `name`, `description`, … `` | | L3 | L2 的具體例子 / 列舉 | `GitHub, Linear, Notion, Slack, …` | - 同層 bullets 是同類關係:都是並列 facts、alternatives 或 steps - 一個 bullet 一件事;兩件就拆同層兩條,或拆 parent + children - L0 句尾 `:`,L1+ 不加結尾標點 - 不必每張都用到 L2 / L3 ### Story arc - 每張內容頁的 takeaway 接到下一張的前提;從 outline 順著讀要跟播放順序對得起來 - 跨 section 前放一張 `section` divider - 資訊排程照聽眾的認知順序,不照系統架構或開發時間;支線進不來就明講掛起「先記住有 X,§Y 會回來收」 - 重點預告放在內容之前(「這頁只要記住一件事」「接下來注意 X」);demo 前先說等下會看到什麼、該盯哪裡 - Old before new:句首擺前面已建立的資訊,句尾才帶新東西。例:上一張講完 `Transcript Store`,下一句從它接 `The store feeds the agent prompt`。 - 句子要有明確主詞:不寫 `It improves performance`,寫 `Caching cuts p99 latency by 40%`。代稱(`the store`、`ASR`、`this pipeline`)先有全名 / 定義才用;寧可重複明確名詞,也不換成模糊代稱。 ### Slide copy(英文) - 不用學術腔、不用 marketing 詞(`revolutionary` / `best-in-class` / `seamlessly`) - 程式碼路徑 / 識別字 / config key 用 backtick:`` `agents/.md` ``、`` `SessionStart` `` ### Speaker notes(`notes` 欄位,可選) - 要寫就用中文(投影片英文、note 中文) - 跟著 slide 的 bullet 順序,一條 bullet 一段 - 寫 why / source / example / 數字怎麼來,不是逐字念投影片 - Cover / outline / divider / 純 demo 頁可不寫;複雜論述頁建議寫 - 對外分享(export 給聽眾)前通常清掉 ## §3C 分鏡 deck(工作坊簡報) 給現場 hands-on 工作坊 / live 課程:講者在場、學員邊聽邊操作。翻頁本身就是動畫,頁數不是成本,單頁停留時間才是。一頁一個 beat、單頁 ≤15 秒,總頁數是傳統 deck 的 3–4 倍(225 頁 ≈ 傳統 60 頁的內容量)。師承 Lessig Method、高橋メソッド、assertion-evidence、Duarte 的 progressive disclosure。 黃金標準是 `Claude Code CLI 理念與實作`(MTK 課程 deck,iCloud `Projects/nycu-winlab/mediatek.winlab.tw/Claude Code CLI 理念與實作.pptx`)。 ### 版式契約(每頁三段) - 上:英文短標題(特大、粗黑),短語即可(`Assemble the Context` / `Too Bad!`),不用完整 claim 句 - 中:一張圖(架構差分圖 / terminal 截圖 / 迷因擇一);沒圖的純文字 beat 頁置中 1–3 短句 - 下:中文一句 caption。這行才是 deck 的 script,抽掉講者要能靠它自讀。每頁必寫、只寫一句、關鍵詞上色 ### 視覺語意(全 deck 一致) 1. 雙色:藍 = 已知 / 背景,橘 = 當前焦點 / 新登場。每翻一頁只有橘色的位置在動;caption 關鍵詞同步用橘。 2. 虛線 = 容器邊界(Claude Code、Context),實心圓角框 = 元件。與 §4 diagram 的 zone 語意一致。 3. 概念 vs 實況分離:概念用白底手繪風方塊圖,實況用原色深底 terminal 截圖,交替出現,學員一眼分得出模型與真畫面。 ### 節奏機制(組合使用) 1. 一頁一動作:把 build 動畫拆成獨立頁,一頁只推進一件事(一個元件登場、一條線亮起、一個問題拋出)。 2. 同圖差分:一張底圖跨數十頁,只換 highlight 與周邊小標籤。底圖元素位置永不移動(觀眾的空間記憶是資產),新元件在最初版就留好位。 3. 提問頁當鉤子:每 3–5 頁插一頁純提問(`What's in Context?` / `Why This Time?`),答案永遠不跟問題同頁。 4. 停頓點標時間:`Hands-on Time` 與 `Break` 頁標分鐘數(5 / 15 / 25 min);學員的操作指令逐字放在頁上。 5. 模板化重複:重複段落(如多個 checkpoint)走固定模板:痛點 → Good Idea → Goal → Steps → 驗證。 ### 敘事邏輯 1. 現象先於術語:先讓學員看到行為(說嗨、它記得我),再問「裡面是什麼」;每個新概念由上一層的殘留疑問驅動(剝洋蔥)。 2. 單一 running example 貫穿:每個新機制都回到同一張迴圈圖重走一遍。比喻域儘量與練習域雙關(用圖書館比喻 Skills,練習題就是圖書館系統)。 3. 地圖圖開場、結尾合體:骨架用一張中心輻射地圖;每講完一個機制回地圖補一個四字定位(常駐指令 / 按需知識 / 外部能力…);結尾把補滿的地圖再放一次當總結頁。 4. 收在能力進化:結尾用第二人稱寫學員獲得的能力(「你已經不用一句一句交代了」),不重列名詞。 ### 迷因 迷因是情緒標點,只放在「疑問」與「失望 / 轉折」的 beat 頁,一份 ≤5 張,不進技術圖。判準:抽掉迷因,該頁還成立。 ### 維護代價 - 底圖沒鎖定前不要開始複製頁;改版時列出「所有含此圖的頁」逐頁改 - 幾乎不可轉印講義;要講義另出濃縮版 ### 落地限制 builder 目前產不出分鏡 deck:(a) 無「大標 + 置中圖 + 底部 caption」版式;(b) diagram 鎖白底黑字,無 per-box 顏色 override,做不了藍 / 橘差分;(c) caption inline 上色未開放。現行做法:本章當內容與分鏡規範(outline / 每頁 beat / caption 全文照本章產出),落地進 Keynote / PowerPoint 手做;或擴 builder(TODO:`beat` layout + box `color` override + inline run 上色)。 ## §4 落地引擎(報告 deck) ### Tooling 全在本 skill 目錄,`uv` 依 PEP 723 自動裝 `python-pptx`: - `builder.py`:`uv run builder.py template.pptx ` - `template.pptx`:WinLab 母片(layout 見下) - `inspect_pptx.py` / `colors.py`:`uv run inspect_pptx.py