AgentStack
SKILL verified MIT Self-run

Frontend Quality Guardrails Cn

skill-yangsonhung-awesome-agent-skills-frontend-quality-guardrails-cn · by YangsonHung

当用户需要构建、修改或审查前端界面,并验证文本溢出、布局、响应式、可访问性和视觉质量时使用。

No reviews yet
0 installs
14 views
0.0% view→install

Install

$ agentstack add skill-yangsonhung-awesome-agent-skills-frontend-quality-guardrails-cn

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Frontend Quality Guardrails Cn? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

前端质量守门规则

Overview

将本技能作为前端实现和审查的质量守门规则,覆盖超长文本、溢出、换行、截断、对齐、间距、响应式、组件状态、可访问性、国际化、视觉细节、项目代码审查、浏览器截图验证和常见 UI 样式踩坑点。

把所有 UI 都当成会遇到不完美内容来处理。默认假设标签、姓名、URL、ID、价格、翻译文本、用户输入、错误信息、表格单元格、徽章、面包屑、Tab 和按钮文案都可能比设计稿更长。

优先做小而局部的 CSS/布局修复,不要为了局部问题重写整体结构。除非用户明确要求重设计,否则保留现有设计系统、组件 API、设计 token、间距尺度和框架约定。

何时使用

在构建、修改或审查前端 UI 且布局质量重要时使用本技能,尤其是:

  • 超长文本、URL、ID、翻译文案、表单错误、标签、表格单元格、卡片、Tab、面包屑或徽章可能溢出。
  • 任务涉及 HTML、CSS、React、Vue、Svelte、Next.js、Tailwind、shadcn/ui、Ant Design、表单、表格、仪表盘、弹窗、抽屉、导航或响应式布局。
  • 用户要求打磨 UI、修复溢出、改进对齐、审查前端代码、验证浏览器截图或规避前端样式踩坑点。

不要使用

以下场景不要把本技能作为主要指南:

  • 后端、CLI、数据库或基础设施等没有可见 UI 的任务。
  • 完整品牌设计、插画、Logo 设计或图片生成。
  • 基于截图做像素级还原,且已有更专门的 image-to-code 或设计还原技能。
  • 需要正式 WCAG 评分或合规报告的无障碍专项审计。

使用说明

把下面的流程作为项目现有前端规范之上的质量守门层。简单修改只使用核心清单;更深入的开发、审查或验收,按需读取“深度参考”里的文件。

工作流程

  1. 先检查现有 UI 约定:
  • 识别框架、样式系统、组件库、断点、字体尺度、间距 token 和图标库。
  • 复用现有组件和工具类。
  • 不要为了局部修复引入新设计系统。
  1. 找出文本风险面:
  • 用户名、组织名、文件名、路径、slug、UUID、hash、token、URL、邮箱、手机号。
  • 标题、卡片标题、表格单元格、导航项、Tab、面包屑、筛选器、chip、badge、tooltip、toast、dialog。
  • 表单标签、占位符、帮助文本、校验错误、空状态、加载文案。
  • 翻译文案和中英文混排内容。
  1. 明确每个文本容器的预期行为:
  • 换行:内容可以多行显示且不破坏布局。
  • 限行:内容视觉上限制行数,但完整值在其他地方可访问。
  • 截断:紧凑重复 UI 中使用省略号缩短。
  • 滚动:代码、日志、表格或面板等内容刻意滚动。
  • 自适应:布局随内容变化,但有稳定的最小/最大约束。
  1. 实现最小且稳健的修复:
  • 在 flex/grid 文本子项上补 min-width: 0min-height: 0
  • 在必要位置添加明确的 max-widthoverflow-wraptext-overflowline-clamp 或滚动行为。
  • 只有父容器才是溢出源时,才调整父级布局。
  1. 用极端内容和视口验证:
  • 测试窄屏手机、平板、桌面和宽屏桌面。
  • 测试超长无空格字符串、长自然语言、中英文混排、URL、空值和密集列表。
  • 可行时使用浏览器截图或 DOM 检查验证视觉变化。

深度参考

需要更完整覆盖时读取这些参考文件:

  • [code-review-checklist.md](references/code-review-checklist.md):编辑或审查 React、Vue、Svelte、HTML/CSS、组件库、状态型 UI、表单、表格或现有项目代码前使用。
  • [visual-standards.md](references/visual-standards.md):创建、重设计、打磨或评审视觉风格、密度、层级、色彩、圆角、阴影、字体和交互状态时使用。
  • [browser-verification.md](references/browser-verification.md):完成可见 UI 修改后,或调试布局、溢出、响应式问题时,用于浏览器自动化、截图、控制台和视口检查。

文本溢出规则

用户必须直接阅读的内容优先换行:

.wrap-text {
  overflow-wrap: anywhere;
  word-break: normal;
  hyphens: auto;
}

只有在空间刻意紧凑且完整值仍可访问时才截断:

.truncate-one-line {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

对于重复 UI 里的紧凑名称或标题,优先使用单行省略号,并通过项目已有的 Tooltip/title 模式在鼠标悬停和键盘聚焦时展示完整文本。不要只靠裁剪来“保护布局”;用户仍然必须能查看完整值。

卡片摘要、搜索结果和说明文本可使用多行限行:

.clamp-2 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

日志、代码、长表格和原始技术值适合滚动:

.scroll-panel {
  min-width: 0;
  min-height: 0;
  overflow: auto;
}

避免这些陷阱:

  • 不要只靠 overflow: hidden 解决问题,它会隐藏 bug 并让内容不可访问。
  • 不要把 white-space: nowrap 套在可能接收翻译文案的容器上。
  • 不要默认对可读正文使用 word-break: break-all;长无空格 token 优先用 overflow-wrap: anywhere
  • 不要截断表单错误、关键警告、价格、日期或危险操作文案。
  • 没有受约束宽度和块级/行内块/flex 行为时,不要指望省略号生效。
  • 使用限行时,要考虑键盘焦点、屏幕阅读器和完整内容访问路径。

Flex 和 Grid 踩坑点

含文本的 flex/grid 子项通常要检查 min-width: 0

.row {
  display: flex;
}

.row__content {
  min-width: 0;
  flex: 1;
}

CSS Grid 中含长内容的列优先使用 minmax(0, 1fr)

.grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
}

防止布局抖动:

  • 给头像、图标、按钮、表格列和缩略图稳定尺寸。
  • 图标和固定控件使用 flex: none 或等价写法。
  • 重复的横向/纵向节奏优先使用 gap
  • 避免百分比宽度叠加 padding 后导致溢出。
  • 项目没有全局设置时,补 box-sizing: border-box
  • 需要内部滚动的嵌套 flex/grid 面板要检查 min-height: 0

对齐和间距

按视觉角色对齐,不按偶然的 DOM 顺序对齐:

  • 表单、详情面板、表格和卡片中的 label/value 要一致对齐。
  • 图标和文本用 inline-flexalign-items: center 和稳定 gap
  • 纯图标按钮保持正方形并居中。
  • 图标+文本控件要视觉上基线平衡,避免图标漂在文字上方。
  • 使用项目已有间距尺度,不随意发明一次性 margin。
  • 保持标题、正文、控件和区块边界之间的垂直节奏。
  • 长段落、表格、表单标签和高密度业务界面不要居中对齐。
  • 只有便于列间比较的数字才右对齐。
  • 指标、价格、计时器和数字列优先使用等宽数字。

推荐:

.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
}

字体排版

保持字体可读且稳定:

  • 不要用视口宽度直接缩放字号。
  • 除非项目设计系统明确使用,否则避免负字间距。
  • 中英文混排和 CJK 内容要有足够行高。
  • 紧凑卡片、侧边栏、工具栏、表格和弹窗里避免过大的标题。
  • 按钮文案要短,但不要难懂。
  • 即使视觉尺寸不同,也保持语义化 heading 顺序。
  • 不要滥用字重,层级也应来自字号、间距、颜色和布局。
  • 测试翻译膨胀,德语、俄语、越南语、中文、日文、韩文会以不同方式挑战宽高。

建议起点:

  • 正文行高约 1.451.7,按密度调整。
  • UI 标签行高约 1.21.4
  • 高密度表格先保证可读,再追求行数。

响应式布局

面向真实断点设计,不只看一个桌面宽度:

  • 可行时检查 320px375px768px1024px1280px 和一个宽屏尺寸。
  • 避免超过小屏的固定宽度。
  • 媒体和文本容器使用 max-width: 100%
  • 确保 sticky header、侧边栏、底部栏和浮动控件不会遮挡内容。
  • 只有大表格、时间线、代码或对比矩阵等天然需要时才横向滚动。
  • 移动端点击目标尽量接近 44px 高/宽,除非项目明确采用高密度规范。
  • 移动浏览器地址栏会影响视口高度,必要时使用 svhdvh 或项目支持的 fallback。

移动端:

  • 表单和筛选条在横向密度脆弱时应堆叠。
  • 主要操作要可触达且不遮挡输入。
  • 弹窗要适配视口高度,并让正文内部滚动。
  • 不要依赖 hover-only 交互。

组件专项检查

按钮和控件

  • 灵活按钮内的文本 span 要能处理溢出。
  • loading 状态和 idle 状态保持同尺寸。
  • 危险、禁用、焦点、悬停、按下和选中状态要可区分。
  • 不要移除 focus outline,除非替换成可访问的焦点样式。
  • 有图标库时,熟悉工具操作优先用图标,并提供可访问标签或 tooltip。

表单

  • 尽量保留可见 label,占位符不是 label。
  • 校验错误要能换行并靠近字段。
  • 错误出现时避免布局大跳动。
  • select、radio、checkbox、combobox 中的长选项要明确换行或截断。
  • 覆盖 autofill、disabled、readonly、required、invalid、loading、success 状态。
  • 输入文本不要小到影响阅读。

表格和数据网格

  • 每列明确策略:固定宽、弹性宽、换行、截断或横向滚动。
  • 重要标识符要可读;若截断,应提供复制或完整值访问路径。
  • 数字右对齐,文本左对齐。
  • sticky 表头/列不能制造裁剪或 z-index 问题。
  • 测试空、单行、多行、加载、错误和筛选后状态。
  • 除非产品模式已有,不要在每个表格单元格里塞复杂卡片。

卡片和列表

  • 重复项结构稳定,操作位置一致。
  • 可以限行摘要,但不要随意限行关键标题,除非 hover/focus/detail 能看到完整标题。
  • badge 不应把主要内容挤出视野。
  • hover/focus 样式不要改变卡片尺寸。
  • 除非设计系统明确使用,否则避免卡片套卡片。

导航、Tab 和面包屑

  • 测试长路由名和翻译标签。
  • 按需使用溢出菜单、可滚动 Tab、可换行面包屑或有意截断。
  • 标签截断时仍要看得出 active 状态。
  • 保持键盘导航可用。

弹窗、抽屉、浮层、Tooltip

  • header/footer 稳定,body 内容滚动。
  • popover 不应被视口边缘裁剪。
  • 不要把关键信息只放在 hover tooltip 里。
  • dialog 要能处理长标题、长错误和复杂表单。
  • escape、外部点击、焦点陷阱、关闭后焦点回归遵循组件库模式。

图片、头像和媒体

  • 设置明确宽高或 aspect-ratio,避免布局位移。
  • 有意使用 object-fit
  • 有意义图片提供 alt,装饰图使用空 alt。
  • 测试缺失、加载慢、损坏和超大图片。
  • 不要过度裁剪产品、人物或内容图片,影响用户辨认。

CSS 和样式踩坑点

避免脆弱 CSS:

  • 不要用随机 z-indexposition: absolute 或负 margin 修溢出。
  • app shell 不要无脑使用 height: 100vh,要考虑移动端视口。
  • 高层布局容器不要随意 overflow: hidden
  • 不要用全局选择器影响无关组件。
  • 没有理由时不要引入 token 之外的颜色、圆角、阴影或间距值。
  • 不要让 placeholder、muted、disabled 或 secondary 颜色低对比到不可读。
  • 不要把重要内容放在透明遮罩或装饰层后面。
  • hover 边框不要改变元素尺寸。
  • 能用 transform/opacity 的动画,不要动画布局属性。

稳健基础属性:

  • box-sizing: border-box
  • min-width: 0
  • min-height: 0
  • max-width: 100%
  • overflow-wrap: anywhere
  • text-wrap: balance 只用于标题增强,不作为正确性依赖
  • containcontent-visibility 或虚拟列表只在确有性能需求时使用

Tailwind 注意点

  • flex/grid 文本子项补 min-w-0
  • truncate 必须配合受约束宽度。
  • 可读文本优先 break-words,只有技术 token 可接受时才用 break-all
  • 支持时用 line-clamp-* 处理摘要。
  • 大表格外层使用 overflow-x-auto,不要让整页横向滚动。
  • 图标/头像用 shrink-0,文本用 flex-1 min-w-0
  • 有 token 或现有组件类时,避免堆很长的 arbitrary value。

常见写法:


  
  Very long label

  Long readable content
  Action

组件库注意点

  • 修改前先读项目里的 wrapper 组件。
  • 优先使用组件库公开 props 控制尺寸、状态、禁用、位置、溢出和可访问性。
  • 除非没有公开 API,不要用脆弱选择器覆盖内部实现。
  • Ant Design 重点检查 Table 列宽、ellipsisscroll.xTooltipForm.Item help、Select option 渲染、Typography.Text ellipsis。
  • shadcn/ui 要保留 Radix 的可访问行为和组合方式,优先通过 wrapper class 修布局。
  • MUI/Chakra/Headless UI 优先用文档化的 slot props、style props 或组合点。

可访问性和语义

  • 保留可见焦点和合理 tab 顺序。
  • 按钮、链接、标题、列表、表格、表单和 landmark 使用语义元素。
  • 纯图标控件提供可访问名称。
  • 错误、警告、active 状态和 status 不只靠颜色表达。
  • 重要内容被截断时要有完整值访问路径。
  • tooltip 要可触达或不承载关键信息。
  • 大范围或重复动画尊重 reduced motion。
  • normal、muted、disabled、hover、selected、error 文本都要有足够对比。

国际化和内容变化

  • 可能翻译的文本容器避免硬编码像素高度。
  • 不要拼接翻译片段,语法顺序可能不同。
  • 检查复数和变量插值。
  • 不要假设英文单词边界。
  • 确保 CJK、RTL、变音符、emoji 和长数字不破坏布局。
  • 支持 RTL 时使用 dir、逻辑 CSS 属性或组件库 RTL 能力。

视觉细节检查

完成 UI 修改前扫描:

  • 文本是否覆盖图标、badge、图片、输入框或相邻区块。
  • 内容是否被圆角、sticky bar、抽屉或 hidden overflow 裁剪。
  • 卡片或行 hover 时是否改变尺寸。
  • 图标尺寸和描边是否不一致。
  • 同一组件组内圆角是否混乱。
  • 阴影或边框是否让嵌套层级显得偶然。
  • 重复项间距是否不均匀。
  • 空状态是否像加载坏了。
  • skeleton 是否匹配最终布局尺寸。
  • disabled 状态是否对比不足或含义不清。
  • toast、dropdown、menu、popover 是否被 header 或 modal 遮挡。

必测内容

可行时使用这些字符串验证:

This is a normal sentence that should wrap naturally without breaking the layout.
SuperLongUnbrokenOrganizationNameWithNoSpacesAndManyCharacters1234567890
https://example.com/a/very/long/path/with/query?search=frontend-layout-overflow-and-wrapping
张三李四王五赵六前端页面超长文本混排ABCDEFGHIJKLMN1234567890
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

同时测试:

  • 空字符串
  • 单字符
  • 超长翻译标签
  • 长数字或货币值
  • 长校验错误
  • 多个 badge/tag
  • 缺失图片/头像
  • 加载和错误状态

验收清单

不要在这些条件满足前标记完成:

  • 除非有意设计,否则页面没有横向溢出。
  • 文本不会覆盖相邻 UI。
  • 长文本按预期换行、限行、截断或滚动。
  • 关键完整内容仍可访问。
  • 含文本的 flex/grid 子项有合适的 min-width: 0min-height: 0
  • 移动端和桌面端布局可用。
  • 相关时覆盖 loading、empty、error、disabled、hover、focus、selected 和密集数据状态。
  • 修改遵循现有设计 token 和组件模式。
  • 可用浏览器或截图流程时,完成视觉验证。

回复格式

使用本技能完成任务时:

  • 说明处理了哪些具体溢出/布局风险。
  • 说明做过哪些验证。
  • 说明仍未检查的 UI 风险、视口或状态。

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.