anduril
SKILL.md
Anduril Design System
When invoked, apply these opinionated constraints for building better interfaces.
How to use
/anduril— Apply these constraints to any UI work in this conversation./anduril <file>— Review the file against all constraints and output violations, why it matters, and a concrete fix.
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
--accent-limesparingly — one accent per view - Dark mode:
--bg-blackbackground,--accent-limefor CTAs - Light mode:
--bg-warmbackground,--text-primaryfor CTAs - NEVER use lime on light backgrounds (poor contrast)
- Reserve
--color-errorfor destructive actions only
Typography
- MUST use
'Helvetica Neue', Helvetica, Arial, sans-serif - Base font size:
15px, weight:400, line-height:1.5 - Headers:
font-weight: 400(never bold) - Labels:
11px,uppercase,letter-spacing: 0.05em,color: var(--text-muted) - Hero headings:
48px,font-weight: 400,line-height: 1.1 - Navigation/header text:
14px,uppercase,letter-spacing: 0.1em
Spacing
- Cards:
padding: 32px - Main content:
padding: 48px,max-width: 1200px - Header:
padding: 24px 48px - Form elements:
margin-top: 16pxbetween fields
Components
Cards
background: #ffffffborder: none— NO bordersborder-radius: 0— sharp corners always- NO shadows
Buttons
background: var(--text-primary)color: var(--text-inverse)border: 1px solid var(--text-primary)padding: 12px 24pxborder-radius: 0— sharp cornersfont-weight: 400- Hover:
opacity: 0.85 - Disabled:
opacity: 0.5
Inputs
padding: 10px 12pxborder: 1px solid #dddborder-radius: 0- Focus:
border-color: var(--text-primary), no outline
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
motion/reactwhen JavaScript animation is required - SHOULD use
tw-animate-cssfor entrance and micro-animations - MUST use
cnutility (clsx+tailwind-merge) for class logic
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
aria-labelto icon-only buttons - NEVER rebuild keyboard or focus behavior by hand
Interaction
- MUST use
AlertDialogfor destructive actions - SHOULD use structural skeletons for loading states
- NEVER use
h-screen, useh-dvh - MUST respect
safe-area-insetfor fixed elements - 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
ease-outon entrance - NEVER exceed
200msfor interaction feedback - MUST pause looping animations when off-screen
- SHOULD respect
prefers-reduced-motion
Typography
- MUST use
text-balancefor headings,text-prettyfor body - MUST use
tabular-numsfor data - SHOULD use
truncateorline-clampfor dense UI - NEVER modify
letter-spacingunless explicitly requested
Layout
- MUST use a fixed
z-indexscale (no arbitraryz-*) - SHOULD use
size-*for square elements
Performance
- NEVER animate large
blur()orbackdrop-filtersurfaces - NEVER apply
will-changeoutside an active animation - NEVER use
useEffectfor render logic
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:
--bg-warm(#f5f3ef) background, dark buttons - Dark mode:
--bg-black(#000000) background, lime accent CTAs - MUST use
--accent-lime(#DFF140) for primary actions in dark mode only - NEVER use lime on light backgrounds — use near-black instead
- SHOULD limit accent color to ONE per view
- Use semantic colors (
--color-error,--color-success) consistently
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.5,cursor: not-allowed
Weekly Installs
4
Repository
adisinghstudent/andurilFirst Seen
Jan 28, 2026
Security Audits
Installed on
gemini-cli4
claude-code4
opencode3
antigravity3
codex3
cursor3