skill-forge-hub 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +82 -150
  3. package/annual-report/SKILL.md +23 -3
  4. package/annual-report/resources/data-collection.md +20 -4
  5. package/annual-report/resources/disk-and-html.md +3 -3
  6. package/annual-report/resources/reference.html +31 -10
  7. package/annual-report/resources/usage-guide.md +8 -0
  8. package/annual-report/user-config.md +5 -5
  9. package/article-to-html/SKILL.md +26 -7
  10. package/article-to-html/design-system.md +9 -3
  11. package/article-to-html/resources/reference.html +631 -0
  12. package/article-to-html/resources/usage-guide.md +9 -1
  13. package/article-to-html/user-config.md +6 -3
  14. package/cli.js +2 -2
  15. package/daily-report/SKILL.md +23 -3
  16. package/daily-report/resources/content-rules.md +1 -1
  17. package/daily-report/resources/data-collection.md +24 -4
  18. package/daily-report/resources/disk-and-html.md +2 -2
  19. package/daily-report/resources/reference.html +24 -3
  20. package/daily-report/resources/usage-guide.md +8 -0
  21. package/daily-report/user-config.md +5 -5
  22. package/deck-stage/SKILL.md +15 -4
  23. package/deck-stage/resources/cover-template.html +3 -3
  24. package/deck-stage/resources/data-schema.md +11 -1
  25. package/deck-stage/resources/pptx-builder.js +1 -1
  26. package/deck-stage/resources/usage-guide.md +9 -2
  27. package/docs/architecture.md +89 -0
  28. package/docs/images/article-to-html.png +0 -0
  29. package/docs/images/daily-report.png +0 -0
  30. package/docs/images/deck-stage.png +0 -0
  31. package/docs/images/magic-deck.png +0 -0
  32. package/docs/images/meeting-minutes.png +0 -0
  33. package/docs/images/prompt-pouch.png +0 -0
  34. package/docs/install.md +71 -0
  35. package/magic-deck/SKILL.md +23 -8
  36. package/magic-deck/resources/content-guide.md +5 -4
  37. package/magic-deck/resources/deck-spec.md +18 -11
  38. package/magic-deck/resources/reference.html +110 -32
  39. package/magic-deck/resources/usage-guide.md +10 -2
  40. package/magic-deck/user-config.md +4 -4
  41. package/meeting-minutes/SKILL.md +51 -0
  42. package/meeting-minutes/resources/content-rules.md +57 -0
  43. package/meeting-minutes/resources/disk-and-html.md +26 -0
  44. package/meeting-minutes/resources/meeting-type-dictionary.md +24 -0
  45. package/meeting-minutes/resources/reference.html +436 -0
  46. package/meeting-minutes/resources/usage-guide.md +63 -0
  47. package/meeting-minutes/user-config.md +56 -0
  48. package/meta-forge/SKILL.md +6 -6
  49. package/meta-forge/resources/forge-rules.md +60 -10
  50. package/meta-forge/resources/usage-guide.md +7 -2
  51. package/meta-forge/user-config.md +2 -1
  52. package/monthly-report/SKILL.md +62 -0
  53. package/monthly-report/resources/content-rules.md +40 -0
  54. package/monthly-report/resources/data-collection.md +44 -0
  55. package/monthly-report/resources/date-parsing.md +18 -0
  56. package/monthly-report/resources/disk-and-html.md +29 -0
  57. package/monthly-report/resources/industry-dictionary.md +21 -0
  58. package/monthly-report/resources/reference.html +531 -0
  59. package/monthly-report/resources/usage-guide.md +75 -0
  60. package/monthly-report/user-config.md +53 -0
  61. package/package.json +9 -2
  62. package/prompt-pouch/SKILL.md +17 -2
  63. package/prompt-pouch/resources/data-format.md +1 -1
  64. package/prompt-pouch/resources/reference.html +56 -24
  65. package/prompt-pouch/resources/usage-guide.md +10 -3
  66. package/quarterly-report/SKILL.md +63 -0
  67. package/quarterly-report/resources/content-rules.md +42 -0
  68. package/quarterly-report/resources/data-collection.md +46 -0
  69. package/quarterly-report/resources/date-parsing.md +19 -0
  70. package/quarterly-report/resources/disk-and-html.md +22 -0
  71. package/quarterly-report/resources/industry-dictionary.md +21 -0
  72. package/quarterly-report/resources/reference.html +509 -0
  73. package/quarterly-report/resources/usage-guide.md +76 -0
  74. package/quarterly-report/user-config.md +53 -0
  75. package/spec-doc2spec/SKILL.md +21 -22
  76. package/spec-doc2spec/resources/checklist.md +7 -0
  77. package/spec-doc2spec/resources/images.md +14 -5
  78. package/spec-doc2spec/resources/structure.md +19 -10
  79. package/spec-doc2spec/resources/usage-guide.md +10 -8
  80. package/spec-doc2spec/user-config.md +2 -2
  81. package/spec-spec2doc/SKILL.md +4 -4
  82. package/spec-spec2doc/resources/checklist.md +6 -0
  83. package/spec-spec2doc/resources/pdf-path.md +1 -0
  84. package/spec-spec2doc/resources/usage-guide.md +2 -2
  85. package/template/SKILL.md +18 -14
  86. package/template/resources/README.md +1 -1
  87. package/template/resources/usage-guide.md +17 -0
  88. package/template/user-config.md +28 -0
  89. package/weekly-report/SKILL.md +23 -3
  90. package/weekly-report/resources/content-rules.md +1 -1
  91. package/weekly-report/resources/data-collection.md +24 -4
  92. package/weekly-report/resources/disk-and-html.md +2 -2
  93. package/weekly-report/resources/reference.html +24 -3
  94. package/weekly-report/resources/usage-guide.md +8 -0
  95. package/weekly-report/user-config.md +5 -5
@@ -0,0 +1,89 @@
1
+ # 架构与规范 · Architecture & Conventions
2
+
3
+ > 本文档描述仓库目录结构、技能形态(薄入口 + resources)、四大机制与拆分规范。This document describes the repository layout, skill anatomy (thin entry + resources), the four core mechanisms, and the splitting conventions.
4
+
5
+ ## 目录结构 · Directory Layout
6
+
7
+ ```
8
+ .
9
+ ├── README.md # 双语介绍 + 产物画廊 + 技能分类 + 技能清单 · bilingual intro, gallery, categories, skill list
10
+ ├── CHANGELOG.md # 版本变更记录 · version changelog
11
+ ├── docs/ # 文档(安装升级 / 架构规范 / 产物截图)· docs (install / architecture / screenshots)
12
+ │ ├── install.md # 安装与升级详解 · installation & upgrade
13
+ │ ├── architecture.md # 本文档 · this document
14
+ │ └── images/ # 产物成品截图 · output screenshots
15
+ ├── cli.js # 安装器(ls / init / update,零依赖 Node>=14)· installer, zero-dependency Node>=14
16
+ ├── package.json # npm 包定义(skill-forge-hub,命令名 skill-forge)· npm package definition
17
+ ├── template/ # 新技能模板(薄入口 + resources 拆分规范)· new-skill template
18
+ ├── meta-forge/ # 元技能:造 skill 的 skill(四大机制植入 + 仓库登记)· meta skill: forges skills
19
+ ├── article-to-html/
20
+ │ ├── SKILL.md # 文档 → 精美 HTML 完整流程 + 逐章截图(含内嵌使用说明)
21
+ │ ├── design-system.md # 设计系统(字体 / 配色 / 排版 / 图表重绘)· design system
22
+ │ ├── user-config.md # ⚙️ 用户配置(THEME 等,升级不覆盖)· user config
23
+ │ ├── .preserve # 升级保留清单(design-system.md 用户可改)· extra preserve list
24
+ │ └── scripts/ # 字体安装 / docx 抽取 / 字体内联脚本 · font & extraction scripts
25
+ ├── daily-report/(weekly-report / monthly-report / quarterly-report / annual-report 同构 · same shape)
26
+ │ ├── SKILL.md # 薄入口:frontmatter + 生成流程 + 规则速览 · thin entry
27
+ │ ├── user-config.md # ⚙️ 用户配置(CONFIG_VERSION + 默认配置 + 自定义模板)· user config
28
+ │ └── resources/ # 重内容按生成阶段拆分,AI 按需读取 · heavy content split by stage
29
+ │ ├── usage-guide.md # 📖 使用说明(咨询应答的原样输出源)· usage guide
30
+ │ ├── date-parsing.md # 🗓 日期解析(自然语言优先)· date parsing
31
+ │ ├── data-collection.md # 📥 数据收集(多源聚合:口述 / 文字 / 文件 / 图片)· data collection
32
+ │ ├── content-rules.md # ✍️ 内容规则(聚合来源 / 纯文字模式 / 输出格式 / 写作风格)· content rules
33
+ │ ├── industry-dictionary.md # 🏭 行业适配(12 行业职业词典)· industry dictionary
34
+ │ └── disk-and-html.md # 💾 本地落盘 / HTML 样式 / content-png 截图规范 · disk & HTML spec
35
+ ├── magic-deck/
36
+ │ ├── SKILL.md # 薄入口:魔法幻灯生成流程 + 规则速览 · thin entry
37
+ │ ├── user-config.md # ⚙️ 用户配置 · user config
38
+ │ └── resources/
39
+ │ ├── usage-guide.md # 📖 使用说明(功能/热键/截图/复制/全屏)· usage guide
40
+ │ ├── deck-spec.md # 完整规范(骨架/主题色值/模板库/热键表/截图实现)· full deck spec
41
+ │ └── reference.html # 成品骨架(生成时以此为骨逐处替换内容)· output skeleton
42
+ ├── deck-stage/
43
+ │ ├── SKILL.md # 薄入口:登台 PPTX 三问交互 + 生成流程 · thin entry
44
+ │ ├── user-config.md # ⚙️ 用户配置 · user config
45
+ │ ├── package.json # 依赖声明(pptxgenjs)· dependency declaration
46
+ │ └── resources/
47
+ │ ├── usage-guide.md # 📖 使用说明 · usage guide
48
+ │ ├── data-schema.md # data.json 结构(段落 → 页类型/节色映射)· data schema
49
+ │ ├── pptx-builder.js # 真相源:读 data.json 产 16:9 pptx · source of truth
50
+ │ └── cover-template.html # 封面/结尾截图底版 · cover/closing capture template
51
+ ├── prompt-pouch/
52
+ │ ├── SKILL.md # 薄入口:锦囊管理台生成流程 · thin entry
53
+ │ ├── user-config.md # ⚙️ 用户配置(DIR/DATA_DIR/BACKUP_DIR 等)· user config
54
+ │ └── resources/
55
+ │ ├── usage-guide.md # 📖 使用说明 · usage guide
56
+ │ ├── data-format.md # prompts.json 数据格式 · data format
57
+ │ └── reference.html # 成品骨架 · output skeleton
58
+ ├── spec-doc2spec/(spec-spec2doc 同构 · same shape)
59
+ │ ├── SKILL.md # 薄入口:Pandoc 转换 + AI 校对流程 · thin entry
60
+ │ ├── user-config.md # ⚙️ 用户配置 · user config
61
+ │ └── resources/ # 分册:checklist 校对清单 / images 图片处理 / structure 目录组织 / pdf-path PDF 双路径 / usage-guide
62
+ ├── quarterly-report/ # 结构同 daily-report,季报专属差异:环比/同比双基准 / Q1-Q4 走势图 / M1-M3 月时间线
63
+ ├── meeting-minutes/ # 结构同 daily-report,纪要专属差异:五段式 / 行动项三要素 / 12 类会议词典
64
+ └── weekly-report/ # 结构同 daily-report,周报专属差异:WEEK_END 周结束日 / 周定位解析 / 本周概览卡 / 用时 X.XD(1D=8H)
65
+ ```
66
+
67
+ ## 技能形态 · Skill Anatomy
68
+
69
+ - **SKILL.md 只保留**:frontmatter、生成流程总览(每步标注读哪个 resource)、「⚙️ 默认配置」「📝 自定义模板」(用户手改的配置必须留在入口)、规则速览(3-5 条硬性规则)。SKILL.md keeps only: frontmatter, the generation-flow overview (each step names its resource), the user-config pointer, and a rules summary (3-5 hard rules).
70
+ - **resources/ 一文件一职责**:按生成阶段拆分,SKILL.md 流程节点标注 `读 resources/xxx.md`;每份 resource 独立可读,不互相引用。resources/ is one-file-one-job: split by generation stage, each file standalone, no cross-references.
71
+ - **咨询应答**:用户只问用法不要求生成时,读 `resources/usage-guide.md` 原样输出(首行标题按技能改为「XX生成器使用指南」)。Usage-only questions read usage-guide.md and echo it verbatim.
72
+ - **用户配置抽离**:所有用户可改内容在 `user-config.md`(首行 `CONFIG_VERSION`),升级永不覆盖。All user-editable content lives in user-config.md (CONFIG_VERSION on the first line), never overwritten on upgrade.
73
+
74
+ ## 四大机制 · The Four Core Mechanisms
75
+
76
+ | 机制 Mechanism | 说明 Description |
77
+ |:---|:---|
78
+ | CONFIG_VERSION 钥匙<br>CONFIG_VERSION key | `user-config.md` 首行声明配置结构版本;官方结构变化(新增/改名/删除配置键)时递增 1 并在 SKILL.md「配置版本机制」节写明迁移规则。CLI 升级与 AI 执行前都自检该版本:版本升了 → 备份 `.bak-时间戳` → 交互三选一(官方覆盖 / 保留我的 + `.upstream` 对照 / 稍后处理)。<br>First line of user-config.md declares the config-structure version; bump by 1 whenever the official structure changes (keys added / renamed / removed) and document migration rules in SKILL.md. Both the CLI updater and the AI self-check this version before running. |
79
+ | user-config 抽离<br>user-config extraction | 用户可改内容(默认配置 yaml + 自定义模板)从 SKILL.md 抽离到独立 `user-config.md`,SKILL.md 只留指引段(执行前必须先 Read)。升级时 BUILTIN_PRESERVE + 技能 `.preserve` 清单双重保护,本地修改永久保留。<br>User-editable content (default config + custom templates) is extracted from SKILL.md into user-config.md; SKILL.md keeps only the pointer. BUILTIN_PRESERVE plus the skill's .preserve list guard it on upgrade. |
80
+ | reference 双轨<br>reference dual-track | 成品 HTML 形态的技能(报表族 / 魔法幻灯 / 锦囊)以 `resources/reference.html` 为视觉真相源:生成时以此为骨逐处替换内容,保证产物样式与官方演示一致;产物头部带 `sf-template` 版本戳 + 稳定 ID meta,按「产物升级(回炉)」节可把旧产物升级到新模板。<br>Skills that produce HTML keep a reference.html as the visual source of truth; generation clones its skeleton, so output matches the official demo. Outputs carry an sf-template version stamp + stable ID meta, enabling "回炉" (reforge) upgrades of old outputs. |
81
+ | 自检纪律<br>self-check discipline | 交付前硬门禁:Playwright/Chrome headless 打开产物零 JS 错误 + 截图验证内容完整;静态门禁(grep 残留旧词 / frontmatter 与版本声明一致)。ID 格式定死(crypto.randomUUID() 标准 v4),落盘前顺扫目录查重。<br>Hard gates before delivery: headless open with zero JS errors + screenshot proof; static gates (no stale terms, consistent frontmatter). IDs are locked to the standard UUID v4 format and checked for collisions before writing. |
82
+
83
+ ## 拆分规范 · Splitting Conventions
84
+
85
+ - **新技能按 `template/` 结构创建**,目录名 = 技能名(英文短横线),并归入 README「技能分类」表对应分类 + 同步 cli.js CATEGORIES 与 package.json files。New skills follow the template/ structure, directory name = skill name (lowercase-hyphen), and must be registered in the README category table + cli.js CATEGORIES + package.json files.
86
+ - **已有技能按各自结构维护**:article-to-html 采用 SKILL.md + design-system.md + scripts/ 平铺结构(使用说明内嵌 SKILL.md「用户使用说明」节)。Existing skills keep their own shape; article-to-html uses a flat SKILL.md + design-system.md + scripts/ layout.
87
+ - **通用原则**:零外部依赖(禁 CDN / 外链,内网离线双击可开)、双系统兼容(macOS / Windows)。General principles: zero external dependencies (no CDN / external links, offline double-click works), cross-platform (macOS / Windows).
88
+ - **配置升级**:user-config.md 首行带 `CONFIG_VERSION`,官方配置结构变化时递增并写明迁移规则;CLI update 与 AI 执行时均按该版本做备份 + 迁移提示。Config upgrades: bump CONFIG_VERSION and document migration rules; both CLI update and AI execution back up and prompt accordingly.
89
+ - **元技能**:meta-forge 造技能时的规范真相源在 `resources/forge-rules.md`(澄清清单 / 结构规范 / 四大机制 / 校验清单 / 仓库登记),SKILL.md 流程节点与 template/ 模板均与之对齐。For the meta skill, forge-rules.md is the source of truth (clarification checklist / structure / four mechanisms / validation / repo registration); SKILL.md flow and template/ both align with it.
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,71 @@
1
+ # 安装与升级 · Installation & Upgrade
2
+
3
+ > 本文档详述 SkillForge 的两种安装方式、命令参考,以及升级时的配置保护机制。This document covers both install methods, the command reference, and the config-protection mechanics applied on upgrade.
4
+
5
+ ## 方式一:npm 全局安装(推荐) · Method 1: Global npm Install (Recommended)
6
+
7
+ ```bash
8
+ npm i -g skill-forge-hub
9
+ skill-forge ls # 列出全部技能与说明(只读)· list all skills (read-only)
10
+ skill-forge init # 交互式挑选技能,自动探测并安装到 AI 助手技能目录 · pick skills interactively
11
+ skill-forge update # 升级已安装技能(配置版本感知,见下)· upgrade installed skills (config-version aware)
12
+ ```
13
+
14
+ 非交互 / 指定目录场景 · Non-interactive or explicit directory:
15
+
16
+ ```bash
17
+ skill-forge init --target ~/.claude/skills --skills daily-report,weekly-report
18
+ ```
19
+
20
+ > **deck-stage 依赖说明**:deck-stage 需要 PptxGenJS。从本仓库直接 init 会连带复制技能目录内 node_modules,离线可用;npm 全局装出的包不含 node_modules,安装时会提示 `cd <技能目录>/deck-stage && npm install` 补装一次即可。
21
+ >
22
+ > **deck-stage dependency note**: deck-stage needs PptxGenJS. Installing directly from this repo copies the skill's node_modules along (works offline); the npm global package excludes node_modules, so the CLI prompts `cd <skill dir>/deck-stage && npm install` to install it once.
23
+
24
+ ## 方式二:手动复制 · Method 2: Manual Copy
25
+
26
+ 将技能目录复制到你所用的 AI 助手的技能目录(支持 SKILL.md 格式、本地加载技能的助手均可)。Copy the skill directories into your AI assistant's skill directory (any assistant supporting the SKILL.md format works).
27
+
28
+ ```bash
29
+ cp -R daily-report weekly-report monthly-report quarterly-report annual-report <你的 AI 助手技能目录>/
30
+ cp -R magic-deck prompt-pouch <你的 AI 助手技能目录>/
31
+ cp -R spec-doc2spec spec-spec2doc <你的 AI 助手技能目录>/
32
+ ```
33
+
34
+ 复制后直接说「写日报」「写周报」「写月报」「写季报」「写年报」「记会议」或丢给它一个文档即可触发;问「日报怎么用 / 周报怎么用 / 月报怎么用 / 季报怎么用 / 会议纪要怎么用 / 登台怎么用」输出使用说明。
35
+
36
+ After copying, say "写日报" (write a daily report), "记会议" (take minutes), or hand it a document to trigger a skill; asking "how to use X" prints the usage guide.
37
+
38
+ ## 命令参考 · Command Reference
39
+
40
+ | 命令 Command | 说明 Description |
41
+ |:---|:---|
42
+ | `skill-forge ls` | 列出全部技能(分类 + 名称 + 说明),只读 · List all skills (category + name + description), read-only |
43
+ | `skill-forge init` | 列清单交互挑选:a=全部安装 / 编号挑选(已装标 ★,确认时可 s 跳过已装只装新)· Interactive pick: a=all / numbered (installed marked ★; confirm with s to skip installed) |
44
+ | `skill-forge update` | 升级全部已安装技能(配置版本感知)· Upgrade all installed skills (config-version aware) |
45
+ | `skill-forge update --skills a,b` | 只升级指定技能(未安装的提示跳过)· Upgrade only the named skills (uninstalled ones are skipped with a notice) |
46
+ | `skill-forge --version` | 显示版本号 · Show version |
47
+ | `skill-forge --help` | 显示完整帮助 · Show full help |
48
+
49
+ 通用参数(init / update 通用)· Common flags (for init / update):
50
+
51
+ | 参数 Flag | 说明 Description |
52
+ |:---|:---|
53
+ | `--target <目录>`(`-t`) | 指定技能目录;缺省自动探测常见助手目录(~/.qoder-cn、~/.claude、~/.cursor 等),探测到多个时交互选择 · Explicit skill directory; defaults to auto-detecting common assistant dirs (~/.qoder-cn, ~/.claude, ~/.cursor, ...), interactive pick when several are found |
54
+ | `--skills a,b`(`-s`) | 指定技能名列表:init 时跳过选择直接安装/升级指定技能(适合脚本与单件补装);update 时只升级指定技能 · Named skill list: init skips the picker and installs/upgrades exactly these (good for scripts); update upgrades only these |
55
+ | `--yes`(`-y`) | 跳过确认直接执行;配置版本变化时默认「保留我的 + 官方版另存 .upstream 对照」· Skip confirmation; on config-version change defaults to "keep mine + official copy saved as .upstream" |
56
+
57
+ 命令别名:`list` = `ls`、`install` = `init`、`upgrade` = `update`。Command aliases: `list` = `ls`, `install` = `init`, `upgrade` = `update`.
58
+
59
+ ## 升级与配置保护 · Upgrade & Config Protection
60
+
61
+ `skill-forge update`(默认升级全部已装技能,可用 `--skills a,b` 指定)在覆盖技能文件前自动保护你的配置。`skill-forge update` (all installed skills by default, or `--skills a,b`) protects your config before overwriting any skill files.
62
+
63
+ - **常驻保护 · Always preserved**:目标目录已存在的 `user-config.md`(及技能 `.preserve` 清单声明的文件)永不被覆盖,你的本地配置永久保留;官方配置内容有更新时另存 `.upstream` 对照文件,可按需手动合并新配置点
64
+ - **版本感知 · Version aware**:官方 `user-config.md` 首行的 `CONFIG_VERSION` 高于你的本地版本(配置结构增/减/改名)时——
65
+ 1. 先把你的配置备份为 `user-config.md.bak-<时间戳>`
66
+ 2. 交互三选一:`[1] 官方覆盖`(旧配置在备份中随时找回)/ `[2] 保留我的` + 官方版另存 `.upstream` 对照(默认)/ `[3] 稍后处理`(本次不生成对照文件)
67
+ 3. `--yes` 或非交互环境默认 `[2]`,最安全
68
+ - **版本一致 · Version match**:无感升级,只更新技能文件,配置原样保留
69
+ - **结构同步 · Structure sync**:升级按 `.installed-manifest` 安装清单精准同步官方文件增删——只清理清单内官方已删除的文件与空目录,用户自建文件一律不动(旧版本安装无清单时跳过清理,升级后补写);`user-config.md`、`.preserve` 清单文件、`.upstream` 对照、`.bak-*` 备份与 `node_modules` 依赖永远不动
70
+
71
+ 技能维护者约定 · Maintainer conventions:官方配置结构每次变化(新增/改名/删除配置键)时,`user-config.md` 的 `CONFIG_VERSION` 递增 1,并在 SKILL.md「配置版本机制」节写明迁移规则(AI 每次执行前也会自检该版本)。Whenever the official config structure changes (keys added / renamed / removed), bump `CONFIG_VERSION` in `user-config.md` by 1 and document the migration rules in the SKILL.md "配置版本机制" section (the AI self-checks this version before every run).
@@ -1,14 +1,14 @@
1
1
  ---
2
2
  name: magic-deck
3
- description: 把内容做成 HTML 形态、PPT 体验的魔法幻灯(单文件离线打开、零外部依赖)。内置播放引擎(自动播放/循环/间隔可设/从头或当前播放)、键盘热键(翻页/直达/截图/复制/全屏)、十六套内置模板(经典商务/极简留白/杂志画册/黑金发布/时间线叙事/流程步骤/海报宣传/复古报纸/金融报表/蓝图工程/教学板书/高管简报/扁平磁贴/模块网格/暗夜深色/自然清新,放映时经「🎨 模板」面板随时切换
4
- + 模板面板「💼 领域」Tab 二十一套成套模板(六分类:教育学术——毕业答辩/开题报告/教学课件;职场商务——年终汇报/竞聘述职/商业计划书/求职简历;企业运营——产品发布/科技发布会/营销方案/企业培训/年会盛典;专业领域——金融分析/医疗科普/法律合规;党政政务——政务汇报/党建汇报;生活场景——餐饮品牌/旅游攻略/节日庆典/公益慈善,一键生成整套页面——封面+目录+内容页+图表页,两段确认可撤销)+ 图表动画五式(柱状生长/折线描画/饼图扇入/仪表扫弧/数字滚动,图表挂 data-anim-chart 翻页自动播放、翻回重放,保留图表自身动画)——可应用到全部页/仅本页/勾选页,支持「预览本页」先看效果再应用,标题自动映射到模板固定位置)、编辑能力(撤销/重做 Ctrl+Z、右侧页面管理边栏:缩略图跳页/新页/复页/排序/删页)+ 十七套主题面板即点即换(全部页/仅本页自由换肤)、动画库(右侧边栏「⚙ 工具」Tab:翻页风格八套 / 元素入场十二式 / 离场十二式 / 强调八式 / 标题文字动画四式,应用范围全部页面或仅本页,即点即换、选择记忆)、页内连接与外部链接、逐页 PNG 截图(本页/选页批量,选页面板默认全选=一键导出全部页)与本页/选页批量文字复制(均不含任何操作元素)、全屏放映纯净模式(无关元素自动退场)。当用户请求把内容做成幻灯片/PPT/演示文稿、生成 HTML 幻灯、做分享页/汇报页,提到 magic-deck 或 /magic-deck,或询问其用法(怎么用/使用说明/能干什么)时使用。用户要可编辑 .pptx 文件(导出 pptx、转成 PPT 文件)时不用本 skill(交给 deck-stage);「做 PPT/演示文稿」未言明产出形态时先 AskUserQuestion 二选一(HTML 网页幻灯 → 本 skill;.pptx 可编辑文件 → deck-stage),不擅自默认。
3
+ description: 把内容做成 HTML 形态、PPT 体验的魔法幻灯(单文件离线打开、零外部依赖)。内置播放引擎(自动播放/循环/间隔可设/从头或当前播放)、键盘热键(翻页/直达/截图/复制/全屏)、十七套内置模板(经典商务/极简留白/杂志画册/黑金发布/时间线叙事/流程步骤/海报宣传/复古报纸/金融报表/蓝图工程/教学板书/高管简报/扁平磁贴/模块网格/暗夜深色/自然清新/统计图表,放映时经「🎨 模板」面板随时切换
4
+ + 模板面板「💼 领域」Tab 二十二套成套模板(六分类:教育学术——毕业答辩/开题报告/教学课件;职场商务——年终汇报/竞聘述职/商业计划书/求职简历;企业运营——产品发布/科技发布会/营销方案/销售方案/企业培训/年会盛典;专业领域——金融分析/医疗科普/法律合规;党政政务——政务汇报/党建汇报;生活场景——餐饮品牌/旅游攻略/节日庆典/公益慈善,一键生成整套页面——封面+目录+内容页+图表页,两段确认可撤销)+ 图表动画五式(柱状生长/折线描画/饼图扇入/仪表扫弧/数字滚动,图表挂 data-anim-chart 翻页自动播放、翻回重放,保留图表自身动画)——可应用到全部页/仅本页/勾选页,支持「预览本页」先看效果再应用,标题自动映射到模板固定位置)、编辑能力(撤销/重做 Ctrl+Z、右侧页面管理边栏:缩略图跳页/新页/复页/排序/删页)+ 十七套主题面板即点即换(全部页/仅本页自由换肤)、动画库(右侧边栏「⚙ 工具」Tab:翻页风格八套 / 元素入场十二式 / 离场十二式 / 强调八式 / 标题文字动画四式,应用范围全部页面或仅本页,即点即换、选择记忆)、页内连接与外部链接、逐页 PNG 截图(本页/选页批量,选页面板默认全选=一键导出全部页)与本页/选页批量文字复制(均不含任何操作元素)、全屏放映纯净模式(无关元素自动退场)。当用户请求把内容做成幻灯片/PPT/演示文稿、生成 HTML 幻灯、做分享页/汇报页,提到 magic-deck 或 /magic-deck,或询问其用法(怎么用/使用说明/能干什么)时使用。用户要可编辑 .pptx 文件(导出 pptx、转成 PPT 文件)时不用本 skill(交给 deck-stage);「做 PPT/演示文稿」未言明产出形态时先 AskUserQuestion 二选一(HTML 网页幻灯 → 本 skill;.pptx 可编辑文件 → deck-stage),不擅自默认。
5
5
  allowed-tools: Bash, Read, Write
6
6
  disable-model-invocation: false
7
7
  ---
8
8
 
9
9
  # 魔法幻灯生成(magic-deck)
10
10
 
11
- 把用户内容排版为单文件 HTML 幻灯片(16:9 舞台 + 播放引擎 + 十六套风格 + 全屏放映),落盘并自动打开。
11
+ 把用户内容排版为单文件 HTML 幻灯片(16:9 舞台 + 播放引擎 + 十七套风格 + 全屏放映),落盘并自动打开。
12
12
 
13
13
  ## 意图边界(与 deck-stage 分流)
14
14
 
@@ -19,15 +19,26 @@ disable-model-invocation: false
19
19
 
20
20
  0. **读用户配置**(TEMPLATE/THEME/TRANSITION/ANIM/WIDTH/HEIGHT/SEC/FILENAME/DIR 等)→ 先 Read 同目录 `user-config.md`
21
21
  1. **收集内容**:解析用户提供的内容(文字/文件/结构化要点),确定页数与每页版式 → 先 Read `resources/content-guide.md` 按内容气质选版式骨架 / 按领域选成套模板 / 按用途定页数节奏 / 按数据挑图表形式
22
- 2. **生成 HTML**(每页写语义结构——.s-head 标题 / .card 卡片 / .points 要点 / .bignum 数据,按 TEMPLATE 在对应页 slide 挂 data-template 声明默认版式;十七主题 CSS 变量、主题面板、动画库(deck 标签 data-transition 翻页八套 + 元素 data-anim 入场十二式 / data-anim-leave 离场 / data-anim-emphasis 强调 + 标题文字拆分 + 边栏 ⚙ 工具 Tab 控制)、模板面板(16 套 + 预览本页)、编辑能力(撤销/重做/页面管理边栏:新页/复页/排序/删页)、播放引擎、热键、截图/复制、全屏纯净模式)→ 先 Read `resources/reference.html` + `resources/deck-spec.md` 两份,以 reference.html 为骨架逐处替换内容
22
+ 2. **生成 HTML**(每页写语义结构——.s-head 标题 / .card 卡片 / .points 要点 / .bignum 数据,按 TEMPLATE 在对应页 slide 挂 data-template 声明默认版式;十七主题 CSS 变量、主题面板、动画库(deck 标签 data-transition 翻页八套 + 元素 data-anim 入场十二式 / data-anim-leave 离场 / data-anim-emphasis 强调 + 标题文字拆分 + 边栏 ⚙ 工具 Tab 控制)、模板面板(17 套 + 预览本页)、编辑能力(撤销/重做/页面管理边栏:新页/复页/排序/删页)、播放引擎、热键、截图/复制、全屏纯净模式)→ 先 Read `resources/reference.html` + `resources/deck-spec.md` 两份,以 reference.html 为骨架逐处替换内容
23
23
  2.5 **交付前自检**(落盘前必做,硬门禁不可跳过):写工作区 `outputs/<文件名>.html` 后——
24
24
  - Bash 起 `python3 -m http.server 8941`(后台,端口占用换 8942/8943…)
25
25
  - Playwright headless 自检(缺则 `pip3 install --user playwright`;用系统 Chrome,无需 playwright install 下载浏览器):`p.chromium.launch(channel="chrome", headless=True)` → goto 页面 → 挂 pageerror 监听(零容忍)→ 按页数循环 `go(i)` 把每一页翻完
26
26
  - 截首 / 中 / 末三页 PNG,Read 自查:版式正常、文字无溢出截断、图表数据到位、无豆腐块缺字
27
27
  - 任何报错或视觉问题:修 HTML → 重检;全绿才进第 3 步
28
- 3. **落盘与命名**:自检通过后 `cp` 到 DIR 目录,自动打开浏览器供用户放映。命名三级优先:①用户口头指定文件名 → 用指定名;②未指定且 FILENAME=auto → 按本次内容主题+用途总结中文名(如「智能探针系统-产品介绍」,让用户日后能按名找回继续改);③FILENAME 写死固定名 → 用固定名。重名一律自动加日期后缀,绝不覆盖;落盘目录复用不清空、不改动目录内既有文件
28
+ 3. **落盘与命名**:自检通过后在 DIR 下新建 `{文件名}/` 子目录(`mkdir -p`,总目录统一管理、各次产出自包含互不干扰),`cp` 到该子目录,自动打开浏览器供用户放映。命名三级优先:①用户口头指定文件名 → 用指定名;②未指定且 FILENAME=auto → 按本次内容主题+用途总结中文名(如「智能探针系统-产品介绍」,让用户日后能按名找回继续改);③FILENAME 写死固定名 → 用固定名。重名一律自动加日期后缀,绝不覆盖;落盘目录复用不清空、不改动目录内既有文件
29
29
  4. **使用咨询**(用户只问「怎么用 / 使用说明 / 能干什么」等用法、未要求生成)→ 读 `resources/usage-guide.md`,将其内容原样输出(首行标题改为「魔法幻灯生成器使用指南」),不生成 HTML
30
30
 
31
+
32
+ ## 🔧 报修处理流程(用户报页面问题时)
33
+
34
+ 用户说「这个页面效果不对 / 布局乱了 / 有 UI 问题 / 某交互坏了」(常附截图或指出具体现象)→ 按以下流程处理,不以「重新生成一份」敷衍:
35
+
36
+ 1. **立标准**:先 Read 本 skill 目录 `resources/reference.html` + `resources/deck-spec.md`——reference.html 就是设计标准答案(布局/主题/动画/播放引擎全在代码里),deck-spec.md 是它的规格说明
37
+ 2. **找问题**:Read 用户那份问题 html 文件,与 reference 逐处比对(结构顺序 / 主题变量 / 模板面板 / 播放引擎 / 热键 / 截图复制),定位跑偏处;用户给了截图则按截图现象反查
38
+ 3. **修复**:以 reference 为准修复那份 html(只修跑偏处,不动正确内容;reference 与 html 不一致时以 reference 为准)
39
+ 4. **自证**:Playwright headless(channel="chrome")→ 挂 pageerror 零容忍 → 按页数循环 `go(i)` 翻完每页 → 截问题页 PNG Read 自查恢复标准效果;用户给了问题截图时尽量复现同视角截图做前后对比
40
+ 5. **汇报**:一句话说清问题根因 + 修复了什么 + 附截图;若根因在 reference.html 自身(生成结果与 reference 一模一样但仍有问题),顺修 reference.html 与 deck-spec.md 对应处并在汇报中说明「参考模板已同步修正」,避免下一份重蹈覆辙
41
+
31
42
  ## ⚙️ 配置与自定义
32
43
 
33
44
  **执行本 skill 前必须先 Read 同目录 `user-config.md`**:默认配置(TEMPLATE/THEME/TRANSITION/ANIM/WIDTH/HEIGHT/SEC/FILENAME/DIR 等)与用户模板都在该文件中,以它为准。升级技能时 user-config.md 不会被覆盖,你的修改永久保留;官方更新配置时另存 `user-config.md.upstream` 对照文件,可按需手动合并新配置点。
@@ -35,13 +46,13 @@ disable-model-invocation: false
35
46
  ## 规则速览
36
47
 
37
48
  - 单文件 HTML 离线双击可打开:禁用 CDN/@import/外链 CSS/JS/图片/网络字体,字体用系统栈
38
- - 模板十六套(版式骨架)与主题十七套(配色)正交组合,均运行时即点即换:模板经「🎨 模板」面板应用(全部页/仅本页/勾选页),先「👁 预览本页」看效果(不落 data-template,取消自动还原);生成时按 TEMPLATE/口头点名在 slide 挂 data-template 声明默认版式;标题自动映射——timeline 取卡片标题做节点、keynote 取页标题做大观点、magazine 左文右图分栏、steps 卡片转箭头步骤条、vintage 卡片收双栏报纸、poster 要点转斜切色带、finance 百分比转仪表环,切回经典商务恢复原排版内容不丢;`.slide` 自带 `background:var(--bg)` 使单页换肤整页变色
49
+ - 模板十七套(版式骨架)与主题十七套(配色)正交组合,均运行时即点即换:模板经「🎨 模板」面板应用(全部页/仅本页/勾选页),先「👁 预览本页」看效果(不落 data-template,取消自动还原);生成时按 TEMPLATE/口头点名在 slide 挂 data-template 声明默认版式;标题自动映射——timeline 取卡片标题做节点、keynote 取页标题做大观点、magazine 左文右图分栏、steps 卡片转箭头步骤条、vintage 卡片收双栏报纸、poster 要点转斜切色带、finance 百分比转仪表环,切回经典商务恢复原排版内容不丢;`.slide` 自带 `background:var(--bg)` 使单页换肤整页变色
39
50
  - 编辑操作全套可回退:Ctrl+Z 撤销 / Ctrl+Shift+Z 重做(工具栏 ↶↷);「▤ 页导航 / G 键」右侧页面管理边栏:点击缩略图跳页、悬停操作条复页/上移/下移/删页;「+ 新页」在边栏头部,16 版式任选插在当前页后;全部编辑只作用于内存,刷新后回到原始 deck
40
51
  - 工具栏控件统一 flex 垂直居中:`.toolbar/.group` flex + align-items:center + gap;`.tbtn` inline-flex + gap:6px + line-height:1;checkbox 14×14 与文字 6px 间距,文字不贴控件、上下不偏斜
41
52
  - 页面 1280×720 舞台 + 按窗口等比缩放(--sc),窗口任意大小不变形
42
- - 领域/业务成套模板 21 套(thesis/proposal/teaching/report/competition/plan/hiring/product/tech/marketing/training/ceremony/finance/medical/law/gov/party/food/travel/festival/charity,六分类):面板「💼 领域」Tab 点选后一键生成整套页面(P 生成器产封面+目录+内容页+图表页+结束页,每套 6-8 页,主版式各不相同);两段确认(profArmed)防误触,pushUndo 可撤销;生成后与版式/主题正交——每页照常挂 data-template 运行时换版式、主题照常换肤;演示页 15 的 21 张 .prof-demo 卡点击直达面板并选中
53
+ - 领域/业务成套模板 22 套(thesis/proposal/teaching/report/competition/plan/hiring/product/tech/marketing/sales/training/ceremony/finance/medical/law/gov/party/food/travel/festival/charity,六分类):面板「💼 领域」Tab 点选后一键生成整套页面(P 生成器产封面+目录+内容页+图表页+结束页,每套 6-8 页,主版式各不相同);两段确认(profArmed)防误触,pushUndo 可撤销;生成后与版式/主题正交——每页照常挂 data-template 运行时换版式、主题照常换肤;演示页 15 的 22 张 .prof-demo 卡点击直达面板并选中
43
54
  - 图表五式动画(L6,容器挂 data-anim-chart):bars 柱状生长(--h 定高 + --bi 错峰)/ line 折线描画(dashoffset 归零 + 圆点按序浮现)/ pie 饼图扇入(弧段 rotate 定起点 + --po 扫入)/ ring 仪表扫弧(顶部起扫 + 中心数字)/ count 数字滚动(data-count + data-count-dec,go() 里 rAF 900ms 缓动);图表动画独立于元素入场体系(图表是「会动的数据」不挂 data-anim);prefers-reduced-motion 全部直显;全部主题变量驱动换肤即变色
44
- - 动画库与模板/主题正交,收纳在右侧边栏「⚙ 工具」Tab(工具栏 ⚙ 按钮或 G 键进入,应用范围 radio 全部页面/仅本页):翻页八套(slide-lr 左右滑移默认 / fade / slide-ud / zoom / flip 3D / cube 立方翻转 / wipe 平移擦除 / dissolve 溶解模糊,deck 标签 data-transition)即点即切;元素入场十二式(fade-up/fade-in/fade-down/zoom-in/slide-left/slide-right/slide-up/slide-down/pop/bounce-in/flip-in/blur + none,元素挂 data-anim + data-anim-delay 八档错落)翻到该页自动播放;离场十二式(同套离场方向,元素挂 data-anim-leave)翻页前元素先离场 0.45s 再切页;强调八式(pulse/swing/shake/breathe/flash/tada/spin/glow,元素挂 data-anim-emphasis 循环播放);标题文字动画四式(none 无动画默认 / char 逐字 / word 逐词 / line 逐行,运行时拆分标题文字);「开启」复选框一键全关,选择均 localStorage 记忆;prefers-reduced-motion 下全部退化为直切
55
+ - 动画库与模板/主题正交,收纳在右侧边栏「⚙ 工具」Tab(工具栏 ⚙ 按钮或 G 键进入,应用范围 radio 全部页面/仅本页):翻页八套(slide-lr 左右滑移默认 / fade / slide-ud / zoom / flip 3D / cube 立方翻转 / wipe 平移擦除 / dissolve 溶解模糊,deck 标签 data-transition)即点即切;元素入场十二式(fade-up/fade-in/fade-down/zoom-in/slide-left/slide-right/slide-up/slide-down/pop/bounce-in/flip-in/blur + none,元素挂 data-anim + data-anim-delay 八档错落)翻到该页自动播放;离场十二式(同套离场方向,元素挂 data-anim-leave)翻页前元素先离场 0.45s 再切页;强调八式(pulse/swing/shake/breathe/flash/tada/spin/glow,元素挂 data-anim-emphasis 循环播放);标题文字动画四式(none 无动画默认 / char 逐字 / word 逐词 / line 逐行,运行时拆分标题文字);「开启」复选框一键全关,选择均 localStorage 记忆(键按页内嵌唯一 ID 命名空间,多份演示稿互不干扰、改名/移动目录记忆不丢(初始化/生成时头部写 `<meta name="deck-id" content="<UUID>">`,每次 crypto.randomUUID() 生成标准 UUID v4(8-4-4-4-12 十六进制,禁止手写变体、禁止沿用占位与旧值);落盘写文件前顺扫落盘目录下本技能命名的 html,读各文件 id meta 查重,撞号重掷至不重复));prefers-reduced-motion 下全部退化为直切
45
56
  - 结构顺序:背景装饰 → 顶部进度条 → 工具栏 → 页码 → 提示 → 左右箭头 → 右侧边栏(sp-tabs 双 Tab:▤ 页面 / ⚙ 工具)→ 舞台页组 → 说明弹层 → 播放引擎
46
57
  - 左右箭头不常驻:默认透明,鼠标在页面内才显现;触屏设备(hover:none)保持可见
47
58
  - 全屏放映纯净模式:`:root:fullscreen` 下工具栏/页码/提示/箭头/弹层与背景氛围层全部隐藏、页面黑底 `#000`(与 PPT 软件放映一致:幻灯按比例充满画面,比例不匹配处补黑边,绝无主题氛围边框),只留主体;热键全屏下照常生效
@@ -64,6 +75,10 @@ disable-model-invocation: false
64
75
 
65
76
  升级技能时 user-config.md 不会被覆盖(官方更新另存 `user-config.md.upstream` 对照文件)。
66
77
 
78
+ ## 产物升级(回炉)
79
+
80
+ 生成 HTML 时头部写版本戳 `<meta name="sf-template" content="magic-deck@2">`(模板升级时递增 @N 并同步 reference.html 与本文档)。用户说「升级旧产物/回炉旧页面/旧演示稿换新样式」时:扫落盘目录下本技能生成的 html,读版本戳筛出旧版(无版本戳或缺少 `<meta name="deck-id">` 稳定 ID 的产物视为 v0 最旧版,一并进清单)→ 列清单(文件/旧版本/手改状态——deck 是单文件产物无 md 底稿,标记「无底稿,正文保留」)→ AskUserQuestion 选全部或部分 → 逐份升级:浅升级(CSS/JS 变化)对旧页替换 `<style>` 块与交互脚本、正文与 slide 内容原样保留;深升级(DOM 结构变化)提取旧页 slide 内容按当前 reference.html 重建,先备份旧版 `.bak-时间戳` → 报告三段式:✅ 已升级清单 / ⚠️ 手改保留说明 / 🟡 失败项原因。模板改动分级:业务改动(板块/段落/标题体系)、数据格式改动(字段/存储结构)、页面改动(样式/布局/交互)任一发生即模板升级,版本戳 +1 并同步 reference.html 与本文档;纯措辞润色不 bump。每次生成 HTML 时顺扫落盘目录读版本戳:发现旧版产物(vN-1 或无版本戳的历史产物)主动告知「技能模板已升级至 vN,检测到 X 份旧版演示稿,说『把我旧演示稿都升级成新样式』即可一键升级」,不让用户背触发语。
81
+
67
82
  ## 📏 文档同步自检纪律(维护者必读)
68
83
 
69
84
  - 修改本 skill 任何文件后,必须 grep 全文核对:新词已命中、旧词零残留(改一处查一处)
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 生成 HTML 前必读:按内容气质挑版式骨架、按领域挑成套模板、按用途定页数节奏、按数据挑图表形式。拿不准时用 AskUserQuestion 让用户在候选里挑,不替用户做风格决策。
4
4
 
5
- ## 一、内容气质 → 版式骨架(十六套怎么挑)
5
+ ## 一、内容气质 → 版式骨架(十七套怎么挑)
6
6
 
7
7
  | 内容类型 | 首选版式 | 备选 | 理由 |
8
8
  |:---|:---|:---|:---|
@@ -18,8 +18,9 @@
18
18
  | 极简个人页 / 简历 | minimal 极简留白 | bento 模块网格 | 居中大字 + 要点列表 |
19
19
  | 暗色氛围 / 发布会备选 | dark 暗夜深色 | keynote 黑金发布 | 深底高对比,适合屏幕放映 |
20
20
  | 清新生活 / 公益 | nature 自然清新 | minimal 极简留白 | 绿色系温和感 |
21
+ | 统计看板 / 数据大屏 | stats 统计图表 | finance 金融报表 | KPI 大数字横排 + 图表框架,看板气质 |
21
22
 
22
- ## 二、领域成套模板(二十一 套,六分类怎么挑)
23
+ ## 二、领域成套模板(二十二套,六分类怎么挑)
23
24
 
24
25
  用户内容主题与某套高度契合时,优先推荐领域模板(一键生成整套:封面 + 目录 + 内容页 + 图表页 + 结束页,每套 6-8 页):
25
26
 
@@ -27,12 +28,12 @@
27
28
  |:---|:---|:---|
28
29
  | 教育学术 | thesis 毕业答辩 / proposal 开题报告 / teaching 教学课件 | 学位答辩、课题申报、课堂 |
29
30
  | 职场商务 | report 年终汇报 / competition 竞聘述职 / plan 商业计划书 / hiring 求职简历 | 述职、融资、求职 |
30
- | 企业运营 | product 产品发布 / tech 科技发布会 / marketing 营销方案 / training 企业培训 / ceremony 年会盛典 | 发布会、培训、年会 |
31
+ | 企业运营 | product 产品发布 / tech 科技发布会 / marketing 营销方案 / sales 销售方案 / training 企业培训 / ceremony 年会盛典 | 发布会、销售提案、培训、年会 |
31
32
  | 专业领域 | finance 金融分析 / medical 医疗科普 / law 法律合规 | 行业分析、科普、合规宣贯 |
32
33
  | 党政政务 | gov 政务汇报 / party 党建汇报 | 政府汇报、党建活动 |
33
34
  | 生活场景 | food 餐饮品牌 / travel 旅游攻略 / festival 节日庆典 / charity 公益慈善 | 探店、攻略、节庆、公益 |
34
35
 
35
- 生成后领域模板与版式 / 主题正交:每页仍可挂 data-template 运行时换十六版式、主题照常换肤,不是死骨架。
36
+ 生成后领域模板与版式 / 主题正交:每页仍可挂 data-template 运行时换十七版式、主题照常换肤,不是死骨架。
36
37
 
37
38
  ## 三、页数与节奏
38
39
 
@@ -1,6 +1,6 @@
1
1
  # magic-deck HTML 幻灯片完整规范
2
2
 
3
- > ⛔ **Reference 铁律(最高优先)**:本目录 `reference.html` 是定稿骨架源码(默认 classic 模板 + 十六套版式模板 + 十七主题 + 全部组件 + 播放引擎 + 单页主题 + 模板预览/撤销重做/右侧边栏双 Tab(页面管理 + 动画工具))。生成 HTML 时必须先 Read `resources/reference.html` 与本文件两份,以 reference.html 为骨架逐处替换内容;两者冲突时**以 reference.html 为准**。修改本 skill 的 HTML 效果时,必须同步更新 `resources/reference.html` 与本文档的对应描述,禁止只改一处。
3
+ > ⛔ **Reference 铁律(最高优先)**:本目录 `reference.html` 是定稿骨架源码(默认 classic 模板 + 十七套版式模板 + 十七主题 + 全部组件 + 播放引擎 + 单页主题 + 模板预览/撤销重做/右侧边栏双 Tab(页面管理 + 动画工具))。生成 HTML 时必须先 Read `resources/reference.html` 与本文件两份,以 reference.html 为骨架逐处替换内容;两者冲突时**以 reference.html 为准**。修改本 skill 的 HTML 效果时,必须同步更新 `resources/reference.html` 与本文档的对应描述,禁止只改一处。
4
4
 
5
5
  生成单文件 HTML 幻灯片(HTML 形态、PPT 体验),所有实现细节以本文为准。
6
6
 
@@ -178,18 +178,19 @@
178
178
  ```
179
179
  主题切换(全局):`document.documentElement.setAttribute('data-theme', name)`,面板色点同步 .on 点亮。
180
180
 
181
- 主题面板(「🎨 主题」打开 `#themeMask`):`.theme-panel` 460px 宽,头部标题 + 范围 radio 胶囊(全部页面/仅本页,切换时 label.sel 高亮 + 重渲染点亮)+ `.theme-grid` 4 列 `.th-item`(`.th-dot` 色点内联 style 取 THEMES 色值 + 主题名,当前主题 .on 高亮)+ 底部「✕ 关闭」;**即点即换**——点 `.th-item` pushUndo → 按范围 setGlobalTheme/setSlideTheme → renderThemeDots 重渲染点亮 → buildThumbs,面板保持打开可连点对比;Esc/点遮罩/✕ 关闭;与模板/选页复制/选页截图/新页面板互斥打开。范围=仅本页时点亮按 `slides[cur]` 的 data-theme,否则按根 data-theme。
181
+ 主题面板(「🎨 主题」打开 `#themeMask`):`.theme-panel` 460px 宽,头部标题 + 范围 radio 胶囊(全部页面/仅本页,切换时 label.sel 高亮 + 重渲染点亮)+ `.theme-grid` 4 列 `.th-item`(`.th-dot` 色点内联 style 取 THEMES 色值 + 主题名,当前主题 .on 高亮)+ 底部「✕ 关闭」;**即点即换**——点 `.th-item` pushUndo → 按范围 setGlobalTheme/setSlideTheme → saveThemeState 写 localStorage(键 `md-deck:<deck-id>-theme`,JSON:global 全局主题 + slides 本页主题按页码索引;键名带页内嵌 deck-id 命名空间,多份演示稿互不串台、改名/移动目录记忆不丢)→ renderThemeDots 重渲染点亮 → buildThumbs,面板保持打开可连点对比;Esc/点遮罩/✕ 关闭;与模板/选页复制/选页截图/新页面板互斥打开。范围=仅本页时点亮按 `slides[cur]` 的 data-theme,否则按根 data-theme。
182
182
 
183
183
  ### 2.1 单页主题(整份或单页自由换肤)
184
184
 
185
185
  - 主题面板范围 radio 默认「全部页面」:点色点改全局;选「仅本页」后点色点只改当前页 `slides[cur].setAttribute('data-theme', name)`;全局切换时 JS 遍历 slides 移除所有 slide 级 data-theme
186
+ - 主题记忆:初始化无 `?theme` 参数时读 `md-deck:<deck-id>-theme` 恢复(global 合法则 setGlobalTheme、slides 按页码索引逐页 setAttribute;非法 JSON / 未知主题名静默忽略,失败静默);`?theme` URL 参数优先于记忆;本页主题按页码索引记忆,删页 / 排序后可能错位,重新点选即可
186
187
  - CSS 变量就近解析天然支持:`[data-theme="xxx"]` 属性选择器写在 slide 上即覆盖该页全部 var();`.slide` 必须自带背景 `background:var(--bg)`(页背景跟随主题,全局 .bg-glow/.bg-grid 作为舞台外围氛围层)
187
188
  - 单页主题的 slide 上保留 data-theme 属性持久生效;截图(§7)克隆 slide 时该属性自然入图,无需特殊处理
188
189
  - 生成时按 user-config 的 THEME 给 documentElement 设默认主题,单页差异化主题由用户放映时点选
189
190
 
190
- ## 2.2 模板库(十六套版式骨架,运行时即点即换,与主题正交:模板管版式结构、主题管配色)
191
+ ## 2.2 模板库(十七套版式骨架,运行时即点即换,与主题正交:模板管版式结构、主题管配色)
191
192
 
192
- 十六套模板随放映随时切换——工具栏「🎨 模板」打开模板应用面板,选模板卡(每卡带 mini 结构示意图)+ 应用范围(全部页面/仅本页/选择页面);点「👁 预览本页」先把当前页临时套上看效果(可连续换卡即时换预览、再点「还原本页」或取消自动还原,预览不落 data-template),点应用才生效。**标题自动映射**:模板的固定标题位自动吃进页面里对应的标题(语义节点)。
193
+ 十七套模板随放映随时切换——工具栏「🎨 模板」打开模板应用面板,选模板卡(每卡带 mini 结构示意图)+ 应用范围(全部页面/仅本页/选择页面);点「👁 预览本页」先把当前页临时套上看效果(可连续换卡即时换预览、再点「还原本页」或取消自动还原,预览不落 data-template),点应用才生效。**标题自动映射**:模板的固定标题位自动吃进页面里对应的标题(语义节点)。
193
194
 
194
195
  ### 语义节点约定(标题自动映射的根基)
195
196
 
@@ -266,6 +267,10 @@
266
267
  - slide 挂 `[data-template="dark"]` 即整页反色:--bg 深黑、--text 浅灰、--accent 蓝/绿(GitHub Dark 系),浅色主题下同样全黑
267
268
  - CSS:`[data-template="dark"]{ --bg:#0d1117; … }` 八变量全套覆盖
268
269
 
270
+ ### T17 stats 统计图表(纯 CSS,无包装器)
271
+ - 数据看板风:`.s-head` 底部 2px accent 双线、标题 30px;`.bignum` 去边框改顶部 3px accent 横条、数字放大 56px;`.chart-card` 加 accent 描边框架
272
+ - CSS:`[data-template="stats"]` 看板风
273
+
269
274
  ### T16 nature 自然清新(纯 CSS,无包装器)
270
275
  - 有机圆角:卡片/标签/目录条目不对称圆角(24/8 交替)、hover 轻旋 -0.6deg;色点改旋转叶片形
271
276
  - CSS:`[data-template="nature"]` 圆润形状语言
@@ -295,16 +300,16 @@
295
300
 
296
301
  模板不再只限生成时定版式:user-config 的 `TEMPLATE` 是生成默认(AI 每页写语义结构 + 对应 slide 挂 data-template),用户放映时随时在模板面板切换(全部/仅本页/勾选页);`?tpl=xxx` URL 参数全局应用(headless 截图用)。
297
302
 
298
- ## 2.3 领域/业务成套模板(面板「💼 领域」Tab,二十一套一键生成整套页面)
303
+ ## 2.3 领域/业务成套模板(面板「💼 领域」Tab,二十二套一键生成整套页面)
299
304
 
300
- 模板面板头部双 Tab:「🎨 版式」(16 版式应用全部/仅本页/勾选页,原逻辑)与「💼 领域」(21 套成套模板)。领域 Tab 隐藏范围选择与「预览本页」,tplDo 变「生成成套页面(N 页)」并带两段确认(profArmed:第一击变「⚠ 确认:整份替换为「xx」(可撤销)」,第二击才执行)。
305
+ 模板面板头部双 Tab:「🎨 版式」(17 版式应用全部/仅本页/勾选页,原逻辑)与「💼 领域」(22 套成套模板)。领域 Tab 隐藏范围选择与「预览本页」,tplDo 变「生成成套页面(N 页)」并带两段确认(profArmed:第一击变「⚠ 确认:整份替换为「xx」(可撤销)」,第二击才执行)。
301
306
 
302
- - **PROF 数据**:`PROF_CATS` 六分类(教育学术 / 职场商务 / 企业运营 / 专业领域 / 党政政务 / 生活场景);`PROF` 21 套,每套 `{ id, cat, name, ds, main, pages[] }`,main 指向 16 版式之一,卡片迷你预览取 `tplById(main).mini`
307
+ - **PROF 数据**:`PROF_CATS` 六分类(教育学术 / 职场商务 / 企业运营 / 专业领域 / 党政政务 / 生活场景);`PROF` 22 套,每套 `{ id, cat, name, ds, main, pages[] }`,main 指向 16 版式之一,卡片迷你预览取 `tplById(main).mini`
303
308
  - **P 生成器**(8 函数,产物=语义骨架页字符串,页内结构与演示页一致:s-head/grid/card/points/bignum):`cover(标题,副题)`(class="slide cover" 特殊页)/ `toc(标题,条目[])`(toc-item data-goto=2+i 自动指向内容页)/ `points(title,tag,tpl,pts[])` / `cards(title,tag,tpl,{h,en,p}[])`(按 2/3/4+ 张选 grid2/3/4)/ `nums(title,tag,tpl,{b,s}[])`(grid4 bignum)/ `chartHtml(kind,spec)`(bars 最高值归一化 --h;line 300×158 均布取点;pie C=351.86 段 stroke-dasharray+rotate 按占比累加;ring CC=389.56 不写 transform——CSS 已预置 rotate(-90deg))/ `chart(title,tag,tpl,kind,spec,noteH,notes[])`(grid2 图表卡+要点卡)/ `end()`(class="slide endpage")
304
309
  - **applyProf 引擎**:pushUndo → deck.innerHTML = pages.join('') → refreshSlides → 非 classic 非特殊页逐页 applyTpl 跑包装器 → buildThumbs → 关面板 → cur=0 go(0) → 按钮反馈「✓ 已套用「xx」」
305
310
  - **图表页保护**:applyTpl 在 setAttribute 之后先判 `s.querySelector('[data-anim-chart]')`——含图表卡的页直接 return,跳过 timeline/keynote/magazine/steps/poster 等重排包装器(它们会替换容器或清空整页吞掉图表);图表页保持 grid2 语义结构 + 模板配色,图表动画照常触发。运行时手动切换版式同样受保护
306
311
  - **演示页 15 联动**:21 张 .prof-demo 紧凑卡(7 列 × 3 行,data-prof + data-anim 错落),deck 点击委托 → openTplPanel + setTplTab('prof') + 选中 + renderProfCards + updateTplBtn
307
- - 二十一套(id · 名称 · 主版式 · 页数):edu——thesis 毕业答辩 minimal 7 / proposal 开题报告 executive 7 / teaching 教学课件 education 7;biz——report 年终汇报 executive 8 / competition 竞聘述职 timeline 7 / plan 商业计划书 finance 7 / hiring 求职简历 timeline 6;corp——product 产品发布 keynote 7 / tech 科技发布会 blueprint 7 / marketing 营销方案 poster 7 / training 企业培训 education 7 / ceremony 年会盛典 poster 7;pro——finance 金融分析 finance 7 / medical 医疗科普 metro 7 / law 法律合规 executive 6;gov——gov 政务汇报 executive 7 / party 党建汇报 executive 7;life——food 餐饮品牌 magazine 7 / travel 旅游攻略 magazine 7 / festival 节日庆典 poster 6 / charity 公益慈善 minimal 7
312
+ - 二十二套(id · 名称 · 主版式 · 页数):edu——thesis 毕业答辩 minimal 7 / proposal 开题报告 executive 7 / teaching 教学课件 education 7;biz——report 年终汇报 executive 8 / competition 竞聘述职 timeline 7 / plan 商业计划书 finance 7 / hiring 求职简历 timeline 6;corp——product 产品发布 keynote 7 / tech 科技发布会 blueprint 7 / marketing 营销方案 poster 7 / sales 销售方案 executive 7 / training 企业培训 education 7 / ceremony 年会盛典 poster 7;pro——finance 金融分析 finance 7 / medical 医疗科普 metro 7 / law 法律合规 executive 6;gov——gov 政务汇报 executive 7 / party 党建汇报 executive 7;life——food 餐饮品牌 magazine 7 / travel 旅游攻略 magazine 7 / festival 节日庆典 poster 6 / charity 公益慈善 minimal 7
308
313
  - 生成后与版式/主题正交:每页照常挂 data-template 运行时任意切换,主题照常换肤;领域模板只在「生成整套」时决定页序+每页版式+图表选型,不新增版式骨架
309
314
  - 图表页生成规则不变:趋势 line / 占比 pie / 对比 bars / 达成率 ring,图表一律挂 data-anim-chart 保留自身动画(见 3.1 L6),关键数字挂 data-count 滚动
310
315
 
@@ -418,6 +423,7 @@
418
423
  ```css
419
424
  .tchar, .tword{ display:inline-block; }
420
425
  .tline{ display:block; }
426
+ .s-title .tchar, .s-title .tword, .s-title .tline{ background:inherit; -webkit-background-clip:text; background-clip:text; }
421
427
  ```
422
428
 
423
429
  ### L6 图表动画(bars/line/pie/ring/count 五式,图表容器挂 data-anim-chart,翻页自动播放、翻回重放)
@@ -480,7 +486,8 @@
480
486
  - 元素动画区:`chkAnim` 复选框(入场动画开关,默认勾选)+ 应用范围 radio(`input[name="animScope"]`:all 全部页面 / current 仅本页,`.seg-btn.sel` 高亮)+ 三组网格——入场 12 式(`data-a` + none)、离场 12 式(`data-l` + none)、强调 8 式(`data-e` + none);标题文字区:四选按钮(none 无动画 / char 逐字 / word 逐词 / line 逐行,`data-ta`);页面操作区:⧉ 复制本页 / ▦ 选页复制 / 📷 截图本页 / ▦ 选页截图(原工具栏四按钮移入,ID 与事件照旧)
481
487
  - 应用范围:`animSlides()` = scope 为 all 时全部 slides、current 时仅 slides[cur];入场/离场/强调/标题文字设置均作用于范围页;互斥规则:挂强调时移除该元素 `data-anim`(强调优先);applyEnter none = 移除 `data-anim` 与 `data-anim-delay`;applyLeave none = 移除 `data-anim-leave`;applyEmph none = 移除 `data-anim-emphasis`
482
488
  - 标题文字拆分:splitText 按 `<br>` 分行后逐字(char)/逐词(word,按空白分)/逐行(line)包 `<span class="tchar|tword|tline" data-anim="fade-up" style="animation-delay:min(序号×60,600)ms">`,原文存 `data-md-orig`;restoreText 按原文还原;none 时还原为纯文本(默认无动画)
483
- - deck 根标签:`data-transition="slide-lr" data-anim="on"`;JS 初始化时读 localStorage(`md-deck-transition` / `md-deck-anim` / `md-deck-anim-scope` / `md-deck-text-anim` / `md-deck-side-tab`),命中则回填控件并设置 deck 属性,无记忆则回退 DOM 属性;事件写 deck 属性 + 写 localStorage(try-catch 静默)
489
+ - 渐变字特例:`.s-title`(background-clip:text 渐变字)不拆分——span 行内块不参与父级文字剪裁,拆分后文字全透明只剩辉光(视觉成「蒙层」),改为整体 `data-anim="fade-up"`(自加属性标 `data-md-whole`,切回 none 时移除);CSS 兜底 `.s-title .tchar/.tword/.tline` 补 `background:inherit` + `background-clip:text` 修复历史拆分 DOM;deck `data-anim="off"`(入场开关关)时刷新不回填 localStorage 的文字动画
490
+ - deck 根标签:`data-transition="slide-lr" data-anim="on"`;JS 初始化时读 localStorage(键名均带 `md-deck:<deck-id>` 前缀命名空间:transition / anim / anim-scope / text-anim / side-tab,多份演示稿互不干扰、改名/移动目录记忆不丢),命中则回填控件并设置 deck 属性,无记忆则回退 DOM 属性;事件写 deck 属性 + 写 localStorage(try-catch 静默)
484
491
  - 离场引擎:`leaveThenGo(i)` = leaving 防抖;当前页无 `[data-anim-leave]:not(none)` 或 deck `data-anim="off"` 时直切 `go(i)`;否则 slide 加 `.leaving` 类触发 CSS 离场(0.45s),并重置节点 animation 重播,480ms 后移除类再 `go(i)`;next/prev/自动播放/键盘/缩略图/数字键/Home/End/data-goto/hashchange 全走 leaveThenGo
485
492
  - 生成侧规则:生成时按 user-config `TRANSITION` 写 deck 的 `data-transition` 初始值(用户口头点名风格当次优先);`ANIM: false` 时 deck 挂 `data-anim="off"` 且 chkAnim 不勾选
486
493
  - `data-anim` 十二式选用建议:页标题/封面大字配 `fade-up`,整页要点配 `fade-in`,数据卡/图片配 `zoom-in`,左右分栏内容各配 `slide-left`/`slide-right`,强调结论配 `pop`,轻快元素配 `bounce-in`,翻牌感配 `flip-in`,整卡浮现配 `blur`;同页多元素按视觉次序挂 `data-anim-delay`(60/120/180/240/300/400/500/600 八档)错落入场
@@ -552,8 +559,8 @@ function prev(){ if (cur > 0) leaveThenGo(cur - 1); else if (chkLoop.checked) le
552
559
  - P:播放/暂停;S:截图本页;C:复制本页;F:全屏;G:右侧边栏(▤ 页面管理:新页/复页/排序/删页/跳转 + ⚙ 动画与工具);?:说明弹层;Esc:关弹层 + 退全屏
553
560
  - Ctrl+Z:撤销;Ctrl+Shift+Z / Ctrl+Y:重做(弹层面板打开时忽略)
554
561
  - **全屏**:`toggleFull()` = fullscreenElement 存在则 exitFullscreen,否则 document.documentElement.requestFullscreen
555
- - **主题作用域**:主题面板范围 radio 选「全部页面」时点色点 → `documentElement.setAttribute('data-theme', name)` + 遍历 slides 移除所有 slide 级 data-theme;选「仅本页」时 → `slides[cur].setAttribute('data-theme', name)`(仅当前页变色);`?theme=biz` 参数走全局;面板色点 .on 态按 activeThemeName()(当前范围下的生效主题)显示
556
- - **模板应用**:TPLS 十六套元信息(id/name/ic/ds/mini 结构示意图);applyTpl(slide, tpl) = ensureOrigin 存档首次 innerHTML → 恢复语义态 → 挂 data-template(classic 则移除属性)→ 按需 wrapTimeline/wrapKeynote/wrapMagazine/wrapSteps/wrapPoster/wrapVintage/wrapFinance(封面/结束页/目录页 isSpecialPage 保护不包装;blueprint/education/executive/metro/bento/dark/nature 纯 CSS 无包装器);applyScope(tpl, scope, selected) 按范围应用返回页数;初始化时每页 data-template 声明自动跑 applyTpl 生效;`?tpl=xxx` 参数全局应用(只认 TPLS 内 id)
562
+ - **主题作用域**:主题面板范围 radio 选「全部页面」时点色点 → `documentElement.setAttribute('data-theme', name)` + 遍历 slides 移除所有 slide 级 data-theme;选「仅本页」时 → `slides[cur].setAttribute('data-theme', name)`(仅当前页变色);`?theme=biz` 参数走全局(任意 THEMES id 均可,如 ?theme=ocean;无参数时回退 localStorage `md-deck:<deck-id>-theme` 记忆);面板色点 .on 态按 activeThemeName()(当前范围下的生效主题)显示
563
+ - **模板应用**:TPLS 十七套元信息(id/name/ic/ds/mini 结构示意图);applyTpl(slide, tpl) = ensureOrigin 存档首次 innerHTML → 恢复语义态 → 挂 data-template(classic 则移除属性)→ 按需 wrapTimeline/wrapKeynote/wrapMagazine/wrapSteps/wrapPoster/wrapVintage/wrapFinance(封面/结束页/目录页 isSpecialPage 保护不包装;blueprint/education/executive/metro/bento/dark/nature/stats 纯 CSS 无包装器);applyScope(tpl, scope, selected) 按范围应用返回页数;初始化时每页 data-template 声明自动跑 applyTpl 生效;`?tpl=xxx` 参数全局应用(只认 TPLS 内 id)
557
564
  - **标题自动映射**:包装器从语义节点取内容重建模板结构——timeline 节点标题=卡片标题、keynote 大观点=页标题、magazine 分栏标题=页标题;内容一条不丢
558
565
  - **页内连接**:deck 上事件委托,`closest('[data-goto]')` 跳页;目录条目/任意元素都可用
559
566
  - **外部链接**:任意 `<a href="https://…">` 正常打开,不拦截