agentleFS
liushikuan63liushikuan63/Qoder-Optimization/skills/distinctive-design-systems/SKILL.md

distinctive-design-systems

Skill2 starsChanged 11 days agoMITView on GitHub

Patterns for creating design systems with personality and distinctive aesthetics。中文触发:前端样式 设计系统 UI 组件库 设计 模式规范

1 other project uses a version of this, 1 of them edited.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 2 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Create design systems with personality that users remember.

    line 9
  2. Distinctive:

    Document the vibe before writing CSS:

    line 38

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Distinctive Design Systems

Create design systems with personality that users remember. Move beyond generic templates to build cohesive, emotionally resonant visual languages.


When to Use

  • Building a new product that needs distinctive visual identity
  • Creating design tokens for Tailwind + CSS variables
  • Documenting aesthetic decisions for consistent implementation
  • Want to go beyond default Bootstrap/Tailwind aesthetics

Core Philosophy

A distinctive design system starts with aesthetic documentation, not color pickers.

1. Define the vibe      → What does this look and feel like?
2. Gather references    → Mood boards, inspiration, examples
3. Document emotions    → What should users feel?
4. Extract tokens       → Colors, typography, spacing, motion
5. Build components     → Implement the documented vision

Pattern 1: Aesthetic Foundation

Document the vibe before writing CSS:

Example: Retro-Futuristic

The Vibe: Crystalline, luminescent, slightly melancholic—hopeful hues tempered by muted gradients, sharp typography, and CRT textures. Everything references a primary "Crystal" cyan tone.

Inspirations:

  • Retro console boot sequences — Futuristic orderly menus
  • JRPG UI panels — Luminous data displays, overlay HUDs
  • Sci-fi terminal interfaces — Elegant decay, monospaced readouts
EmotionHow It's Achieved
PrecisionSharp typography, tabular numerics, grid patterns
NostalgiaCRT scanlines, pixel grain, retro-era color palette
HopeFloating cyan orbs, gentle animations, luminous accents
MelancholyDark gradients, muted backgrounds, soft focus layers

Example: Warm Neutral Cyberpunk

The Vibe: Warm neutral cyberpunk with a terminal feel. Unlike harsh green-on-black hacker aesthetics, uses warm tan/beige as the foundation, creating approachable yet technical atmosphere.

Key Differentiation: Most dark UIs go cold with neon accents. This approach uses warmth as its secret weapon—the neutral tan base creates visual comfort while emerald accents maintain the futuristic aesthetic.

EmotionHow It's Achieved
Technical credibilityTerminal typography, mono fonts, glow effects
ApproachabilityWarm neutral base instead of cold black
Premium qualityGlass panels, backdrop blur, layered shadows
Futuristic trustCircuit patterns, hex grids, scanlines

Pattern 2: Color Token Architecture

The Three-Layer System

CSS Variables (source of truth)
    ↓
Tailwind Config (utility classes)
    ↓
TypeScript Tokens (runtime access)

CSS Variables

:root {
  /* Base tones (use in rgba()) */
  --tone-void: 2, 7, 18;
  --tone-midnight: 6, 12, 32;
  --tone-cyan: 76, 204, 255;
  
  /* Semantic colors (HSL) */
  --primary: 216 90% 68%;
  --success: 154 80% 60%;
  --destructive: 346 80% 62%;
  
  /* Effect variables */
  --glow-primary: 216 90% 68%;
  --glass-bg: 33 18% 71% / 0.8;
}

Tailwind Config

// tailwind.config.ts
export default {
  theme: {
    extend: {
      colors: {
        background: 'hsl(var(--background))',
        foreground: 'hsl(var(--foreground))',
        primary: {
          DEFAULT: 'hsl(var(--primary))',
          foreground: 'hsl(var(--primary-foreground))',
        },
        // Tone palette for rgba usage
        tone: {
          void: 'rgb(var(--tone-void))',
          cyan: 'rgb(var(--tone-cyan))',
        },
      },
    },
  },
};

TypeScript Tokens

// styles/design-tokens.ts
export const colors = {
  primary: 'hsl(var(--primary))',
  success: 'hsl(var(--success))',
  // For rgba usage
  toneCyan: 'rgb(var(--tone-cyan))',
};

export const withOpacity = (token: string, opacity: number) =>
  token.replace('rgb(', 'rgba(').replace(')', `, ${opacity})`);

Pattern 3: Typography System

Font Stack

fonts: {
  display: ['Orbitron', 'system-ui'],     // Headings, labels
  mono: ['Share Tech Mono', 'monospace'], // Metrics, code
  sans: ['Inter', 'system-ui'],           // Body fallback
}

Type Scale with Multiplier

:root {
  --typo-scale: 0.88;  /* Responsive multiplier */
  
  --typo-page-title: calc(1.75rem * var(--typo-scale));
  --typo-section-title: calc(1rem * var(--typo-scale));
  --typo-metric-lg: calc(1.75rem * var(--typo-scale));
  --typo-metric-md: calc(0.96rem * var(--typo-scale));
  --typo-body: calc(0.9rem * var(--typo-scale));
}

@media (min-width: 640px) {
  :root { --typo-scale: 1; }
}

Typography Patterns

Magazine-Style Numbers:

.metric {
  font-weight: 800;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}

Labels:

.label {
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-weight: 700;
  font-size: 0.72rem;
}

Pattern 4: Layered Surface System

Layer Hierarchy

LayerNamePurpose
0AmbientFull-viewport gradients, slow motion
1Glow FieldFloating orbs, atmospheric effects
2TextureCRT scanlines, grain, filters
3PanelsElevated cards, section headers
4ContentMetrics, charts, tables
5DetailsNested sub-panels, rows

Surface Component

interface SurfaceProps {
  layer?: 'panel' | 'tile' | 'chip' | 'deep' | 'metric';
  children: React.ReactNode;
}

export function Surface({ layer = 'tile', children }: SurfaceProps) {
  return (
    <div className={cn(
      'rounded-lg backdrop-blur-sm',
      layerStyles[layer]
    )}>
      {children}
    </div>
  );
}

const layerStyles = {
  panel: 'bg-tone-cadet/40 border border-tone-jordy/10',
  tile: 'bg-tone-midnight/60 border border-tone-jordy/5',
  chip: 'bg-tone-cyan/10 border border-tone-cyan/20',
  deep: 'bg-tone-void/80',
  metric: 'bg-tone-cadet/20',
};

Pattern 5: Motion Tokens

Timing Scale

:root {
  --transition-fast: 0.15s;
  --transition-default: 0.2s;
  --transition-medium: 0.25s;
  --transition-slow: 0.3s;
}

Animation Patterns

// tailwind.config.ts
keyframes: {
  'shimmer': {
    '0%': { backgroundPosition: '200% 0' },
    '100%': { backgroundPosition: '-200% 0' },
  },
  'pulse-glow': {
    '0%, 100%': { opacity: '1', transform: 'scale(1)' },
    '50%': { opacity: '0.5', transform: 'scale(1.05)' },
  },
  'slide-in': {
    '0%': { opacity: '0', transform: 'translateY(10px)' },
    '100%': { opacity: '1', transform: 'translateY(0)' },
  },
  'value-flash': {
    '0%': { textShadow: '0 0 8px currentColor' },
    '100%': { textShadow: 'none' },
  },
},
animation: {
  'shimmer': 'shimmer 1.5s ease-in-out infinite',
  'pulse-glow': 'pulse-glow 1.8s ease-in-out infinite',
  'slide-in': 'slide-in 0.2s ease-out',
  'value-flash': 'value-flash 0.6s ease-out',
}

Pattern 6: Glass & Glow Effects

Glass Panel

.glass-panel {
  background: linear-gradient(180deg, 
    hsl(var(--glass-bg) / 0.95) 0%, 
    hsl(var(--glass-bg) / 0.85) 100%
  );
  backdrop-filter: blur(16px);
  border: 1px solid hsl(var(--glass-border));
  box-shadow: 
    0 4px 16px hsl(var(--glass-shadow)),
    0 0 0 1px hsl(var(--glass-border) / 0.6) inset,
    0 0 20px hsl(var(--glow-primary) / 0.1);
}

Neon Border

.neon-border {
  border: 1px solid hsl(var(--brand-600) / 0.4);
  box-shadow: 
    0 0 10px hsl(var(--glow-primary) / 0.3),
    0 0 20px hsl(var(--glow-primary) / 0.2),
    inset 0 0 10px hsl(var(--glow-primary) / 0.1);
}

Proven Aesthetic Directions

AestheticInspirationsEmotions
Retro-futuristic glassmorphismRetro console UIs, JRPG HUDs, sci-fi terminalsPrecision, nostalgia, hope
Warm neutral cyberpunkTerminal UIs, sci-fi film interfacesCredibility, approachability
Magazine-style financialTrading platforms, data dashboardsTrust, clarity, sophistication

Related Skills

  • Meta-skill: ai/skills/meta/design-system-creation/ — Complete design system workflow
  • design-system-components — CVA component patterns and Surface primitives
  • loading-state-patterns — Skeleton loaders matching your aesthetic

NEVER Do

  • Use pure black (#000) as base — Always use tinted blacks
  • Use pure white (#fff) for text — Use tinted whites
  • Use Inter/Roboto for headings — Display fonts create distinctiveness
  • Use default Tailwind colors — Define your own palette
  • Skip backdrop-filter blur — Glass panels need blur
  • Apply decorative patterns to readable content — Background only
  • Use high-saturation colors without opacity — Modulate with rgba()
  • Hardcode font sizes — Use tokens with scale multiplier
  • Skip the aesthetic documentation — Vibes before code

File Structure

styles/
├── globals.css          # CSS variables, base styles
├── design-tokens.ts     # TypeScript token exports
├── theme.css            # Component patterns
└── patterns/
    ├── glass.css
    ├── neon.css
    └── backgrounds.css

tailwind.config.ts       # Token integration

Quick Reference

/* 1. Define CSS variables */
:root {
  --tone-primary: 76, 204, 255;
  --primary: 200 90% 65%;
}

/* 2. Configure Tailwind */
colors: {
  primary: 'hsl(var(--primary))',
  tone: { primary: 'rgb(var(--tone-primary))' },
}

/* 3. Use in components */
<div className="bg-primary text-tone-primary/80">

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.