@topmindspace/topmind-writing-skills 0.7.1

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 (115) hide show
  1. package/CHANGELOG.md +931 -0
  2. package/LICENSE +21 -0
  3. package/README.en.md +124 -0
  4. package/README.md +124 -0
  5. package/bin/topmind-writing-skills.js +388 -0
  6. package/package.json +56 -0
  7. package/topmind-briefs/CHANGELOG.md +22 -0
  8. package/topmind-briefs/README.en.md +41 -0
  9. package/topmind-briefs/README.md +37 -0
  10. package/topmind-briefs/SKILL.md +101 -0
  11. package/topmind-briefs/dist/topmind-briefs.manifest.json +21 -0
  12. package/topmind-briefs/dist/topmind-briefs.zip +0 -0
  13. package/topmind-briefs/package-lock.json +13 -0
  14. package/topmind-briefs/package.json +1 -0
  15. package/topmind-briefs/references/examples.md +131 -0
  16. package/topmind-briefs/references/platform-specs.md +63 -0
  17. package/topmind-briefs/references/style-guide.md +60 -0
  18. package/topmind-briefs/scripts/audit_css.py +39 -0
  19. package/topmind-briefs/scripts/audit_docs.py +80 -0
  20. package/topmind-briefs/scripts/audit_skill.py +60 -0
  21. package/topmind-briefs/scripts/audit_styles.py +54 -0
  22. package/topmind-briefs/scripts/negative_tests.py +88 -0
  23. package/topmind-briefs/scripts/package_skill.py +188 -0
  24. package/topmind-cover/README.en.md +54 -0
  25. package/topmind-cover/README.md +54 -0
  26. package/topmind-cover/SKILL.md +134 -0
  27. package/topmind-cover/assets/examples/README.md +34 -0
  28. package/topmind-cover/assets/examples/bg-blur-alt.png +0 -0
  29. package/topmind-cover/assets/examples/bg-blur-wechat.png +0 -0
  30. package/topmind-cover/assets/examples/bg-blur.png +0 -0
  31. package/topmind-cover/assets/examples/big-type-wechat.png +0 -0
  32. package/topmind-cover/assets/examples/big-type.png +0 -0
  33. package/topmind-cover/assets/examples/brand-launch-wechat.png +0 -0
  34. package/topmind-cover/assets/examples/brand-launch.png +0 -0
  35. package/topmind-cover/assets/examples/gan-huo-wechat.png +0 -0
  36. package/topmind-cover/assets/examples/gan-huo.png +0 -0
  37. package/topmind-cover/assets/examples/ip-fun-wechat.png +0 -0
  38. package/topmind-cover/assets/examples/ip-fun.png +0 -0
  39. package/topmind-cover/assets/examples/magazine-wechat.png +0 -0
  40. package/topmind-cover/assets/examples/magazine.png +0 -0
  41. package/topmind-cover/assets/examples/minimal-wechat.png +0 -0
  42. package/topmind-cover/assets/examples/minimal.png +0 -0
  43. package/topmind-cover/assets/examples/news-flash-wechat.png +0 -0
  44. package/topmind-cover/assets/examples/news-flash.png +0 -0
  45. package/topmind-cover/assets/examples/overview.png +0 -0
  46. package/topmind-cover/assets/examples/paper-collage-alt.png +0 -0
  47. package/topmind-cover/assets/examples/paper-collage-wechat.png +0 -0
  48. package/topmind-cover/assets/examples/paper-collage.png +0 -0
  49. package/topmind-cover/assets/examples/tutorial-steps-wechat.png +0 -0
  50. package/topmind-cover/assets/examples/tutorial-steps.png +0 -0
  51. package/topmind-cover/assets/examples/white-clean-alt-wechat.png +0 -0
  52. package/topmind-cover/assets/examples/white-clean-alt.png +0 -0
  53. package/topmind-cover/assets/examples/white-clean-wechat.png +0 -0
  54. package/topmind-cover/assets/examples/white-clean.png +0 -0
  55. package/topmind-cover/package-lock.json +16 -0
  56. package/topmind-cover/package.json +16 -0
  57. package/topmind-cover/references/cover-prompts.md +436 -0
  58. package/topmind-cover/references/cover-styles.md +496 -0
  59. package/topmind-cover/references/impact-language.md +94 -0
  60. package/topmind-cover/references/ref-white-clean-1.png +0 -0
  61. package/topmind-cover/references/ref-white-clean-2.png +0 -0
  62. package/topmind-cover/scripts/audit_css.py +39 -0
  63. package/topmind-cover/scripts/audit_docs.py +80 -0
  64. package/topmind-cover/scripts/audit_skill.py +60 -0
  65. package/topmind-cover/scripts/audit_styles.py +54 -0
  66. package/topmind-cover/scripts/crop-cover.py +74 -0
  67. package/topmind-cover/scripts/negative_tests.py +71 -0
  68. package/topmind-cover/scripts/package_skill.py +188 -0
  69. package/topmind-wechat-post/README.en.md +111 -0
  70. package/topmind-wechat-post/README.md +111 -0
  71. package/topmind-wechat-post/SKILL.md +251 -0
  72. package/topmind-wechat-post/assets/themes/amber-review.json +35 -0
  73. package/topmind-wechat-post/assets/themes/graphite.json +35 -0
  74. package/topmind-wechat-post/assets/themes/minimal-ink.json +35 -0
  75. package/topmind-wechat-post/assets/themes/newsprint.json +35 -0
  76. package/topmind-wechat-post/assets/themes/tech-blue.json +35 -0
  77. package/topmind-wechat-post/package-lock.json +16 -0
  78. package/topmind-wechat-post/package.json +16 -0
  79. package/topmind-wechat-post/references/design.md +50 -0
  80. package/topmind-wechat-post/references/element-spec.md +163 -0
  81. package/topmind-wechat-post/references/known-pits.md +85 -0
  82. package/topmind-wechat-post/references/theme-map.md +139 -0
  83. package/topmind-wechat-post/references/typography-rules.md +62 -0
  84. package/topmind-wechat-post/references/wechat-constraints.md +111 -0
  85. package/topmind-wechat-post/references/workflow.md +102 -0
  86. package/topmind-wechat-post/references/writing-quality.md +105 -0
  87. package/topmind-wechat-post/scripts/audit_css.py +39 -0
  88. package/topmind-wechat-post/scripts/audit_docs.py +80 -0
  89. package/topmind-wechat-post/scripts/audit_skill.py +60 -0
  90. package/topmind-wechat-post/scripts/audit_styles.py +54 -0
  91. package/topmind-wechat-post/scripts/lint-wechat.py +446 -0
  92. package/topmind-wechat-post/scripts/md2wechat.py +1792 -0
  93. package/topmind-wechat-post/scripts/negative_tests.py +171 -0
  94. package/topmind-wechat-post/scripts/new-article.py +183 -0
  95. package/topmind-wechat-post/scripts/package_skill.py +188 -0
  96. package/topmind-wechat-post/scripts/push-to-topstream.py +226 -0
  97. package/topmind-wechat-post/scripts/scan_ai_flavor.py +464 -0
  98. package/topmind-wechat-post/scripts/sync-mapping.py +220 -0
  99. package/topmind-wechat-post/scripts/sync-status.py +187 -0
  100. package/topmind-x-article/README.en.md +109 -0
  101. package/topmind-x-article/README.md +104 -0
  102. package/topmind-x-article/SKILL.md +156 -0
  103. package/topmind-x-article/package-lock.json +16 -0
  104. package/topmind-x-article/package.json +16 -0
  105. package/topmind-x-article/references/publish-checklist.md +31 -0
  106. package/topmind-x-article/references/x-format.md +27 -0
  107. package/topmind-x-article/references/x-html-format.md +85 -0
  108. package/topmind-x-article/scripts/audit_css.py +39 -0
  109. package/topmind-x-article/scripts/audit_docs.py +80 -0
  110. package/topmind-x-article/scripts/audit_skill.py +60 -0
  111. package/topmind-x-article/scripts/audit_styles.py +54 -0
  112. package/topmind-x-article/scripts/md2x-html.py +522 -0
  113. package/topmind-x-article/scripts/md2x.py +323 -0
  114. package/topmind-x-article/scripts/negative_tests.py +91 -0
  115. package/topmind-x-article/scripts/package_skill.py +188 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,931 @@
1
+ ## [0.7.1] - 2026-10-01
2
+
3
+ > 根包 0.7.0 → **0.7.1**(patch);技能:topmind-briefs 0.2.0 → **0.2.1**(patch,文档与去 AI 味优化);
4
+ > topmind-cover / topmind-wechat-post / topmind-x-article 保持原版本(仅 repository.url 元数据变更)。
5
+ >
6
+ > 本轮为拆分与改名专版:
7
+ - 仓库由 `tms-skills` 改名为 **`topmind-writing-skills`**:
8
+ npm 包 `@topmindspace/tms-skills` → `@topmindspace/topmind-writing-skills`,
9
+ CLI `bin/tms-skills.js` → `bin/topmind-writing-skills.js`;
10
+ 根 `package.json` / 4 技能 `package.json` 的 `repository.url`、
11
+ README 中英文 badge / 安装命令 / 技能表、PUBLISHING / ci.md、
12
+ workflows、`ci_privacy_scan.py`、`ci_skill_gates.sh`(去掉 `--with-pptx` 分支)同步更新。
13
+ - **`top-ppt-html` 拆出为独立仓库 `topmind-presentation`**(技能改名 `topmind-presentation`):
14
+ 技能文件、docs 下 ppt 专属页面(index/showcase/style-gallery、showcase/、site-assets/、
15
+ industry-pptx-research.md)一并迁移;本仓删除 `top-ppt-html/` 目录;无引用 banner 图已删除。
16
+ - `topmind-cover/SKILL.md` 的报告封面指引改为走 `topmind-presentation`。
17
+ - 修 installer:`readSkillMeta` 支持 `>-` / `|` 块标量(`list` 对 briefs 曾显示 `>-…`)。
18
+ - deprecate 脚本指引文案指向新包名。
19
+
20
+ ## [0.7.0] - 2026-10-01
21
+
22
+ > 根包 0.6.0 → **0.7.0**(minor,本轮是功能轮);技能版本:topmind-x-article 0.3.0 → **0.4.0**、
23
+ > topmind-wechat-post 0.1.0 → **0.2.0**、topmind-briefs 0.1.0 → **0.2.0**;
24
+ > topmind-cover 保持 0.3.0、top-ppt-html 保持 0.2.1(无变更)。
25
+ > 注:0.6.0 发版时 x-article SKILL.md frontmatter 漏 bump(仍为 0.2.0),本轮一并纠正为 0.4.0。
26
+
27
+ ### topmind-x-article 0.4.0(X 配图错位根治)
28
+
29
+ - `scripts/md2x-html.py` 新增 **`--images-from 公众号稿.md`**:从源 md 的 `![]()` 按文档顺序
30
+ 自动派生图片,**禁止手工拼 `--images` 顺序**。根因:旧构建按 `images/*` 文件名排序传入,
31
+ 而文件名数字顺序 ≠ 文档顺序(`14-kling`/`15-china-models` 建图顺序与文档相反;
32
+ `21-codex`/`22-harness` 后加,排在 `16-openrouter` 之后),导致九月全景 X 版从第六节起整段配图错位
33
+ - 脚本内置校验:`[图N]` 必须连续编号且数量 = 图片数,否则直接报错退出(不静默生成错版)
34
+ - SKILL.md:工作流改用 `--images-from`;新增"错位症状 B"根因记录;补事实铁律/文字铁律/交付铁律;
35
+ README 中英、references/x-html-format.md 同步
36
+
37
+ ### topmind-wechat-post 0.2.0
38
+
39
+ - 签名区去掉"我是 {{作者名}},{{一句话简介}}"自我介绍行,只保留三连 CTA(兼容旧参数)
40
+ - 新增**双版一致性校验**:同一选题出 X 版后,必跑 X 内嵌图序列 vs 公众号内嵌图序列逐字节比对
41
+ - 新增**交付铁律**:发布/分享用交付包 HTML 原文件原样呈现,不临时重生成;`公众号稿.md` 唯一改稿入口
42
+ - 三个写作技能统一**语言铁律**:默认中文写作,只有用户明确要求英文才用英文
43
+
44
+ ### topmind-briefs 0.2.0
45
+
46
+ - 工作流改用 `--images-from 公众号短文.md` 派生图片顺序(同 x-article 根治方案)
47
+ - 构建后校验加:X 版内嵌图序列(无封面)与公众号版逐字节一致
48
+ - 新增交付铁律;语言铁律同步
49
+
50
+ ### 文档与元数据
51
+
52
+ - 根 README 中英:技能表(x-article 0.4.0、wechat-post 0.2.0、briefs 0.2.0)、安装器版本 0.7.0、钉版本示例 `@0.7.0`
53
+ - 各技能 README 中英「同 tag」引用全部 → `@topmindspace/tms-skills@0.7.0`
54
+ - `docs/PUBLISHING.md`:当前线更新为 0.7.0
55
+
56
+ ## [0.6.0] - 2026-09-30
57
+
58
+ > 根包 0.5.0 → **0.6.0**(minor,本轮是功能轮);技能版本:topmind-cover 0.2.0 → **0.3.0**、
59
+ > topmind-x-article 0.2.0 → **0.3.0**、topmind-wechat-post 保持 0.1.0(无变更)、
60
+ > top-ppt-html 保持 0.2.1(无变更)。
61
+
62
+ ### topmind-cover 0.3.0(X 封面主尺寸改为 5:2)
63
+
64
+ - X Article 封面主尺寸从 1200×675(16:9)改为 **1500×600(5:2)**:SKILL.md 尺寸表、
65
+ 流程步骤(横构图 5:2)、`scripts/crop-cover.py`、`scripts/negative_tests.py` 全量对齐
66
+ - topmind-x-article README 中英封面引用同步为 `cover-1500x600.png` / 1500×600
67
+ - `assets/examples/` 旧样张仍为 16:9 版,README 已明确标注"旧版、仅供风格参考",不重制
68
+
69
+ ### topmind-x-article 0.3.0(图片点击放大 lightbox)
70
+
71
+ - `scripts/md2x-html.py`:正文图与封面预览新增 lightbox——点击放大看原图,
72
+ 支持新标签页打开原图 / 下载原图,Esc / 点背景 / 关闭按钮退出;**不屏蔽右键**
73
+ (`oncontextmenu` 未添加),放大后可右键另存或直接截图
74
+ - 加固:嵌套代码围栏(四反引号开栏)不会被内部三反引号提前关闭;未闭合围栏文末自动收尾;
75
+ 标题从 frontmatter 之后的首个一级标题提取;图片/封面缺失时干净报错
76
+ - 技能 README 中英补 lightbox 说明
77
+
78
+ ### 文档与元数据
79
+
80
+ - 根 README 中英:技能表(x-article 0.3.0、cover 0.3.0 + 新描述)、安装器版本 0.6.0、钉版本示例 `@0.6.0`
81
+ - 四技能 README 中英「同 tag」引用全部 → `@topmindspace/tms-skills@0.6.0`
82
+ - `docs/PUBLISHING.md`:当前线(安装器 0.6.0、cover 0.3.0、x-article 0.3.0)与整仓同 tag 示例 v0.6.0
83
+
84
+ ## [0.5.0] - 2026-09-29
85
+
86
+ > 根包 0.4.1 → **0.5.0**(minor,本轮是功能轮);技能版本:topmind-x-article 0.1.0 → **0.2.0**、
87
+ > topmind-cover 保持 0.2.0(纯文档新增)、topmind-wechat-post 保持 0.1.0(纯文档)、top-ppt-html 保持 0.2.1(无变更)。
88
+
89
+ ### topmind-x-article 0.2.0(新功能:HTML 一键复制发布链路)
90
+
91
+ - 新增 `scripts/md2x-html.py`:原稿 → 单文件 HTML(内联样式 + 配图 base64 内嵌 +
92
+ 页顶「一键复制全文」+ 每图 `[图N]` 编号/下载按钮 + 每提示词块「复制提示词」按钮 + 封面仅预览/下载)
93
+ - 按 X 编辑器真实语法重写(v3):提示词块改 `<blockquote>`(X 不识别粘贴的 `<pre>` 为代码块,
94
+ 原生代码块只能走 Insert 菜单);`#` 标题不进剪贴板(手动填 X 标题栏);复制前 JS 自动剥离按钮/UI;
95
+ GFM 表格转列表(X 粘贴丢弃 `<table>`);新增有序列表、裸链接转超链接
96
+ - 提示词复制双通道文档:作者侧用 HTML「复制提示词」按钮(发布前取用文本);
97
+ 读者侧一键复制必须转为 X 原生 Code 块(Insert → Code 手动逐块转换,原生代码块带 native copy button)
98
+ - README 中英重写用法(HTML 首选、txt 兜底)
99
+
100
+ ### topmind-cover(文档,保持 0.2.0)
101
+
102
+ - 新增 `references/cover-prompts.md`(436 行):11 风格可直接拷贝的中文提示词手册 +
103
+ 参考图复刻学习区(设计语言拆解 + 学习版提示词 + 原创红线)+ 外部调研
104
+ (小红书六大高互动类型各 1 条、YouTube 高 CTR 范式、公众号/X 规则,8 个来源链接)+
105
+ 14 种内容类型场景组合推荐表 + 通用负面提示词中英 + 变量速查表
106
+
107
+ ### topmind-wechat-post(文档,保持 0.1.0)
108
+
109
+ - `references/wechat-constraints.md`:已发布正文不可能保留 JS 复制按钮(JS 被剥离,
110
+ 第三方排版器的复制按钮只存在于其本地预览页);代码围栏只负责高亮/折行/可读性,
111
+ 不得在正文中承诺「一键复制」;需复制即用走评论区置顶/附件/小程序文档等站外链路
112
+
113
+ ### 文档与元数据
114
+
115
+ - 根 README 中英:技能表(x-article 0.2.0 + 新描述)、安装器版本 0.5.0、钉版本示例 `@0.5.0`
116
+ - 四技能 README 中英「同 tag」引用全部 → `@topmindspace/tms-skills@0.5.0`
117
+ - `docs/PUBLISHING.md`:当前线(安装器 0.5.0、x-article 0.2.0)与整仓同 tag 示例 v0.5.0
118
+
119
+ ## [0.4.1] - 2026-09-29
120
+
121
+ > **本版备发**(tag v0.4.1 待打;npm 待发布;commit = 本轮审计报告落盘时的 `git log` 首条)。
122
+ > 根包 0.4.0 → **0.4.1**(patch);技能版本:top-ppt-html 0.2.0 → **0.2.1**(修技能数据 bug 则 patch)、
123
+ > topmind-cover 保持 0.2.0(仅换样张图+描述文案,无功能变更)、topmind-wechat-post / topmind-x-article 保持 0.1.0。
124
+ > 本轮是第十三轮集成轮(A 文档抛光 + B 示例与描述 + C 新代码复审),改动最小、无新功能。
125
+ > 另含第十四轮集成轮(wechat-post/x-article 真 bug 修复 + installer 测试扩展):**不 bump 版本**,全部并入 0.4.1。
126
+
127
+ ### 安装器 bug 修复(高危 · Worker C 复审发现)
128
+
129
+ - `uninstall`/`install` 的 `assertDestOutsideSource` 守卫被符号链接绕过:`path.resolve` 不解析软链,
130
+ `--to <软链指向包根>` 会跟随链接 `rmSync` 删掉包内技能源目录(已实测验证旧代码确会删源)
131
+ - 修复:`bin/tms-skills.js` 改用 `realpath` 归一化比对(`realOrResolved()`:dest 不存在时向上找最深存在祖先),+25/−4
132
+ - `scripts/test_installer_cli.js` 新增 case11/case12(uninstall/install 经软链指包根 → 拒绝、源目录完好),12 用例全过
133
+
134
+ ### top-ppt-html 0.2.1(Worker C 复审发现 · 低危数据 bug)
135
+
136
+ - `assets/icons/index.json`:「组织」图标关键词含裸「架构」,会把「系统架构」类标题配上人物组织图 → 已收窄为「组织架构」
137
+
138
+ ### 文档抛光(Worker A)
139
+
140
+ - topmind-cover/SKILL.md:冲击力自检清单 10→9(合并逐字正确项)、设计铁律去重
141
+ - impact-language.md:删除与 cover-styles.md 重复的「白色清新」章节(只在 cover-styles 保留,出处回指用户参考图)
142
+ - 根 README 中英:封面技能描述 8 种风格 → 11 种;top-ppt-html README 中英版本口径改为与 `@topmindspace/tms-skills@0.4.1` 同 tag
143
+
144
+ ### 示例与描述(Worker B)
145
+
146
+ - `white-clean-alt.png`(white-clean-2)已重生成:标题「极简收纳全攻略」摆正、逐字正确;配套
147
+ `white-clean-alt-wechat.png`(900×383)新增落盘并纳入 git;示例目录 README 计数同步为 26 张
148
+ - 4 处 description 更新(cover package.json + SKILL frontmatter 加「11 种风格模板」;ppt-html package.json + SKILL frontmatter 加「48 图标 + 弹性版式」);overview alt 文案 8→11
149
+ - cover 安装文案复核:`list` 输出已准确,未动安装器
150
+
151
+ ### 第十四轮集成(Worker A/B/C)——不 bump 版本,全部并入 0.4.1
152
+
153
+ - **topmind-wechat-post 修 6 真 bug**(`scripts/md2wechat.py`,Worker A 专审发现):
154
+ - yaml/diff 代码块高亮正则在分支内误用 `(?m)` → `re.error` 崩溃(编译期统一 `re.M|re.S`,分支内去掉)
155
+ - URL 含平衡括号被截断 → 新增括号嵌套匹配扫描器替代旧正则
156
+ - `[文字](url "title")` 带 title 链接认不出 → 链接解析支持 title
157
+ - 脚注 URL 的 `&` 被转义两次 → 修正转义顺序
158
+ - 坏主题 JSON 的 Traceback → 干净报错;目录当输入的报错文案修正
159
+ - 嵌套围栏被提前闭合 → 围栏匹配支持嵌套
160
+ - `scripts/negative_tests.py` 新增 6 个 case,15/15 绿
161
+ - **topmind-x-article 修嵌套围栏**(`scripts/md2x.py`,Worker A 专审发现);
162
+ `scripts/negative_tests.py` 新增 2 个 case,8/8 绿
163
+ - **installer 回归测试扩展**(Worker C):`scripts/test_installer_cli.js` 新增 case13–22,
164
+ 覆盖 symlink 守卫纵深(realpath 归一化)与 installer 回归,72 断言全绿;`bin/` 未动,无真实绕过
165
+ - **分发体积与性能**(Worker B):无真问题。0.4.1 tarball 解包 29.1MB(0.3.9 18.4MB,
166
+ +10.7MB 系封面示例画廊预期增量);top10 大文件全合法素材;48 图标 PNG 最大 27.4KB 无异常;
167
+ install 耗时 0.3s 不需优化;`sync_npm_files.js --check` 通过
168
+ - 技能版本号保持:wechat-post / x-article 保持 0.1.0(纯 bug 修复按技能版本规则不 bump);
169
+ cover 保持 0.2.0、ppt-html 保持 0.2.1、根包保持 0.4.1
170
+
171
+ ## [0.4.0] - 2026-09-29
172
+
173
+ > **本版备发**(tag v0.4.0 待打;npm 待发布;commit = 本轮审计报告落盘时的 `git log` 首条)。
174
+ > 根包 0.3.9 → **0.4.0**(minor,本轮是功能轮);技能版本:top-ppt-html 0.1.19 → **0.2.0**、topmind-cover 0.1.0 → **0.2.0**、topmind-wechat-post / topmind-x-article 保持 0.1.0。
175
+ > 本轮是"对标业界+浅色封面+图标包版式"的功能轮(第十二轮)。
176
+
177
+ ### 安装器(Worker A)
178
+
179
+ - 新增 `uninstall <id> [--to]` 命令:卸载已安装技能,`--to` 指向文件/缺目录时干净报错 exit 1
180
+ - `install` 已装版本感知:已装同版本拒绝安装并给出三行摘要(当前版本/来源/提示 uninstall 或覆盖),不再静默覆盖
181
+ - `scripts/test_installer_cli.js`:10 用例 38 断言,覆盖 install/uninstall/list/负向输入
182
+ - `--help` 更新、根 README.md/README.en.md 安装章节重写(`github:` 口径、钉版本示例同步 0.4.0)
183
+ - `.github/workflows/ci.yml` 新增 "Installer CLI tests" step
184
+
185
+ ### topmind-cover 0.2.0(Worker B)
186
+
187
+ - 新增 3 个浅色风格:`white-clean`(排第一,标题冲击目标 1/3 字高)、`bg-blur`(背景虚化突出前景)、`paper-collage`(纸拼贴质感)
188
+ - `cover-styles.md` 11 风格重排为浅色优先;`impact-language.md` 补条目;SKILL.md 新增"直出/讨论"决策流
189
+ - 6 张新风格样张 + `overview.png` 重建;`references/ref-white-clean-1/2.png` 新增参考图
190
+
191
+ ### top-ppt-html 0.2.0(Worker C)
192
+
193
+ - 内置原创图标包 `assets/icons/`:48 SVG + 48 PNG + `index.json` 映射,7 个默认图标兜底;`scripts/check_icons.py`(`--strict`)做图标一致性门禁;`references/icons.md` 文档化
194
+ - 3 种 layout variant:bento-grid / timeline / 2-col-feature(`references/layout-variants.md`);`references/style-pack.md` 风格包文档化
195
+ - `validate_report.py` 新增内容覆盖率检查(<95% WARN);随门禁修复 6 个真实丢字 bug
196
+ - `scripts/layout-constants.json` 加 adaptiveText 弹性文本规则;HTML/PPTX 弹性适配减少溢出截断
197
+
198
+ ## [0.3.9] - 2026-09-29
199
+
200
+ > **本版备发**(tag v0.3.9 待打;npm 待发布;commit = 本轮审计报告落盘时的 `git log` 首条)。
201
+ > 注:0.3.7、0.3.8 未发布,全部内容已并入本版。
202
+ > 根包 0.3.8 → **0.3.9**(patch);4 个技能 `version` 保持不动(top-ppt-html 0.1.19,其余 0.1.0)。
203
+ > 本轮是"新鲜眼睛"横扫(第十一轮):只找前十轮没覆盖的盲区,改动最小。
204
+
205
+ ### 代码异味横扫(第十一轮 Worker A)
206
+
207
+ - TODO 注释 6 命中 → 0 真遗留(均为有意为之:文档纪律说明/scaffold 指导注释/校验正则/示例代称)
208
+ - 死代码:全仓 Python + top-ppt-html JS 逐函数交叉 grep,零死函数;12 个 CLI 参数逐个验证全部在用
209
+ - 跨技能一致性修复:19 处错误信息半角冒号 `错误:` → 全角 `错误:`(多数派 47 处);`validate_report.py` 加 `-h/--help` 早退(exit 0),与其他 argparse CLI 一致
210
+ - 重复逻辑(仅记录,不重构):`esc()` HTML 转义三处逐字相同、`read_frontmatter()` 跨技能同构、`load_constants()` 各自实现——均为四技能同构门禁的有意设计
211
+
212
+ ### 对抗输入测试(第十一轮 Worker B:5 真崩溃全部修复)
213
+
214
+ - `bin/tms-skills.js`:`--to` 指向已存在文件时 `mkdirSync` 抛未捕获堆栈 → try/catch 干净报错 exit 1
215
+ - `md2wechat.py`:`resolve_image` 的 `shutil.copy2`/`os.makedirs` 未捕获 OSError(磁盘满/目录当图片)→ 干净报错 exit 1
216
+ - `md2x.py`:输出写入 `mkdir`+`write_text` 未捕获 OSError → 干净报错 exit 1;目录当输入的报错文案修正("找不到输入文件"→"输入是目录不是文件")
217
+ - `crop-cover.py`:`out_dir.mkdir` 与渲染循环 `out.save` 未捕获 OSError(磁盘满→截断 PNG)→ 干净报错 exit 1
218
+ - 对抗矩阵:100KB 单行/emoji+零宽+混合换行/非法 UTF-8/空文件/纯标题/48MB 图片,其余全部干净通过
219
+
220
+ ### 文档一致性(第十一轮 Worker C)
221
+
222
+ - 审计结论抽查 5 处全部为真(architecture 归一化/SKILL.md 13KB 预算/cover 触发词/ip-fun 原位垫色块补丁/footer 移出 content 标记)
223
+ - SKILL.md vs --help 漂移修复 1 处:wechat-post SKILL.md 注释声称 `--workspace` 参数,全仓无此参数 → 改为 `--base`
224
+ - README 示例 10/10 实跑通过(/tmp 干净目录,本地包安装)
225
+
226
+ ## [0.3.8] - 2026-09-29
227
+
228
+ > **本版未发布**(未打 tag、未推 npm;0.3.8 全部内容已并入 0.3.9)。
229
+ > 根包 0.3.6 → **0.3.8**(patch);4 个技能 `version` 保持不动(top-ppt-html 0.1.19,其余 0.1.0)。
230
+ > 本轮只动 top-ppt-html + 文档:渲染产出目检修复(A)+ PPTX 双引擎保真修复 11 bug(B)+ 文档修正(C)。
231
+
232
+ ### 模板 footer 修复(第十轮 Worker A:渲染产出目检)
233
+
234
+ - `top-ppt-html/assets/templates/{presentation,research,architecture}.html`:`<footer>` 移出 `__TOPPPT_CONTENT_START__`/`__TOPPPT_CONTENT_END__` 标记之外——此前自动渲染取 content 区间时会连带删除页脚,目检确认已修复。
235
+
236
+ ### PPTX 双引擎保真修复(第十轮 Worker B:PPTX 实检,11 bug 全部像素复验)
237
+
238
+ - `top-ppt-html/scripts/build_pptx.js` + `assets/pptx-export.js`(双端同规则):
239
+ - 图表数据标签小数位:按模型数值实际小数位(上限 2 位)生成 format code,修复小数标签被截断
240
+ - hbar 条形图:类目轴自下而上绘制,反转数据使首项居顶;单系列颜色按数据点分配(跟随数据归属,与 A 通道一致)
241
+ - streamgraph 退化:相邻 ribbon quad 沿走向微叠 0.02in,消除拼接处抗锯齿发丝缝
242
+ - boxplot:min 标签默认移到须线帽下方,不再被组标签带压住叠印
243
+ - marimekko:单元格归一化兼容裸数值或 `[标签,数值]` 对(裸数值沿用旧行为),修复 NaN 崩坏
244
+ - pyramid:标题列宽按层内宽比例(labelFrac≈0.3)分配,顶层窄时改单框混排,修复窄层标题/说明叠印
245
+ - KPI:第 4 个起的支撑指标不再静默截断——容量按最小允许行高计算、行高按全部指标自适应压缩,超容显式告警
246
+ - donut 图例:百分比列 x(`donut.legendPctX` 5.3 → 10.8)右移,修复图例数值被圆环覆盖
247
+ - table:内容高度逐格预估、超高全表收字号,字号触底仍装不下则显式告警(不再撑高行压脚注)
248
+ - exhibit 徽标:纯编号自动补 `Exhibit ` 前缀(与 HTML 视觉一致),已带前缀的不重复
249
+ - sankey/streamgraph note:note 与 footnote 均参与 `chartBottom` 结算,修复 note 重叠
250
+ - `top-ppt-html/scripts/layout-constants.json`:`donut.legendPctX` 5.3 → 10.8(单源),已由 `sync_runtime.py` 同步至 `pptx-export.js`、画廊、`templates/*.html`、示例的内联副本与 `__TOPPPT_RUNTIME_SHA__` 戳
251
+
252
+ ### 文档修正(第十轮 Worker C)
253
+
254
+ - 根 README(中英):当前线 0.2.x → 0.3.x;`topmind-cover` "17 张双尺寸" → "16 张双尺寸 + 1 张风格总览图"
255
+ - `docs/PUBLISHING.md`:`latest` 指向 0.3.1 → 0.3.6
256
+ - `topmind-wechat-post/README`(中英):二级标题编号示例 `01` → `1`
257
+
258
+ ## [0.3.7] - 2026-09-29
259
+
260
+ > **本版未发布**(未打 tag、未推 npm;0.3.7 全部内容已并入 0.3.8)。
261
+ > 根包 0.3.6 → **0.3.7**(patch);4 个技能 `version` 保持不动(top-ppt-html 0.1.19,其余 0.1.0)。
262
+ > 本轮只动 topmind-cover:文字排印与装饰系统(第九轮)。
263
+
264
+ ### 文字排印与装饰系统(第九轮)
265
+
266
+ - `topmind-cover/references/impact-language.md`:新增第七节"文字装饰系统"(+38 行):6 种可靠装饰(关键词变色/字号对比/色块衬底/轻微阴影立体/手绘划线圈注箭头/小元素旋转≤8°)各给效果/风险/适用风格/提示词写法四列 + 8 风格各 2~3 种必用装饰指定 + 7 条装饰禁令(禁大标题透视/一句话超 3 色/三重叠加/竖排+旋转/色块吞字/装饰压笔画/装饰超量)
267
+ - `topmind-cover/references/cover-styles.md`(316→359 行):8 风格提示词新增"文字特效"段(中英双语,全部含色号与量化参数,如"钩子词放大 1.5 倍""色块高 1.2 倍字高""投影偏移 1/10 字高");各风格"绝不"清单追加装饰禁令;news-flash 单色铁律放宽为"纯黑打底+爆点词朱红点睛"(仍 ≤3 色,与参考图布局/配色/文字结构全错开);brand-launch 品牌词发光描边改为荧光绿块衬底
268
+ - `topmind-cover/SKILL.md`(114→116 行):冲击力自检清单追加第 9/10 条——中文逐字正确(装饰未导致错字/乱码/笔画粘连)、装饰手法 ≤ 该风格指定数量(minimal 只许 1 种);"必过 8 项"同步为"必过 10 项"
269
+ - 16 张样张全部重生成(标题沿用第八轮):三重目检通过——中文逐字正确(装饰是错字重灾区,逐字核对)、每张 ≥2 种装饰生效且不乱(minimal 仅 1 种)、与 7 张参考图无实质相似;返工 1 次(magazine 首版比例错误)
270
+
271
+ ## [0.3.6] - 2026-09-29
272
+
273
+ > **本版已发布**(commit 5dc0bb8,tag v0.3.6,GitHub Release + npm @0.3.6,latest 已切换)。
274
+ > 根包 0.3.5 → **0.3.6**(patch);4 个技能 `version` 保持不动(top-ppt-html 0.1.19,其余 0.1.0)。
275
+ > 本轮只动 topmind-cover:冲击力升级(第八轮)。
276
+
277
+ ### 冲击力升级(第八轮)
278
+
279
+ - 新增 `topmind-cover/references/impact-language.md`:从 7 张爆款参考图拆解的 20 条冲击力设计语言(字体/色彩/构图/信息层级/质感)+ 8 条保守陷阱;只沉淀抽象原则,不涉及任何参考图的具体版式
280
+ - `topmind-cover/references/cover-styles.md`:8 风格提示词配方全部重写为四要素结构(字体量级/配色系统/构图能量/质感细节),每风格新增标题文案提炼公式 + 5 条"绝不"清单;经红线自查(round5 差异审查表)无复现
281
+ - `topmind-cover/SKILL.md`:工作流新增"标题提炼 → 构图简报 → 生成 → 冲击力自检"(96→114 行);新增 8 条目冲击力自检清单(3 秒测试/字高 ≥1/4/对比果断/记忆点/质感/逐字正确/中央 60% 安全区),不通过最多重生成 3 次
282
+ - 16 张样张全部重生成:8 个新标题(实测30款全翻车/快,就是慢/破晓 6.0:快四倍/从零到上线/21天爆单挑战/本周AI大事/慢食三餐/主编:流量是毒药);双重目检(vs 参考图无实质相似、vs 旧 16 张全部明显更强);中文逐字正确、无乱码
283
+ - README(中英)用法同步为 7 步 + 自检清单入口
284
+
285
+ ## [0.3.5] - 2026-09-29
286
+
287
+ > **本版已发布**(commit 9ef7324,tag v0.3.5,GitHub Release + npm @0.3.5,latest 已切换)。
288
+ > 根包 0.3.4 → **0.3.5**(patch);4 个技能 `version` 保持不动(top-ppt-html 0.1.19,其余 0.1.0)。
289
+ > 注:0.3.2、0.3.3、0.3.4 均未发布,全部内容已并入本版。
290
+
291
+ ### 性能实测与优化(第七轮 Worker 4)
292
+
293
+ - **实测基线**(中等规模真实输入):`md2x.py` 300KB/8814 行 0.33s;`md2wechat.py` 218KB/3219 行/
294
+ 80 图 0.42s(`--embed-images` 0.47s);`crop-cover.py` 4000×2250 主图 1.79s;
295
+ 安装器 `install`/`list` 均 <0.5s(含 7.9MB 的 top-ppt-html)。
296
+ - **修 5 处 low-hanging fruit**(输出逐字节一致,已 diff 验证,无行为改动):
297
+ - `md2wechat.py audit_inline()`:8 次全正文 `re.search` 合并为一次预编译单遍扫描
298
+ (原为大正文耗时的 ~47%,cProfile 实测);
299
+ - `md2wechat.py render_inline()`:10 个行内模式预编译到模块级
300
+ (原每行 10 次 `re` 字符串模式缓存查找,666k 行调用时 667 万次);
301
+ - `md2wechat.py highlight()`:语言联合正则按语言缓存(原每代码块重编译一次);
302
+ - `md2wechat.py link_repl()`:脚注 url→序号改字典索引(原每链接两次全表扫描,O(n²)→O(n));
303
+ - `md2x.py _inline()`:同理预编译全部行内模式。
304
+ - **实测提升**(交错对比,user CPU 时间):md2wechat 11MB 输入 13.8s → 10.0s(-27%);
305
+ md2x 49MB 输入 62.5s → 42.2s(-32%);300KB 输入 md2x 0.33s → 0.29s。
306
+ crop-cover(PIL 解码/resize 主导)与安装器(node 启动 + 文件拷贝主导)无冗余工作,未改动。
307
+
308
+ ### 可靠性矩阵(第七轮 Worker 4:三个技能 + 安装器)
309
+
310
+ - **修 2 个明确 bug**:
311
+ - `md2x.py` / `md2wechat.py` 非法 UTF-8 输入原抛 `UnicodeDecodeError` Traceback,
312
+ 现干净报错(非零退出、无 Traceback);读取期 `OSError`(如权限不足)同理。
313
+ - `md2wechat.py` 交付物写入改原子写(临时文件 + `os.replace`):磁盘满等中途失败时
314
+ 不再留下半截 HTML/清单(实测大文件写盘失败曾留下截断 HTML)。
315
+ - 矩阵其余项全部干净(非零退出、无 Traceback、无半截输出):空文件、49MB 超大文件、
316
+ 特殊字符文件名(空格/引号/中文)、图片缺失(含 `--embed-images` 的"未内嵌"提示)、
317
+ 非图片/0 字节/缺失输入、缺 Pillow 干净提示、非法 skill id、装进技能源目录树被拒、
318
+ 未知命令/缺参数。
319
+ - 安装器经确认零网络调用(纯 `fs`/`path`),本地安装天然离线可用;断网仅影响
320
+ `npx github:` 拉取,属 npm 侧报错,非本仓库代码路径。
321
+
322
+ ### 发版准备 0.3.5
323
+
324
+ - 根 `package.json` 0.3.4 → **0.3.5**;9 处版本引用同步(根 README 中英钉版本示例、
325
+ `docs/PUBLISHING.md` 当前线与版本策略、6 份技能 README 的"同 tag"行);4 技能各自
326
+ `version` 不动。
327
+ - 待办:`top-ppt-html/README{,.en}.md` 的 3 处 `@0.3.4` 引用由其审核 worker 同步
328
+ (本轮未动 `top-ppt-html/` 目录)。
329
+
330
+ ### 全门禁(第七轮 Worker 4,改完后跑)
331
+
332
+ - `ci_privacy_scan.py` PASS(200 文件);`sync_npm_files.js --check` PASS;
333
+ `ci_skill_gates.sh --with-pptx` 全绿;4 技能 `negative_tests.py` 全部通过;
334
+ `run_skill_gates.js versions` PASS;`test_install_guards.js` 全部通过。
335
+
336
+ ## [0.3.4] - 2026-09-29
337
+
338
+ > **本版备发中**(未 push、未打 tag、npm 无此版本)。
339
+ > 根包 0.3.3 → **0.3.4**(patch);4 个技能 `version` 保持不动(top-ppt-html 0.1.19,其余 0.1.0)。
340
+ > 注:0.3.2、0.3.3 均未发布,全部内容已并入本版。
341
+
342
+ ### top-ppt-html:全面审查 + 必要优化(第六轮)
343
+
344
+ - **渲染管线实跑**:虚构测试稿走完 render → hydrate_charts → data URI 内联 → validate --strict
345
+ (95 PASS / 0 WARN / 0 FAIL);故意注入 3 类缺陷(超大图片、布局溢出、空 alt)全部被抓;
346
+ PPTX 11 slides 实跑,16:9、微软雅黑、中文原生文本、原生图表,strict 0 error / 0 warning;
347
+ ELEMENT_OVERLAP / LAYOUT_FILL 门禁经真实 PPTX 注入验证有效。
348
+ - **build_pptx.js 修 6 处**:KPI 竖分隔线越过注释带、KPI/donut/image 页 `sec.points` 被丢弃、
349
+ image 页图片底边越过注释带、cards 要点无脑 shrink 被 TEXT_OVERFLOW 抓、
350
+ points 纯字符串/`{t,d}` 形态渲染为空或 `[object Object]`。
351
+ - **hydrate_charts.py**:空 labels/values、非数字 values、长度不一致原抛 Traceback,
352
+ 现干净报错(`ChartDataError`,带 section 定位),禁静默截断。
353
+ - **validate_report.py 修 2 处**:`alt=""` 视同缺失;图片体积按 data URI **解码后字节数**计量
354
+ (原按标签字符串长度,属 bug;级别保持 WARN,strict 已拦截)。
355
+ - **SKILL.md/文档**:修 `(=?)` 编辑残留;README(中英)补 3 分钟最小示例;
356
+ 修 13 处死引用(错乱脚本路径、`docs/archive/…` 改 `../docs/archive/…` 等);
357
+ 9 风格抽 3 套(品牌红/靛紫/光谱彩色)实跑渲染全部成功。
358
+ - 零用户可见行为改动。遗留候选:render_from_model 不同步 style/theme(需产品决策)、
359
+ 超长中文图表标签不截断、图片超限 WARN 不升级 FAIL、代码块页型缺失。
360
+
361
+ ### 全仓横扫(第六轮)
362
+
363
+ - **修真 bug**:第五轮重写 `topmind-cover/references/cover-styles.md` 时把截断输出写进文件
364
+ (ip-fun 尾部丢失、news-flash/minimal/magazine 三节整节丢失),已按审计文档+样张实物补齐。
365
+ - **docs/PUBLISHING.md**:补 HTTPS+PAT 推送方式(SSH 隧道被代理墙掐断后的实际走法;
366
+ GitHub git 接口不认 Bearer 只认 Basic)、tag↔package.json 校验、NPM_TOKEN/E409 加固的文档记载。
367
+ - 三个新技能 README(中英)补版本号行;根 README.en 示例图体积与实测对齐(~8.9MB)。
368
+ - 四技能 description 触发边界复核:互不重叠、无真空("X 长文封面"良性重叠已写清委托关系)。
369
+ - 隐私扫描 PASS(199 文件);安装器四技能回归全过。
370
+
371
+ ## [0.3.3] - 2026-09-29
372
+
373
+ > **本版未发布**(备发中:未 push、未打 tag、npm 无此版本)。
374
+ > 根包 0.3.2 → **0.3.3**(patch);4 个技能 `version` 保持不动(top-ppt-html 0.1.19,其余 0.1.0)。
375
+ > 注:0.3.2 未发布,已并入本版。
376
+
377
+ ### topmind-cover:6 张样张版式级重设计(差异化纠偏)
378
+
379
+ - 用户指出第四轮样张仍是"翻版"(版式结构照搬 7 张参考封面,只换文案形象)。
380
+ 本轮按**版式级标准**重做:只保留抽象原则(标题是视觉重心/信息分层/留白呼吸感),
381
+ 6 张重设计(gan-huo 居中构图+深炭灰暖橙、big-type 单行超大书法字+奶油亮底、
382
+ brand-launch 深海军蓝+荧光绿、tutorial-steps 横向时间线+墨色题字、
383
+ ip-fun 数字改右下角印章+橙黄暖色、news-flash 纯黑单色+纸纹+俯视静物大改),
384
+ 2 张保留微调(minimal「慢思考」、magazine「创造者访谈」)。
385
+ - 8 张主配色互不相同,且不与 7 张参考图主配色(浅蓝/黑红/粉紫/红白/蓝白)撞车;
386
+ 每张过双重目检(中文正确性 + 路人测试:描述画面后追问"像哪张参考图",答不出才算过)。
387
+ - `references/cover-styles.md`:设计语言收紧为抽象原则,删除"左文右图""底部标签条"等
388
+ 具体版式描述;**原创铁律升级**:版式与配色也不得与第三方封面构成实质相似,
389
+ 只学原则不学版式。
390
+
391
+ ### topmind-wechat-post / topmind-x-article:第二轮深审(质量)
392
+
393
+ - wechat-post:修 5 处文档与实现/规范打架(`---` 渲染文档落后于实现、主题表 genre 漏项、
394
+ 最小示例缺放图前置步骤、`--link-mode note` 档无文档、加粗密度两份规范打架按 lint 对齐);
395
+ 零行为改动。遗留 3 个需改行为候选:缺图是否进合规自检、border-radius WARN 去噪、
396
+ h2 序号剥离残留标点。
397
+ - x-article:文档×脚本 14/14 规则实测一致;补 x-format.md 4 处"脚本有行为、文档没写"缺口;
398
+ SKILL.md 触发词补 `X 发长文`/`推特长文`/`twitter 长文`;README.en 表格标点精确化;
399
+ 零行为改动。遗留 4 个行为变化候选:无前导 `|` 表格、`~~~` 围栏、标题 140 字符检查
400
+ (超长分段经评估不需要)。
401
+
402
+ ## [0.3.2] - 2026-09-29
403
+
404
+ > **本版未发布**(未打 tag、未发 npm),全部内容已并入 0.3.3。以下为当时记录:
405
+
406
+ > 根包 0.3.1 → **0.3.2**(patch);4 个技能 `version` 保持不动(top-ppt-html 0.1.19,其余 0.1.0)。
407
+ > 整仓同 tag 发版,技能 `version` 独立演进(见 docs/PUBLISHING.md)。
408
+
409
+ ### topmind-cover:样张原创重制(纠偏)
410
+
411
+ - 上一版 16 张样张被指出"照搬参考封面"(文案与形象临摹第三方爆款图),本轮推倒重做:
412
+ 设计语言保留(巨型标题字/数字彩色突出/三层文字结构/中央 60% 安全区),
413
+ **8 种风格全部换上原创标题与视觉**:"7天玩转提示词"(纸飞机机器人)、"AI效率手册"
414
+ (抽象光影几何)、"星尘 OS 3.0"(虚构品牌发布)、"从想法到产品"(步骤卡片)、
415
+ "30天AI绘画挑战"(狐狸画家 IP)、"AI早报!"(报纸咖啡)、"慢思考"(银杏留白)、
416
+ "创造者访谈"(杂志肖像)。
417
+ - `assets/examples/` 16 张(8 主图 + 8 公众号裁剪版)+ `overview.png` 全部重拼重检:
418
+ 中文逐字正确、无乱码、与参考图不构成临摹;`README.md` 声明样张为原创设计、
419
+ 标题/数字/品牌均为虚构演示。
420
+ - `references/cover-styles.md` 新增**原创铁律**:prompt 配方是设计语言,
421
+ 禁止照抄任何第三方封面的文案与形象;8 风格示例小节同步换为本轮原创标题。
422
+
423
+ ### topmind-wechat-post:全面优化 + 4 处修复
424
+
425
+ - `scripts/md2wechat.py` 修复:**行内图片绕过图片管线**(现统一经管线解析、复制到
426
+ `images/`、登记上传清单、可被 `--embed-images` 内嵌);分隔线不再触发自家合规
427
+ WARN(改用块级 `<section>` 居中,视觉一致);标题手写序号剥离支持大写数字
428
+ (壹贰叁肆伍陆柒捌玖拾);图片 `title` 属性(`![a](x "t")`)不再导致整段源码泄漏。
429
+ - SKILL.md:主题表"适用"列与各主题 JSON 的 `genre` 声明对齐;补行内图片走图片管线
430
+ 说明;补 `--link-mode` 参数说明(默认脚注上标 / `inline` 括号注)。
431
+ - README(中/英):新增 9 行"最小示例"(输入→输出片段)+ `md2wechat` 参数表。
432
+ - `negative_tests.py` 5→8 项,全过。
433
+
434
+ ### topmind-x-article:全面优化 + 12 处转换 bug 修复
435
+
436
+ - `scripts/md2x.py` 修复 12 处:标题/引用/表格内行内标记残留、引用式链接与图片
437
+ (`[文字][ref]`/`![alt][img]` 及定义行)、URL 含括号断裂、`\` 转义符残留、
438
+ Setext 标题残留、带空格分割线(`* * *`)不识别、代码块内 `---` 误判分割线、
439
+ 文首 `---` 被 frontmatter 误吞、BOM 头、文档以代码块开头时首行缩进丢失。
440
+ - SKILL.md:description 补 `Do NOT use for 公众号(→ topmind-wechat-post)`,与短推文
441
+ 路由对称;`references/x-format.md` 转换规则表与脚本行为对齐。
442
+ - README(中/英):转换规则更新 + 新增 10 行"最小示例"(输出经实测逐字一致)。
443
+
444
+ ## [0.3.1] - 2026-09-29
445
+
446
+ > 根包 0.3.0 → **0.3.1**(patch);4 个技能 `version` 保持不动(top-ppt-html 0.1.19,其余 0.1.0)。
447
+ > 整仓同 tag 发版,技能 `version` 独立演进(见 docs/PUBLISHING.md)。
448
+
449
+ ### topmind-cover:风格库按爆款封面重沉淀 + 样张重制
450
+
451
+ - `references/cover-styles.md` 按 7 张爆款参考封面 + Manus 实战封面重沉淀为 **8 种风格**:
452
+ 爆款干货(`gan-huo`)/ 巨字宣言(`big-type`)/ 品牌发布(`brand-launch`)/
453
+ 教程步骤(`tutorial-steps`)/ IP 趣味(`ip-fun`)/ 资讯快报(`news-flash`)/
454
+ 极简留白(`minimal`,保留)/ 杂志编辑(`magazine`,保留),
455
+ 每种含适用场景、构图公式、配色 hex、标题写法规范(4~8 字、数字/关键词彩色突出)、
456
+ 中英 prompt 配方、避坑;删除旧 6 风格。
457
+ - `assets/examples/` 样张全部重制:**16 张**(8 风格 × 1200×675 主图 + 900×383 公众号中央裁剪版)
458
+ + `overview.png`(8 宫格总览图),逐张目检(标题逐字准确、无乱码、中央 60% 安全区),
459
+ 7 次返工均为"底部元素超出安全区";旧 12 张移除。
460
+ - 提炼规律:标题字巨大化(占画面高 22%~45%)、左文右图通用分区、三层文字结构
461
+ (大标题 + 胶囊/笔刷副标题 + 底部标签条)、数字前置造冲击、背景极简浅色。
462
+ - 根 README(中/英)、cover README(中/英)、cover SKILL.md 嵌入总览图(GitHub 绝对 URL)
463
+ + 8 风格一行式索引;用法"6 选 1"→"8 选 1"。
464
+
465
+ ### bug 修复
466
+
467
+ - topmind-wechat-post `scripts/md2wechat.py`:本地图片文件缺失时未登记进"图片上传清单"
468
+ (用户按清单补图会漏传);现登记 `⚠ 本地文件缺失` 行并计入"图片 N 张"计数。
469
+ HTML 仍保留断链占位(设计选择),清单已标注。
470
+
471
+ ## [0.3.0] - 2026-09-29
472
+
473
+ > 根包 0.2.0 → **0.3.0**(minor,新功能);4 个技能 `version` 保持不动(top-ppt-html 0.1.19,其余 0.1.0)。
474
+ > 整仓同 tag 发版,技能 `version` 独立演进(见 docs/PUBLISHING.md)。
475
+
476
+ ### topmind-cover:封面风格库 + 12 张示例图(新功能)
477
+
478
+ - `references/cover-styles.md` 扩为 **6 种风格库**:震撼大字报(`big-poster`)/ 科技未来感(`tech-future`)/
479
+ 杂志编辑风(`magazine`)/ 极简留白(`minimal`)/ 国潮插画(`guochao`)/ 赛博故障艺术(`cyber-glitch`),
480
+ 每种含适用场景、配色 hex、字体建议、中英 prompt 配方、避坑。
481
+ - `assets/examples/` 新增 **12 张示例图**(6 风格 × 1200×675 主图 + 900×383 公众号中央裁剪版,共约 6.4MB),
482
+ 附 `assets/examples/README.md`(清单 + 安全区说明 + 复用声明),随 npm 包发布。
483
+ - SKILL.md 工作流新增"**步骤 0 选风格**"(三步必做:按题材 6 选 1 → 看示例图 → 按配方组 prompt)。
484
+ - 标题**中央垂直 60% 安全区**上升为设计铁律(风格库新增"安全区铁律"章节):标题字与关键主体
485
+ 上下各预留 13%+,否则 900×383 中央裁剪会切掉标题。
486
+
487
+ ### 最佳实践整改
488
+
489
+ - top-ppt-html / topmind-wechat-post 的 SKILL.md `description` 改**第三人称**(降误触发);
490
+ topmind-cover `description` 同步微调("一次配齐"→"全流程覆盖"),`triggers` 新增 `缩略图` / `thumbnail`。
491
+ - topmind-wechat-post:站外取源坑与回推命令串收敛到 `references/workflow.md`,SKILL.md 只留索引;
492
+ 新增跨技能路由索引(封面配图 → topmind-cover,X 长文 → topmind-x-article);
493
+ 二级标题序号由排版层自动生成(不再手写)。
494
+ - 各技能 README(中/英)与 SKILL.md 对齐:cover 新增风格库与示例图章节、用法改"步骤 0 选风格";
495
+ x-article 转换规则补"分隔线→空行"。
496
+
497
+ ### bug 修复
498
+
499
+ - topmind-x-article `scripts/md2x.py`:`---` / `***` / `___` 分隔线转**空行**(原逻辑误当 frontmatter 吞掉);
500
+ `***粗斜体***` 先去三重星号再处理 `**` / `__` / `*`,不再残留星号。
501
+ - topmind-cover `scripts/crop-cover.py`:移除 `--slug` 悬空参数
502
+ (用法与文档统一:`crop-cover.py <主图> --out-dir <包>/images/`)。
503
+
504
+ ## [0.2.0] - 2026-09-29
505
+
506
+ ### 新增三个写作/配图技能
507
+
508
+ - **topmind-wechat-post `0.1.0`**:公众号文章全生命周期技能(由 topmind-wechat 适配改名)。
509
+ 交付包 / 审校改写 / 质量三关(事实·逻辑·去 AI 味 ≥85)/ 状态同步 / 微信内联排版(`md2wechat --embed-images`)/ 发布清单。
510
+ 适配点:frontmatter 去 topmind-pack 专有键(`degradation`/`action_category`/`entrypoint`),
511
+ 跨 skill 引用改为通用表述,`writing-quality.md` 改用技能自带 `scan_ai_flavor.py`
512
+ (原引用本机 `~/.workbuddy` 路径),`md2wechat.py` 缺失输入改干净报错(原 Traceback)。
513
+ - **topmind-x-article `0.1.0`**:X 长文一键发布。`md2x.py` 把 Markdown 转可直接粘贴进
514
+ X Article 编辑器的纯文本(标题→纯文本行、加粗/斜体去标记、链接→`文字(url)`、
515
+ 图片→`[图N]`+文末配图清单、表格→"项:值"列表);`references/publish-checklist.md`
516
+ 沉淀实战经验(首评置顶补信息、图序核对、发布后抓回核对)。缺失输入干净报错。
517
+ - **topmind-cover `0.1.0`**:文章封面配图,X / 公众号共用。设计铁律(震撼·醒目·主题突出:
518
+ 一图一主题、大标题 ≤10 字、四周 8% 留白)+ 5 套风格模板;
519
+ `crop-cover.py` 从 16:9 主图中央裁出公众号 900×383 版(X 用 1200×675),落盘命名规范。
520
+ 缺失输入 / 非图片干净报错。
521
+ - 每个新技能带轻量 CI 门禁:`package_skill.py --check`(frontmatter/版本/引用完整性/禁用文件)、
522
+ `audit_skill.py` / `audit_docs.py` / `audit_styles.py` / `audit_css.py`、`negative_tests.py`
523
+ (异常输入不崩溃)。`ci_privacy_scan.py` 全仓通过。
524
+
525
+ ## [0.1.19] - 2026-09-28
526
+
527
+ ### 排版修复 · 大纲篇章化 · 参考资料去假 · 图标真导出 · PPTX 高保真增强
528
+
529
+ > 源起:2026-09-28 用户复盘五类问题(顶栏重叠 / 卡片不齐 / 大纲罗列页标题 / 参考资料占位 / PPTX 格式错乱),并要求「业界怎么解决的,不要闭门造车」。本次对照 Slidev `pptx-editable` / PptxGenJS / think-cell 混合通道模式系统整改。
530
+
531
+ #### A. HTML 排版硬伤
532
+ - **顶栏副标题压住右侧工具钮**:`.brand__txt` 此前无基础样式,flex `min-width:auto` 钉死整行文字宽,省略号永不触发。补 `min-width:0; overflow:hidden`,`.brand` / `.bar__in` / `.nav` 收缩链修复;≤1360px 自动收起副标题。
533
+ - **卡片高度不一致**:`.card` 改 flex 列 + 底对齐;`.g-quad` / `.g-half` / `.g-*--equal` 强制等高;`.g-half` 提升进 `engine.css` 并改 `align-items:stretch`(此前 research 专属且 `start` 违反「同构同高」契约);纯卡片栅格不再误用 `.a-start`。
534
+
535
+ #### B. 大纲 = 章节大纲(3–7 章),不是页目录
536
+ - **结构契约**:`agenda` 条目 = 章(篇/section),每章 1+ 页;页标题逐页出现,章标题只在 Agenda 出现一次。预算 3–7 章(含参考资料 +1 仍 ≤8)。
537
+ - **生成器**:`render_from_model` / `scaffold_report` 按 eyebrow `NN ·` 章前缀归并,删掉「agenda 条数 ≠ 页数就按页强制重建」逻辑;锚点落该章第一页。
538
+ - **schema / 阈值**:`model-schema` 加 `agendaMax=7` / `agendaHint`;`layout-constants.contentQuality.agenda` 加 `chapterMin/Max`;`agendaComfortMax` 16→8。
539
+ - **文档**:`content-rules` §Agenda 重写;`SKILL` 铁律 4;`components-atoms` / `failure-modes` F20 / `layout-grammar` 阈值同步。
540
+ - **样张**:showcase 大纲 12 条页标题 → 9 章(`05 · 图表工艺` 下 3 页只占 1 条)。
541
+
542
+ #### C. 参考资料只列真实来源(宁缺毋假)
543
+ - **冒烟枪**:`render_from_model.py:738` 对每个 `[n]` 生成 `「来源名称,时间;口径。」`;scaffold 写「来源 N(替换为真实来源名称)」。
544
+ - **新规则**:只列 `model.refs` 真实来源;**无真实来源整节省略**(连导航 `#refs` 入口一并摘掉,避免悬空锚点)。硬拦占位串(`来源名称` / `替换为真实来源` / `某行业报告`)。
545
+ - **模板**:三份模式模板参考节改为注释掉的真实样例 + 「无真实来源则删整节」说明;`example.com` 假条目清除。
546
+ - **文档**:`content-rules` §五 规则 4 重写;`SKILL` 铁律 10;`layouts-research` / `.ref-link` 示例改真实机构名。
547
+
548
+ #### D. 图标真导出(SVG→PNG,不再用 accent 方块替代)
549
+ - **新模块**:`scripts/icon_lib.js`(20 语义图标单源)· `scripts/build_icon_assets.js`(sharp 栅格化)· `scripts/icon-assets.json`(PNG 缓存,gitignore)· `scripts/icon_raster.js`。
550
+ - **链路**:模型 `cards[].icon` / HTML `data-icon` → `extract_model` 回填 → `build_pptx` 嵌 PNG。`objectName: icon:*`,`validate_pptx` 单独计数 `icon_pictures`,**不进** `pictures=0` 内容图门禁。缺 sharp/资产回落 accent 方块。
551
+ - **schema**:`cards[].icon` 字段 + 取值说明(`icon_lib.js` 键)。
552
+
553
+ #### E. PPTX 高保真增强(对照业界混合通道)
554
+ - **发射前叠印断言**:`assertNoOverlap` / `rectsOverlap` 在 `addShape` 前自检组合布局(图表∩inline 数据表等),计入 `OVERLAP_PREEMIT`。
555
+ - **表格行高自适应**:`addTable` 超容量压到 hardFloor / 整体缩放;表头独立 `headRowH`;`fit:'shrink'`。
556
+ - **`regionOf('bar')` 双偏移纠正**:`chartX/chartW` 此前被当偏移再加 `mx`,柱图右移 0.6in 与标题/表格不齐——改与 donut/table/hbar 同口径对齐版心。双引擎同步。
557
+ - **图例收进图高**:waffle / marimekko / slope 图例带含在 `h` 内,与 inline 数据表留间隙(几何铁律②)。
558
+ - **文本自动收缩**:标题 / 卡片 / 结论条 / 页脚统一 `fit:'shrink'`(PowerPoint 字体度量 ≠ 浏览器)。
559
+
560
+ #### F. 文档与工程
561
+ - `icons.md` / `pptx-export.md` / `high-fidelity.md`(新增「已落地的高保真增强」对照表)/ `failure-modes` F20 / `tech-design`(图标单源登记)/ `package_skill`(三模块进必收)。
562
+ - 业界调研纪要:`docs/industry-pptx-research.md`(Slidev pptx-editable / PptxGenJS / think-cell / Marp / reveal.js 路线对比与取舍)。
563
+
564
+ #### 回归
565
+ - 技能审计 ✓ · 文档审计 ✓ · 研究 HTML 94/0/0 ✓ · 展示 HTML 85/2/0 ✓ · 两份 PPTX `errors:[] warnings:[]` ✓ · 打包校验 106 文件 ✓。
566
+
567
+ ### 红线未动
568
+ 反截断、图表多样性地板、Mode A craft、runtime SHA 同版本门禁、中文「演示文稿」术语、整仓 npm 发版、motion=none、结论条无「So what」标签、无左侧 accent 装饰轨、双单源 + sync_runtime、strict 0/0 交付。
569
+
570
+ ## [0.1.18] - 2026-09-28
571
+
572
+ ### PPTX 导出质量整改 · 双通道几何收敛 + 门禁盲区补齐
573
+
574
+ > 源起:2026-09-28 研究报告双通道交付复盘(HTML/PPTX),PPTX 有 4 类硬伤(含两处大面积文字叠印)、HTML 有 4 类空间利用问题、门禁全绿而效果不合格。本次按六类根因(R1–R7)系统整改。
575
+
576
+ #### A. 几何叠印硬伤(R1/R2 · PPTX 导出)
577
+ - **架构节点标题/注解叠印**:注解改为钳制在标题下边(原底对齐 `y=lh-0.5` 在 `lh≈0.59` 时与标题完全重合);节点高不足降级单框混排。双引擎同步。
578
+ - **verdict/soWhat 同槽叠印**:共用 annotation 结论条槽位——渲染器互斥(verdict 优先)、`extract_model` WARN、`model-schema` 加 `mutualExclusionHint`。HTML 同步去重。
579
+ - **图例压来源行**:图例改落图区底部(`bodyBottom-0.28`),禁 `PH-0.62` 固定偏移。
580
+ - **`sec.note` 压 so-what 带**:`note` 与 `footnote` 合并到 `footnoteY=6.72`,禁用 `note.y=6.55` 绘制。
581
+ - **图表类目标签越出图区**:标签带含在图高 `h` 内(原画到 `y+h` 外)。
582
+ - **图片底边侵入注释带**:有图注时下界收到 `contentBottomWithNote`。
583
+
584
+ #### B. 列宽 / 槽位几何(R3)
585
+ - **三栏只占半幅(栏宽 1.69in)**:`regionOf('twocol')` 单栏宽被当总宽——改用版心全宽推导。双引擎同步。
586
+ - **KPI 支撑指标铺满整页**:A 通道 `regOf('kpi','metrics')` 缺分支——补 dividerX 右侧分栏。
587
+ - **halftable 图表越过 so-what**:`regOf('halftable')` 忽略 opts.top/bottom——传导 opts。
588
+
589
+ #### C. Agenda 分页与列序统一(R4)
590
+ - >8 条自动双列(列优先);**>12 条自动分页**(Agenda I/II);长标题截断全称沉 notes(`titleMaxChars=36`)。双引擎 + HTML 同步。
591
+
592
+ #### D. 门禁盲区补齐(R6)
593
+ - **新增 `ELEMENT_OVERLAP`**(元素两两重叠 ≥0.05in²)与 **`LAYOUT_FILL`**(版心填充率 <55%)。
594
+ - **Agenda 容量契约**:条数 ≤16、标题 ≤36 字、>8 条须双列。
595
+ - **图表还原度分级**(`charts.fidelityMap`):low = area/radar/treemap/sankey/streamgraph/marimekko/boxplot/network;决策树标注 + 改判建议。
596
+ - **跨通道一致性**(`cross_verify`):Agenda 阅读顺序、图片数量、图表数据标签。
597
+
598
+ #### E. 图标与图片正确使用
599
+ - **图标**:`render_from_model` 内置语义图标库 + `card_head()`;PPTX 保持 accent 方块路标。
600
+ - **图片**:`r_image` 支持真图渲染、占位同串、`fit=contain`、多图版式(grid/compare/wall)。
601
+
602
+ #### 文档同步
603
+ - `page-type-matrix` 容量契约 + 还原度;`failure-modes` F19/F20;`pptx-export` 几何铁律;`chart-decision-tree` 还原度列;`content-rules` / `components-atoms` / `modes` / `layouts-combo` 契约更新。
604
+ - Pages 源同步:`docs/showcase.html` / `docs/style-gallery.html` 与技能侧 assets 副本逐字节一致(meta → v0.1.18)。
605
+
606
+ ### 红线未动
607
+ 反截断、图表多样性地板、Mode A craft、runtime SHA 同版本门禁、中文「演示文稿」术语、整仓 npm 发版、motion=none、结论条无「So what」标签、无左侧 accent 装饰轨、大纲 >8 → 2col。
608
+
609
+ ## [0.1.17] - 2026-09-26
610
+
611
+ ### Release
612
+ - Republish of the **0.1.16 craft** (结论条去左轨 · anti-AI-flavor · Showcase 全页刷新). npm registry left `0.1.16` in a staged/conflict state (`E409 previously staged`); content identical to the `v0.1.16` GitHub Release / docs Pages source.
613
+
614
+ ### 红线未动
615
+ 反截断、图表多样性地板、Mode A craft、runtime SHA 同版本门禁、中文「演示文稿」术语、整仓 npm 发版、motion=none、结论条无「So what」标签、无左侧 accent 装饰轨。
616
+
617
+ ## [0.1.16] - 2026-09-26
618
+
619
+ ### Craft · 结论条去 AI 味:取消左侧 accent 装饰轨
620
+
621
+ #### 设计决策(硬原则)
622
+ - **结论条无 left rail**:用户明确拒绝结论条左侧色条为 AI-flavored chrome。`.sowhat` / PPTX `soWhatBar()` 改为 **MD3 tonal surface 满铺**(`accent-soft` + 细描边)+ 舒适字阶 / `line-height:1.65` / 内边距 `--sp-5`/`--sp-6`;**禁止**竖色条、霓虹边、装饰 chip 当强调。
623
+ - 写入 `design-system` §去 AI 味、`content-rules`、`components-atoms`、`SKILL`、`layout-constants.aiFlavor.visual.forbidConclusionLeftRail`。
624
+ - 同类收口 `.note` 同步去掉左轨,改 tonal 细描边;`.flagbar`(待核实)保留细强调(功能态,非结论装饰)。
625
+
626
+ #### 深度同步
627
+ - 引擎:`engine.css` · `build_pptx.js` · `pptx-export.js` · `style-gallery` 预览条。
628
+ - 样张 / 模板 / `docs/showcase.html`:全量 `sync_runtime`;Showcase 全页刷新(修 s1「要点一/二」占位 → 三主张卡;s2/s4 补结论条;「so-what」用户文案 →「结论条」;meta → v0.1.16)。
629
+ - 截图:`docs/showcase/topmind-showcase/*` + `assets/showcase/*` + theme-overview 重截。
630
+ - 版本对齐 **0.1.16**(根 + 技能 package / SKILL / README / PUBLISHING / CHANGELOG)。
631
+
632
+ ### 红线未动
633
+ 反截断、图表多样性地板、Mode A craft、runtime SHA 同版本门禁、中文「演示文稿」术语、整仓 npm 发版、motion=none、结论条无「So what」标签、大纲 >8 → 2col。
634
+
635
+ ## [0.1.15] - 2026-09-26
636
+
637
+ ### Release
638
+ - Republish of the **0.1.14 craft overhaul** (MD3 结论条 · 一屏/大纲自适应 · 克制图标). npm registry left `0.1.14` in a staged/conflict state (`E409 previously staged`); content identical to the `v0.1.14` GitHub Release / docs Pages source.
639
+
640
+ ### 红线未动
641
+ 反截断、图表多样性地板、Mode A craft、runtime SHA 同版本门禁、中文「演示文稿」术语、整仓 npm 发版、motion=none。
642
+
643
+ ## [0.1.14] - 2026-09-26
644
+
645
+ ### Craft overhaul · 三支柱:结论条 · 一屏高度/大纲自适应 · 克制图标
646
+
647
+ #### A. MD3 结论条(原 so-what)
648
+ - `.sowhat` 升为 MD3 tonal 衬条(`accent-soft` 底 + 左 4px accent 轨 + `--fw-title` / `fs-h3`);**默认不显示「So what / SO WHAT」标签**(可选 `.sowhat--labeled`)。
649
+ - 与上方主内容呼吸间距 `clamp(28px,3.6vh,48px)`;`:has(>.sowhat)` 时 wrap 纵向 flex,结论条 `flex:none` 防挤压。
650
+ - CSS 迁入公共 `engine.css`(三模式共享);research 模板去掉重复规则。
651
+ - PPTX `soWhatBar()` 双通道只画衬底+左轨+正文;`chartBottom` 相对 `soWhatY` 让位 0.12→0.20in。
652
+ - 门禁:`EXHIBIT_PAGE_MISSING_SOWHAT` 改检测结论条形状;文案「结论条」。
653
+
654
+ #### B. 一页一屏 · 大纲自适应
655
+ - 高度契约:`section.band` 一屏;主内容不得溢出或压进结论条/注释带;放不下走 `overflowRule`(重构→拆页→换形态→有限缩字),禁静默截断。
656
+ - 大纲:**>8 条须 `.agenda--2col`(两列/两排)**;>16 拆篇。阈值入 `contentQuality.agenda`;`validate_report` 只认 `<ol class="…agenda--2col">`(修 CSS 选择器误伤假通过)。
657
+ - Showcase 12 条大纲改双列;`layout-grammar` / `components-atoms` / SKILL 同步。
658
+
659
+ #### C. 图标原则(行业共识 · 非装饰)
660
+ - `icons.md` 增补 wayfinding / 同家族 / 有限密度 / 四正当位置 / 禁区(Agenda·表·图内);Mode A 内容页必做。
661
+ - Showcase / 黄金样张落地 `card__ico` / `ul--ico`;`validate_report` 对「≥2 卡且无 `.card__ico`」发 WARN。
662
+
663
+ #### 发布
664
+ - 样张、模板、references、README、PUBLISHING、截图同步;版本对齐 **0.1.14**。
665
+
666
+ ### 红线未动
667
+ 反截断、图表多样性地板、Mode A craft、runtime SHA 同版本门禁、中文「演示文稿」术语、整仓 npm 发版、motion=none。
668
+
669
+ ## [0.1.13] - 2026-09-26
670
+
671
+ ### Changed
672
+ - Restored the spacious sparse cream/navy/gold banner (1280×360) with the install command as the bordered subtitle: `npx @topmindspace/tms-skills install top-ppt-html`.
673
+ - Restored the third-row product line: **TopMindspace Agent Skills · 让 idea 飞 · 正式场合演示文稿**.
674
+ - Aligned whole-repo package, skill metadata, and documentation versions to **0.1.13**.
675
+
676
+ ## [0.1.12] - 2026-09-26
677
+
678
+ ### Changed
679
+ - Regenerated `docs/assets/tms-skills-banner.png` (1280×360): includes core skill name **top-ppt-html**, formal keynote / presentation stage intent, tagline HTML + PPT.
680
+
681
+ ## 0.1.11 — 2026-09-26
682
+
683
+ ### Positioning · README slim · showcase narrative
684
+
685
+ - **差异化定位**:根 README / 技能 README(中英)开篇写清——市面 PPT 技能很多,为何还要 top-ppt-html;特色 **HTML + PPT 双交付**;为**演示报告 / 正式商务演示**而生;参考 **MD3** 信息密度与克制;日常 HTML 等同幻灯片,需要时再导出高保真可编辑 PPTX。
686
+ - **主题总览只留一张**:默认 `theme-overview.png`(演示·business-blue);caption 链到 style-gallery / 研究·架构总览路径;正文不再三张并排占屏(落地页同步精简)。
687
+ - **Showcase 叙事**:改写「为什么是我们」与「双交付」两页;subtitle / meta → v0.1.11;版本折线含 0.1.11;`validate_report --strict` **0/0**(5 种图表保持)。
688
+ - **截图**:刷新 `docs/showcase/topmind-showcase/*` 与 `top-ppt-html/assets/showcase/`(含 positioning / charts / toolbar)。
689
+ - **SKILL.md**:开篇与 description 产品句对齐定位;等量删减冗余,体积仍 ≤13KB。
690
+ - **Live**:`docs/showcase.html` / Pages 源与 github.io `tms-skills/` 同步本版。
691
+ - 版本对齐 **0.1.11**(根 + 技能 package/lock / SKILL metadata / README / PUBLISHING)。
692
+
693
+ ### 红线未动
694
+ 反截断、图表多样性地板、Mode A craft、runtime SHA 同版本门禁、中文「演示文稿」术语、整仓 npm 发版、motion=none。
695
+
696
+ ## 0.1.10 — 2026-09-26
697
+
698
+ ### Showcase · header toolbar docs · bilingual README
699
+
700
+ - **产品 Showcase 加厚**:`2026-09-26-topmind-tms-skills-showcase` 扩为 Mode A · 12 内容页;**5 种图表**(`bar` / `donut` / `line` / `waterfall` / `hbar`)经 `render_from_model` + `hydrate_charts` 回填;含 **Header 工具栏专页**(控件 × 快捷键 × 行为表);`validate_report --strict` **0/0**。
701
+ - **Header 工具栏文档**:`SKILL.md` 交付物表(T/P/H/F/B + 9 风格 + Esc/翻页 + `REPORT_MODEL` 同步);根 README / 技能 README(中英)显著说明。
702
+ - **双语 README**:保持 **`README.md` = 中文默认**;新增 **`README.en.md`** 全量英文平行;`top-ppt-html/README.en.md` 用户向摘要;文首互链。
703
+ - **截图**:刷新 `docs/showcase/topmind-showcase/*` 与 `top-ppt-html/assets/showcase/`(含 `showcase-toolbar.png`)。
704
+ - **维护工具**:新增 `scripts/hydrate_charts.py`(核心图类型占位 SVG → 模型数据绘形,供样张重建)。
705
+ - **Live**:`docs/showcase.html` / Pages 源与 github.io `tms-skills/` 同步本版 showcase。
706
+ - 版本对齐 **0.1.10**(根 + 技能 package/lock / SKILL metadata / README / PUBLISHING)。
707
+
708
+ ### 红线未动
709
+ 反截断、图表多样性地板、Mode A craft、runtime SHA 同版本门禁、中文「演示文稿」术语、整仓 npm 发版、motion=none。
710
+
711
+ ## 0.1.9 — 2026-09-26
712
+
713
+ ### Docs · banner · theme overview · live showcase
714
+
715
+ - **主题总览大图**:根 README + `top-ppt-html/README.md` 嵌入三张 Gate 0 `theme-overview*.png`(演示 / 研究 / 架构),保留风格封面与 showcase 样张画廊。
716
+ - **Slim banner**:`docs/assets/tms-skills-banner.png` 裁为 **1280×360**;README 展示宽约 960。
717
+ - **Badge 行**:对齐 topmind 风格(Release / npm / CI / License)。
718
+ - **Live 链接**:指向 `https://topmindspace.github.io/tms-skills/`(落地页 / showcase.html / style-gallery.html)。
719
+ - **Pages 源**:`docs/index.html` + `docs/showcase.html` + `docs/style-gallery.html` + `docs/site-assets/`(启用 GitHub Pages → Deploy from branch `main` / `/docs` 即可上线同路径 URL)。
720
+ - 模板 / runtime:经 `sync_runtime.py` 校验,无「甲板」;`REPORT_MODEL` 与引擎 SHA 一致。
721
+ - 版本对齐 **0.1.9**(根 + 技能 package/lock / SKILL metadata / README / PUBLISHING)。
722
+
723
+ ### 红线未动
724
+ 反截断、图表多样性地板、Mode A craft、runtime SHA 同版本门禁、中文「演示文稿」术语、整仓 npm 发版。
725
+
726
+ ## 0.1.8 — 2026-09-26
727
+
728
+ ### Showcase · docs · release polish
729
+
730
+ - **产品 Showcase**:新增 Mode A 样张 `top-ppt-html/assets/examples/2026-09-26-topmind-tms-skills-showcase.html`(+ model)——介绍 TopMind / tms-skills / top-ppt-html(三模式·风格主题·质量门禁·Fast Mode);`validate_report --strict` 与 `smoke_pptx` **0/0**。
731
+ - **截图**:刷新 `theme-overview*.png`;新增 `docs/showcase/`(showcase 全页 + 三黄金样张关键页)与精简 `top-ppt-html/assets/showcase/`(进技能包,供 README)。
732
+ - **README 吸引力**:根 README + 技能 README 增加 banner、风格/模式画廊、showcase 链接与安装钉版本 **0.1.8**。
733
+ - **Banner**:`docs/assets/tms-skills-banner.png`。
734
+ - **打包**:`package_skill` 纳入 `assets/showcase/*`;examples 最小数量仍 ≥3(黄金样张 + 可选 showcase)。
735
+ - **文档清理**:用户向 README 对齐当前产品面;PUBLISHING 版本线 → 0.1.8;`build_examples` 说明允许 showcase 并存。
736
+ - 版本对齐 **0.1.8**(根 + 技能 package/lock / SKILL metadata / README)。
737
+
738
+ ### 红线未动
739
+ 反截断、图表多样性地板、Mode A craft、runtime SHA 同版本门禁、中文「演示文稿」术语、整仓 npm 发版。
740
+
741
+ ## 0.1.7 — 2026-09-26
742
+
743
+ ### top-ppt-html · defect opt (D8/D9/D11/D13)
744
+
745
+ - **P0 D8**:`chartBottom(hasSoWhat, hasFootnote)` 不再 footnote 短路;`Math.min(soWhatY, footnoteY, contentBottomWithNote)` 与 flagY 让位同口径。双通道(`build_pptx.js` / `pptx-export.js`)对齐;flagBar 在 withNote 时底边不越过 `contentBottomWithNote`;Agenda 预留 0.25in 避免 severe 误伤。
746
+ - **P0 D9**:`annotation_band_overlap_check` 报告页内**全部**侵入者(去掉首条即 `break`)。
747
+ - **P1 D11**:有 so-what 时 `band_top = soWhatY`(6.05),捕获 (6.05, 6.40] 侵入;crush = 自带顶之上压下;注释自形状/窄 accent 条豁免保留。
748
+ - **P1 D13**:`ci_skill_gates.sh --with-pptx` 必跑 `smoke_pptx` × business-blue **与** research-mckinsey(覆盖 soWhat+footnote);graphite-dark 可选。
749
+ - **CHROME_DRIFT**:页码只认 `N / M`,不再把年份/Exhibit 编号当页脚(research-mckinsey 假阳性清除)。
750
+ - **Fast Mode / 效率**:演讲/汇报线索→Mode A;明确跳过 vs 仍须(质检红线不降);L0+L1 / `extract_snippet` 纪律不变。
751
+ - **门禁**:`test_feedback_gates` 锁定 D8/D9/D11/CHROME;research-mckinsey `--strict` **0/0**。
752
+ - 版本对齐 **0.1.7**(根 + 技能 package / SKILL metadata / README / PUBLISHING)。
753
+
754
+ ### 红线未动
755
+ 反截断、图表多样性地板、Mode A craft、runtime SHA 同版本门禁、中文「演示文稿」术语保持。
756
+
757
+ ## 0.1.6 — 2026-09-25
758
+
759
+ ### CI / Release 硬化
760
+ - **根因 A**:`validate_pptx` 的 `ANNOTATION_BAND_OVERLAP` 把全幅背景(底边 7.50in)误判为侵入注释带;改为排除 full-bleed 背景 / 全高装饰条 / chrome 区,同时保留对图例/主图压进 so-what 带的真阳性。
761
+ - **根因 A′**:`FONT_SIZE_NOT_SNAPPED` 未收录 `modeTypeScale` 的 **h2=17pt**;改为从 typeScale ∪ 全模式 modeTypeScale ∪ ladder 动态取允许集。
762
+ - **冒烟可读性**:`smoke_pptx.sh` 可靠传播 validate 退出码;失败时 stderr 先打错误码/页码短摘要。
763
+ - **根因 B**:Release `npm publish` 遇已发布/已 staged 的 **E409** 时改为 exit 0(幂等);GitHub Release + 资产仍成功。
764
+ - **DRY**:`scripts/ci_skill_gates.sh` 为 CI/Release 共用门禁;Release 对齐 CI 的 fixture + `smoke_pptx`;CI concurrency cancel-in-progress;npm cache;python-pptx 仅 PPTX 步骤安装。
765
+ - 文档:新增 `docs/ci.md`;版本对齐 **0.1.6**。
766
+
767
+ ### 红线未动
768
+ 反截断、图表多样性地板、Mode A craft、runtime SHA 同版本门禁保持。
769
+
770
+ ## 0.1.5 — 2026-09-25
771
+
772
+ ### top-ppt-html · defect close-out
773
+
774
+ - **P0 D1**:环图右栏可见标题去掉作者约束「禁止叠在弧上」→ 读者向「构成明细」。
775
+ - **P0 D2**:`sync_runtime.py` 注入 `/* __TOPPPT_RUNTIME_SHA__:<16hex> */`(源 = `assets/pptx-export.js`);`validate_report` 缺戳/漂移 FAIL;负例 N19。
776
+ - **P1 D3**:`cross_verify.NUMERIC_TOKEN` 增补 YB|ZB|EB|PB 与 kWh|Gbps。
777
+ - **P1 D4**:CI 轻量生成 `dist/regression` 样张 + `python-pptx`,使 N4/N5/N7 真正跑通(非全量 regression)。
778
+ - **P2**:package-lock 对齐 0.1.5;README/PUBLISHING 2.x 弃用改为事实陈述;`deprecate-npm-2x.sh` 精简为 `@2.x` one-shot + verify;双版本口径(包 semver vs schema `0.1`)写入 SKILL/tech-design。
779
+ - **术语**:全库「甲板」→ 演示文稿/样页等(保留英文 trigger `deck`)。
780
+
781
+ ### Installer
782
+
783
+ - `@topmindspace/tms-skills` → **0.1.5**(整仓同 tag)。
784
+
785
+ ## 0.1.4 — 2026-09-25
786
+
787
+ ### top-ppt-html · craft + quality + docs + perf close-out
788
+
789
+ - **P0 效率 / agent 工作流**(usage-feedback):
790
+ - 默认交付 **仅 B 通道 PPTX**(`build_pptx.js`);A 通道(`pptx-export.js` / `gen_channel_a.js`)限预览与 `cross_verify` / 回归。
791
+ - `extract_snippet` 强制 + **整读大 L2 = FAIL / 不合格**(SKILL + playbook);`audit_skill` 新增对应门禁。
792
+ - `quality_gate` 对互不依赖子进程(HTML strict / PPTX strict / evals)**并行**执行。
793
+ - Fast / 轻量路径强化 **HTML-first**;PPTX 显式 opt-in(用户要 PPT 或交付含 PPTX)。
794
+ - **未削弱**红线:反截断、图表多样性(`minTypes.presentation=4` / registry)、Mode A 大气正式工艺、Gate 0 语义。
795
+ - **质量 / 规范**:对齐 SKILL frontmatter、双 `package.json`、README 钉版本、PUBLISHING、安装说明;跑通 check / audit / feedback gates。
796
+ - **docs 工艺改写**:定位强调优雅·美观·大气·演讲/正式场合;版式/排版/色彩/内容组织 + 质检与高保真导出;L0 仍瘦、L2 按需。
797
+ - **此前 #7(validator / engine)**:`shape_bounds` 读 `p:xfrm`、`TEXT_OVERFLOW_VERTICAL`、`ANNOTATION_BAND_OVERLAP`、`FONT_SIZE_NOT_SNAPPED`、多系列 vbar、streamgraph 图例内收、image caption `capYImg`——随本版一并发布。
798
+
799
+ ### Installer
800
+
801
+ - `@topmindspace/tms-skills` → **0.1.4**(整仓同 tag)。
802
+
803
+ ### Intentional leftovers
804
+
805
+ - 不引入 Claude-only `when_to_use` / 跨端风险 `allowed-tools`(同 0.1.3)。
806
+ - `skills-ref validate` 仍为可选,非发布硬依赖。
807
+ - layout-constants / model-schema 事实源版本线仍为 `0.1`(patch 记在 package / metadata)。
808
+
809
+ ## 0.1.3 — 2026-09-24
810
+
811
+ ### top-ppt-html · QA close-out + docs
812
+
813
+ - **P2-4 playbook 拆表**:意图→页型穷举 → `references/page-type-matrix.md`;图表决策表+七种误用 → `references/chart-decision-tree.md`。playbook 保留 Mode 契约 / V1–V4 / 组合 / **图表多样性摘要** / **反截断** / 路径·命令·L2 路由(体积 22KB→~17KB)。
814
+ - **版本对齐**:根 README / 技能 README / PUBLISHING / `metadata.version` / 双 `package.json` → **0.1.3**(消除残留 0.1.0 横幅)。
815
+ - **IMAGE_CAPTION**:配图页亦认 so-what/lead/figcaption;新增 WARN `IMAGE_NEAR_EMPTY`(近图过空)。
816
+ - **P2-2/P2-3**:不引入 Claude-only `when_to_use`、不写跨端风险 `allowed-tools`(`skills-ref validate` 已通过开放标准字段;扩展字段留给宿主实验)。
817
+ - **P2-5**:可选 `npx skills-ref@0.1.5 validate ./top-ppt-html`(不作为发布硬依赖;主门禁仍 `audit_skill`)。
818
+ - **docs**:根 README 安装表/钉版本/`@0.1.3`;技能 README 改为人类维护指南并指向 SKILL;package REQUIRED + MIN refs ≥25。
819
+
820
+ ### Installer
821
+
822
+ - `@topmindspace/tms-skills` → **0.1.3**(整仓同 tag)。
823
+
824
+ ### 此前 Unreleased(agent-compat,随 0.1.3 一并发布)
825
+
826
+ - **P0-1 Trigger eval**:`evals/trigger-queries.json` + `scripts/check_triggers.py`;`package_skill.py --check` 门禁。
827
+ - **P0-2 Mode A 读预算诚实**:L0+L1=2;Mode A/Fast 可加 L1.5(`default-surface` + `presentation-craft`)。
828
+ - **P0-3 反过读**:禁止整读清单 + 强制 `extract_snippet.py`。
829
+ - **P1 Frontmatter / 安装路径 / Fast 最小大纲 / 插画 brief**:license·compatibility·metadata;Cursor/Codex 路径;`illustration-layout.md`;`agents/openai.yaml`。
830
+
831
+
832
+ ## 0.1.2 — 2026-09-24
833
+
834
+ ### top-ppt-html · P2 cleanup(advanced 按需 · Mode A 次级骨架 · icons 压缩)
835
+
836
+ - **Advanced charts 按需**:默认读面 = `charts-discipline` + 核图 8;`charts-extended.md` **禁止预读**,仅意图命中 `extract_snippet.py --chart`。`charts.variety.preferCoreFirst` + validate WARN(A/B);advanced **计入** `minTypes`(不降 `presentation=4`,不缩 registry)。
837
+ - **Mode A 骨架分层**:主力 P1–P4+P6/P10;次级 P7–P9/P11–P12(`layoutSystem.modeSkels` + layout-grammar / default-surface / recommend_layout 同口径);画廊侧重主力。
838
+ - **icons.md 压缩**:语义表 + 禁区 + 尺寸档 + 高频 20 SVG(~8.7KB);完整枚举 → `docs/archive/refs/icons-catalog.md`;package 仍 REQUIRED。
839
+ - **docs 对齐**:SKILL / playbook / presentation-craft / modes / charts 门面同步;Fast Mode + 长文溢出序保持不变。
840
+
841
+ ### Installer
842
+
843
+ - 安装器 `@topmindspace/tms-skills` → **0.1.2**(随技能包内容更新)。
844
+
845
+
846
+
847
+ ### top-ppt-html · Long-text / Quality round(反截断 + 门禁加深)
848
+
849
+ - **反截断政策**:Mode A / content-rules / presentation-craft「长文与信息承载」——溢出顺序固定为 重构→拆页/分章→换形态→有限 fontShrink;**禁止**静默截断 / 砍 so-what / 为疏朗删实质。单页字数改预警(presentation char 1800),不为「字多」单独 FAIL。
850
+ - **结构引导取代硬砍刀**:列表/卡片 `maxItemChars` 等改为引导 + prefer;checklist 同步。
851
+ - **layout-qa 加深**:`LAYOUT_QA_TRUNCATION` / `OVERFLOW_NO_SPLIT` / `HALF_EMPTY` / `ALIGN_RHYTHM`;presentation `--strict` 仍自动 layout-qa。负例 L4–L6。
852
+ - **recommend_layout**:高容量意图 → 多页序列(议程→主张→证据卡→明细),禁一页塞爆。
853
+ - **P1-3 charts facade**:纪律优先 → 核图 8 → extended 按需;**不降** `minTypes.presentation=4`。
854
+ - **P1-4 会场字号**:pptx-export venue 表(小会议室 / 默认 / 礼堂)。
855
+ - **P1-6 chrome**:跨页页脚 y 漂移 `CHROME_DRIFT` WARN + 文档说明。
856
+
857
+ ### top-ppt-html · Presentation Craft(Mode A 工艺)
858
+
859
+ - **P0-1 图表多样性(用户明确保留)**:**不降** `minTypes.presentation`(仍为 **4**);registry/advanced 图种保留。纪律改为「按内容选型拉开多样」+ 禁反模式(简单全幅 / 极偏 donut / 为过门禁硬上冷门图);playbook §五 / layout-qa 同步。
860
+ - **P0-2 default-surface**:升为 Mode A / Fast 演示主读面(12 页型 + 8 核图 + V1–V4;P5–P12/advanced 按需);SKILL L2 索引指向。
861
+ - **P0-3 layout-qa 默认**:`validate_report --strict` 在 presentation 下自动 `--layout-qa`;`quality_gate` 同口径;B/C 不强制。
862
+ - **P0-4 主张标题**:Mode A action/claim title(禁话题标签)写入 content-rules / modes;校验 WARN。
863
+ - **P0-5 `presentation-craft.md`**:中英术语一页纸清单(one idea / 3s / whitespace / CRAP / motion=none / WCAG…);package REQUIRED。
864
+ - **P1**:fillTarget A 58–75% + intentional whitespace 豁免;`recommend_layout` 偏 V1–V4、降 donut 默认权重;Fast 路演/汇报/发布/演讲/demo→A;motion=none 铁律短句。
865
+
866
+ ### top-ppt-html · Batch 3(瘦身)
867
+
868
+ - **归档 L2**:`industry-benchmark.md` / `design-system-engine.md` → `docs/archive/refs/`(生成路径不读)。
869
+ - **layoutSlots 单源**:删除 `scripts/layout_slots.json`;`lib_layout_regions.js` / `sync_runtime.py` 只读 `layout-constants.layoutSlots`。
870
+ - **示例**:`assets/examples/` 仅留 3 份黄金样张(每模式 1);其余 → `docs/archive/examples/`;`build_examples.py` 瘦身为自检(全量脚本归档)。
871
+ - **主题 PNG**:`theme-overview*.png` 量化压缩约 −70%。
872
+ - **default-surface.md**:12 页型 + 8 图 + V1–V4 速查;playbook §五标注默认 8 核心图。
873
+ - **package**:MIN refs ≥20、examples ≥3;`recommend_layout.py` 入 REQUIRED;README 缩为安装+命令索引。
874
+
875
+ ### top-ppt-html · Batch 2(布局选型 + layout-qa + PPTX 对齐)
876
+
877
+ - **recommend_layout.py**:`--mode A|B|C` + `--intent` / `--from-model` / `--stdin` → `{pageType,skel,chart,rationale,v?}`(V1–V4 / 极偏禁 donut / sizeByComplexity)。
878
+ - **validate_report.py --layout-qa**:缺 data-skel、连续同骨架、极偏 donut、演示简单全幅、V 契约;negative_tests 增 L1–L3。
879
+ - **cross_verify.py** 默认 SKIP,`--full-ab` 才跑;regression 同口径。
880
+ - **build_pptx.js** 尊重 `layoutPreset`(缺省由 pageToPreset 回填,写入备注)。
881
+ - **smoke_pptx.sh** + CI skill-gates 冒烟:extract_model → build_pptx → validate_pptx --strict。
882
+
883
+ # Changelog
884
+
885
+ ## Unreleased
886
+
887
+ ### top-ppt-html 0.1.1 — Batch 1(工作流单写 · Fast Mode)
888
+
889
+ - **模型单写统一**:playbook / SKILL / pptx-export 命令链均为 scaffold → 只填 `REPORT_MODEL` → `render_from_model --inplace` → `validate_report --strict`(禁 HTML/模型双写)。
890
+ - **`render_from_model.py` 纳入 package REQUIRED**;references 最小篇数注释对齐实有数量(≥24)。
891
+ - **Fast Mode**:触发词跳过 Gate 0 + 六项;默认 B/mckinsey/light 等;标准路径仍为硬门禁;`audit_skill` 适配豁免声明。
892
+ - **归档** `references/reform-plan.md` → `docs/archive/reform-plan.md`;硬门禁改指 `qualityGates` + `failure-modes`。
893
+ - 技能 `package.json` 版本对齐仓库叙事 `0.1.1`(LC 仍为 `0.1`)。
894
+
895
+ ## 0.1.1 — 2026-09-24
896
+
897
+ ### Fixes (P0 / P1)
898
+
899
+ - **Release 顺序与稳健性**:Privacy → 技能门禁 → Package → Collect → GitHub Release → **npm publish(已发布则跳过,避免 E409)** → 再 Prune。
900
+ - **Prune 策略**:只删旧 GitHub Release(保留 2 个);**不再删除 git tags**。
901
+ - **多技能发现**:`scripts/discover_skills.js` + CI/Release 动态打包/门禁;`npm run sync:files` 同步 `package.json` `files`。
902
+ - **CLI**:校验 skill id;目标目录已存在时须 `--force`;文档口径与 README 对齐(npm 推荐 / GitHub 跟 HEAD)。
903
+ - **python3**:根与技能 `package.json`、workflows 统一 `python3`。
904
+ - **打包门禁**:`references/layout-grammar.md` 纳入 REQUIRED;去掉与 `theme-overview.png` 完全重复的 `theme-overview-presentation.png`。
905
+ - **Lockfile**:提交 `top-ppt-html/package-lock.json`;CI 优先 `npm ci --omit=dev`。
906
+ - **npm 2.x**:文档警告勿装 `^2`;提供 `scripts/deprecate-npm-2x.sh`(须维护者本地 npm 登录后执行)。
907
+
908
+ ## 0.1.0 — 2026-09-24
909
+
910
+ 首个公开版本。
911
+
912
+ ### 安装
913
+
914
+ ```bash
915
+ npx @topmindspace/tms-skills install top-ppt-html
916
+ # 或
917
+ npx github:topmindspace/tms-skills install top-ppt-html
918
+ ```
919
+
920
+ ### 包含
921
+
922
+ - 技能 **top-ppt-html**(品牌 TopPPT HTML):单文件 HTML 报告 + 可编辑 16:9 PPTX
923
+ - 安装器 CLI **tms-skills**(`list` / `install`)
924
+ - 双通道分发:npm 钉版本 / GitHub 跟 HEAD
925
+ - tag 发版自动:GitHub Release + npm publish;**Release 只保留最近 2 个**
926
+
927
+ ### 版本策略
928
+
929
+ - 安装器 `@topmindspace/tms-skills` 与技能 `top-ppt-html` **各自独立**按 semver 演进
930
+ - 默认 **patch / minor**;**major 仅用于**技能 id、CLI、注入标记等破坏性变更
931
+ - 改代码 ≠ 发 npm:必须 bump 版本并打 tag(或手工 publish)