Spotify Ui Skills
Opinionated UI constraints for building Spotify-style dark-mode interfaces in Inter with a 4px spaci
by ihlamury · MIT
The skill
Opinionated UI constraints for building Spotify-style dark-mode interfaces in Inter with a 4px spacing grid, covering color tokens, typography, spacing, borders, focus and hover states, animation limits, and accessibility rules for web UI code. Use when generating or reviewing CSS, Tailwind classes, or React components for a dark interface that should follow these design tokens and rules.
Spotify UI Skills
Opinionated constraints for building Spotify-style interfaces with AI agents.
When to Apply
Reference these guidelines when:
- Building dark-mode interfaces
- Creating Spotify-inspired design systems
- Implementing UIs with Inter font and 4px grid
Colors
- MUST use dark backgrounds (lightness < 20) for primary surfaces - detected lightness: 9
- MUST use
#171717as page background (surface-base) - MUST use
#010002for primary actions and focus states (accent) - SHOULD reduce color palette (currently 14 colors detected)
- MUST maintain text contrast ratio of at least 4.5:1 for accessibility
Semantic Tokens
| Token | HEX | RGB | Usage |
|---|---|---|---|
surface-base |
#171717 | rgb(23,23,23) | Page background |
surface-raised |
#FEFEFE | rgb(254,254,254) | Cards, modals, raised surfaces |
surface-overlay |
#010002 | rgb(1,0,2) | Overlays, tooltips, dropdowns |
text-primary |
#555555 | rgb(85,85,85) | Headings, body text |
text-secondary |
#6A6A6A | rgb(106,106,106) | Secondary, muted text |
text-tertiary |
#AEAEAE | rgb(174,174,174) | Additional text |
border-default |
#838486 | rgb(131,132,134) | Subtle borders, dividers |
accent |
#010002 | rgb(1,0,2) | Primary actions, links, focus |
Typography
- MUST use
Interas primary font family - SHOULD use single font family for consistency
- MUST use
41px/500for primary headings - MUST use
13px/400for body text - SHOULD reduce font weights (currently 4 detected)
- MUST use
text-balancefor headings andtext-prettyfor body text - SHOULD use
tabular-numsfor numeric data - NEVER modify letter-spacing unless explicitly requested
Text Styles
| Style | Font | Size | Weight | Color | Count |
|---|---|---|---|---|---|
heading-1 |
Inter | 41px | 500 | #2D2D2D | 1 |
text-24px |
Inter | 24px | semi_bold | #DBDBDB | 1 |
text-24px |
Inter | 24px | 500 | #DBDBDB | 1 |
text-24px |
Inter | 24px | semi_bold | #DCDCDC | 1 |
text-17px |
Inter | 17px | 400 | #676667 | 1 |
text-16px |
Inter | 16px | 400 | #A6A6A6 | 1 |
text-15px |
Inter | 15px | 400 | #AEAEAE | 1 |
text-15px |
Inter | 15px | 400 | #6B6B6B | 1 |
text-15px |
Inter | 15px | 400 | #A4A4A4 | 1 |
text-15px |
Inter | 15px | 400 | #717171 | 1 |
Typography Reference
Font Families:
Inter(used 81x)
Font Sizes: 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
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
Border Radius Reference
Scale: 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
h-screen, useh-dvhfor full viewport height - MUST respect
safe-area-insetfor fixed elements - SHOULD use
size-*for square elements instead ofw-*+h-*
Detected Layout Patterns
- Main Content: width: 1920px, height: 1080px
- Header: height: 60px
Components
Buttons
| Variant | Background | Text | Border | Height | Radius |
|---|---|---|---|---|---|
| Ghost | transparent | #B8B8B8 | none | - | - |
Interactive States
Focus
- MUST use
2pxoutline with accent color (#010002) - MUST use
2pxoutline-offset - NEVER remove focus indicators
Hover
- Buttons (primary): lighten background by 10%
- Buttons (secondary): use
#FEFEFEbackground - List items: use
#FEFEFEbackground
Disabled
- MUST use
opacity: 0.5 - MUST use
cursor: not-allowed
Interaction
- MUST use an
AlertDialogfor destructive or irreversible actions - SHOULD use structural skeletons for loading states
- MUST show errors next to where the action happens
- NEVER block paste in
inputortextareaelements - MUST add an
aria-labelto icon-only buttons
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
ease-outon entrance animations - NEVER exceed
200msfor interaction feedback - SHOULD respect
prefers-reduced-motion
Performance
- NEVER animate large
blur()orbackdrop-filtersurfaces - NEVER apply
will-changeoutside an active animation - NEVER use
useEffectfor anything that can be expressed as render logic
Use this skill
Connect your agent to the Skill Store MCP server and ask for it by ref: ihlamury/spotify-ui-skills-34568981867.
Details
- Publisher
- ihlamury
- Category
- Software Development › Frontend & UI
- License
- MIT
- Updated
- 2026-02-09
References
More from ihlamury
- Airbnb Ui Skills Guidelines for building Airbnb-style UIs with Inter font, a 4px spacing grid, light surfaces, 11px d
- Airtable Ui Skills Design guidelines for building Airtable-style light-mode interfaces with Inter font, a 4px spacing g
- Amplitude Ui Skills Design constraints for building Amplitude-style web interfaces: light-mode surfaces, Inter font, 4px
- Anthropic Ui Skills Design constraints for building web UIs in an Anthropic-style aesthetic: warm light surface and text