--- name: cheat-sheet description: 将 PDF/Word/Markdown 学习资料转化为精炼的知识浓缩卡文档。支持三种风格(知识点速查卡/思维导图式/Q&A式),输出双栏小字 PDF。当用户说"生成知识浓缩卡"、"生成 Cheatsheet"、"帮我做个速查表"、"把这个资料整理成一页纸"、"做个知识卡片"时触发。**不处理**:基于材料出题(→ quiz-mastery)、长期学习项目(→ study-buddy)。 --- # Cheatsheet 生成器 ## 你做什么 把用户的学习资料(PDF/Word/Markdown/文本)压缩成一份**双栏、小字、信息密度高**的 Cheatsheet 文档(PDF 格式)。 **核心原则:只保留干货,砍掉废话。** --- ## ⚠️ 铁律:避免重复创建 生成 Cheatsheet 前,**先扫描输出目录**检查是否已有同主题文件: - **已存在** → 问用户"已经有一份 [文件名] 了,覆盖 / 新建一份 / 跳过?" 等用户回复再动手 - **不存在** → 直接生成 - **绝不**未经询问直接覆盖 --- ## 工作流程 ### 步骤 1:接收资料 用户提供学习资料文件,支持格式: - `.pdf` — 调 PDF skill 的 process 路线提取文本 - `.docx` — 调 PDF skill 的 process 路线提取文本 - `.md` / `.txt` — 直接读取 **提取文本命令:** ```bash # PDF 提取文本 python3 "$PDF_SCRIPTS/pdf.py" extract.text # Word 转 PDF 后提取(如需要) python3 "$PDF_SCRIPTS/pdf.py" convert.office ``` 其中 `$PDF_SCRIPTS` 为 PDF skill 的 scripts 目录路径,需从 PDF skill 的 SKILL.md 位置推导。 如果用户没有提供文件而是直接贴了文本内容,跳过提取步骤,直接用文本。 --- ### 步骤 2:选择风格 **必须询问用户**想要哪种风格(不要自己替用户选): 向用户展示以下选项: 1. 📋 **知识点速查卡** — 核心概念 + 定义 + 关键公式/要点,一眼扫到,适合考前突击 2. 🌳 **思维导图式** — 按层级结构组织(大标题→子标题→要点),有大纲感,适合梳理体系 3. ❓ **Q&A 式** — 把知识点变成"问题→答案"对,适合自测复习 用户选择后进入步骤 3。 --- ### 步骤 3:LLM 提炼内容 根据用户选择的风格,构建不同的 prompt 让 LLM 从原文中提炼 cheatsheet 内容。 #### 风格 1:知识点速查卡 提炼规则: - 提取所有核心概念、定义、公式、关键数据 - 每个知识点用 **术语:一句话解释** 的格式 - 相关知识点分组,每组有小标题 - 重要公式/代码片段原样保留 - 砍掉所有举例、过渡句、背景铺垫 输出结构: ``` ## [分组标题] - **术语A**:一句话定义 - **术语B**:一句话定义 - 📐 公式:`公式内容` ## [分组标题] ... ``` #### 风格 2:思维导图式 提炼规则: - 提取文档的层级结构(章→节→要点) - 每个节点用最简短的语言概括 - 最多 3 级深度(再深就塞不进一页了) - 用缩进和符号表达层级关系 输出结构: ``` # 主题 ## 一级分支 ├─ 二级要点 │ ├─ 细节 1 │ └─ 细节 2 └─ 二级要点 └─ 细节 ``` #### 风格 3:Q&A 式 提炼规则: - 把每个知识点转化成一个问题 - 答案控制在 1-3 句话 - 问题从基础到进阶排列 - 易混淆的概念出辨析题 输出结构: ``` ## [主题分组] **Q:什么是 XXX?** A:一句话回答。 **Q:XXX 和 YYY 的区别?** A:简短对比。 ``` --- ### 步骤 4:用户确认与调整 LLM 生成内容后,**先以文本形式展示给用户**,询问: > "内容整理好了,你看看有没有要调整的?比如: > - 某些部分要加重点标记? > - 某些内容要删掉或补充? > - 排版上有什么偏好?(比如字号再小一点、分区颜色区分等)" 用户确认"可以"后,进入步骤 5。 用户提出修改 → 调整内容 → 再次展示 → 等待确认。 --- ### 步骤 5:生成 PDF 调用 PDF skill 的 **Report 路线(ReportLab)** 生成双栏 PDF。 **排版规格(默认值):** | 参数 | 默认值 | 说明 | |------|--------|------| | 页面大小 | A4 | 可按用户要求调整 | | 栏数 | 双栏 | 默认双栏,用户可选单栏 | | 正文字号 | 8pt | 信息密度优先,可按用户要求调整 | | 标题字号 | 10pt(一级)/ 9pt(二级) | | | 行距 | 1.2 | 紧凑但可读 | | 页边距 | 上下左右各 12mm | 最大化内容区域 | | 字体 | 中文用 UniSong/UniHei,英文用 Helvetica | | **生成流程:** 1. 将 LLM 提炼的 Markdown 内容转换为 ReportLab 排版指令 2. 调 PDF skill 的 report 路线生成 PDF 3. 生成文件路径告知用户 **调用 PDF skill 时遵循其 SKILL.md 中的所有规则**,包括: - CJK 字体检查 - 表格溢出防护 - 页面填充率检查 - 元数据设置 --- ### 步骤 6:交付 输出给用户: - 📄 PDF 文件路径 - 文件大小、页数 - 提示用户可以继续调整 --- ## 注意事项 ### 内容质量 - **不编造内容**:所有知识点必须来自原文,不能自由发挥 - **不遗漏关键内容**:核心概念、公式、定义必须保留 - **术语保持原文用词**:不要擅自替换专业术语 ### 文件操作 - 生成的 PDF 默认保存到工作区根目录,文件名格式:`知识浓缩卡_[主题]_[日期].pdf` - 查重见上方"⚠️ 铁律:避免重复创建" --- ## 与其他 Skill 的关系 | Skill | 关系 | |-------|------| | PDF skill | 调用其 process 路线提取文本,调用其 report 路线生成 PDF | | study-buddy | study-buddy 可在用户完成学习项目后推荐生成 cheatsheet | | quiz-mastery | 无直接关系,但 cheatsheet 内容可作为出题的知识点来源 | --- ## 文件结构 ``` skills/cheat-sheet/ ├── SKILL.md ← 当前文件 ``` 本 skill 是纯流程指引,不包含独立脚本。所有文件操作和 PDF 生成通过调用 PDF skill 完成。