anti-purple-ui
$npx skills add blunotech-dev/skills --skill anti-purple-uiStrips out default AI tech-aesthetic color palettes and forces a strict monochrome scale with exactly one high-contrast accent color. Use this skill whenever the user explicitly wants to avoid "AI purple" or generic tech gradients, asks for a monochrome or single-accent UI, says things like "no purple", "no gradients", "minimal color", "black and white with one color", "brutalist palette", "stark contrast", or "anti-AI aesthetic". Also trigger when the user says the UI looks "too AI", "too generic", "too techy", or "like every other SaaS app". Apply this skill in combination with the frontend-design skill whenever both are relevant — this skill governs the color system, while frontend-design governs layout and typography.
Anti-Purple UI
This skill enforces a strict monochrome-plus-one-accent color discipline. It exists to eliminate the default AI/SaaS aesthetic: purple gradients, blue-violet glows, teal-to-indigo sweeps, frosted glass with color tints, and multi-hued palettes masquerading as "minimal."
The Rule
Grayscale everywhere. One accent. No exceptions.
The entire UI is built from a neutral grayscale scale. A single accent color — chosen deliberately and used sparingly — provides all contrast and emphasis. Everything else is black, white, or gray.
Grayscale Scale (CSS variables — always define these)
:root {
--color-bg: #0a0a0a; /* near-black background */
--color-surface: #141414; /* card / panel surface */
--color-border: #2a2a2a; /* subtle dividers */
--color-muted: #555555; /* disabled, placeholder */
--color-secondary: #888888; /* secondary text */
--color-primary: #e0e0e0; /* primary text */
--color-white: #f5f5f5; /* headings, high-emphasis */
/* For light-mode variants, invert the scale: */
/* --color-bg: #f5f5f5; --color-white: #0a0a0a; etc. */
}
The Accent
Define one accent color. Pick it based on context and intended mood. Do not pick it arbitrarily — the choice should feel intentional.
:root {
--color-accent: /* ONE color only */;
--color-accent-dim: /* same hue, lower saturation/lightness for hover states */;
}
Good accent choices by mood:
| Mood / Context | Accent |
|---|---|
| Brutal / industrial | #ff3300 (raw red) |
| Technical / terminal | #00ff41 (phosphor green) |
| Financial / serious | #f0b429 (amber gold) |
| Editorial / print | #e8113a (ink red) |
| Cold / clinical | #00bfff (ice blue) |
| Luxury / minimal | #c9a84c (warm gold) |
| Warning / urgent | #ff6b00 (signal orange) |
| Scientific | #7fff00 (chartreuse) |
Forbidden accent choices (these ARE the AI aesthetic):
- ❌ Purple (
#7c3aed,#6366f1,#8b5cf6, any violet) - ❌ Blue-violet, indigo, lavender
- ❌ Teal-to-indigo transitions
- ❌ "Brand blue" (
#3b82f6,#2563eb) - ❌ Pastel anything
- ❌ Multiple accent colors ("just a secondary accent" — no)
Accent is for emphasis only
The accent appears on:
- The single most important interactive element (primary CTA button)
- Active / selected state indicators
- One key data point or metric that needs to stand out
- Focused input borders
- Progress / loading indicators
The accent does not appear on:
- Backgrounds (other than tiny badges or pills)
- Large surface areas
- Decorative elements
- More than ~10% of total visible UI area
No gradients. Period.
/* ❌ Never */
background: linear-gradient(135deg, #667eea, #764ba2);
background: linear-gradient(to right, var(--color-accent), purple);
/* ✅ Always */
background: var(--color-surface);
border-left: 3px solid var(--color-accent); /* accent as line, not fill */
No color shadows or glows
/* ❌ Never */
box-shadow: 0 0 20px rgba(124, 58, 237, 0.4);
text-shadow: 0 0 10px #7c3aed;
/* ✅ If shadows, always neutral */
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
No frosted glass with tints
/* ❌ Never */
background: rgba(99, 102, 241, 0.1);
backdrop-filter: blur(12px);
/* ✅ If glass effect, neutral only */
background: rgba(255, 255, 255, 0.04);
backdrop-filter: blur(8px);
border: 1px solid var(--color-border);
Contrast & Accessibility
With a monochrome system, contrast must come from value, not hue. Ensure:
- Body text (
--color-primary) hits WCAG AA against--color-bg - Accent color on dark background hits WCAG AA (4.5:1 for text, 3:1 for UI components)
- Don't rely on color alone to communicate state — use icons, labels, or weight changes too
Buttons
/* Primary — the ONE place accent lives prominently */
.btn-primary {
background: var(--color-accent);
color: var(--color-bg); /* or --color-white depending on accent lightness */
border: none;
}
/* Secondary — monochrome only */
.btn-secondary {
background: transparent;
border: 1px solid var(--color-border);
color: var(--color-primary);
}
.btn-secondary:hover {
border-color: var(--color-primary);
}
Cards / Surfaces
.card {
background: var(--color-surface);
border: 1px solid var(--color-border);
/* Optional: accent left-border for featured/highlighted card */
}
.card--featured {
border-left: 3px solid var(--color-accent);
}
Data / Stats
/* Accent only on the ONE metric that matters most */
.stat-value--primary { color: var(--color-accent); }
.stat-value--secondary { color: var(--color-white); }
.stat-label { color: var(--color-secondary); }
Light Mode Variant
Invert the scale and keep the same accent discipline:
:root[data-theme="light"] {
--color-bg: #f8f8f8;
--color-surface: #ffffff;
--color-border: #e0e0e0;
--color-muted: #b0b0b0;
--color-secondary: #666666;
--color-primary: #1a1a1a;
--color-white: #0a0a0a;
/* --color-accent stays the same */
}
Checklist Before Delivering
Before finalizing any UI built under this skill, verify:
- [ ] Zero purple, violet, indigo, or teal-to-purple gradients anywhere
- [ ] Exactly one accent color defined and used
- [ ] Accent covers ≤10% of total visual area
- [ ] No colored shadows or glows
- [ ] No multi-stop gradients (single-color tints at low opacity are OK on surfaces)
- [ ] All interactive states expressed through value/weight changes, not new colors
- [ ] Background and surface colors are neutral grays/blacks/whites only
- [ ] Frosted glass (if used) has no color tint
Working with `frontend-design` skill
This skill overrides the color section of frontend-design. Everything else in frontend-design (typography, layout, motion, spatial composition) still applies. When both are active:
- Read
frontend-designfor overall creative direction - Apply this skill's color system as a strict constraint on top
- The accent color should be chosen to match the chosen aesthetic tone (e.g., a brutalist layout pairs well with raw red; an editorial layout with ink red or amber)