spotify-ui-skills
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSpotify UI Skills
Spotify UI设计规范
Opinionated constraints for building Spotify-style interfaces with AI agents.
针对使用AI Agent构建Spotify风格界面的专属约束规范。
When to Apply
适用场景
Reference these guidelines when:
- Building dark-mode interfaces
- Creating Spotify-inspired design systems
- Implementing UIs with Inter font and 4px grid
在以下场景中参考本规范:
- 构建深色模式界面
- 打造Spotify风格的设计系统
- 实现采用Inter字体与4px网格的UI界面
Colors
色彩规范
- MUST use dark backgrounds (lightness < 20) for primary surfaces - detected lightness: 9
- MUST use as page background (
#171717)surface-base - MUST use for primary actions and focus states (
#010002)accent - SHOULD reduce color palette (currently 14 colors detected)
- MUST maintain text contrast ratio of at least 4.5:1 for accessibility
- 主界面必须使用深色背景(亮度<20)——当前检测亮度为9
- 必须使用作为页面背景色(
#171717)surface-base - 主要操作与焦点状态必须使用(
#010002)accent - 建议精简调色板(当前检测到14种颜色)
- 为保障可访问性,文本对比度必须至少达到4.5:1
Semantic Tokens
语义化颜色变量
| Token | HEX | RGB | Usage |
|---|---|---|---|
| #171717 | rgb(23,23,23) | Page background |
| #FEFEFE | rgb(254,254,254) | Cards, modals, raised surfaces |
| #010002 | rgb(1,0,2) | Overlays, tooltips, dropdowns |
| #555555 | rgb(85,85,85) | Headings, body text |
| #6A6A6A | rgb(106,106,106) | Secondary, muted text |
| #AEAEAE | rgb(174,174,174) | Additional text |
| #838486 | rgb(131,132,134) | Subtle borders, dividers |
| #010002 | rgb(1,0,2) | Primary actions, links, focus |
| 变量名 | 十六进制值 | RGB值 | 用途 |
|---|---|---|---|
| #171717 | rgb(23,23,23) | 页面背景 |
| #FEFEFE | rgb(254,254,254) | 卡片、模态框、悬浮层 |
| #010002 | rgb(1,0,2) | 遮罩层、提示框、下拉菜单 |
| #555555 | rgb(85,85,85) | 标题、正文文本 |
| #6A6A6A | rgb(106,106,106) | 次要、弱化文本 |
| #AEAEAE | rgb(174,174,174) | 辅助文本 |
| #838486 | rgb(131,132,134) | 细微边框、分隔线 |
| #010002 | rgb(1,0,2) | 主要操作、链接、焦点状态 |
Typography
排版规范
- MUST use as primary font family
Inter - SHOULD use single font family for consistency
- MUST use /
41pxfor primary headings500 - MUST use /
13pxfor body text400 - SHOULD reduce font weights (currently 4 detected)
- MUST use for headings and
text-balancefor body texttext-pretty - SHOULD use for numeric data
tabular-nums - NEVER modify letter-spacing unless explicitly requested
- 必须将作为主要字体家族
Inter - 为保证一致性,建议使用单一字体家族
- 一级标题必须使用字号、
41px字重500 - 正文文本必须使用字号、
13px字重400 - 建议精简字重种类(当前检测到4种)
- 标题必须使用属性,正文必须使用
text-balance属性text-pretty - 数值数据建议使用属性
tabular-nums - 除非明确要求,否则不得修改字间距
Text Styles
文本样式
| Style | Font | Size | Weight | Color | Count |
|---|---|---|---|---|---|
| Inter | 41px | 500 | #2D2D2D | 1 |
| Inter | 24px | semi_bold | #DBDBDB | 1 |
| Inter | 24px | 500 | #DBDBDB | 1 |
| Inter | 24px | semi_bold | #DCDCDC | 1 |
| Inter | 17px | 400 | #676667 | 1 |
| Inter | 16px | 400 | #A6A6A6 | 1 |
| Inter | 15px | 400 | #AEAEAE | 1 |
| Inter | 15px | 400 | #6B6B6B | 1 |
| Inter | 15px | 400 | #A4A4A4 | 1 |
| Inter | 15px | 400 | #717171 | 1 |
| 样式 | 字体 | 字号 | 字重 | 颜色 | 使用次数 |
|---|---|---|---|---|---|
| Inter | 41px | 500 | #2D2D2D | 1 |
| Inter | 24px | semi_bold | #DBDBDB | 1 |
| Inter | 24px | 500 | #DBDBDB | 1 |
| Inter | 24px | semi_bold | #DCDCDC | 1 |
| Inter | 17px | 400 | #676667 | 1 |
| Inter | 16px | 400 | #A6A6A6 | 1 |
| Inter | 15px | 400 | #AEAEAE | 1 |
| Inter | 15px | 400 | #6B6B6B | 1 |
| Inter | 15px | 400 | #A4A4A4 | 1 |
| Inter | 15px | 400 | #717171 | 1 |
Typography Reference
排版参考
Font Families:
- (used 81x)
Inter
Font Sizes: 8px, 9px, 10px, 11px, 12px, 13px, 14px, 15px, 16px, 17px, 24px, 41px
字体家族:
- (使用81次)
Inter
**字号范围:**8px、9px、10px、11px、12px、13px、14px、15px、16px、17px、24px、41px
Spacing
间距规范
- MUST use 4px grid for spacing
- SHOULD use spacing from scale: 1px, 2px, 3px, 4px, 5px, 6px, 7px, 8px
- SHOULD use 5px as default gap between elements
- NEVER use arbitrary spacing values (use design scale)
- SHOULD maintain consistent padding within containers
- 间距必须遵循4px网格系统
- 建议使用以下间距阶梯:1px、2px、3px、4px、5px、6px、7px、8px
- 元素间默认间距建议设为5px
- 不得使用任意间距值(必须遵循设计阶梯)
- 容器内边距应保持一致
Borders
边框规范
- MUST use border-radius from scale: 10px, 15px, 17px, 18px, 22px, 24px
- SHOULD use 22px+ radius for pill-shaped elements
- SHOULD limit border widths to: 1px, 2px
- SHOULD use 15px as default border-radius
- NEVER use arbitrary border-radius values (use design scale)
- SHOULD use subtle borders (1px) for element separation
- 圆角必须使用以下阶梯值:10px、15px、17px、18px、22px、24px
- 胶囊状元素建议使用22px及以上的圆角
- 边框宽度建议限制为1px或2px
- 默认圆角建议设为15px
- 不得使用任意圆角值(必须遵循设计阶梯)
- 元素分隔建议使用细边框(1px)
Border Radius Reference
圆角参考
Scale: 10px, 15px, 17px, 18px, 22px, 24px
**阶梯值:**10px、15px、17px、18px、22px、24px
Layout
布局规范
- MUST design for 1920px base viewport width
- SHOULD use consistent element widths: 172px, 68px, 171px, 185px, 38px
- SHOULD maintain text-heavy layout with clear hierarchy
- NEVER use , use
h-screenfor full viewport heighth-dvh - MUST respect for fixed elements
safe-area-inset - SHOULD use for square elements instead of
size-*+w-*h-*
- 必须以1920px作为基准视口宽度进行设计
- 建议使用统一的元素宽度:172px、68px、171px、185px、38px
- 应保持以文本为主的布局,并具备清晰的层级结构
- 不得使用,全屏高度需使用
h-screenh-dvh - 固定定位元素必须遵循安全区域规则
safe-area-inset - 方形元素建议使用属性,而非同时设置
size-*与w-*h-*
Detected Layout Patterns
已检测的布局模式
- Main Content: width: 1920px, height: 1080px
- Header: height: 60px
- **主内容区:**宽度1920px,高度1080px
- **头部导航:**高度60px
Components
组件规范
Buttons
按钮组件
| Variant | Background | Text | Border | Height | Radius |
|---|---|---|---|---|---|
| Ghost | transparent | #B8B8B8 | none | - | - |
| 变体 | 背景色 | 文本色 | 边框 | 高度 | 圆角 |
|---|---|---|---|---|---|
| 幽灵按钮 | 透明 | #B8B8B8 | 无 | - | - |
Interactive States
交互状态规范
Focus
焦点状态
- MUST use outline with accent color (
2px)#010002 - MUST use outline-offset
2px - NEVER remove focus indicators
- 必须使用宽的轮廓线,颜色为强调色(
2px)#010002 - 必须设置的轮廓偏移量
2px - 不得移除焦点指示器
Hover
悬停状态
- Buttons (primary): lighten background by 10%
- Buttons (secondary): use background
#FEFEFE - List items: use background
#FEFEFE
- 主按钮:背景色提亮10%
- 次要按钮:使用作为背景色
#FEFEFE - 列表项:使用作为背景色
#FEFEFE
Disabled
禁用状态
- MUST use
opacity: 0.5 - MUST use
cursor: not-allowed
- 必须设置
opacity: 0.5 - 必须设置
cursor: not-allowed
Interaction
交互行为规范
- MUST use an for destructive or irreversible actions
AlertDialog - SHOULD use structural skeletons for loading states
- MUST show errors next to where the action happens
- NEVER block paste in or
inputelementstextarea - MUST add an to icon-only buttons
aria-label
- 破坏性或不可撤销操作必须使用组件
AlertDialog - 加载状态建议使用结构化骨架屏
- 错误提示必须显示在操作发生的位置附近
- 不得禁止或
input元素的粘贴功能textarea - 纯图标按钮必须添加属性
aria-label
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 use on entrance animations
ease-out - NEVER exceed for interaction feedback
200ms - SHOULD respect
prefers-reduced-motion
- 除非明确要求,否则不得添加动画
- 仅允许对合成器属性(、
transform)执行动画opacity - 不得对布局属性(、
width、height、top、left、margin)执行动画padding - 入场动画建议使用缓动效果
ease-out - 交互反馈动画时长不得超过200ms
- 应遵循(减少动画)的系统设置
prefers-reduced-motion
Performance
性能规范
- NEVER animate large or
blur()surfacesbackdrop-filter - NEVER apply outside an active animation
will-change - NEVER use for anything that can be expressed as render logic
useEffect
- 不得对大面积区域的或
blur()属性执行动画backdrop-filter - 不得在非活跃动画场景下使用属性
will-change - 任何可通过渲染逻辑实现的功能,不得使用
useEffect