break-ui 是一项对抗性技能,只做一件事:拿一个在演示数据下看起来正确的界面,找出它渲染的每个值在现实中可能出现的最差情况,把两套数据放在一个切换开关后面,然后报告哪里坏了。它不重新设计组件,不评论设计品味,也不审查动效。
用途:在真实上线前,暴露演示数据掩盖的断裂点。演示数据通常被挑选成让设计好看:能放进一行的名字、不需要分隔符的计数、必填项全填好。本技能就是逐字段解除这种选择。
使用方式:先映射组件渲染的每个值及其来源、类型、限制与是否可选,限制查验证 schema(Zod、Yup、Valibot)、数据库迁移、API 类型、表单 maxLength;再按 CATALOG.md 构造一份最差数据夹具,形状与现有演示数据完全一致,并把不同故障分散到前几行;然后在数据边界加 Demo data / Worst case 分段切换(可含 Empty、One、1000 行等额外状态),切换控件固定在视口底部居中、开发环境专用、不进生产;接着在最差数据下按真实容器宽度、320px、最宽布局、200% 缩放、深色模式与 RTL 逐项检查;最后报告并停止,只有被要求时才修复。
最差数据必须合理或有 schema 依据,不得随机。每个值要么是真实可能的例子(真实命名模式、真实邮箱形态),要么是来自验证 schema、数据库列或 API 契约的实际上限;找不到限制本身就是发现,标记为 unbounded 并测试一个长但可信的值。改的是数据而非组件,最差数据必须走演示数据同样的边界进入(fixture、mock、props、API stub),绝不手改标记或 CSS 来制造断裂。一份最差数据集应一次性命中所有适用项。
检查中需覆盖的故障信号包括:头像或图标被压成椭圆(flex 子项收缩)、文本溢出而不换行或截断(min-width: auto)、邮箱或 URL 冲出边缘(无断行机会)、尾部操作被挤出或裁掉、徽章换行、头像与多行名字居中对齐显得漂浮、末行被硬边裁切、长词在标题中从中间断开、首字母取值错误、缺失可选字段留下孤立破折号或空行、"1 members" 这类硬编码复数、数字更新时抖动、原始数字渲染为 1284 或 NaN、长翻译按钮标签溢出、重音或高字符上下被裁、头像破图、截断文本无法读全、1000 行滚动卡顿、内容渲染出原始转义符号等,各附成因与修复。
输出分三部分:Part 1 按严重程度(Broken、Ugly、Fragile)逐行列出断裂点、最差值、现象与修复位置;Part 2 列出有多个正确答案的决策(如截断还是换行、空角色显示什么、1000 行分页还是虚拟化),每行给建议与理由;Part 3 列出组件已扛住的用例。结尾说明切换开关位置与状态,提示可说 fix all 或 fix 1, 3。
限制:资料未提供安装命令、收费方式、平台要求或具体代码实现细节;其效果依赖 CATALOG.md、浏览器工具(可用时截图对比,不可用时依据 CSS 推断并说明哪些是目视验证、哪些是推断)以及项目现有约定与 token。