动效 UI 润色
问题:模型编码的帧画面带有明显的机器生成特征:靛蓝色渐变、四个等大卡片、统一的圆角和阴影、细小灰色文字、用 emoji 代替图标、卡片一侧的彩色条。本技能在渲染前清除这些痕迹,并量化一切可量化的指标。
项目根目录在此文件夹上方三级。原理来源:tools/repos/ux-ui-agent-skills(MIT 许可,快照见 sources.lock.json)。仅读取场景所需的部分。
步骤
- 将
templates/frame-tokens.css和templates/frame-starter.html复制到任务的source/目录。仅修改令牌文件顶部的品牌区块(强调色、表面色;从产品品牌简报中获取颜色)。在场景中绝不硬编码颜色、尺寸或阴影:使用变量。 - 基于令牌构建场景。动效是时间的纯函数(
window.seek(t),无定时器,无Math.random),这是vstudio契约和 HTML 渲染器所期望的。使用motion-effect-picker技能选择效果,不要凭猜测。 - 对每个输出格式中的每个不同场景进行门控检查,在展示出最终布局的时刻执行:
python -S studio.py polish output/jobs/ID/source/scene.html --format 9:16 --seek 4.2 --shot output/jobs/ID/previews/scene-916.png
以下情况会导致失败:文本超出帧外、文本重叠、文本低于可读最小尺寸、emoji,以及 slop_tells 和 taste_audit 报告中标记为 HIGH 的结果。警告(超出安全区域、弱层次结构、文本被裁剪)需要做出决策,而非置之不理。
4. 打开截图并进行审视。门控证明的是可量化的正确性,而非审美。然后运行下方的对抗式检查清单,修复一个严厉设计师会拒绝的所有问题。
5. 只有在此之后才进行渲染。在任务的 HANDOFF.md 中记录哪些场景通过了 polish 检查及其对应的 seek 时间。
视频帧设计铁律
- 一个主导元素。 展示字体至少为正文大小的 2.5 倍。四个等大卡片会显得是生成的;应给予某一项更大的尺寸或独占一行。
- 真实的字号层级(令牌):标签 2.1,正文 2.8,引导 3.6,标题 6.4,展示 9,英雄 17(cqmin,1 cqmin = 短边尺寸的 1%)。任何文字不得小于短边尺寸的 2%。数字使用
.num类(等宽数字)。 - 4 像素韵律(
--sp-*)。相关项之间间距比无关项更紧密。 - 多种圆角和阴影,各有其用途(chip、panel、card、pill;
--sh-1..3,每个两层阴影)。绝不使用统一的圆角和单一的阴影。 - 完整的细线边框或表面对比。 不要在卡片、警告或呼出框的一侧使用彩色条。状态 = 图标加文字。
- 色彩按含义使用。 仅使用一个强调色。危险色仅用于破坏性或否定性内容。无硬编码的靛蓝到紫色渐变,无纯
#000文字或背景(令牌使用带色调的近黑色)。 - 禁止 emoji 和装饰性象形图。 使用内联 SVG 图标(
currentColor)或文字。屏幕文字中不出现破折号字符(工作区规则)。 - 对比度: 正文 4.5:1,大文字 3:1。覆盖在视频素材上的字幕需要有遮罩或药丸标签(
.pill-caption),绝不能使用裸文字。 - 安全区域。 9:16 画面:顶部 17% 和底部 30% 的宽度区域不得放置文字(平台 UI),两侧各 5.6%。16:9 画面:四周各 5.6%。令牌设置
--safe-*;门控会检查。 - 保持时间。 一个文本块在离开前至少静止 0.5 秒加上每个单词 0.3 秒。入场动画 0.4 至 0.7 秒,快入缓出(ease-out)。仅动
transform和opacity。 - 极端数据处理: 长名称、0、100%、大量项目。场景不得因此崩溃;至少测试一个极端情况。
对抗式检查清单(批准前执行)
- 遮盖标题:视线是否仍有落点,还是无处可去?
- 是否存在纯装饰性的元素?移除它。
- 眯眼观察:是否有两个相互竞争的视觉焦点?
- 任何数字是否缺少单位、来源或对比基准?
- 若换上另一品牌名称,场景是否看起来一样?如果是,则说明没有方向:从
tools/repos/ux-ui-agent-skills/taste/aesthetic-systems.md或design-systems/library/<name>/DESIGN.md(共 138 个)中选取一种美学风格,并将其解析到令牌区块中。
深层参考(按需加载)
| 需求 | 文件位置(位于 tools/repos/ux-ui-agent-skills/) |
|---|---|
| 反垃圾感原则、禁止的默认值 | taste/design-taste.md |
| 动效语法(入场、交错、悬停) | taste/motion-choreography.md |
| 图表与密集数据屏幕 | components/data-viz.md、tokens/data-viz.json、examples/terminal/ |
| 调色板、OKLCH 色域、暗色模式 | .claude/rules/tokens-and-color.md |
| UI 文案、标签、空状态 | content/voice-tone.md |
| 带评分的评审标准 | workflows/design-review.md、.claude/agents/design-critic.md |
| 命名风格(Stripe、Linear、Apple……) | design-systems/library/ + taste/aesthetic-systems.md |
仅在需要时直接运行上游门控工具(从该文件夹下运行,设置 DS_REQUIRE_BROWSER=1,使用系统 Chrome):node scripts/slop_tells.mjs <file>、node scripts/taste_audit.mjs <file>、node scripts/measure_render.mjs <file>(基于实际渲染结果的 WCAG 对比度)。其结果仅为启发式指标:是强信号,而非最终裁决。请勿编辑上游代码库。