ui-skills

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

UI Skills

UI 技能

When invoked, apply these opinionated constraints for building better interfaces.
调用后,将应用这些约定式约束来构建更优质的界面。

How to use

使用方法

  • /ui-skills

    Apply these constraints to any UI work in this conversation.
  • /ui-skills <file>

    Review the file against all constraints below and output:
    • violations (quote the exact line/snippet)
    • why it matters (1 short sentence)
    • a concrete fix (code-level suggestion)
  • /ui-skills

    将这些约束应用于本次对话中的所有UI相关工作。
  • /ui-skills <file>

    基于以下所有约束评审指定文件,并输出:
    • 违规内容(引用准确的代码行/片段)
    • 重要性说明(1句简短描述)
    • 具体修复方案(代码级建议)

Stack

技术栈要求

  • MUST use Tailwind CSS defaults unless custom values already exist or are explicitly requested
  • MUST use
    motion/react
    (formerly
    framer-motion
    ) when JavaScript animation is required
  • SHOULD use
    tw-animate-css
    for entrance and micro-animations in Tailwind CSS
  • MUST use
    cn
    utility (
    clsx
    +
    tailwind-merge
    ) for class logic
  • 除非已存在自定义值或有明确需求,否则必须使用Tailwind CSS默认配置
  • 需要JavaScript动画时必须使用
    motion/react
    (原名为
    framer-motion
  • Tailwind CSS中的入场动画和微动画推荐使用
    tw-animate-css
    实现
  • 类名逻辑必须使用
    cn
    工具(
    clsx
    +
    tailwind-merge
    )处理

Components

组件规范

  • MUST use accessible component primitives for anything with keyboard or focus behavior (
    Base UI
    ,
    React Aria
    ,
    Radix
    )
  • MUST use the project’s existing component primitives first
  • NEVER mix primitive systems within the same interaction surface
  • SHOULD prefer
    Base UI
    for new primitives if compatible with the stack
  • MUST add an
    aria-label
    to icon-only buttons
  • NEVER rebuild keyboard or focus behavior by hand unless explicitly requested
  • 所有涉及键盘或焦点行为的组件必须使用可访问的组件原语(
    Base UI
    React Aria
    Radix
  • 必须优先使用项目已有的组件原语
  • 禁止在同一个交互区域内混用不同的原语系统
  • 若与技术栈兼容,新的原语推荐优先使用
    Base UI
  • 仅展示图标的按钮必须添加
    aria-label
    属性
  • 除非有明确需求,否则禁止手动实现键盘或焦点行为

Interaction

交互规范

  • MUST use an
    AlertDialog
    for destructive or irreversible actions
  • SHOULD use structural skeletons for loading states
  • NEVER use
    h-screen
    , use
    h-dvh
  • MUST respect
    safe-area-inset
    for fixed elements
  • MUST show errors next to where the action happens
  • NEVER block paste in
    input
    or
    textarea
    elements
  • 破坏性或不可逆操作必须使用
    AlertDialog
  • 加载状态推荐使用结构化骨架屏
  • 禁止使用
    h-screen
    ,请使用
    h-dvh
  • 固定定位元素必须适配
    safe-area-inset
  • 错误提示必须展示在触发操作的位置附近
  • 禁止在
    input
    textarea
    元素中禁用粘贴功能

Animation

动画规范

  • NEVER add animation unless it is explicitly requested
  • MUST animate only compositor props (
    transform
    ,
    opacity
    )
  • NEVER animate layout properties (
    width
    ,
    height
    ,
    top
    ,
    left
    ,
    margin
    ,
    padding
    )
  • SHOULD avoid animating paint properties (
    background
    ,
    color
    ) except for small, local UI (text, icons)
  • SHOULD use
    ease-out
    on entrance
  • NEVER exceed
    200ms
    for interaction feedback
  • MUST pause looping animations when off-screen
  • SHOULD respect
    prefers-reduced-motion
  • NEVER introduce custom easing curves unless explicitly requested
  • SHOULD avoid animating large images or full-screen surfaces
  • 除非有明确需求,否则禁止添加动画
  • 仅可对合成属性(
    transform
    opacity
    )添加动画
  • 禁止对布局属性(
    width
    height
    top
    left
    margin
    padding
    )添加动画
  • 除小型局部UI(文本、图标)外,推荐避免对绘制属性(
    background
    color
    )添加动画
  • 入场动画推荐使用
    ease-out
    缓动函数
  • 交互反馈动画时长不得超过
    200ms
  • 元素离开可视区域时必须暂停循环动画
  • 推荐适配
    prefers-reduced-motion
    (减少动画偏好)设置
  • 除非有明确需求,否则禁止使用自定义缓动曲线
  • 推荐避免对大尺寸图片或全屏区域添加动画

Typography

排版规范

  • MUST use
    text-balance
    for headings and
    text-pretty
    for body/paragraphs
  • MUST use
    tabular-nums
    for data
  • SHOULD use
    truncate
    or
    line-clamp
    for dense UI
  • NEVER modify
    letter-spacing
    (
    tracking-*
    ) unless explicitly requested
  • 标题必须使用
    text-balance
    ,正文/段落必须使用
    text-pretty
  • 数据内容必须使用
    tabular-nums
  • 高密度UI场景推荐使用
    truncate
    line-clamp
    处理文本溢出
  • 除非有明确需求,否则禁止修改
    letter-spacing
    tracking-*
    类)

Layout

布局规范

  • MUST use a fixed
    z-index
    scale (no arbitrary
    z-*
    )
  • SHOULD use
    size-*
    for square elements instead of
    w-*
    +
    h-*
  • 必须使用固定的
    z-index
    层级体系(禁止使用任意
    z-*
    值)
  • 正方形元素推荐使用
    size-*
    而非同时设置
    w-*
    +
    h-*

Performance

性能规范

  • NEVER animate large
    blur()
    or
    backdrop-filter
    surfaces
  • NEVER apply
    will-change
    outside an active animation
  • NEVER use
    useEffect
    for anything that can be expressed as render logic
  • 禁止对大尺寸
    blur()
    backdrop-filter
    区域添加动画
  • 非活跃动画期间禁止使用
    will-change
    属性
  • 所有可通过渲染逻辑实现的功能禁止使用
    useEffect
    实现

Design

设计规范

  • NEVER use gradients unless explicitly requested
  • NEVER use purple or multicolor gradients
  • NEVER use glow effects as primary affordances
  • SHOULD use Tailwind CSS default shadow scale unless explicitly requested
  • MUST give empty states one clear next action
  • SHOULD limit accent color usage to one per view
  • SHOULD use existing theme or Tailwind CSS color tokens before introducing new ones
  • 除非有明确需求,否则禁止使用渐变效果
  • 禁止使用紫色或多色渐变
  • 禁止将发光效果作为主要的交互提示
  • 除非有明确需求,否则推荐使用Tailwind CSS默认阴影层级
  • 空状态必须提供一个清晰的下一步操作引导
  • 单视图内强调色的使用建议不超过1种
  • 引入新颜色前优先使用现有主题或Tailwind CSS颜色token