当学生说"Common App 活动栏写不下"、"这段活动描述超字数了"、"帮我把这几条压到限制内"时使用。先按官方申请表核对当季字符限额,再逐条检查;一次把所有条目量完并直接给出压缩版,只在需要砍掉实质内容时才用选择题问该保哪部分。每改一版都用工具重新数一遍字符,绝不凭感觉说"这样应该够了"。只压缩,不代写空白。
日本語の概要は準備中です。原文の説明を表示しています。
当使用者说"做一张苹果发布会那种总结图""bento 图""把卖点、功能或研究成果排成一张格子图""产品亮点一图看完""做成竖版发小红书"时使用。
先出内容清单和线框预览,确认后由脚本排版,用本机 Chrome 渲染成 PNG:主图居中,四周十几个圆角格,字号、格缝、圆角按苹果样图的实测比例换算,横版、竖版、任意比例都能排,渲染后自动跑 19 项自检。研究成果走研究模式:测量值带不确定度、样本数与条件,可放一张小图表。图上的数字必须能指回材料,没有出处的不放,或在图上标明未确认。
不用苹果的商标、产品图、SF Symbols 和字体文件;不生成图片,图片由使用者提供。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
把一组产品卖点或研究结果排成苹果发布会收尾那种总结图:主图居中,四周十几个圆角格,一格一个功能。 所有尺寸按标签字号 u 换算,比例从苹果的总结片上量出来。脚本管尺寸、排版、渲染和自检,模型管选内容、写标签、查出处,使用者确认清单、挑排版。
不适用于 / Not for:
keynote-deck-builder;片子收尾要一张总结图时,再用本 skill 出 PNG 放进去photo-series-layoutphoto-cinematic-grade,调好再放进格子launch-summary-panel 已废弃,由本 skill 取代;使用者点名要它时,说明一句,改用本 skill| 输入 | 必填 | 说明 |
|---|---|---|
| 材料 | 是 | 卖点、规格表、发布稿或实验报告;图上每个数字都要能指回它 |
| 用途 | 否 | 定画幅和 u;没说就按 16:9 演示(3840×2160) |
| 产品还是研究 | 否 | 定 mode;没说就按材料判断 |
| 图片 | 否 | 使用者有权使用的产品图、照片、界面截图;没有就用图标格,并说明出来不会太像苹果 |
| 深浅 | 否 | 默认浅色;苹果只在 Pro 机型的片子上用深色 |
最多问三句:用在哪里;产品还是研究;手上有哪些图。都不答,就按 16:9、浅色出。
脚本都在本 skill 的 scripts/ 里,只用 Python 3、Pillow、numpy、scipy 和本机 Google Chrome,全程不联网:
python3 scripts/bento.py plan bento.json --out out/
python3 scripts/bento.py layout bento.json --n 3 --out out/
python3 scripts/bento.py render bento.json out/layout-1.json --out out/render
python3 scripts/bento.py check bento.json out/layout-1.json --dir out/render
bento.json,每格一条:种类、标签、重要程度(1–3)、图片、数字的出处;舍弃的条目写进 dropped,每条带理由。字段见 references/bento-json.md。跑 bento.py plan:打印清单表、格数、纯文字格占比和问题,再出一张线框预览。表和线框发给使用者确认。这一步不出成图。bento.py layout 给三个结构不同的方案(layout-1.json 分最好),各带一张线框图。各用一句话说差别,使用者挑一个;不挑就用第一个。报"排不出来"时减格或缩短标签,不缩字号。bento.py render 写单文件 HTML,驱动本机 Chrome 等字体和图片就绪后截 PNG,量出 dom.json、fonts.json,跑自检写 qa.json。要矢量版加 --pdf(字体见"不做的事")。qa.json。没过的项先改内容或换方案,重新渲染;改不掉的写进交付说明。不许改阈值或改 qa.json 让它通过。bento.json、选定的 layout.json、qa.json。要深浅两版时,两版用同一份 layout.json。可选抠图:使用者自己的产品照片带背景时,swift scripts/cutout.swift in.jpg out.png(macOS 14 以上,Vision 前景分割,在本机处理)出透明底 PNG,放进实物格(object)。只处理使用者自己的照片。
所有尺寸都是标签字号 u 的倍数,数值只在 scripts/bento_spec.py 定义一次。读数、量法和样图出处见 references/apple-measurements.md。
用途 canvas.use | u |
|---|---|
screen、print、custom | 短边的 2.2%(16:9 时等于宽的 1.23%) |
phone | 宽的 2.8%(手机全宽看图时,标签约 11pt);交付时说明字比样图大、每格更满 |
| 项 | 规则 |
|---|---|
| 格缝、外边距 | 0.68u |
| 圆角 | 1.55u,所有格子同一个值,普通圆角 |
| 文字离格边 | 上下 0.95u;标签左右至少留 1u |
| 标签 | u;英文行高 1.18,中文 1.3 |
| 功能名 | 按重要程度三档上限 1.75u、2.0u、2.6u,放不下往下缩,最小 1.6u |
| 大数字 | 3.2u(2.2–4.3u);只有最重要的一个(weight 3、无图)起排 4.3u,别的不随格子放大;离格边至少 1.1u,宽不超过格宽的 75%;斜杠、逗号伸到基线下的尾巴,标签让开它 |
| 主图里的字 | 默认 6u(5–8u) |
| 图标 | 格宽的 46%,夹在 3.5–9u 之间(苹果图标格的中位数) |
| 最小格 | 6u × 4.8u;长宽比不超过 3.5 |
| 字重、字距 | 一律 600;字距 0;固定 SF 的 Display 光学尺寸 |
| 出处行 | 默认不出;要出时 0.75u、对比度 ≥ 4.5:1,画在下边距那一条里 |
排法:格子铺满整张画布,四边留白等于格缝;图上没有标题、页头、页脚和分组小标签。画布切成接近正方形的小格(每格连格缝约 1.45u,行列都是 4 的倍数,16:9 是 56 × 32)。主图在正中,默认占横竖 1 : 2 : 1 的中间块;产品图按长宽比收窄,竖版画布遇到长宽比超过 1.3 的图,主图改成通栏。外圈分成上带、下带、左栏、右栏,四个角归谁每次不同,每条再切成几格。竖版也是这个结构,不学手机网页塌成一列。
格数(含主图)跟画幅的形状走:16:9 建议 14–18、上下限 10–21,来自苹果 2022–26 年 67 张总结片的常见值和见过的范围;别的画幅按以短边计的周长折算。超出建议范围只提醒,超出上下限自检不过。
| 画幅 | 输出像素 | use | 建议 | 上下限 |
|---|---|---|---|---|
| 16:9 | 3840×2160 | screen | 14–18 | 10–21 |
| 4:3 | 2048×1536 | screen | 12–15 | 8–18 |
| 21:9 | 3440×1440 | screen | 17–22 | 12–26 |
| A4 竖版 | 2480×3508 | 12–16 | 8–18 | |
| 1:1 | 2160×2160 | phone | 10–13 | 7–15 |
| 3:4 | 1242×1656 | phone | 12–15 | 8–18 |
| 4:5 | 1080×1350 | phone | 11–15 | 8–17 |
| 9:16 | 1080×1920 | phone | 14–18 | 10–21 |
| 1:2 长图 | 1080×2160 | phone | 15–19 | 10–23 |
手机的字大,能排多少格由排版器按内容量;研究成果每个数字多一行样本数与条件,3:4 手机图放不下时改用 screen。
颜色(theme):
| 主题 | 底 | 格 | 字 |
|---|---|---|---|
light(默认) | #e8e8e8 | #ffffff | #000000 |
light-inverse | #ffffff | #ececec | #000000 |
dark | #181818 | #000000 | #ffffff |
label_pos 时,脚本按标签下那块照片的对比度自动放上边或下边。accent)最多一支,用产品自己的颜色;只用在大数字、功能名、主图字、图标和图表的高亮处,不用在标签上。同一类元素要么都上、要么都不上(苹果手表那张四个大数和两个图标都是橙):一个数蓝、一个数黑,读起来像漏了(第 10 轮评审)。tone: "silver",每一行各自上深下浅,#646464 → #d0d0d0)只成组用:至少三格,都是次要的字,最重要的一两个留白字或重点色(苹果 iPhone 18 Pro 那张的分法)。只给一两格上银灰、夹在白字中间,读起来是不一致,不是层次(第 10 轮评审)。background:一个颜色,或上下两个颜色表示光影),不许上装饰色;白字够读时字自动变白。主图可以是品名压在产品自己的图上(image 加 fit: "cover" 加 word,图暗时字自动变白),写 box_aspect(16:9 上 1.8)按产品主图的大小排,是全图最大的一格。| 种类 | 放什么 | 研究成果里怎么用 |
|---|---|---|
hero | 产品图,或品名大字,或两者;品名可以压在产品自己的颜色上;全图恰好一个,在正中 | 装置照片、核心结果图、课题名 |
stat | 数字连单位,下面一行小标签;可配一张图 | 关键测量值,带不确定度与条件 |
word | 功能名放大成画面;宽格里可以左图右字 | 方法名、模型名 |
icon | 居中图标,标签在下 | 数据来源、仪器、工具 |
object | 产品局部、元件、配件,透明底最好 | 样品、元件、传感器 |
photo | 照片铺满,白字标签 | 实验现场、观测照片 |
ui | 界面截图在上、标签在下;从格边伸出去,格子太窄就整张放进去,不切两边;圆角 0.6u,不加描边 | 软件界面、仪器读数 |
row | 一排同类小元素 | 参数扫描的几个取值、几组对照 |
flank | 一个物体,两边各一个数 | 前后对比、两种条件 |
chart | 一条线或几根柱,标一个值;只在研究模式 | 一个趋势或一组对比 |
每种的版式、字号和最小尺寸见 references/tile-kinds.md。截图先裁出有信息的那一块(公式、卡片、标题区),不要把整页缩成一格,否则字小到成了噪点;已经裁紧的截图写 fit: "contain",免得伸出格边时把字切掉。苹果的片子七成以上的格子有图;没有图的大数字和功能名(纯文字格)不超过三成。图标用 assets/icons/ 里的 Phosphor Fill 子集(MIT),名字和中英关键词在 index.json。图标格只是补位:同一张图里最好不超过两个,最多四个,有真实的截图、照片、产品图就先用它们(第 10 轮评审:八个"图标加标签"的格读起来像菜单,格子显得空)。纯文字格和图标格要紧:排版器让它们的格子不超过所装内容的两倍大(苹果的这类格是 1.1–2.4 倍),上带先放有图的格。格里的截图和图片一律 0.6u 圆角,不加描边。单色底的图(一张片子、一个公式)铺成一张卡:卡的底就是图的底,填满图区,图的内容按卡放大到八成左右;卡和格子同色(黑底片子放进深色主题的黑格)时,卡改用次一级的底色(深色 #1c1c1e、浅色 #f2f2f7),图叠上去,黑底或白底变成卡色。别的图边看不见时垫一层同色的框。排版器会把整张放的截图分进和它比例相近的格子,浅色画布上同一条带里深色的格最多一个。
label 里(\n),不交给浏览器折行;名字里的空格用不换行空格("iPhone 18 Pro Max");汉字和拉丁字母、数字之间加空格,全角标点两边不加。grep -nFf skills/coding-helper/keynote-deck-builder/references/ai-tone-words.txt bento.json。命中的词逐条判断:删掉意思不变就删。中英好坏例子见 references/label-grammar.md。
这一节优先于所有视觉要求。脚本能查的由 validate_spec 拦下,plan、layout、render 都先跑它。
facts。指不回去的默认不放,写进 dropped。"unverified": true,标签里写明"未确认"(英文写 unverified),交付说明里列出。研究模式另加两条:
uncertainty 画成"1.23 ± 0.04 s",n(样本数)和 condition(条件)画在标签下面一行。没有不确定度的数:计数、定义值、确定性计算的结果写 "exact": true;只测了一次写 "n": 1,照实画出来。不编不确定度。model-fit-auditor 的分级措辞写;没做吻合分析,就只写数字。tests/fixtures/bento-infographic/apple-reference/,任何产物都不引用、不拼贴、不描摹。brew install --cask font-inter font-noto-sans-sc),不偷偷换成别的字体。keynote-deck-builder),不是照片拼版(photo-series-layout),不是数据仪表盘。render 跑完自动写 qa.json(schema: "bento-qa/1"),19 项全过才算通过;bento.py check 可以对已渲染的目录重跑。
| 项 | 阈值 |
|---|---|
hero_center | 主图中心偏差 ≤ 0.5%(有出处行时,以格子区的中心为准) |
hero_area | 产品图、带底色或写了 box_aspect 的主图 18–30%;只有字 10–20%;通栏主图 15–45% |
gutter_uniform、radius_uniform | 格缝、外边距、圆角全图各一个值,偏差 ≤ 0.5 px |
unit_size | 标签都是 u;出处行 0.75u |
type_scale | 功能名 1.6–3.4u,大数字 2.2–4.3u,主图字 5–8u |
weight | 一律 600 |
overflow | 文字溢出、裁切 0 处 |
label_lines、label_length | 英文 ≤ 3 行、≤ 7 词;中文 ≤ 2 行、≤ 12 字、每行 ≤ 11 字;画出来的行数和写的一致 |
fonts | 每段字都落在字体栈里的字体上;用了兜底就提醒 |
contrast | 标签 ≥ 4.5:1,1.6u 以上的大字 ≥ 3:1;照片上的字按字背后那块照片取样 |
accent_hues | 重点色最多一种色相,不用在标签上 |
text_only_share | 纯文字格 ≤ 30% |
tile_count | 在画幅的上下限内;不在建议范围里只提醒 |
min_tile | 每格 ≥ 6u × 4.8u |
image_upscale | 只提醒:图片放大超过 1.25 倍会糊 |
output_size | PNG 像素和要求完全一致 |
cjk_spacing | 汉字和拉丁字母、数字之间有空格 |
同一份 bento.json 和 layout.json、同一台机器、同一版 Chrome,PNG 字节相同;同一份 bento.json 和同一个 seed,layout 给出同样的方案。
第一轮只发清单:plan 打印的表、线框预览、舍弃项。确认后交付成图,交付说明照这个格式:
## 交付
- 成图:out/render/bento.png(3840×2160);HTML:out/render/bento.html
- 排版:layout-1(三个方案里的第一个:……)
- 自检:19 项通过(没通过的项与原因)
- 提醒:……(格数、图片放大、兜底字体)
- 字体:系统字体(SF Pro、苹方) / 用了兜底(Inter、Noto Sans SC)
- 舍弃:……(理由)
- 未确认:……(图上已标)
BENTO_CHROME、/Applications/Google Chrome.app、PATH 上的 google-chrome 或 chromium。Linux 上照常;Windows 上用不了 DevTools 管道,在 WSL 里跑。plan、layout 照常(纯 Python,出线框图);render --html-only 只出 HTML,交给使用者用浏览器打开或截图。交付说明标"降级:没有 PNG,也没有自检"。bento.json 里写 "font": "open";自检的 fonts 报出实际字体,交付说明标"降级:没有 SF Pro"。cutout.swift 只在 macOS 14 以上能用。别处跳过这一步,照片照常放,或请使用者给透明底 PNG。bento.json 和一段文字线框(每格的位置与内容),标"降级:没有排版、渲染与自检";不用手写的 HTML 冒充成图。references/apple-measurements.md:某个比例从哪来、样图怎么量的references/bento-json.md:写 bento.json 时(全部字段、校验规则、两份完整示例)references/tile-kinds.md:决定一格用哪种、版式怎么排references/label-grammar.md:写标签时(中英好坏例子、AI 腔词表)examples/:产品浅色、产品深色、研究 3:4 三份完整样例,各含 bento.json、layout.json、PNG、qa.json| 版本 | 日期 | 变更 | 类型 |
|---|---|---|---|
| 0.1.0 | 2026-10-10 | 初版:样图测量、尺寸规格与模板、Chrome 渲染器、排版器、19 项自检、九种画幅、研究模式与小图表、可选抠图;三份样例经独立评审 8.1 分(门槛 8);取代 launch-summary-panel | minor |
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
当学生说"Common App 活动栏写不下"、"这段活动描述超字数了"、"帮我把这几条压到限制内"时使用。先按官方申请表核对当季字符限额,再逐条检查;一次把所有条目量完并直接给出压缩版,只在需要砍掉实质内容时才用选择题问该保哪部分。每改一版都用工具重新数一遍字符,绝不凭感觉说"这样应该够了"。只压缩,不代写空白。
日本語の概要は準備中です。原文の説明を表示しています。
当学生说"我参加过一些活动但没整理过"、"帮我把经历录进去"、"我的活动档案是空的"时使用。让学生一口气把记得的活动说出来,直接把这段话拆成结构化的长期事项(角色、组织、起止时间、做了什么、结果、级别),说不清的字段留空标"待补"而不是编,再用一张选择题卡把级别判定与是否重复这类关键项一次问完,然后提案入库。只记录学生真正说出口的内容,级别按事实判定,绝不往高了写。
日本語の概要は準備中です。原文の説明を表示しています。
当学生问"招生官会怎么看我的档案"、"我的背景还差什么"、"帮我评估一下现在的申请竞争力"时使用。以顶尖大学招生官的视角通读学生的档案、长期活动与已写下的反思,不问任何前置问题直接产出一份指名道姓的坦诚点评:这份材料的亮点、招生官真实的解读方式、明显的短板与空白、以及接下来最值得做的一到两件事。只读不写,不修改学生的任何数据,也不代写任何申请材料。
日本語の概要は準備中です。原文の説明を表示しています。
当使用者说"帮我填词"、"按这个字数模板写歌词"、"用多Agent对抗式写词"、"这首副歌帮我想几句"时使用,前提是字数骨架和这首歌写什么都已经有了;只有主题、还没定写什么时先用 lyric-concept-builder。拿一份字数骨架和意象系统,派三个 sonnet 子代理按不同路子并行独立起草(场景派 / 口语派 / 意象派),再派一个红队子代理逐句挑毛病,主 Agent 按句裁决拼稿,最后统一辙口与意象。收敛判据卡死:字数用 lyric-doctor 的脚本对模板数、每段同辙、hook 不含陈词、主歌二对主歌一有推进。不抄现有歌词,不替使用者决定这首歌要说什么。
日本語の概要は準備中です。原文の説明を表示しています。
当想知道一段 AI 回答"哪些能直接用、哪些必须先验证、哪些只能当建议"时使用。按声明类型分四级——低风险草稿材料、观点与策略建议、可查证的事实声明、会改变状态的可执行指令——每级配一句默认处置动作;再按影响半径排序,给出最小的下一步检查。可执行类一律标"不能直接执行;先做代码审阅/沙箱测试/回滚准备",其中破坏性或提权的命令排在最前。教的是一套可复用的复查习惯,不是替使用者把所有内容都核实一遍:本 skill 只分级、排序、定处置,要逐条核实走 ai-output-fact-checker,整段代码要做入库体检走 ai-code-onboarding-checklist。
日本語の概要は準備中です。原文の説明を表示しています。
当拿到一段 AI 生成的代码,还没决定要不要信、要不要跑、要不要往上继续加东西时使用。先做一遍客观体检:行数与嵌套深度、有没有测试、有没有硬编码密钥或遗留 TODO、依赖是不是真实存在、有没有危险调用(eval/exec、shell=True、递归删除、反序列化、提权、外发网络,按正文给的 grep 模式逐类查);再给风险评级和下一步动作。老实写明它查不了算法正确性——体检通过不等于代码是对的。回答里文字、事实和代码混在一起时先用 ai-answer-triage 分级;只审相对已有代码的一份改动用 ai-diff-review-protocol。
日本語の概要は準備中です。原文の説明を表示しています。