@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/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@topmindspace/topmind-writing-skills",
3
+ "version": "0.7.1",
4
+ "description": "TopMindSpace 写作技能合集 — 通过 npm / npx 安装技能(公众号长文、X 长文/短文、封面图)。",
5
+ "license": "MIT",
6
+ "author": "TopMindspace",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/topmindspace/topmind-writing-skills.git"
10
+ },
11
+ "homepage": "https://github.com/topmindspace/topmind-writing-skills#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/topmindspace/topmind-writing-skills/issues"
14
+ },
15
+ "keywords": [
16
+ "agent-skills",
17
+ "ai-skills",
18
+ "writing",
19
+ "wechat",
20
+ "x-twitter",
21
+ "briefs",
22
+ "cover"
23
+ ],
24
+ "type": "commonjs",
25
+ "bin": {
26
+ "topmind-writing-skills": "bin/topmind-writing-skills.js"
27
+ },
28
+ "files": [
29
+ "bin",
30
+ "README.md",
31
+ "README.en.md",
32
+ "LICENSE",
33
+ "CHANGELOG.md",
34
+ "topmind-briefs",
35
+ "topmind-cover",
36
+ "topmind-wechat-post",
37
+ "topmind-x-article"
38
+ ],
39
+ "engines": {
40
+ "node": ">=18"
41
+ },
42
+ "scripts": {
43
+ "list": "node bin/topmind-writing-skills.js list",
44
+ "discover": "node scripts/discover_skills.js",
45
+ "sync:files": "node scripts/sync_npm_files.js",
46
+ "prepack": "node scripts/sync_npm_files.js",
47
+ "install:skills": "node -e \"const {discoverSkills}=require('./scripts/discover_skills'); const {spawnSync}=require('child_process'); for (const id of discoverSkills()) { const r=spawnSync(process.execPath,['bin/topmind-writing-skills.js','install',id],{stdio:'inherit'}); if(r.status) process.exit(r.status||1); }\"",
48
+ "check": "node scripts/run_skill_gates.js check",
49
+ "privacy": "python3 scripts/ci_privacy_scan.py",
50
+ "audit": "node scripts/run_skill_gates.js audit",
51
+ "package:skill": "node scripts/run_skill_gates.js package"
52
+ },
53
+ "publishConfig": {
54
+ "access": "public"
55
+ }
56
+ }
@@ -0,0 +1,22 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0 (2026-10-01)
4
+
5
+ - `--images-from 公众号短文.md` 派生图片顺序,禁止手工拼 `--images`(根治配图错位)
6
+ - 构建后校验加:X 版内嵌图序列(无封面)与公众号版逐字节一致
7
+ - 新增交付铁律(用原文件原样呈现);语言铁律同步(默认中文)
8
+
9
+
10
+ ## 0.1.0 (2026-10-01)
11
+
12
+ - 初始版本:干货短文(公众号 + X 双平台)
13
+ - 工作流:定主题 → 找素材 → 写双版 → 自检 → 交付
14
+ - 四种内容类型:数据榜单型 / 论文解读型 / 新品速递型 / 对比实测型
15
+ - references:style-guide(开头扔结论/列表>段落/禁止清单)、
16
+ platform-specs(X ≤280字符 / 公众号 300–800字对照)、examples(4 类示例 + 反例)
17
+ - 风格参考:@ArtificialAnlys、@arena、@akshay_pachaar、@RulinShao 等
18
+ - 运营铁律:只起草不代发、数字必有来源、厂商数字标口径、不洗稿
19
+ - 修订(2026-10-01):字数口径统一为"X 一帖/短 thread,公众号约 300–800 字";
20
+ 交付明确为双版一键复制 HTML(X 走 md2x-html,公众号走 md2wechat --embed-images);
21
+ 构建后必跑嵌入图数量/顺序校验;配图位置铁律(图片紧跟相关段落);
22
+ 推测/判断必须显式标注"(推测)"与事实切割
@@ -0,0 +1,41 @@
1
+ # topmind-briefs · Short-form briefs (WeChat + X)
2
+
3
+ **[中文](./README.md)** | English
4
+
5
+ One topic, one chart, then stop. Data-driven short posts: rankings, paper TL;DRs,
6
+ product launches — one X post or short thread, ~300–800 words on WeChat,
7
+ one-click-copy HTML for both.
8
+
9
+ - Version: **v0.2.1** (same tag as `@topmindspace/topmind-writing-skills@0.7.1`)
10
+
11
+ ## Install
12
+
13
+ ```bash
14
+ npx @topmindspace/topmind-writing-skills install topmind-briefs
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ ```bash
20
+ # X version (image order derived from the WeChat draft; never hand-order --images)
21
+ md2x-html.py brief-x.md --out brief-x.html --images-from brief-wechat.md
22
+
23
+ # WeChat version (images inlined as base64)
24
+ md2wechat.py brief-wechat.md --out brief-wechat.html --embed-images
25
+ ```
26
+
27
+ The scripts live in the script directories of the `topmind-x-article` and
28
+ `topmind-wechat-post` skills (siblings of this skill). See [SKILL.md](./SKILL.md)
29
+ for the full workflow.
30
+
31
+ ## Content types
32
+
33
+ - Data rankings / ranking alerts / paper explainers / mechanism explainers
34
+ (four types calibrated against real posts, see SKILL.md)
35
+ - Operating rules: draft only, never auto-post; every number needs a source;
36
+ vendor numbers labeled as vendor claims; no rewriting others' work
37
+
38
+ ## When NOT to use
39
+
40
+ X long-form → `topmind-x-article`; WeChat long-form → `topmind-wechat-post`;
41
+ personal short posts → `topmind-x-posts` (planned, not released).
@@ -0,0 +1,37 @@
1
+ # topmind-briefs · 干货短文(公众号 + X 双平台)
2
+
3
+ [English](./README.en.md) | 中文
4
+
5
+ 一件事,一张图,讲完就停。干货向短文:数据榜单、论文一句话解读、新品速递——
6
+ X 一帖或短 thread,公众号约 300–800 字,双版一键复制 HTML。
7
+
8
+ - 版本:**v0.2.1**(与 `@topmindspace/topmind-writing-skills@0.7.1` 同 tag)
9
+
10
+ ## 安装
11
+
12
+ ```bash
13
+ npx @topmindspace/topmind-writing-skills install topmind-briefs
14
+ ```
15
+
16
+ ## 用法
17
+
18
+ ```bash
19
+ # X 版(图片顺序从公众号稿派生,禁止手工拼 --images)
20
+ md2x-html.py X短文.md --out X短文.html --images-from 公众号短文.md
21
+
22
+ # 公众号版(图片 base64 内嵌)
23
+ md2wechat.py 公众号短文.md --out 公众号版.html --embed-images
24
+ ```
25
+
26
+ 脚本分别在 `topmind-x-article` 与 `topmind-wechat-post` 两个技能的脚本目录下
27
+ (与本技能同级目录)。工作流细节见 [SKILL.md](./SKILL.md)。
28
+
29
+ ## 内容类型
30
+
31
+ - 数据榜单型 / 榜单速报型 / 论文解读型 / 机制讲解型(见 SKILL.md,四种按真实帖子校准)
32
+ - 运营铁律:只起草不代发、数字必有来源、厂商数字标口径、不洗稿
33
+
34
+ ## 何时不用
35
+
36
+ X 长文 → `topmind-x-article`;公众号长文 → `topmind-wechat-post`;
37
+ 个人向短帖 → `topmind-x-posts`(规划中,未发布)。
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: topmind-briefs
3
+ version: 0.2.1
4
+ description: >-
5
+ 干货短文发布:公众号 + X 双平台,一件事讲透。X 一帖或短 thread,
6
+ 公众号约 300–800 字;1 张核心图(榜单/基准/截图/表格),不废话。
7
+ Use when 写短文、发快讯、数据榜单、
8
+ 论文一句话解读、新品速递、brief、快讯。Do NOT use for X 长文
9
+ (→ topmind-x-article)、公众号长文(→ topmind-wechat-post)、
10
+ 个人向短帖(→ topmind-x-posts,规划中未发布)。
11
+ action_category: write
12
+ triggers:
13
+ - 写短文
14
+ - 发快讯
15
+ - 干货短文
16
+ - 一句话解读
17
+ - 数据榜单
18
+ - 新品速递
19
+ - brief
20
+ - 快讯
21
+ triggers_cn:
22
+ - 来篇短的
23
+ - 短平快
24
+ - 发个快讯
25
+ author: TopMindSpace
26
+ license: MIT
27
+ homepage: https://github.com/topmindspace/topmind-writing-skills#readme
28
+ updated: 2026-10-01
29
+ ---
30
+
31
+ # topmind-briefs · 干货短文(公众号 + X)
32
+
33
+ 一件事,一张图,讲完就停。跟 `topmind-x-posts`(规划中,未发布)的区别:
34
+ 那是个人向短帖(第一人称、暴论、真诚);这是**干货向短文**(数据、榜单、
35
+ 论文、新品,第三方客观口吻)。
36
+
37
+ ## 何时不用
38
+
39
+ - X 长文(数千字深度稿)→ `topmind-x-article`
40
+ - 公众号长文 → `topmind-wechat-post`
41
+ - 个人向短帖(第一人称、观点、段子)→ `topmind-x-posts`(规划中,未发布)
42
+ - 需要多张配图、复杂排版的稿件(本技能只配 1 张核心图)
43
+
44
+ ## 语言铁律
45
+
46
+ - **默认中文**:标题、正文、配图文案一律用中文写作,这是默认行为,不需要用户每次声明。
47
+ - **英文是例外**:只有用户**明确说**"写英文文章/帖子"时才用英文。用户消息里夹杂英文词、
48
+ 给英文参考素材、引用英文原文,都不算"要求写英文"。
49
+ - 引用英文一手素材(论文标题、官方公告、图表原文)时保留英文原文,正文主体仍是中文,
50
+ 必要时在旁给中文翻译。
51
+
52
+ ## 工作流
53
+
54
+ 1. **定主题**:用户给方向,或从热点里挑。一篇只讲一件事——
55
+ 一个数据、一个榜单变化、一篇论文的核心结论、一个新品的关键参数。
56
+ 定不下来就问:这篇让读者记住哪一个数字/结论?
57
+ 2. **找素材**:事实先核实(一手来源)。图优先找现成的:
58
+ 官方截图 > 官方基准图 > 第三方榜单实拍 > 论文原图。
59
+ 没有现成图才自制(只做对比表、趋势图这种信息图,不做装饰图)。
60
+ 3. **写**:按 `references/style-guide.md` 写。X 版和公众号版各写一版,
61
+ 内容一致,篇幅按平台调整(见 `references/platform-specs.md`)。
62
+ 4. **自检**:过一遍禁止清单;确认每个数字都有来源;确认图和文字说的是同一件事;
63
+ 推测/判断必须显式标注"(推测)",与事实段落切割,不混写。
64
+ 5. **交付**:双版 HTML,一键复制(只交付,不发布)——
65
+ - X 版:`md2x-html.py X短文.md --out X短文.html --images-from 公众号短文.md`
66
+ (无封面;1–4 张图按 [图N] 顺序嵌入;thread 超长时拆条)。
67
+ **禁止手工拼 `--images`**:文件名排序 ≠ 文档顺序,手工传参曾导致整段配图错位;
68
+ 脚本内置 `[图N]` 连续性 + 数量校验,不通过直接报错。
69
+ - 公众号版:`md2wechat.py --input 公众号短文.md --embed-images`
70
+ (图片 base64 内嵌,图注写在图下方)。
71
+ - 构建后必跑校验:嵌入图数量 = 文档图数量;嵌入图顺序 = 文档出现顺序
72
+ (逐张解码与源文件比对);[图N] 编号连续;
73
+ X 版内嵌图序列(无封面)与公众号版逐字节一致。
74
+
75
+ ## 内容类型(四种,按真实帖子校准)
76
+
77
+ | 类型 | 参考 | 结构 |
78
+ |------|------|------|
79
+ | 数据榜单型 | @ArtificialAnlys | 判断句开头 → 基准一句话 → 最扎眼数字 → 双图(解决率+成本) |
80
+ | 榜单速报型 | @arena | "Big news:"+排名+分数 → 性价比 → 细分展开 → 纵向对比 → 榜单实拍 |
81
+ | 论文解读型 | @RulinShao | 加粗判断 → "Introducing X"+3 bullets → 论文原图 |
82
+ | 机制讲解型 | @akshay_pachaar | 痛点一句话 → 分步机制 → "To summarise:"三行 → 流程图/视频 |
83
+
84
+ ## 配图铁律
85
+
86
+ - 一篇配 1 张核心图,最多 4 张。每张图必须承载信息,装饰图一律不要。
87
+ - 图注一句话说明这张图在证明什么。
88
+ - **位置**:图片必须紧跟它证明的那段文字之后(最多隔一段);章节题图放在节首。
89
+ 禁止"图堆在节末"、"图与文字错位到下一节"。
90
+ - X:图片按顺序编号,文字里用 [图1] 标注对应关系。
91
+ - 公众号:图片内嵌,图注写在图下方。
92
+ - 校验脚本思路:对每张图,取其前后各 6 行文本,检查是否出现该图主题关键词
93
+ (如 Grok 图邻近必须有"Grok");不通过则人工核对。
94
+
95
+ ## 运营铁律
96
+
97
+ - 只起草,不代发。发布前用户确认。
98
+ - **交付铁律**:发布/分享时直接用交付的 HTML 原文件原样呈现,不临时重新生成版本。
99
+ - 数字必须有来源;厂商数字标"厂商口径"。
100
+ - 不洗稿:观点可以撞,表达必须原创。
101
+ - 不碰医疗建议、投资建议、政治站队。
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "topmind-briefs",
3
+ "version": "0.2.1",
4
+ "built_at": "2026-10-01T13:38:13.526837+00:00",
5
+ "files": 12,
6
+ "sha256": "be43875539f1f02a337187f9e644a684d9999e876eccf030af76265eb194f7c0",
7
+ "entries": [
8
+ "README.md",
9
+ "SKILL.md",
10
+ "package.json",
11
+ "references/examples.md",
12
+ "references/platform-specs.md",
13
+ "references/style-guide.md",
14
+ "scripts/audit_css.py",
15
+ "scripts/audit_docs.py",
16
+ "scripts/audit_skill.py",
17
+ "scripts/audit_styles.py",
18
+ "scripts/negative_tests.py",
19
+ "scripts/package_skill.py"
20
+ ]
21
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "topmind-briefs",
3
+ "version": "0.2.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "topmind-briefs",
9
+ "version": "0.2.0",
10
+ "license": "MIT"
11
+ }
12
+ }
13
+ }
@@ -0,0 +1 @@
1
+ {"author":"TopMindSpace","description":"干货短文发布:公众号 + X 双平台,一件事讲透。300–800 字,1 张核心图,不废话。","license":"MIT","name":"topmind-briefs","private":true,"repository":{"directory":"topmind-briefs","type":"git","url":"git+https://github.com/topmindspace/topmind-writing-skills.git"},"version":"0.2.1"}
@@ -0,0 +1,131 @@
1
+ # 示例 · 干货短文(按真实帖子校准)
2
+
3
+ > 说明:以下引用的是真实帖子的原文结构(含原文的 `- ` 列表写法,原样保留)。
4
+ > 自己写 X 版时,列表符号按 `style-guide.md` 用纯文本 `• ` / `▪ ` / emoji
5
+ >(X 不渲染 Markdown)。
6
+
7
+ ## 例 1:数据榜单型(@ArtificialAnlys 原文结构)
8
+
9
+ 原文模式:先抛一个反直觉判断 → 甩基准 → 给最扎眼的数字 → 图证明。
10
+
11
+ ```
12
+ Restricting offensive without blocking defensive is difficult...
13
+
14
+ On CyberGym-E2E-AA, some frontier models are safety blocked on 85%+ of tasks.
15
+
16
+ The good news: with GPT-6 Luna or MiMo-V2.6-Pro, ~100 bug hunts in a 1M+ line
17
+ codebase for ~$20 — up to 100x cheaper per task than Grok 4.7.
18
+
19
+ [图:上下两张柱状图——任务解决率 vs 单任务成本]
20
+ ```
21
+
22
+ 结构拆解:
23
+ 1. 判断句开头(一句话观点)
24
+ 2. 基准是什么(一句话)
25
+ 3. 最扎眼的数字(85%+、~$20、100x)
26
+ 4. 图:解决率和成本两张图并置
27
+
28
+ ## 例 2:榜单速报型(@arena 原文结构)
29
+
30
+ ```
31
+ Big news: Gemini 4 Argon (High) just landed #1 in Text Arena with 1525 pts,
32
+ and #8 in Code Arena: WebDev with 1679 pts!
33
+
34
+ Blended $8/MToken — the most cost efficient model on the Pareto frontier.
35
+
36
+ #1 in Coding, Hard Prompts, Instruction Following, Longer Query, Creative Writing.
37
+ +20 pts above #2 Claude Opus 4.6 (High); leap from #11 (Gemini 3.8 Flash).
38
+
39
+ [图:Text Arena + Code Arena 排行榜截图各一张]
40
+ ```
41
+
42
+ 结构拆解:
43
+ 1. "Big news:" + 排名 + 分数(开头即全部关键信息)
44
+ 2. 价格/性价比(一句话)
45
+ 3. 细分维度展开(列表)
46
+ 4. 纵向对比(比上次、比第二名)
47
+ 5. 图:排行榜实拍
48
+
49
+ ## 例 3:论文解读型(@RulinShao 原文结构)
50
+
51
+ ```
52
+ ‼️The Bitter Lesson for context management: Giving LMs unrestricted control
53
+ over their context beats human-designed SOTA!
54
+
55
+ Introducing 🩵Context Language Models (CLMs)🩵
56
+ - Natively manage their own context
57
+ - Treat context as a file
58
+ - Learn policies in CLM weights, no harness
59
+
60
+ [图:论文信息图——架构示意 + 四组结果曲线]
61
+ ```
62
+
63
+ 结构拆解:
64
+ 1. 加粗判断("Bitter Lesson"式标题党,但后面有真东西)
65
+ 2. "Introducing X" + 3 条 bullet(每条 ≤10 词)
66
+ 3. 图:论文原图(架构 + 结果)
67
+
68
+ ## 例 4:机制讲解型(@akshay_pachaar 原文结构)
69
+
70
+ ```
71
+ Jev for RAG, clearly explained!
72
+
73
+ Hybrid search gives you a shortlist. It does not decide which passages
74
+ contain evidence. That missing judgment is where Jev fits.
75
+
76
+ → Retrieve wide
77
+ [一句话机制]
78
+
79
+ → Judge every candidate together
80
+ [一句话机制]
81
+
82
+ → Let code apply the threshold
83
+ [一句话机制]
84
+
85
+ To summarise:
86
+ - Retrieval finds the candidates.
87
+ - Jev decides what deserves context.
88
+ - The LLM writes the grounded answer.
89
+
90
+ [视频:RAG 流程架构动画]
91
+ ```
92
+
93
+ 结构拆解:
94
+ 1. 标题句("X, clearly explained!")
95
+ 2. 痛点(一句话:现有方案缺什么)
96
+ 3. 机制分步(→ 标记,每步一句话)
97
+ 4. "To summarise:" 三行收束
98
+ 5. 媒体:流程图/动画 + 文章链接
99
+
100
+ ---
101
+
102
+ ## 公众号版改写示例(例 1 → 公众号)
103
+
104
+ ```markdown
105
+ # 跑 100 次漏洞挖掘只要 $20:CyberGym-E2E-AA 基准实测
106
+
107
+ > 想防住攻击又不误伤防御,太难了——前沿模型在 85%+ 的任务上被安全拦截直接拒绝回答。
108
+
109
+ - 基准:CyberGym-E2E-AA,测从漏洞发现到补丁的全链路防御能力
110
+ - 拦截率:部分前沿模型 85%+ 任务被安全机制拦掉
111
+ - 成本:GPT-6 Luna / MiMo-V2.6-Pro 跑 ~100 次 bug hunt 约 $20,
112
+ 单任务成本比 Grok 4.7 便宜 up to 100 倍
113
+
114
+ ![CyberGym-E2E-AA:任务解决率 vs 单任务成本](图)
115
+
116
+ 来源:Artificial Analysis
117
+ ```
118
+
119
+ 改写要点:X 版英文直发;公众号版加一句中文背景("这是什么基准"),
120
+ 数字保留英文原样,结论不变。
121
+
122
+ ---
123
+
124
+ ## 反例(不要这样写)
125
+
126
+ ❌ "众所周知,AI 发展日新月异。最近,Google 发布了一款新模型,
127
+ 引起了广泛关注。值得一提的是,这款模型在多个基准上表现出色…"
128
+ → 铺垫三段,结论藏在最后,没有具体数字。
129
+
130
+ ❌ "大幅提升""显著改善""表现优异"
131
+ → 没有数据的形容词,删掉或换成数字。
@@ -0,0 +1,63 @@
1
+ # 平台规格 · 公众号 vs X
2
+
3
+ 同一件事,写两版。内容一致,篇幅和格式按平台调整。
4
+
5
+ ## X 版
6
+
7
+ - 长度:280 字符内(一条)。超了就拆 thread,最多 3 条,每条都按单帖规格写(首条最重要,时间线上只显示首条和首图)。
8
+ - 语言:默认中文。英文是例外:只有受众明确是英文区、或素材本身就是英文速报时才用英文(参考 @ArtificialAnlys 风格);中文参考 @arena 风格。
9
+ - 图片:1–4 张,首图最重要(时间线上只显示首图)。
10
+ - 格式:纯文本 + 图片。不用 Markdown 标题(X 不渲染)。
11
+ - **列表符号**:X 不渲染 Markdown,列表不用 `- ` / `1.` 这种 Markdown 语法,
12
+ 用纯文本符号开头:`• ` 或 `▪ `,中文帖也可用 emoji(📌 📊 💡)开头。
13
+ Markdown 列表语法只用在公众号版。
14
+ - 结尾:来源链接(缩短)。不加 hashtag,除非是榜单/活动官方 tag。
15
+ - 交付:`md2x-html.py` 生成一键复制 HTML(`--images` 按 [图N] 文档顺序传图,
16
+ 无封面),另附纯文本版方便直接粘贴。
17
+ - 示例结构(注意列表符号是纯文本的 `•`,不是 Markdown):
18
+ ```
19
+ [结论一句话]
20
+
21
+ • 数据 1
22
+ • 数据 2
23
+
24
+ [图1:榜单截图]
25
+
26
+ 来源:链接
27
+ ```
28
+
29
+ ## 公众号版
30
+
31
+ - 长度:300–800 字。比 X 版多 1–2 句背景("这是什么榜单""为什么重要")。
32
+ - 标题:15 字内,带数字或结论。"[模型] 登顶 [榜单]:[分数]"。
33
+ - 图片:1–4 张,base64 内嵌(`md2wechat --embed-images`)。
34
+ - 格式:走 `topmind-wechat-post` 链路。标题 + 导语(一句话) + 列表 + 图 + 来源。
35
+ - 不写"前言导读""小结"这种长文结构——短文不需要。
36
+ - 交付:md2wechat 直接出 HTML(含一键复制按钮),原文件即发布用文件,不二次生成。
37
+ - 示例结构:
38
+ ```markdown
39
+ # [标题]
40
+
41
+ > [一句话导语]
42
+
43
+ [结论段,2–3 句]
44
+
45
+ - 数据 1
46
+ - 数据 2
47
+ - 数据 3
48
+
49
+ ![图注](图)
50
+
51
+ 来源:[链接]
52
+ ```
53
+
54
+ ## 对照表
55
+
56
+ | | X 版 | 公众号版 |
57
+ |---|---|---|
58
+ | 长度 | ≤280 字符 | 300–800 字 |
59
+ | 标题 | 无(首句即标题) | 15 字内 |
60
+ | 背景 | 不写 | 1–2 句 |
61
+ | 图片 | 1–4 张 | 1–4 张(内嵌) |
62
+ | 来源 | 链接 | 链接 |
63
+ | 语气 | 更短更冲 | 稍完整 |
@@ -0,0 +1,60 @@
1
+ # 风格指南 · 干货短文
2
+
3
+ 目标:读者划过去,3 秒内抓住那个数字/结论,心想"这篇有料"。
4
+
5
+ ## 三原则
6
+
7
+ **短**:一件事讲完就停。X 版 280 字符内;公众号版 500 字内。
8
+ **干**:每个字都承载信息。删掉所有"众所周知""值得一提的是"。
9
+ **准**:数字有来源,判断有依据。不确定的写"据 X 报道",不编。
10
+
11
+ ## 开头:四种起手(按真实帖子)
12
+
13
+ - 数据型(@ArtificialAnlys):"[反直觉判断一句话]。On [基准], [最扎眼数字]。"
14
+ - 速报型(@arena):"Big news: [模型] just landed #1 in [榜单] with [分数]!"
15
+ - 论文型(@RulinShao):"‼️[加粗判断]: [一句话]! Introducing [X]"
16
+ - 讲解型(@akshay_pachaar):"[X], clearly explained! [痛点一句话]"
17
+
18
+ ## 正文:列表 > 段落
19
+
20
+ 能用列表就不用段落。X 版用纯文本符号(`• ` / `▪ ` / emoji),
21
+ 不要用 Markdown 的 `- `(X 不渲染,见 platform-specs.md)。公众号版用 Markdown 列表。
22
+
23
+ X 版参考格式:
24
+
25
+ ```
26
+ [结论一句话]
27
+
28
+ • 关键数据 1
29
+ • 关键数据 2
30
+ • 关键数据 3
31
+
32
+ [图]
33
+
34
+ 来源:[链接]
35
+ ```
36
+
37
+ ## 禁止清单
38
+
39
+ - 禁止"首先、其次、最后""总而言之""值得一提的是""值得注意的是"
40
+ - 禁止"赋能""抓手""闭环""底层逻辑"
41
+ - 禁止铺垫三段再说结论
42
+ - 禁止没有数据的形容词:"大幅提升""显著改善"(改成具体数字)
43
+ - 禁止感叹号连用
44
+ - 禁止"家人们""老铁"式直播腔
45
+ - 禁止正确的废话
46
+
47
+ ## 鼓励
48
+
49
+ - 数字代替形容词:"快 3 倍"不说"大幅提升"
50
+ - 对比代替孤立数字:"58 分,比 Opus 5.5 高 2 分"不说"58 分,很高"
51
+ - 一句话判断收尾(可选):"这意味着 [对读者的意义]。"——只写一句,不展开
52
+ - 来源链接放在最后,不打断阅读
53
+ - 允许短句和碎片化断句,像人说话一样写,不追求完整长句(去AI味)
54
+ - 标题可以冲,但正文必须有真东西支撑,不做空转标题党
55
+
56
+ ## 自检三问
57
+
58
+ 1. 删掉一半字,核心结论还在吗?(在→删)
59
+ 2. 每个数字都能说出来源吗?(不能→删或补来源)
60
+ 3. 不看图,文字本身成立吗?不看文字,图本身有信息吗?(都成立→图和文各司其职)
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """CSS 审计:本组技能无 CSS 资产;若未来加入 .css 文件,则做括号配平基础检查。"""
4
+ from __future__ import annotations
5
+
6
+ import sys
7
+ from pathlib import Path
8
+
9
+ try:
10
+ sys.stdout.reconfigure(encoding="utf-8", errors="replace")
11
+ except Exception:
12
+ pass
13
+
14
+ ROOT = Path(__file__).resolve().parent.parent
15
+ NAME = ROOT.name
16
+ errors: list[str] = []
17
+
18
+
19
+ def main() -> None:
20
+ print(f"[audit_css] {NAME}")
21
+ css_files = [p for p in ROOT.rglob("*.css") if ".git" not in p.parts and "dist" not in p.parts]
22
+ if not css_files:
23
+ print(" ✓ 无 CSS 资产,跳过")
24
+ print(f"\n[audit_css] {NAME}: 通过")
25
+ return
26
+ for css in css_files:
27
+ text = css.read_text(encoding="utf-8")
28
+ balanced = text.count("{") == text.count("}")
29
+ print((" ✓ " if balanced else " ✗ ") + f"{css.name} 括号配平")
30
+ if not balanced:
31
+ errors.append(css.name)
32
+ if errors:
33
+ print(f"\n[audit_css] {NAME}: {len(errors)} 项失败")
34
+ sys.exit(1)
35
+ print(f"\n[audit_css] {NAME}: 全部通过")
36
+
37
+
38
+ if __name__ == "__main__":
39
+ main()
@@ -0,0 +1,80 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """文档审计:references 完整性与内部链接可达性(任一不过 → 退出码 1)。"""
4
+ from __future__ import annotations
5
+
6
+ import re
7
+ import sys
8
+ from pathlib import Path
9
+
10
+ try:
11
+ sys.stdout.reconfigure(encoding="utf-8", errors="replace")
12
+ except Exception:
13
+ pass
14
+
15
+ ROOT = Path(__file__).resolve().parent.parent
16
+ NAME = ROOT.name
17
+ errors: list[str] = []
18
+
19
+
20
+ def check(cond: bool, msg: str) -> None:
21
+ print((" ✓ " if cond else " ✗ ") + msg)
22
+ if not cond:
23
+ errors.append(msg)
24
+
25
+
26
+ def main() -> None:
27
+ print(f"[audit_docs] {NAME}")
28
+ md_files = [p for p in ROOT.rglob("*.md") if ".git" not in p.parts and "dist" not in p.parts]
29
+ check(len(md_files) >= 2, f"md 文档 ≥2(实 {len(md_files)},含 SKILL.md/README.md)")
30
+
31
+ refdir = ROOT / "references"
32
+ if refdir.is_dir():
33
+ refs = sorted(refdir.glob("*.md"))
34
+ check(len(refs) >= 1, f"references/*.md ≥1(实 {len(refs)})")
35
+ for md in refs:
36
+ check(md.stat().st_size > 0, f"references/{md.name} 非空")
37
+
38
+ for md in md_files:
39
+ text = md.read_text(encoding="utf-8")
40
+ rel = md.relative_to(ROOT).as_posix()
41
+ for link in set(re.findall(r"\]\(([^)]+)\)", text)):
42
+ if link.startswith(("http://", "https://", "#", "mailto:")):
43
+ continue
44
+ target = (md.parent / link.split("#")[0]).resolve()
45
+ if link and not target.exists():
46
+ # 允许指向脚本/资源等非 md 文件的相对链接缺失检查放宽到 md
47
+ if target.suffix == ".md":
48
+ check(False, f"{rel} 悬空链接: {link}")
49
+ check(True, "内部 md 链接可达")
50
+
51
+ # 反引号代码引用中的路径可达(审计 轻微-15 门禁盲区:之前只查 [text](path) 形式,
52
+ # `references/pan-style.md` 这类反引号引用曾漏网)。抓取反引号内的 references/*.md
53
+ # 与 scripts/* 路径并校验存在;glob/占位符写法(* ? < > |)跳过。
54
+ backtick_path_re = re.compile(r"(references|scripts)/([\w.\-/]+)")
55
+ line_suffix_re = re.compile(r":\d+(?:-\d+)?$")
56
+ backtick_bad = 0
57
+ for md in md_files:
58
+ text = md.read_text(encoding="utf-8")
59
+ rel = md.relative_to(ROOT).as_posix()
60
+ for span in set(re.findall(r"`([^`]+)`", text)):
61
+ for kind, p in backtick_path_re.findall(span):
62
+ p = line_suffix_re.sub("", p)
63
+ if not p or any(c in p for c in "*?<>|"):
64
+ continue
65
+ target = md.parent / kind / p
66
+ if not target.exists():
67
+ target = ROOT / kind / p
68
+ if not target.exists():
69
+ backtick_bad += 1
70
+ check(False, f"{rel} 反引号引用不可达: `{kind}/{p}`")
71
+ check(backtick_bad == 0, f"反引号内 references/scripts 引用可达(扫描 {len(md_files)} 个 md 文件)")
72
+
73
+ if errors:
74
+ print(f"\n[audit_docs] {NAME}: {len(errors)} 项失败")
75
+ sys.exit(1)
76
+ print(f"\n[audit_docs] {NAME}: 全部通过")
77
+
78
+
79
+ if __name__ == "__main__":
80
+ main()