the-designer
npx skills add https://github.com/potatoman03/the-designer --skill the-designer
Agent 安装分布
Skill 文档
The Designer â Interfaces With Soul
This skill creates interfaces that feel crafted by human hands, not assembled from a kit. Every project gets its own personality. Every screen tells part of a story. The goal is memorable distinction, not safe consistency.
Philosophy: Design is authorship. A great interface has a point of view â it makes decisions that lesser designers wouldn’t dare. Safe choices produce forgettable work. Take a stand. Let the design have opinions.
Core Belief: Users don’t remember “clean” â they remember feeling something. Delight, intrigue, comfort, surprise. An interface should evoke emotion, not just display information.
FIRST: Identify the Context
Before applying ANY rules, determine what you’re building. The approach differs dramatically:
Marketing Sites / Landing Pages
- Goal: Impress, convert, tell a story
- Density: Low (60%+ whitespace)
- Typography: Dramatic display sizes, emotional
- Visual interest: Procedural/generative backgrounds, texture, interactive elements
- Cards: AVOID â use editorial layouts, numbered lists
- Hero sections: Yes â big statements, atmosphere
- Animation: Expressive, scroll-driven reveals
Dashboards / Admin Panels / Apps
- Goal: Inform, enable action, show data
- Density: High â information-rich, compact
- Typography: Functional, readable, restrained sizes
- Visual interest: Minimal â focus on data visualization, not decoration
- Cards: YES â cards are appropriate for dashboard widgets
- Hero sections: NO â get to the data immediately
- Animation: Minimal, functional transitions only
- Whitespace: 30-40%, not 60%+
Key Differences
| Aspect | Marketing Site | Dashboard/App |
|---|---|---|
| Hero section | Yes, dramatic | No, straight to content |
| Decorative visuals | Yes, generative/procedural | No, data viz only |
| Card grids | Never for features | Yes, for widgets |
| Display typography | Yes | Minimal, headers only |
| Information density | Low | High |
| Whitespace | 60%+ | 30-40% |
| Signature animation | Yes | Subtle indicators only |
If building a dashboard: Skip the Five Commitments, skip decorative visuals, use functional card layouts, prioritize data density and usability over emotional impact.
The Five Commitments (Marketing Sites Only)
Skip this for dashboards/apps â go straight to building functional UI.
For marketing sites, before writing any code, make five binding decisions:
1. The Story
What narrative does this interface tell? Not features â feeling.
- “A calm library where thoughts settle into place”
- “A machine humming with quiet intelligence”
- “A letter from a friend who knows exactly what you need”
Write one sentence. Every design decision serves this story.
2. The Tension
Great design holds opposing forces in balance. Pick your spectrum:
- Playful â Serious
- Dense â Spacious
- Warm â Cool
- Organic â Geometric
- Loud â Quiet
Where does this project sit? (e.g., “70% serious, 30% playful”)
3. The Signature
The ONE element that makes this unmistakably this:
- A specific animation that appears nowhere else
- A color that burns into memory
- A typographic treatment that becomes the brand
If someone sees a screenshot with no logo, they should still know it’s yours.
4. The Material
What is this interface made of? Physical metaphor drives texture:
- Paper and ink (soft, tactile, warm)
- Glass and light (transparency, refraction, glow)
- Stone and shadow (weight, depth, permanence)
- Metal and precision (sharp edges, industrial)
5. The Gesture
How does interaction feel in the hand?
- Snappy and immediate (arcade button)
- Smooth and continuous (silk ribbon)
- Weighted and deliberate (heavy door)
- Springy and alive (rubber ball)
Layer 1: Typography â Voice, Not Just Text
Typography is the single most impactful decision. Type is voice â choose fonts that would sound right reading your content aloud.
The Type Stack
Every project needs exactly THREE roles:
| Role | Purpose | Example Pairings |
|---|---|---|
| Voice | Headlines, statements, personality | Newsreader, Cormorant, Playfair Display, Syne |
| Work | Body text, UI, readability | Outfit, Satoshi, General Sans, Geist |
| Tech | Code, data, precision | JetBrains Mono, Azeret Mono, Space Mono |
Typography Rules
| Context | Size | Line Height | Letter Spacing |
|---|---|---|---|
| Display | clamp(3rem, 8vw, 8rem) | 1.0â1.1 | -0.02em to -0.04em |
| Headings | 2remâ3rem | 1.1â1.2 | -0.01em |
| Body | 1remâ1.125rem | 1.6â1.7 | 0 |
| Captions | 0.75remâ0.875rem | 1.4 | 0.02emâ0.05em |
Text Measure (Line Length)
Body text MUST maintain readable line length:
- Optimal: 45â75 characters per line (65 is ideal)
- Minimum width:
max-w-prose(65ch) ormax-w-2xl(42rem/672px) - NEVER constrain body text narrower than 20rem (320px)
If text wraps at 2â3 words per line, the container is too narrow. Always verify text measure visually.
BANNED Fonts
Inter, Roboto, Arial, system-ui, Poppins, Open Sans, Montserrat â these signal “I didn’t choose.”
Font Loading â Required Setup
Always load fonts in index.html head, NOT via CSS @import:
<!-- index.html -->
<head>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=YOUR_FONTS&display=swap" rel="stylesheet" />
</head>
Then reference in CSS:
@theme {
--font-voice: "Cormorant Garamond", "Times New Roman", serif;
--font-work: "Outfit", system-ui, sans-serif;
--font-mono: "JetBrains Mono", monospace;
}
Layer 2: Color â Emotion, Not Decoration
Two colors. Maximum three. Restraint creates sophistication.
The Palette Formula
- One dominant â 60% of the interface (your ground)
- One accent â 10% or less, maximum impact (your spark)
- Derive everything else â surfaces, text, borders from lightness/opacity variations
Color Rules
- Never pure
#000or#FFFâ use near-blacks and near-whites with subtle hue - Accent is sacred â use only on THE most important action per screen
- Dark mode is a different mood, not inverted math
- Interactions increase contrast â hover/focus states are MORE visible
BANNED
- Gradients (all types â linear, radial, any)
- Purple-on-white (the AI aesthetic)
- Rainbow palettes without clear hierarchy
- Color as the only status indicator
Layer 3: Space â Rhythm, Not Just Margins
60% of any viewport should be nothing. Empty space is the silence that makes the music.
Spacing Scale
Use a consistent scale. Never arbitrary values.
| Token | Size | Use |
|---|---|---|
| xs | 0.25rem | Hairline gaps |
| sm | 0.5rem | Tight pairs |
| md | 1rem | Related elements |
| lg | 2rem | Grouped sections |
| xl | 4rem | Major breaks |
| 2xl | 8rem | Dramatic pauses |
Key Rule
Section spacing = 3â5Ã element spacing. If cards have 1rem gaps, sections need 4â6rem padding.
Layout Principles
- Asymmetric grids outperform symmetric ones
- One grid-breaking element per section creates tension
- Let browser size things â flex/grid over JS measurements
- Optical alignment â adjust ±1px when perception beats geometry
Layer 4: Motion â Narrative, Not Decoration
Every animation must have a named job. If it doesn’t fit a category, it shouldn’t exist.
Motion Taxonomy
| Type | Purpose | Timing |
|---|---|---|
| Structural | Scroll reveals, layout changes | Tied to scroll position |
| Connective | Page/state transitions | 400â800ms |
| Communicative | Hover, click, focus feedback | 100â200ms |
| Atmospheric | Idle animations, ambient life | 2000ms+ loops |
Motion Rules
- CSS first â use JS libraries only when CSS can’t achieve it
- Compositor-friendly â only animate
transformandopacity - Never
transition: allâ list specific properties - Honor
prefers-reduced-motionâ always - One signature moment â not animation on everything
Easing
- Snappy UI:
cubic-bezier(0.16, 1, 0.3, 1) - Smooth decel:
cubic-bezier(0.25, 1, 0.5, 1) - Cinematic:
cubic-bezier(0.76, 0, 0.24, 1)
Layer 5: Components â Characters, Not Widgets
Components have personality. They’re not just reusable â they have opinions.
Component Philosophy
- Composition over configuration â compound components over boolean props
- Variants as a system â not ad-hoc className strings
- States are story beats â empty, loading, error, success all designed
- Cards are not the default â most content doesn’t need a box
Buttons & Text on Backgrounds â CRITICAL
Text on colored backgrounds often fails to render when using only Tailwind utility classes. Always create dedicated CSS classes with explicit colors and !important.
Required: Create These Button Classes in index.css
/* REQUIRED â Add to every project's index.css */
.btn-primary {
display: inline-block;
font-family: var(--font-work);
font-size: 1rem;
letter-spacing: 0.025em;
padding: 1rem 2rem;
background-color: var(--color-primary);
color: var(--color-background) !important;
transition: background-color 150ms ease;
}
.btn-primary:hover { background-color: var(--color-primary-hover); }
.btn-secondary {
display: inline-block;
font-family: var(--font-work);
font-size: 1rem;
letter-spacing: 0.025em;
padding: 1rem 2rem;
background-color: var(--color-background);
color: var(--color-primary) !important;
transition: background-color 150ms ease;
}
.btn-sm { font-size: 0.875rem; padding: 0.75rem 1.5rem; }
Why This Matters
a { color: inherit }in CSS resets overrides utility classes- Z-index stacking with overlays can hide text
- Tailwind utilities like
text-paperdon’t use!important
Rules
- NEVER use
bg-ink text-paperutilities alone for buttons - ALWAYS use
.btn-primary,.btn-secondaryclasses - ALWAYS include
!importanton color declarations - For any text on a colored background, use explicit CSS classes, not utilities
When to Use Cards
In Dashboards/Apps â Cards are APPROPRIATE for:
- Stat widgets showing metrics
- Data summaries and KPIs
- Settings panels and sections
- List items that need visual grouping
- Any discrete, actionable content block
In Marketing Sites â Cards are appropriate for:
- Selectable/clickable items
- Content that will be manipulated (dragged, dismissed)
- Truly discrete items in a collection
When NOT to Use Cards (Marketing Sites Only)
- Feature lists (use numbered lists or editorial text instead)
- Static marketing information
- “Wrapping things to look organized”
Note: The “feature card grid” ban applies to MARKETING SITES showing features as uniform icon+title+description cards. Dashboard stat cards and widget cards are completely different and encouraged.
Layer 6: Texture â Touch, Not Flatness
Interfaces should feel made of something. Achieve texture through shadows, borders, and noise â not gradients.
Material Treatments
| Material | Technique |
|---|---|
| Paper | Subtle inset shadows, warm surface colors |
| Glass | backdrop-filter: blur(), translucent borders |
| Metal | Sharp inset highlights, hard shadows |
| Solid | Border + slight surface elevation |
Grain
Subtle noise (2â4% opacity) adds analog warmth. Apply as a fixed overlay.
CRITICAL: When using CSS ::before pseudo-elements for texture overlays, use z-index: -1 (not positive values). Positive z-index will cover content and make text/buttons invisible.
Shadows
Layered shadows (2â3 layers) feel more realistic than single-layer stock shadows.
Layer 7: States â Every Moment Designed
Every state is a moment in the user’s journey. Design them all.
| State | Character | Approach |
|---|---|---|
| Empty | The Beginning | Inviting, clear next step |
| Loading | Anticipation | Skeleton or simple text, never jarring |
| Error | The Setback | Helpful, shows the way out |
| Success | Victory | Celebratory but brief |
State Rules
- No dead ends â every screen offers a next step
- Loading states have minimum visible time (300â500ms) to avoid flicker
- Error messages tell users how to fix it, not just what went wrong
Layer 8: Accessibility â Care, Not Compliance
Accessibility isn’t a checklist â it’s caring about every user.
Non-Negotiables
- Visible focus rings (
:focus-visible) - 44px minimum touch targets
- Keyboard navigation for all flows
- Labels on all form inputs
- Color is never the only indicator
prefers-reduced-motionrespected
Form Rules
- Don’t pre-disable submit â let users discover what’s wrong
- Don’t block paste or input types
- Error messages next to fields, not just at top
- Mobile inputs â¥16px to prevent iOS zoom
The AI Slop Hall of Shame
These patterns are BANNED on marketing sites. Dashboards have different rules.
1. The Feature Card Grid (Marketing Sites Only)
â NEVER ON MARKETING SITES:
âââââââââââââ âââââââââââââ âââââââââââââ
â (â icon) â â (â icon) â â (â icon) â
â Heading â â Heading â â Heading â
â Desc text â â Desc text â â Desc text â
âââââââââââââ âââââââââââââ âââââââââââââ
Uniform rounded-corner cards with icon-in-circle, heading, description for FEATURES. Lazy marketing pattern.
Instead on marketing sites: Asymmetric layouts, text-only sections, editorial spreads, numbered lists.
ON DASHBOARDS: Card grids for stats/widgets are FINE and expected. This rule doesn’t apply.
2. Icon-in-Circle
Icons inside colored circles or rounded squares. Visual shorthand for “I didn’t think about this.”
Instead: Icons inline with text, large illustrations, or no icons at all.
3. Gradients
Any use of linear-gradient, radial-gradient, or gradient backgrounds.
Instead: Solid colors, texture, layered surfaces.
4. Template Structure
Hero â Feature Cards â Testimonials â CTA. Every AI site ever.
Instead: Story-driven structure unique to this content.
Complete Ban List
| Never | Instead |
|---|---|
| Feature card grids | Asymmetric layouts, text sections |
| Icons in circles | Inline icons or none |
| Gradients | Solid colors + texture |
| Uniform rounded corners | Mix sharp and rounded with intention |
| Symmetrical 3-column | Varied column widths, asymmetry |
| Animation on everything | One signature moment |
| Generic fonts | Distinctive typefaces |
| Pure black/white | Near-black/white with hue |
| Template layouts | Content-driven structure |
| Drop shadows on every card | Strategic elevation, most flat |
Feature Presentation Without Slop
When you need to present features, use these approaches:
Editorial Spread: One large hero feature, smaller supporting details below.
Numbered List: Simple, scannable, no boxes.
01 Feature name â description flows naturally
02 Another feature â no icons in circles
03 Third feature â typography provides hierarchy
Single Focus: One thing, dramatically. Everything else secondary.
Inline Flow: Weave features into narrative prose.
Comparison Table: When actually comparing things.
Tailwind v4 CSS Template â Use This Structure
Every project MUST use this index.css structure. Copy and adapt colors/fonts for each project.
@import "tailwindcss";
@theme {
/* COLORS â Choose 2-3 colors appropriate to the project
Examples:
- Warm/friendly: cream backgrounds, deep brown primary, terracotta accent
- Professional/serious: slate backgrounds, near-black primary, blue accent
- Tech/modern: dark surfaces, white text, electric accent
Always define primary, background, and ONE accent */
--color-primary: /* dark text/UI color */;
--color-primary-hover: /* slightly lighter */;
--color-primary-muted: /* for secondary text */;
--color-background: /* main surface */;
--color-background-alt: /* cards, sections */;
--color-accent: /* ONE accent for key actions */;
/* FONTS â Choose fonts that match the project personality
Load via Google Fonts in index.html, not CSS @import */
--font-voice: /* display/headlines - serif or distinctive sans */;
--font-work: /* body/UI - readable sans */;
--font-mono: /* code/data - monospace */;
/* TYPOGRAPHY â Safe to define */
--font-size-display: clamp(3rem, 8vw, 6rem);
--font-size-display-sm: clamp(2rem, 5vw, 3.5rem);
}
/* BASE STYLES */
html {
font-family: var(--font-work);
color: var(--color-primary);
background-color: var(--color-background);
}
/* TYPOGRAPHY UTILITIES */
.font-voice { font-family: var(--font-voice); }
.font-work { font-family: var(--font-work); }
.text-display {
font-family: var(--font-voice);
font-size: var(--font-size-display);
line-height: 1.0;
letter-spacing: -0.03em;
}
/* REQUIRED BUTTON CLASSES */
.btn-primary {
display: inline-block;
font-family: var(--font-work);
font-size: 1rem;
padding: 1rem 2rem;
background-color: var(--color-primary);
color: var(--color-background) !important;
transition: background-color 150ms ease;
}
.btn-primary:hover { background-color: var(--color-primary-hover); }
.btn-secondary {
display: inline-block;
font-family: var(--font-work);
font-size: 1rem;
padding: 1rem 2rem;
background-color: var(--color-background);
color: var(--color-primary) !important;
transition: background-color 150ms ease;
}
.btn-secondary:hover { background-color: var(--color-background-alt); }
.btn-sm { font-size: 0.875rem; padding: 0.75rem 1.5rem; }
/* TEXTURE OVERLAY â z-index: -1 is critical */
.paper-texture { position: relative; }
.paper-texture::before {
content: "";
position: absolute;
inset: 0;
background-image: url("data:image/svg+xml,..."); /* noise SVG */
opacity: 0.03;
pointer-events: none;
z-index: -1; /* MUST be negative or it covers content */
}
Critical @theme Rules
NEVER use these variable names â they conflict with Tailwind utilities:
--spacing-*(breaksmax-w-md,max-w-xl,max-w-2xl, etc.)--container-*--text-sm,--text-lg, etc. (use--font-size-*instead)
SAFE prefixes: --color-*, --font-*, --font-size-*, --space-*
Decision Framework
When time is limited, invest in this order:
| Priority | Layer | Impact |
|---|---|---|
| 1 | Typography | Highest impact â carries the entire design |
| 2 | Spacing | Separates professional from amateur |
| 3 | Color | 2 colors with intention beat 5 without |
| 4 | States | Empty, loading, error, success |
| 5 | Basic Motion | Hover states, scroll reveals |
| 6 | Texture | Shadows, grain, material feel |
Implementation Checklist
Setup (Every Project)
- Context identified? (Marketing site vs Dashboard/App)
- Google Fonts loaded in index.html with preconnect?
- Tailwind v4 @theme uses safe variable names? (No –spacing-, no –container-)
- Button classes (
.btn-primary,.btn-secondary) defined with!importantcolors?
Marketing Sites / Landing Pages
- Five Commitments documented? (Story, Tension, Signature, Material, Gesture)
- Only 2â3 colors?
- 60%+ viewport is empty space?
- No feature card grids? (Use numbered lists, editorial layouts)
- No gradients?
- No icons in circles?
- One signature visual/animation moment?
- Display typography for hero?
Dashboards / Admin Panels / Apps
- High information density? (30-40% whitespace, not 60%)
- NO hero sections? (Get straight to data)
- NO decorative backgrounds? (No particles, generative art â they distract)
- Card grids for stats/widgets? (Cards ARE appropriate here)
- Functional, readable typography? (Not dramatic display sizes)
- Minimal animation? (Only functional transitions)
- Data-first layout? (Charts, tables, forms prominent)
Both Contexts
- No banned fonts? (Inter, Roboto, Arial, Poppins, etc.)
- Body text 45â75 characters per line?
- All buttons use
.btn-*classes? -
prefers-reduced-motionrespected?
Remember: Safe is forgettable. The Designer creates interfaces that users remember.