substack-ui-skills
Substack's UI design system. Use when building interfaces inspired by Substack's aesthetic - light mode, Inter font, 4px grid.
How do I install this agent skill?
npx skills add https://github.com/ihlamury/design-skills --skill substack-ui-skillsIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill provides a set of UI design guidelines and CSS tokens intended for building interfaces that mimic Substack's aesthetic. No malicious code, data exfiltration patterns, or security vulnerabilities were detected.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
- Runlayerwarn
2/2 files flagged
What does this agent skill do?
Substack UI Skills
Opinionated constraints for building Substack-style interfaces with AI agents.
When to Apply
Reference these guidelines when:
- Building light-mode interfaces
- Creating Substack-inspired design systems
- Implementing UIs with Inter font and 4px grid
Colors
- SHOULD use light backgrounds for primary surfaces
- MUST use
#FFFFFFas page background (surface-base) - SHOULD reduce color palette (currently 15 colors detected)
- MUST maintain text contrast ratio of at least 4.5:1 for accessibility
Semantic Tokens
| Token | HEX | RGB | Usage |
|---|---|---|---|
surface-base | #FFFFFF | rgb(255,255,255) | Page background |
surface-raised | #FC5013 | rgb(252,80,19) | Cards, modals, raised surfaces |
surface-overlay | #E9E9E9 | rgb(233,233,233) | Overlays, tooltips, dropdowns |
text-primary | #999999 | rgb(153,153,153) | Headings, body text |
text-2 | #515151 | rgb(81,81,81) | Additional text |
text-secondary | #717171 | rgb(113,113,113) | Secondary, muted text |
border-default | #E7E7E7 | rgb(231,231,231) | Subtle borders, dividers |
destructive | #E26739 | rgb(226,103,57) | Error states, delete actions |
Typography
- MUST use
Interas primary font family - SHOULD use single font family for consistency
- MUST use
36px/semi_boldfor primary headings - MUST use
17px/500for 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 | 36px | semi_bold | #BCDBD7 | 1 |
text-19px | Inter | 19px | semi_bold | #4C4D4D | 1 |
body | Inter | 17px | 500 | #535353 | 1 |
body-secondary | Inter | 16px | 400 | #717171 | 1 |
body-secondary | Inter | 16px | 400 | #6E6E6F | 1 |
body-secondary | Inter | 16px | 400 | #F5C0A3 | 1 |
body-secondary | Inter | 15px | 400 | #969696 | 2 |
body-secondary | Inter | 15px | 500 | #515151 | 1 |
body-secondary | Inter | 15px | 400 | #6F6F6F | 1 |
body-secondary | Inter | 15px | 500 | #5D5D5D | 1 |
Typography Reference
Font Families:
Inter(used 43x)
Font Sizes: 5px, 9px, 10px, 11px, 12px, 13px, 14px, 15px, 16px, 17px, 19px, 36px
Spacing
- MUST use 4px grid for spacing
- SHOULD use spacing from scale: 1px, 3px, 4px, 5px, 8px, 9px, 10px, 13px
- SHOULD use 4px 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: 3px, 4px, 6px, 7px, 8px, 9px, 16px, 18px
- MUST use 1px border width consistently
- SHOULD use 9px 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: 3px, 4px, 6px, 7px, 8px, 9px, 16px, 18px
Layout
- MUST design for 1920px base viewport width
- SHOULD use consistent element widths: 12px, 16px, 18px, 17px, 22px
- 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
Components
- MUST use
0pxheight for input fields
Buttons
| Variant | Background | Text | Border | Height | Radius |
|---|---|---|---|---|---|
| Ghost | transparent | #515151 | none | - | - |
Inputs
- Height:
0px
Interactive States
Focus
- MUST use
2pxoutline with accent color (#5E6AD2) - MUST use
2pxoutline-offset - NEVER remove focus indicators
Hover
- Buttons (primary): lighten background by 10%
- Buttons (secondary): use
#FC5013background - List items: use
#FC5013background
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
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/ihlamury/design-skills/substack-ui-skills">View substack-ui-skills on skillZs</a>