Learn-skills.dev anduril
Opinionated constraints for building better interfaces with Anduril-style design.
install
source · Clone the upstream repo
git clone https://github.com/NeverSight/learn-skills.dev
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/adisinghstudent/anduril/anduril" ~/.claude/skills/neversight-learn-skills-dev-anduril && rm -rf "$T"
manifest:
data/skills-md/adisinghstudent/anduril/anduril/SKILL.mdsource content
Anduril Design System
When invoked, apply these opinionated constraints for building better interfaces.
How to use
— Apply these constraints to any UI work in this conversation./anduril
— Review the file against all constraints and output violations, why it matters, and a concrete fix./anduril <file>
Design System: Anduril
Colors
Core Palette
/* Backgrounds */ --bg-black: #000000; /* Pure black - dark mode primary */ --bg-dark: #1a1a1a; /* Near black - dark mode secondary */ --bg-warm: #f5f3ef; /* Warm off-white - light mode primary */ --bg-white: #ffffff; /* Pure white - cards, inputs */ /* Text */ --text-primary: #010101; /* Near black */ --text-inverse: #ffffff; /* White on dark */ --text-muted: #666666; /* Secondary text */ --text-subtle: #999999; /* Tertiary text */ /* Brand Accent */ --accent-lime: #DFF140; /* Anduril signature lime - primary accent */ --accent-lime-hover: #c8d93a; /* Semantic */ --color-error: #FF3535; /* Red - errors, destructive */ --color-error-bg: #fef2f2; --color-success: #16a34a; /* Green - success states */ --color-success-bg: #f0fdf4; --color-info: #2563eb; /* Blue - info, links */ --color-info-bg: #eff6ff; --color-warning: #f59e0b; /* Amber - warnings */ --color-warning-bg: #fffbeb; /* Borders */ --border-light: #e5e5e5; --border-default: #ddd; --border-dark: #333333;
Tailwind Config
colors: { anduril: { black: '#000000', dark: '#1a1a1a', warm: '#f5f3ef', lime: '#DFF140', 'lime-hover': '#c8d93a', } }
Usage Guidelines
- Use
sparingly — one accent per view--accent-lime - Dark mode:
background,--bg-black
for CTAs--accent-lime - Light mode:
background,--bg-warm
for CTAs--text-primary - NEVER use lime on light backgrounds (poor contrast)
- Reserve
for destructive actions only--color-error
Typography
- MUST use
'Helvetica Neue', Helvetica, Arial, sans-serif - Base font size:
, weight:15px
, line-height:4001.5 - Headers:
(never bold)font-weight: 400 - Labels:
,11px
,uppercase
,letter-spacing: 0.05emcolor: var(--text-muted) - Hero headings:
,48px
,font-weight: 400line-height: 1.1 - Navigation/header text:
,14px
,uppercaseletter-spacing: 0.1em
Spacing
- Cards:
padding: 32px - Main content:
,padding: 48pxmax-width: 1200px - Header:
padding: 24px 48px - Form elements:
between fieldsmargin-top: 16px
Components
Cards
background: #ffffff
— NO bordersborder: none
— sharp corners alwaysborder-radius: 0- NO shadows
Buttons
background: var(--text-primary)color: var(--text-inverse)border: 1px solid var(--text-primary)padding: 12px 24px
— sharp cornersborder-radius: 0font-weight: 400- Hover:
opacity: 0.85 - Disabled:
opacity: 0.5
Inputs
padding: 10px 12pxborder: 1px solid #dddborder-radius: 0- Focus:
, no outlineborder-color: var(--text-primary)
Method badges
font-family: monospacefont-size: 11pxtext-transform: uppercaseletter-spacing: 0.05empadding: 4px 8px- POST:
color: #2563eb; background: #eff6ff - GET:
color: #16a34a; background: #f0fdf4
Response/code blocks
background: var(--bg-warm)font-family: monospacefont-size: 12px- Error state:
background: #fef2f2; color: #dc2626 - Success state:
background: #f0fdf4; color: #16a34a
Stack
- MUST use Tailwind CSS defaults unless custom values already exist
- MUST use
when JavaScript animation is requiredmotion/react - SHOULD use
for entrance and micro-animationstw-animate-css - MUST use
utility (cn
+clsx
) for class logictailwind-merge
Components
- MUST use accessible component primitives (
,Base UI
,React Aria
)Radix - MUST use the project's existing primitives first
- NEVER mix primitive systems within the same surface
- MUST add
to icon-only buttonsaria-label - NEVER rebuild keyboard or focus behavior by hand
Interaction
- MUST use
for destructive actionsAlertDialog - SHOULD use structural skeletons for loading states
- NEVER use
, useh-screenh-dvh - MUST respect
for fixed elementssafe-area-inset - MUST show errors next to where the action happens
- NEVER block paste in inputs
Animation
- NEVER add animation unless explicitly requested
- MUST animate only compositor props (
,transform
)opacity - NEVER animate layout props (
,width
,height
,top
,left
,margin
)padding - SHOULD use
on entranceease-out - NEVER exceed
for interaction feedback200ms - MUST pause looping animations when off-screen
- SHOULD respect
prefers-reduced-motion
Typography
- MUST use
for headings,text-balance
for bodytext-pretty - MUST use
for datatabular-nums - SHOULD use
ortruncate
for dense UIline-clamp - NEVER modify
unless explicitly requestedletter-spacing
Layout
- MUST use a fixed
scale (no arbitraryz-index
)z-* - SHOULD use
for square elementssize-*
Performance
- NEVER animate large
orblur()
surfacesbackdrop-filter - NEVER apply
outside an active animationwill-change - NEVER use
for render logicuseEffect
Design — Anduril Style
Shape & Surface
- NEVER use border-radius — sharp corners only
- NEVER use shadows on cards
- NEVER use gradients
- NEVER use glow effects
- NEVER use purple or multicolor anything
Color Usage
- Light mode:
(#f5f3ef) background, dark buttons--bg-warm - Dark mode:
(#000000) background, lime accent CTAs--bg-black - MUST use
(#DFF140) for primary actions in dark mode only--accent-lime - NEVER use lime on light backgrounds — use near-black instead
- SHOULD limit accent color to ONE per view
- Use semantic colors (
,--color-error
) consistently--color-success
Typography
- MUST keep headers lightweight (
)font-weight: 400 - MUST use uppercase + letter-spacing for labels and nav
- NEVER use bold for headings
States
- MUST give empty states one clear next action
- Error states: red text (#FF3535), light red background (#fef2f2)
- Success states: green text (#16a34a), light green background (#f0fdf4)
- Disabled:
,opacity: 0.5cursor: not-allowed