设计审查计数 是做什么的?
一种计数操作,而非审美指南。其他反AI风格技能阐述原则;原则总会被逐一辩解绕开。本技能通过强制计数使辩解行为无处遁形。
为什么存在
本技能源于一个真实失败案例:在一次会话中产生了八种设计变体,每种都使用了小字号全大写追踪标签作为章节标题。每个实例当时都有合理的局部辩解。但没人将它们加起来。总计37个,分散在五个被宣传为视觉差异明显的变体中。核心原则(“在标签之前使用层级”)始终可用。
计数不像判断那样可以回避。运行计数。
规则
在展示任何UI工作前——每次,无一例外——生成以下计数表并将其包含在消息中。 不是摘要。而是表格及数字。
如果计数大于零,要么修复它,要么为每个实例写出具体理由。“这里感觉合适”不是理由。如果同一模式出现在多个屏幕或变体中,这就是发现,不论每个单独看起来如何。
切勿在未实际检查输出前报告计数为零。阅读标记或样式;不要凭记忆推断之前写过的内容。
禁用模式
硬性禁止。除非用户在本次请求中明确按名称要求,否则不可使用。设计简报声明这些模式不足以作为豁免。
| # | 模式 | 检测方式 |
|---|---|---|
| 1 | 追踪或等宽全大写眉标 | text-transform: uppercase 且(等宽字体族 或 letter-spacing >= 0.05em) |
| 2 | 正文中的等宽字体 | 在非代码、非字面值、非标识符、非数字的字符串上使用等宽字体族 |
| 3 | 标题字重700或更重 | 任何标题或展示文本使用 font-weight >= 700 |
| 4 | 斜体展示字体 | 在标题或展示字号上使用 font-style: italic |
| 5 | 边框和阴影在同一元素上 | 同一节点同时包含 border 和 box-shadow |
| 6 | 药丸中的前导圆点 | 圆形、点或小填充形状作为药丸、芯片、徽章或标签的第一个子元素 |
| 7 | Lucide图标 | Lucide 图标集,或复现其形状的手绘 SVG(1.5px 描边、圆头端点、24x24 几何字形)。默认手绘会趋向 Lucide——假设任何手绘图标在对照批准集检查前均为违规 |
按实例计数并说明理由,而非直接禁止:
| # | 模式 | 检测方式 |
|---|---|---|
| 8 | 分隔线 | 统计每个屏幕上的规则线、细线和用作分隔线的边框。每个都需要理由说明为什么空白或邻近关系无法替代 |
| 9 | 容器卡片 | 统计每个屏幕上的边框或填充盒子。标记任何直接嵌套在另一个内部的情况 |
| 10 | 多余文本 | 重复说明相邻值、标签或状态已传达内容的描述性文字 |
| 11 | 跨变体相同槽位 | 当生成 N 个不同变体时,任何槽位——章节标签、页脚、页眉、按钮形状、间距节奏——在所有 N 个变体中呈现相同 |
规则 11 是跨变体检查。在展示一组变体前,对比每个变体中相同的槽位。带有相同标签处理的截然不同情绪并非真正的不同变体。
图标
批准图标集:Phosphor。使用时优先而非手绘字形。
在添加任何图标前,询问它是否传达了词语无法传达的信息。如果文本标签可行,就使用文本标签。
运行检查器
对于以代码形式存在的 UI,在手动计数前运行脚本:
python3 ~/.claude/skills/design-tally/scripts/tally.py <路径> [--json] [--quiet]
该脚本覆盖规则 1-6 并输出计数表。退出码仅当可证明的规则(1、5、6)有匹配项时为 1,因此它可用于钩子或 CI 步骤,而不会因候选模式失败。
规则 2、3 和 4 报告为候选模式而非违规——脚本能看到等宽字体族或 700 字重,但无法区分正文与代码,或标题与标签。请自行分类每个候选模式并说明裁定方向。
脚本无法检测规则 7-11,也完全无法读取 Paper 或 Figma 画板。对于设计工具工作,使用 get_jsx 或等效方法手动计数——切勿仅凭截图或凭记忆推断写过什么。
脚本运行干净并不等于计数通过。它仅覆盖 11 条规则中的 6 条,且仅限代码。
输出格式
报告每条规则,包括计数为零的——零也是信息,仅列出违规项就隐藏了是否真正运行过检查的表象。
设计计数表
| 规则 | 计数 | 位置 |
|------|------|------|
| 1 眉标 | 0 | — |
| 2 正文等宽 | 2 | 英雄区域下的说明文字;空白状态行 |
| ... | | |
然后,对于每个非零计数:修复它,或说明每个实例的理由。
扩展此列表
当用户识别出新模式时,将其添加到表格中,并提供足够具体的检测规则以便计数。如果无法表述为可检测条件,则该模式应归于原则技能,而非本技能。