Skip to content

Commit a547c5c

Browse files
committed
feat(skills): redesign the release poster in a Swiss bold layout
Replace the release-announcement poster with a three-band layout: a signal-orange hero with the oversized version and lead feature, a paper band for the remaining features and extras, and an ink band for fixes, contributors, the install note and footer. Paragraphs whose last line is under a third of the measure are rebalanced to avoid orphans. Tests cover the first-screen lead, orphan balancing, long versions and palette contrast.
1 parent 9b15231 commit a547c5c

5 files changed

Lines changed: 501 additions & 145 deletions

File tree

‎.agents/skills/release-announcement/SKILL.md‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@ description: 从本项目最新的 release-notes Markdown 制作微信群发布
1515
复测旧版本时加 `--version 0.6.6` 并使用独立输出路径,避免覆盖最新版本的 scan 结果。
1616
2. 仅依据该版本的中文 release note 提炼主要功能和关键修复;纯修复版的 `features` 留空,纯功能版的 `fixes` 留空,绝不为了填版式虚构内容。有重要模型或供应商更新时可加一个简短区块。每条信息必须能追溯到原文,压缩表述时保留条件和边界。安装提醒只写原文确有的信息。不要把英文译文重复计数。
1717
3. 对 `credit_candidate: true` 的账号逐个核对发布说明里的贡献项;普通 `@ID` 提及(例如 PR reviewer)不算代码署名。`render` 会通过 GitHub 公共用户 API 校验 ID 并下载真实头像;无法核验时停止并报告,不能臆造头像、错配姓名,不能让图像生成模型重绘头像。正式生成不能使用 `avatar_path` 跳过核验。
18-
4. 按 [数据格式](references/poster-spec.md) 写 `poster-spec.json`,版本必须与 scan 结果一致。运行 `python3 .agents/skills/release-announcement/scripts/release_poster.py render --scan artifacts/release-posters/latest-scan.json --spec <poster-spec.json> --out <poster.png>`。建议输出到 `artifacts/release-posters/v<version>/`,保留已有文件,文件名加版本或修订号。此脚本固定使用紧凑版式绘制准确中文和头像;不要用 imagegen 绘制正文。
18+
4. 按 [数据格式](references/poster-spec.md) 写 `poster-spec.json`,版本必须与 scan 结果一致。`features` 按用户价值排序,第一项会放进橙色首屏作为「本版重点」;其余在纸色区单列编号,修复与贡献者在墨色收尾区。运行 `python3 .agents/skills/release-announcement/scripts/release_poster.py render --scan artifacts/release-posters/latest-scan.json --spec <poster-spec.json> --out <poster.png>`。建议输出到 `artifacts/release-posters/v<version>/`,保留已有文件,文件名加版本或修订号。此脚本使用固定的编辑式视觉系统绘制准确中文和头像;不要用 imagegen 绘制正文。
1919
5. 写一段适合微信群的短文案,保存为同目录的 `wechat-copy.txt`:版本号 + 1 句主要变化 + 1 句感谢,具体细节交给图片。有本次明确署名的贡献者时感谢代码贡献;没有时只感谢反馈与支持,不暗示本版有特定群友提交。文案不要宣称未核实的下载地址或公开发布状态,也不要自动向群发送。若需要下载入口,先检查对应 GitHub Release 是否存在。
20-
6. 打开成图检查标题、文字换行、头像和 ID 对应、正文是否从顶部很快开始。最后提供 PNG、短文案、所用 release note 来源和任何未核实项。生成物放在被 Git 忽略的 `artifacts/`,不要提交生成图、头像缓存或中间 JSON。
20+
6. 打开原图和缩至 390px 宽的手机预览,检查首屏能否读到第一项功能、正文可读性、长标题与链接换行、头像和 ID 对应。纯修复版直接进入修复区,不出现空功能区。最后提供 PNG、短文案、所用 release note 来源和任何未核实项。生成物放在被 Git 忽略的 `artifacts/`,不要提交生成图、头像缓存或中间 JSON。
2121

2222
## 图像与环境
2323

24-
默认长图不需要生成式插画:顶部仅有约 230px 的版本标题,直接进入实际有内容的功能或修复区。这样版式与中文文字最稳定。用户明确想增加插画时,可用 imagegen 只生成无字装饰素材,再用脚本绘制全部文字与真实头像;不能让装饰占去首屏。
24+
默认采用「瑞士大字」版式:信号橙首屏放产品名、超大版本号和本版重点,纸色区放其余功能与补充变化,墨色区收尾放修复、贡献者和安装提示,详见 [视觉规则](references/editorial-brief.md)。主要正文 36px,单列排版。默认不需要插画。用户明确想增加插画时,可用 imagegen 只生成无字装饰素材,再用脚本绘制全部文字与真实头像;不能让装饰占去首屏。
2525

2626
`scan` 只用 Python 标准库;`render` 需要 Pillow 和可用的中文系统字体。缺依赖时先查看项目已有运行环境,不为一次制图修改生产依赖。GitHub 头像获取是公开只读请求;失败时给出具体账号和原因。
27+
28+
修改模板后运行 `python3 -m unittest discover -s .agents/skills/release-announcement/scripts -p 'test_*.py' -v`(需要同样的 Pillow 和中文字体)。测试覆盖纯功能/纯修复、首项落在手机首屏、段落末行孤字、长文本与超长版本号边界、离线贡献者、文字重叠和各色带对比度;再用真实 release note 渲染并检查手机预览。美术调整必须落到脚本和本目录的参考说明中,不能只改变一次生成时的提示词。
Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,42 @@
1-
# 发布图与群文案提示词
1+
# 发布图与群文案要求
22

33
使用最新 release markdown 的**中文原文**作为唯一内容依据。写给已经在使用 Claude Code Haha 的微信群用户,突出他们最能感受到的变化,避免把每条 commit 都挤进图里。
44

5-
**长图视觉提示词:**1080px 宽、适合手机纵向阅读的简体中文版本更新图。顶部深炭色 Hero 约 230px,只放产品名、版本号和「新版本发布」,无插画、无大图、无大块留白;紧接着进入本版实际有内容的功能或修复区。主体为暖白纸色,深色标题、陶土红小标记、简洁双列功能卡、单列修复清单。纯修复版不要出现「这次新增」或空功能卡。贡献者区展示从 GitHub 实际取得的圆形头像、准确 ID 和对应贡献。正文由确定性字体排版完成,不能依赖生成模型拼写文字或绘制头像。按内容自然增长高度,不压缩字号来塞入更多条目。
5+
## 视觉方向:瑞士大字
66

7-
**提炼提示词:**从发布说明选最多 4 项核心功能、最多 9 项用户能理解的修复;没有的类别保持为空。每项标题尽量不超过 14 个汉字,说明用一句话讲清“现在能做什么”或“之前的问题如何改善”。优先考虑群友直接感受到的变化,避免用开发者内部修复挤掉有用的用户功能。保留必要条件,例如“在设置中开启后”、超时选项、适用平台、临时性或签名状态。模型更新可合并为一个区块。未署名的修复不强行归给贡献者。
7+
1080px 宽、适合手机纵向阅读的简体中文长图,2026-10 由维护者从四个方向中选定。三段色带建立阅读顺序:信号橙首屏(产品、超大版本号、本版重点)→ 纸色正文(其余功能、补充变化)→ 墨色收尾(修复、贡献者、安装提示、页尾)。全部文字和头像由脚本确定性绘制,按内容自然增长高度。
88

9-
**群文案提示词:**用自然、简短的群聊语气,最多三句话;写出版本号和最重要的两项变化,最后引导看图。有本版署名贡献者时感谢代码贡献;没有时感谢反馈与支持。只有用户明确说这些贡献者是群成员时才称他们为“群友”。不要把图内清单再抄一遍;不要虚构下载链接或给未核实的 GitHub ID 加 `@`。
9+
| 角色 | 固定规范 |
10+
| --- | --- |
11+
| 首屏底色 | 信号橙 `#FF5B23`,其上文字一律墨色 `#151515`(对比度 ≥ 4.5:1) |
12+
| 正文底色 / 补充面板 | 纸色 `#F1F0EB` / `#E3E1D9`;正文 `#3B3B38`,对比度均 ≥ 7:1 |
13+
| 正文区强调 | 深橙 `#A8340B`,只用于编号、区间和补充面板的小标签 |
14+
| 收尾底色 | 墨色 `#151515`;标题 `#F1F0EB`,正文 `#CFCCC4`(≥ 7:1),细线 `#3A3A38`;方块标记、安装提示框和页尾版本号用信号橙 |
15+
| 数字字体 | 版本号与编号用窄体黑:macOS Helvetica Neue Condensed Black,回退 Avenir Next Condensed Heavy、DejaVu Sans Condensed Bold、Arial Bold |
16+
| 中文字体 | 冬青黑体 W3/W6,回退华文黑体;Linux Noto Sans CJK(有 Black 时标题用 Black),Windows 微软雅黑。没有黑体字重时,仅 ≥ 60px 的标题加 1px 同色描边,小字号不描边(会糊字) |
17+
| 字号 | 版本号最大 400px(超宽时自动缩小,不低于 96px);区块标题 64px、首项标题 64px、条目标题 44px(修复 40px)、主要正文 36px;补充面板与贡献说明 34px,安装说明 32px,标签 26–30px |
18+
| 网格 | 左右边距 64px;功能区左列 160px 放编号,正文列 792px;条目之间 2px 墨色线,修复之间 1px 暗线 |
19+
20+
**首屏:**左上产品名、右上「版本更新」,下方超大版本号(不带 v),粗线后是 `01 / 本版重点` 与第一项功能。首项必须在手机首屏读完。纯修复版首屏改为「本版为修复更新 · N 项修复」,随后直接进入墨色修复区。
21+
22+
**正文区:**其余功能以「新增与改进」+ 右侧编号区间开头,每项左侧是深橙大编号。extras 用浅灰平面面板(无圆角、无阴影),标签、标题、正文三层。只有一项功能且无 extras 时不出现纸色段。
23+
24+
**收尾区:**「重点修复」逐项用橙色方块标记;有署名时「感谢社区贡献者」逐行排真实圆形头像、完整 ID 和贡献;安装提示为橙色细框,左侧标签右侧正文;页尾为产品名 + 橙色版本号,仓库地址放得下则右对齐,否则另起一行。
25+
26+
**正文换行:**段落末行短于栏宽 1/3 时,在行数不变的前提下收窄测量宽度重排,避免末行只剩一两个字;其他段落保持满栏宽。
27+
28+
**禁止:**渐变、阴影、圆角卡片、emoji、霓虹或紫蓝 AI 配色、虚构 UI 截图、假头像、为塞入条目缩小正文。信号橙只用于首屏底色和墨色区的小面积标记,不在纸色区上作文字色。
29+
30+
## 内容提炼
31+
32+
一般选 2–4 项核心功能,大版本最多 6 项;一般最多 9 项用户能理解的修复,脚本硬上限为 12 项。没有的类别保持为空。每项标题尽量不超过 14 个汉字,说明用一句话讲清“现在能做什么”或“之前的问题如何改善”。最重要的功能排在第一项,不按 commit 顺序平均分配权重。
33+
34+
优先群友直接感受到的变化,避免开发者内部修复挤掉有用的用户功能。保留必要条件,例如“在设置中开启后”、超时选项、适用平台、临时性或签名状态。重要模型与供应商更新可合并为一个简短区块。未署名的修复不强行归给贡献者。
35+
36+
## 群文案
37+
38+
用自然、简短的群聊语气,最多三句话;写出版本号和最重要的两项变化,最后引导看图。有本版署名贡献者时感谢代码贡献;没有时感谢反馈与支持。只有用户明确说这些贡献者是群成员时才称他们为“群友”。不要把图内清单再抄一遍,不使用 emoji,不虚构下载链接或给未核实的 GitHub ID 加 `@`。
39+
40+
## 出图检查
41+
42+
打开 1080px 原图和 390px 宽的手机预览。检查首项是否出现在首屏、正文无需放大能否阅读、长英文与标点是否越界、标题和正文是否重叠、头像和 ID 是否一一对应、没有内容的类别是否隐藏。若图过长,优先减少次要信息,保持主要正文字号。改模板时以同一份 spec 比较前后效果,再验证纯功能、纯修复和长贡献说明等边界。

‎.agents/skills/release-announcement/references/poster-spec.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
```
2525

2626
- `version`、`features`、`fixes`、`contributors` 必填;`extras`、`install_note`、`footer_url` 可省略。纯修复版填 `"features": []`,纯功能版填 `"fixes": []`,两者不能同时为空。没有署名贡献者时 `contributors` 为 `[]`。
27+
- `features` 一般选 2–4 项,大版本最多 6 项;按用户价值排序,第一项绘制在橙色首屏作为「本版重点」。其他功能为单列编号,说明不必手动添加换行。`fixes` 一般不超过 9 项,硬上限 12 项;`extras` 用于补充输入、模型或供应商变化,合并在「更多变化」区,不用于堆放剩余 commit。
28+
- 现有 JSON 无需新增样式字段即可使用新版模板。配色和字号统一由脚本维护;长标题、贡献说明、ID 和 URL 会自动换行,超长英文串仅在超出可用宽度时拆分,不裁切或省略内容。
2729
- `render --scan` 会校验版本及贡献者 ID 必须是 release note 中文部分的明确署名候选。普通提及不算署名;不要把示例 ID 写入真实结果。
2830
- 测试或离线排版时,贡献者可以另给 `avatar_path` 并显式传 `--allow-offline-avatars`;正式生成禁止该选项,必须实时核验公开 GitHub 账号与头像。
2931
- 正式图保留所有已核验、已署名的贡献者;如果名字很多,可以缩短每人的贡献概述,不能遗漏账号或用假头像填位。

0 commit comments

Comments
 (0)