From 604f5f335be8fd59b4e4c65c525f7427e1b6f36b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E6=B5=A9?= Date: Thu, 23 Apr 2026 22:08:49 +0800 Subject: [PATCH] Initial release: magazine-web-ppt skill v1.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A Claude Code skill for generating single-file HTML horizontal-swipe presentations in "e-magazine × e-ink" style. - SKILL.md: 6-step workflow with requirement discovery - assets/template.html: runnable seed (CSS + WebGL + paging JS) - references/layouts.md: 10 page layouts - references/themes.md: 5 color presets (no custom hex allowed) - references/components.md: font/grid/icon/callout/stat/pipeline catalog - references/checklist.md: P0-P3 graded QA checklist Co-Authored-By: Claude Opus 4.7 --- LICENSE | 21 ++ README.md | 103 +++++++ SKILL.md | 264 ++++++++++++++++ assets/template.html | 603 +++++++++++++++++++++++++++++++++++++ references/checklist.md | 265 ++++++++++++++++ references/components.md | 363 ++++++++++++++++++++++ references/layouts.md | 630 +++++++++++++++++++++++++++++++++++++++ references/themes.md | 122 ++++++++ 8 files changed, 2371 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 SKILL.md create mode 100644 assets/template.html create mode 100644 references/checklist.md create mode 100644 references/components.md create mode 100644 references/layouts.md create mode 100644 references/themes.md diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a638b33 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 op7418 (歸藏) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..0eb71b8 --- /dev/null +++ b/README.md @@ -0,0 +1,103 @@ +# Magazine Web PPT · 电子杂志风网页 PPT Skill + +一个 [Claude Code / Claude Agent Skills](https://agentskills.io/) 技能,用于生成**单文件 HTML 横向翻页 PPT**,视觉基调是"**电子杂志 × 电子墨水**"——像 *Monocle* 贴上了代码的样子。 + +> 由 [歸藏](https://x.com/op7418) 在"一人公司:被 AI 折叠的组织"、"一种新的工作方式"等线下分享中沉淀而成,踩过的每一个坑都写进了 `checklist.md`。 + +## 效果 + +- 🖋 **衬线大标题 + 非衬线正文 + 等宽元数据**的三级字体分工 +- 🌊 **WebGL 流体/色散背景**,hero 页可见,正文页克制 +- 📐 **横向左右翻页**:键盘 ← → / 滚轮 / 触屏滑动 / 底部圆点 / ESC 索引 +- 🎨 **5 套主题色预设**:墨水经典 / 靛蓝瓷 / 森林墨 / 牛皮纸 / 沙丘 +- 🧩 **10 种页面布局**:开场封面、章节幕封、数据大字报、左文右图、图片网格、Pipeline、悬念问题、大引用、Before/After 对比、图文混排 +- 📄 **单文件 HTML**:不需要构建、不需要服务器,浏览器直接打开 + +## 适合 / 不适合 + +**✅ 合适**:线下分享 / 行业内部讲话 / 私享会 / AI 产品发布 / demo day / 带强烈个人风格的演讲 + +**❌ 不合适**:大段表格数据 / 培训课件(信息密度不够)/ 需要多人协作编辑(静态 HTML) + +## 安装 + +把整个 skill 目录放进 Claude Code 的 skills 目录: + +```bash +git clone https://github.com/op7418/guizang-ppt-skill.git ~/.claude/skills/magazine-web-ppt +``` + +Claude Code 会在对话里自动发现并调用这个 skill。触发关键词: + +- "帮我做一份杂志风 PPT" +- "生成一个 horizontal swipe deck" +- "editorial magazine style presentation" +- "electronic ink 风格演讲 slides" + +## 使用流程 + +Skill 本身是结构化的 6 步工作流,Claude 会逐步引导: + +1. **需求澄清** — 6 问清单:受众、时长、素材、图片、主题色、硬约束 +2. **拷贝模板** — `assets/template.html` → 项目目录,改 ``,换主题色 +3. **填充内容** — 从 10 种 layout 骨架里挑、粘、改文案(先做类名预检 + 主题节奏规划) +4. **自检** — 对照 `references/checklist.md`,P0 级问题必须全过 +5. **预览** — 浏览器直接打开 +6. **迭代** — inline style 改字号/高度/间距 + +详细说明见 [`SKILL.md`](./SKILL.md)。 + +## 目录结构 + +``` +magazine-web-ppt/ +├── SKILL.md ← Skill 主文件:工作流、原则、常见错误 +├── README.md ← 本文件 +├── assets/ +│ └── template.html ← 完整可运行的种子 HTML(CSS + WebGL + 翻页 JS 全配好) +└── references/ + ├── components.md ← 组件手册(字体、色、网格、图标、callout、stat、pipeline) + ├── layouts.md ← 10 种页面布局骨架(可直接粘贴) + ├── themes.md ← 5 套主题色预设(只能选不能自定义) + └── checklist.md ← 质量检查清单(P0 / P1 / P2 / P3 分级) +``` + +## 主题色预设 + +从 `references/themes.md` 里选一套——**不允许自定义 hex 值**,保护美学比给自由更重要。 + +| 主题 | 适合场景 | +|------|---------| +| 🖋 墨水经典 | 通用默认、商业发布、不知道选啥 | +| 🌊 靛蓝瓷 | 科技 / 研究 / AI / 技术发布会 | +| 🌿 森林墨 | 自然 / 可持续 / 文化 / 非虚构 | +| 🍂 牛皮纸 | 怀旧 / 人文 / 文学 / 独立杂志 | +| 🌙 沙丘 | 艺术 / 设计 / 创意 / 画廊 | + +切换主题只需替换 `template.html` 开头 `:root{}` 里的 6 行变量,其他 CSS 全走 `var(--...)`。 + +## 核心设计原则 + +1. **克制优于炫技** — WebGL 背景只在 hero 页透出 +2. **结构优于装饰** — 信息靠字号 + 字体对比 + 网格留白,不用阴影和浮动卡片 +3. **图片是第一公民** — 只裁底部,顶部和左右完整 +4. **节奏靠 hero 页** — hero / non-hero 交替,才不累眼睛 +5. **术语统一** — Skills 就是 Skills,不中英混译 + +## 视觉参考 + +- [*Monocle*](https://monocle.com) 杂志的版式 +- YC Garry Tan "Thin Harness, Fat Skills" +- 歸藏线下分享 PPT 系列 + +## 贡献 + +Bug、排版问题、新布局需求——欢迎开 Issue 或 PR。改动请优先: + +- 在 `template.html` 里补类,不要让 layouts.md 使用未定义的类 +- 把踩过的坑写到 `checklist.md` 对应的 P0 / P1 / P2 / P3 级别 +- 新主题色进 `themes.md` 并给出适合的场景 + +## License + +MIT © 2026 [op7418](https://github.com/op7418) diff --git a/SKILL.md b/SKILL.md new file mode 100644 index 0000000..e114530 --- /dev/null +++ b/SKILL.md @@ -0,0 +1,264 @@ +--- +name: magazine-web-ppt +description: 生成"电子杂志 × 电子墨水"风格的横向翻页网页 PPT(单 HTML 文件),含 WebGL 流体背景、衬线标题 + 非衬线正文、章节幕封、数据大字报、图片网格等模板。当用户需要制作分享 / 演讲 / 发布会风格的网页 PPT,或提到"杂志风 PPT"、"horizontal swipe deck"、"editorial magazine"、"e-ink presentation"时使用。 +--- + +# Magazine Web Ppt + +## 这个 Skill 做什么 + +生成一份**单文件 HTML**的横向翻页 PPT,视觉基调是: + +- **电子杂志 + 电子墨水**混血风格 +- **WebGL 流体 / 等高线 / 色散背景**(hero 页可见) +- **衬线标题(Noto Serif SC + Playfair Display)+ 非衬线正文(Noto Sans SC + Inter)+ 等宽元数据(IBM Plex Mono)** +- **Lucide 线性图标**(不用 emoji) +- **横向左右翻页**(键盘 ← →、滚轮、触屏滑动、底部圆点、ESC 索引) +- **主题平滑插值**:翻到 hero 页时颜色和 shader 柔顺过渡 + +这个 skill 的美学不是"商务 PPT",也不是"消费互联网 UI"——它像 *Monocle* 杂志贴上了代码后的样子。 + +## 何时使用 + +**合适的场景**: +- 线下分享 / 行业内部讲话 / 私享会 +- AI 新产品发布 / demo day +- 带有强烈个人风格的演讲 +- 需要"一次做完,不用翻页工具"的网页版 slides + +**不合适的场景**: +- 大段表格数据、图表叠加(用常规 PPT) +- 培训课件(信息密度不够) +- 需要多人协作编辑(这是静态 HTML) + +## 工作流 + +### Step 1 · 需求澄清(**动手前必做**) + +**如果用户已经给了完整的大纲 + 图片**,可以跳过直接进 Step 2。 + +**如果用户只给了主题或一个模糊想法**,用这 6 个问题逐个对齐后再动手。不要基于猜测就开始写 slide——一旦结构定错,后期翻修代价很高: + +#### 6 问澄清清单 + +| # | 问题 | 为什么要问 | +|---|------|-----------| +| 1 | **受众是谁?分享场景?**(行业内部 / 商业发布 / demo day / 私享会) | 决定语言风格和深度 | +| 2 | **分享时长?** | 15 分钟 ≈ 10 页,30 分钟 ≈ 20 页,45 分钟 ≈ 25-30 页 | +| 3 | **有没有原始素材?**(文档 / 数据 / 旧 PPT / 文章链接) | 有素材就基于素材,没有就帮他搭 | +| 4 | **有没有图片?放在哪?** | 详见下方"图片约定" | +| 5 | **想要哪套主题色?** | 见 `references/themes.md`,5 套预设挑一 | +| 6 | **有没有硬约束?**(必须包含 XX 数据 / 不能出现 YY) | 避免返工 | + +#### 大纲协助(如果用户没有大纲) + +用"叙事弧"模板搭骨架,再填内容: + +``` +钩子(Hook) → 1 页 : 抛一个反差 / 问题 / 硬数据让人停下来 +定调(Context) → 1-2 页 : 说明背景 / 你是谁 / 为什么讲这个 +主体(Core) → 3-5 页 : 核心内容,用 Layout 4/5/6/9/10 穿插 +转折(Shift) → 1 页 : 打破预期 / 提出新观点 +收束(Takeaway) → 1-2 页 : 金句 / 悬念问题 / 行动建议 +``` + +叙事弧 + 页数规划 + 主题节奏表(见 `layouts.md`),**三张表对齐后**再进 Step 2。 + +大纲建议保存为 `项目记录.md` 或 `大纲-v1.md`,便于后续迭代。 + +#### 图片约定(告知用户) + +在动手前向用户说清: + +- **文件夹位置**:`项目/XXX/ppt/images/` 下(和 `index.html` 同级) +- **命名规范**:`{页号}-{语义}.{ext}`,例如 `01-cover.jpg` / `03-figma.jpg` / `05-dashboard.png` + - 页号补零便于排序 + - 语义用英文,短、具体、和内容对应 +- **规格建议**: + - 单张 ≥ 1600px 宽(避免大屏模糊) + - JPG 用于照片/截图,PNG 用于透明 UI/图表 + - 总大小控制在 10MB 内(影响翻页流畅度) +- **如何替换**:保持**同名覆盖**最稳(HTML 里不用改路径);如果文件名变了,记得全局搜 `images/旧名` 改成新名 +- **没图怎么办**:和用户对齐,可以先用占位色块生成结构,等图片后期补;但要告知 layout 4/5/10 等图文混排页没图就没法验证视觉效果 + +### Step 2 · 拷贝模板 + +从 `assets/template.html` 拷贝一份到目标位置(通常是 `项目/XXX/ppt/index.html`),同时在同级建一个 `images/` 文件夹准备接图片。 + +```bash +mkdir -p "项目/XXX/ppt/images" +cp "<SKILL_ROOT>/assets/template.html" "项目/XXX/ppt/index.html" +``` + +`template.html` 是一个**完整可运行**的文件——CSS、WebGL shader、翻页 JS、字体/图标 CDN 全已预设好,只有 `<main id="deck">` 里面是 3 个示例 slide(封面、章节幕封、空白填充页)。 + +#### 2.1 · 必改占位符(**容易漏**) + +拷贝后立刻改掉以下占位符,否则浏览器 Tab 会显示"[必填] 替换为 PPT 标题"这种尴尬文字: + +| 位置 | 原始 | 需改为 | +|------|------|--------| +| `<title>` | `[必填] 替换为 PPT 标题 · Deck Title` | 实际 deck 标题(如 `一种新的工作方式 · Luke Wroblewski`) | + +每次拷贝完 template.html 第一件事:grep 一下"[必填]" 确认全部替换完。 + +#### 2.2 · 选定主题色(5 套预设 · 不允许自定义) + +本 skill **只允许从 5 套精心调配的预设里选一套**,不接受用户自定义 hex 值——颜色搭配错了画面瞬间变丑,保护美学比给自由更重要。 + +| # | 主题 | 适合 | +|---|------|------| +| 1 | 🖋 墨水经典 | 通用 / 商业发布 / 不知道选啥的默认 | +| 2 | 🌊 靛蓝瓷 | 科技 / 研究 / 数据 / 技术发布会 | +| 3 | 🌿 森林墨 | 自然 / 可持续 / 文化 / 非虚构 | +| 4 | 🍂 牛皮纸 | 怀旧 / 人文 / 文学 / 独立杂志 | +| 5 | 🌙 沙丘 | 艺术 / 设计 / 创意 / 画廊 | + +**操作**: +1. 基于内容主题推荐一套,或直接问用户选哪一套 +2. 打开 `references/themes.md`,找到对应主题的 `:root` 块 +3. **整体替换** `assets/template.html`(已拷贝版本)开头 `:root{` 块里标有"主题色"注释的那几行(`--ink` / `--ink-rgb` / `--paper` / `--paper-rgb` / `--paper-tint` / `--ink-tint`) +4. 其他 CSS 都走 `var(--...)`,无需任何其他改动 + +**硬规则**: +- 一份 deck 只用一套主题,不要中途换色 +- 不要接受用户给的任意 hex 值——委婉拒绝并展示 5 套让选 +- 不要混搭(例如 ink 取墨水经典、paper 取沙丘)——会彻底违和 + +### Step 3 · 填充内容 + +#### 3.0 · 预检:类名必须在 template.html 里有定义(**最重要**) + +**这是所有生成问题的源头**。layouts.md 的骨架使用了很多类名(`h-hero` / `h-xl` / `stat-card` / `pipeline` / `grid-2-7-5` 等),如果 `assets/template.html` 的 `<style>` 里没有对应定义,浏览器会 fallback 到默认样式——大标题变成非衬线、数据卡片挤成一团、pipeline 糊成一行、图片堆到页面底部。 + +**在写任何 slide 代码之前:** + +1. **先 Read `assets/template.html`**(至少读到 `<style>` 块末尾) +2. **对照 layouts.md 的 Pre-flight 列表**,确认你要用的每个类都在 `<style>` 里存在 +3. 如果某个类缺失:**在 template.html 的 `<style>` 里补上**,不要在每个 slide 里 inline 重写 +4. **template.html 是唯一的类名来源**——不要发明新类名,如需自定义用 `style="..."` inline + +常见容易遗漏的类(必须预先确认存在): +`h-hero` / `h-xl` / `h-sub` / `h-md` / `lead` / `kicker` / `meta-row` / `stat-card` / `stat-label` / `stat-nb` / `stat-unit` / `stat-note` / `pipeline-section` / `pipeline-label` / `pipeline` / `step` / `step-nb` / `step-title` / `step-desc` / `grid-2-7-5` / `grid-2-6-6` / `grid-2-8-4` / `grid-3-3` / `grid-6` / `grid-3` / `grid-4` / `frame` / `frame-img` / `img-cap` / `callout` / `callout-src` / `chrome` / `foot` + +#### 3.0.5 · 规划主题节奏(**和类预检同等重要**) + +**在挑布局之前**,必须先列出每一页的主题 class(`hero dark` / `hero light` / `light` / `dark`)并写到文档或草稿里对齐。详细规则看 `references/layouts.md` 开头的"主题节奏规划"一节。 + +**强制规则**: + +- 每页 section 必须带 `light` / `dark` / `hero light` / `hero dark` 之一,不要只写 `hero` +- 连续 3 页以上同主题 = 视觉疲劳,不允许 +- 8 页以上必须有 ≥1 个 `hero dark` + ≥1 个 `hero light` +- 整个 deck 不能只有 `light` 正文页,必须有 `dark` 正文页制造呼吸 +- 每 3-4 页插入 1 个 hero 页(封面/幕封/问题/大引用) + +**生成后自检**:`grep 'class="slide' index.html` 列出所有主题,人工确认节奏合理再交付。 + +#### 3.1 · 挑布局 + +**不要从零写 slide**。打开 `references/layouts.md`,里面有 10 种现成布局骨架,每种都是完整可粘贴的 `<section>` 代码块: + +| Layout | 用途 | +|---|---| +| 1. 开场封面 | 第 1 页 | +| 2. 章节幕封 | 每幕开场 | +| 3. 数据大字报 | 抛硬数据 | +| 4. 左文右图(Quote + Image) | 身份反差 / 故事 | +| 5. 图片网格 | 多图对比 / 截图实证 | +| 6. 两列流水线(Pipeline) | 工作流程 | +| 7. 悬念收束 / 问题页 | 幕末 / 收尾 | +| 8. 大引用页(Big Quote) | 衬线金句 / takeaway | +| 9. 并列对比(Before / After) | 旧模式 vs 新模式 | +| 10. 图文混排(Lead Image + Side Text) | 信息密集的图文页 | + +选对应 layout,粘过去,改文案和图片路径即可。**务必先完成 3.0 预检**。 + +#### 3.2 · 图片比例规范 + +永远用**标准比例**,不要用原图奇葩比例(如 `2592/1798`): + +| 场景 | 推荐比例 | +|------|---------| +| 左文右图 主图 | 16:10 或 4:3 + `max-height:56vh` | +| 图片网格(多图对比) | **固定 `height:26vh`**,不用 aspect-ratio | +| 左小图 + 右文字 | 1:1 或 3:2 | +| 全屏主视觉 | 16:9 + `max-height:64vh` | +| 图文混排小插图 | 3:2 或 3:4 | + +**图片绝不使用 `align-self:end`**——会滑到 cell 底被浏览器工具栏遮挡。用 grid 容器 + `align-items:start`(template 已预设)让图片贴顶即可;左列若想贴底,用 flex column + `justify-content:space-between`。 + +组件细节(字体、颜色、网格、图标、callout、stat-card 等)在 `references/components.md`。 + +### Step 4 · 对照检查清单自检 + +生成完一定要打开 `references/checklist.md`,逐项对照。里面总结了**真实迭代过程中踩过的所有坑**,P0 级别的问题(emoji、图片撑破、标题换行、字体分工)必须全部通过。 + +特别要注意的几条: + +1. **大标题必须是衬线字体**——如果显示成非衬线,99% 是 Step 3.0 预检没做,`h-hero` 类在 template.html 里缺失 +2. **图片网格里只用 `height:Nvh`,不用 `aspect-ratio`**(会撑破) +3. **图片不能堆到页面底部**——不要用 `align-self:end`,用 grid + `align-items:start`(见 Step 3.2) +4. **图片只能用标准比例**(16:10 / 4:3 / 3:2 / 1:1 / 16:9),不要复制原图的奇葩比例 +5. **中文大标题 ≤ 5 字且 `nowrap`**(避免 1 字 1 行) +6. **用 Lucide,不用 emoji** +7. **标题用衬线,正文用非衬线,元数据用等宽** + +### Step 5 · 本地预览 + +直接在浏览器打开 `index.html` 就行。macOS 下: + +```bash +open "项目/XXX/ppt/index.html" +``` + +不需要本地服务器。图片走相对路径 `images/xxx.png`。 + +### Step 6 · 迭代 + +根据用户反馈修改——模板的 CSS 已经高度参数化,90% 的调整都是改 inline style(字号 `font-size:Xvw` / 高度 `height:Yvh` / 间距 `gap:Zvh`)。 + +--- + +## 资源文件导览 + +``` +magazine-web-ppt/ +├── SKILL.md ← 你正在读 +├── assets/ +│ └── template.html ← 完整的可运行模板(种子文件) +└── references/ + ├── components.md ← 组件手册(字体、色、网格、图标、callout、stat、pipeline...) + ├── layouts.md ← 10 种页面布局骨架(可直接粘贴) + ├── themes.md ← 5 套主题色预设(只能选不能自定义) + └── checklist.md ← 质量检查清单(P0/P1/P2/P3 分级) +``` + +**加载顺序建议**: +1. 先读完 `SKILL.md`(这个文件)了解整体 +2. Step 1 需求澄清完成后,读 `themes.md` 帮用户选定一套主题色 +3. **动手前 Read `assets/template.html` 的 `<style>` 块**——这是类名的唯一来源,缺类会导致整页样式崩 +4. 读 `layouts.md` 挑布局(顶部有 Pre-flight 类名清单和主题节奏规划) +5. 细节调整时读 `components.md` 查组件 +6. 生成后读 `checklist.md` 自检(顶部 P0-0 规则强制预检) + +## 核心设计原则(哲学) + +> 这些原则是"一人公司"分享 PPT 的 5 轮迭代总结出来的。违反其中任何一条,视觉感都会垮。 + +1. **克制优于炫技** — WebGL 背景只在 hero 页透出,普通页几乎看不见 +2. **结构优于装饰** — 不用阴影、不用浮动卡片、不用 padding box,一切信息靠**大字号 + 字体对比 + 网格留白** +3. **内容层级由字号和字体共同定义** — 最大衬线 = 主标题,中衬线 = 副标,大非衬线 = lead,小非衬线 = body,等宽 = 元数据 +4. **图片是第一公民** — 图片只裁底部,保证顶部和左右完整;网格用 `height:Nvh` 固定,不要用 `aspect-ratio` 撑 +5. **节奏靠 hero 页** — hero 和 non-hero 交替,才不累眼睛 +6. **术语统一** — Skills 就是 Skills,不要中英混合翻译 + +## 参考作品 + +本 skill 的视觉基调参考了: + +- 歸藏 "一人公司:被 AI 折叠的组织" 分享(2026-04-22,27 页) +- *Monocle* 杂志的版式 +- YC 总裁 Garry Tan "Thin Harness, Fat Skills" 那篇博客的 demo + +可以把它们当做风格锚点。 diff --git a/assets/template.html b/assets/template.html new file mode 100644 index 0000000..5d0695f --- /dev/null +++ b/assets/template.html @@ -0,0 +1,603 @@ +<!DOCTYPE html> +<html lang="zh-CN"> +<head> +<meta charset="UTF-8"> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<title>[必填] 替换为 PPT 标题 · Deck Title + + + + + + + + + +
← → 翻页 · ESC 索引
+ +
+ + + + + +
+ + + + + + + + diff --git a/references/checklist.md b/references/checklist.md new file mode 100644 index 0000000..45946ca --- /dev/null +++ b/references/checklist.md @@ -0,0 +1,265 @@ +# 质量检查清单(Checklist) + +这个清单来自"一人公司"分享 PPT 的真实迭代过程。每一条都是踩过坑之后总结的,按重要性排序。 + +生成 PPT 前,先通读一遍;生成后,逐项自检。 + +--- + +## 🔴 P0 · 一定不能犯的错 + +### 0. 生成前必须通过的类名校验(最重要) + +**现象**:直接把 layouts.md 的骨架粘到新 HTML,结果样式全部丢失——大标题变成非衬线、数据大字报字体小得像正文、pipeline 多页糊成一坨、图片堆到浏览器底部。 + +**根因**:如果 `template.html` 的 `