--- name: ppt-brand-voice description: "PPT pipeline 品牌声音 skill — public target `skills/ppt-brand-voice/SKILL.md`。锁定 MIRISE 品牌配色 / 字号 / 调性。Mode 1:从 master-template.css 抽取主题 tokens 注入 SlideSpec.theme。Mode 2(PR3+):anti-AI-tone 检查。" --- # ppt-brand-voice 本 skill 是 PPT pipeline 的品牌 SSOT 中介——把"品牌锁定在 CSS"的单一真源翻译成 SlideSpec 可消费的 JSON tokens。 ## 输入 - `cssPath`:`agents/ppt-pipeline/assets/master-template.css` 的绝对路径 ## Mode 1:主题 tokens 抽取(brand-theme) 把 master-template.css `:root` 的 7 主配色 + 5 证据色 + 白色 + 8 字号抽出成 JSON。 ### 调用 ```bash "$MIRISE_BUN_BIN" agents/ppt-pipeline/skills/brand-voice/scripts/brand-theme.ts \ agents/ppt-pipeline/assets/master-template.css ``` ### 输出 ```json { "colors": { "primary": "#123E93", "deep": "#0A1633", "accent": "#FF9B3F", "bg": "#F5F8FF", "text": "#3E3E3E", "muted": "#999999", "line": "#E0E0E0", "white": "#FFFFFF", "success": "#2E7D4F", "warn": "#D97706", "calc": "#7C3AED", "client": "#0284C7", "assume": "#DC2626" }, "fontSizes": { "coverTitle": "44pt", "coverSub": "20pt", "chapterTitle": "36pt", "pageTitle": "24pt", "pageSub": "14pt", "body": "12pt", "caption": "10pt", "footer": "9pt" } } ``` ### 消费方 - PR3 `skills/slide-architect/SKILL.md` — 生成 SlideSpec 时把本 JSON 塞进 `spec.theme` - PR5+ pptx 渲染 — 从 `spec.theme` 读色值 ### 契约 - CSS 是 SSOT。改配色 → 改 CSS → 本 skill 自动反映;禁止在其他地方硬编码色值。 - 13 colors + 8 fontSizes 缺一会让 `extractBrandTheme` 抛错(见 `scripts/brand-theme.ts`)。 ## Mode 2(占位):anti-AI-tone 检查 PR3 交付。读取 `context/anti-ai-tone-rules.md` 词表,对页面文案打分 `ai_tone_score ∈ [0,100]`。