distinctive-frontend-design
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install refly-ai-skill-to-workflow-distinctive-frontend-design
Repository
Skill path: skills-source/zijiebijiben/distinctive-frontend-design
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
Open repositoryBest for
Primary workflow: Design Product.
Technical facets: Full Stack, Frontend, Data / AI, Designer.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: refly-ai.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install distinctive-frontend-design into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/refly-ai/skill-to-workflow before adding distinctive-frontend-design to shared team environments
- Use distinctive-frontend-design for development workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: distinctive-frontend-design
description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
---
# Distinctive Frontend Design
## Overview
Guide Claude to create frontend interfaces with distinctive aesthetics and high design quality, moving beyond generic AI-generated designs. Apply specific design principles across typography, color, motion, and backgrounds to produce polished, creative outputs.
## Core Design Principles
### 1. Typography
**Primary Directive:** Choose unique, interesting fonts that enhance aesthetics and avoid generic defaults.
**Font Selection Guidelines:**
- Avoid: Inter, Roboto, Arial, system fonts, Helvetica
- Prefer: Distinctive typefaces that match the project's character
- Consider: Display fonts for headlines, reader-friendly fonts for body text
- Pairing: Use high-contrast pairs (e.g., geometric sans + humanist serif)
**Font Categories to Explore:**
- Geometric sans-serif for modern, precise aesthetics
- Humanist serif for warmth and readability
- Monospace for technical or retro contexts
- Display fonts for bold statements
**Implementation:**
```css
/* Example of distinctive typography */
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;700&family=Crimson+Text:ital@0;1&display=swap');
:root {
--font-display: 'Space Grotesk', sans-serif;
--font-body: 'Crimson Text', serif;
}
```
### 2. Color & Theme
**Primary Directive:** Commit to a cohesive aesthetic with intentional color choices.
**Color Strategy:**
- Use CSS variables for consistency
- Employ dominant colors with sharp, strategic accents
- Avoid: Purple gradients on white, generic blue/gray schemes
- Draw inspiration from: IDE themes, cultural aesthetics, nature
**Theme Development:**
```css
:root {
/* Define a cohesive palette */
--color-primary: #2D4A3E;
--color-accent: #E8B84B;
--color-background: #F8F6F1;
--color-surface: #FFFFFF;
--color-text: #1A1A1A;
--color-text-secondary: #5A5A5A;
}
```
**Inspiration Sources:**
- IDE themes: Nord, Dracula, Monokai, Solarized
- Cultural aesthetics: Solarpunk, Cyberpunk, Brutalism, Memphis
- Natural palettes: Desert, Ocean, Forest, Sunset
### 3. Motion & Animation
**Primary Directive:** Use animations for effects and micro-interactions, prioritizing CSS-only solutions.
**Animation Guidelines:**
- Focus on high-impact moments (page loads, state changes)
- Use staggered reveals for lists and grids
- Apply easing curves for natural movement
- Keep duration appropriate (150-300ms for micro-interactions)
**Implementation Patterns:**
```css
/* Staggered reveal */
.item {
opacity: 0;
animation: fadeInUp 0.5s ease forwards;
}
.item:nth-child(1) { animation-delay: 0.1s; }
.item:nth-child(2) { animation-delay: 0.2s; }
.item:nth-child(3) { animation-delay: 0.3s; }
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Smooth state transitions */
.button {
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
```
### 4. Backgrounds
**Primary Directive:** Create atmosphere and depth through layered effects rather than solid colors.
**Background Techniques:**
- Layered CSS gradients for depth
- Geometric patterns and shapes
- Contextual effects (mesh gradients, noise textures)
- Subtle animations on background elements
**Implementation Examples:**
```css
/* Layered gradient background */
.hero {
background:
linear-gradient(135deg, rgba(45, 74, 62, 0.9) 0%, rgba(45, 74, 62, 0.7) 100%),
linear-gradient(45deg, #2D4A3E 25%, transparent 25%),
linear-gradient(-45deg, #2D4A3E 25%, transparent 25%),
linear-gradient(45deg, transparent 75%, #2D4A3E 75%),
linear-gradient(-45deg, transparent 75%, #2D4A3E 75%);
background-size: 100% 100%, 20px 20px, 20px 20px, 20px 20px, 20px 20px;
background-position: 0 0, 0 0, 10px 0, 10px -10px, 0 10px;
}
/* Mesh gradient background */
.section {
background: radial-gradient(at 40% 20%, rgba(232, 184, 75, 0.3) 0px, transparent 50%),
radial-gradient(at 80% 80%, rgba(45, 74, 62, 0.2) 0px, transparent 50%);
}
```
## Avoiding Generic Defaults
**Explicitly Avoid These Elements:**
**Typography:**
- Inter, Roboto, Arial, system-ui, sans-serif
- Single-weight font usage
- Lack of typographic hierarchy
**Colors:**
- Purple gradients on white backgrounds
- Generic blue/gray corporate schemes
- Flat, unsaturated color palettes
- Lack of color intention or theme
**Layouts:**
- Center-aligned everything without reason
- Predictable grid patterns without variation
- Cookie-cutter component arrangements
- Lack of whitespace strategy
**Overall:**
- Designs lacking context-specific character
- One-size-fits-all approaches
- Over-reliance on component libraries' default styling
## Design Inspiration References
For theme-specific inspiration and detailed examples, see:
- `references/design-themes.md` - Detailed theme examples (Solarpunk, Cyberpunk, Brutalist, etc.)
- `references/design-patterns.md` - Common patterns for different project types
## Workflow
1. **Understand Context:** Analyze the project's purpose and target audience
2. **Choose Theme Direction:** Select or create a cohesive aesthetic approach
3. **Apply Typography:** Select distinctive fonts that match the theme
4. **Define Color System:** Create a cohesive palette using CSS variables
5. **Add Motion:** Implement purposeful animations for key interactions
6. **Craft Backgrounds:** Layer effects to create depth and atmosphere
7. **Verify Distinctiveness:** Check that the design avoids generic defaults
## Quality Checklist
Before finalizing any frontend design, verify:
- [ ] Typography uses distinctive, non-generic fonts
- [ ] Color scheme is cohesive and intentional
- [ ] CSS variables are defined for consistency
- [ ] Animations enhance key interactions
- [ ] Backgrounds create atmosphere (not just solid colors)
- [ ] Design has context-specific character
- [ ] Code is production-ready and polished
---
## Referenced Files
> The following files are referenced in this skill and included for context.
### references/design-themes.md
```markdown
# Design Theme Examples
This document provides detailed examples of distinctive design themes with specific color palettes, typography choices, and visual characteristics.
## Solarpunk
**Theme Characteristics:**
- Optimistic, eco-futuristic aesthetic
- Natural forms combined with technology
- Emphasis on sustainability and growth
**Color Palette:**
```css
:root {
--color-primary: #2D5016; /* Deep forest green */
--color-secondary: #7CB342; /* Vibrant leaf green */
--color-accent: #FFB300; /* Warm solar yellow */
--color-background: #F5F5DC; /* Natural beige */
--color-surface: #FFFFFF;
--color-text: #1B3A1B;
}
```
**Typography:**
- Headlines: Space Grotesk, Outfit (geometric sans with rounded features)
- Body: Source Serif Pro, Crimson Text (humanist serif)
**Visual Elements:**
- Organic shapes and flowing lines
- Botanical illustrations or geometric plant patterns
- Gradient overlays suggesting sunlight
- Rounded corners on components
**Background Patterns:**
```css
background:
radial-gradient(circle at 20% 50%, rgba(124, 179, 66, 0.15) 0%, transparent 50%),
radial-gradient(circle at 80% 20%, rgba(255, 179, 0, 0.1) 0%, transparent 50%),
linear-gradient(135deg, #F5F5DC 0%, #E8E4D0 100%);
```
## Cyberpunk
**Theme Characteristics:**
- High-tech, dystopian aesthetic
- Neon accents on dark backgrounds
- Sharp angles and glitch effects
**Color Palette:**
```css
:root {
--color-primary: #0A0E27; /* Deep midnight blue */
--color-secondary: #1A1F3A; /* Dark slate */
--color-accent: #00F0FF; /* Neon cyan */
--color-accent-2: #FF006E; /* Hot magenta */
--color-background: #050810;
--color-text: #E0E0E0;
}
```
**Typography:**
- Headlines: Orbitron, Rajdhani (geometric, futuristic)
- Body: IBM Plex Mono, JetBrains Mono (monospace)
**Visual Elements:**
- Sharp angles and diagonal cuts
- Neon glow effects (box-shadow with color)
- Scan line patterns
- Grid overlays
**Effects:**
```css
.neon-glow {
text-shadow:
0 0 5px #00F0FF,
0 0 10px #00F0FF,
0 0 20px #00F0FF,
0 0 40px #00F0FF;
}
.glitch-effect {
animation: glitch 0.3s infinite;
}
@keyframes glitch {
0%, 100% { transform: translate(0); }
20% { transform: translate(-2px, 2px); }
40% { transform: translate(2px, -2px); }
60% { transform: translate(-2px, -2px); }
80% { transform: translate(2px, 2px); }
}
```
## Brutalist
**Theme Characteristics:**
- Raw, unrefined aesthetic
- Heavy use of typography
- Unconventional layouts
**Color Palette:**
```css
:root {
--color-primary: #000000;
--color-secondary: #FFFFFF;
--color-accent: #FF0000; /* Bold red accent */
--color-background: #E0E0E0;
--color-text: #000000;
}
```
**Typography:**
- Headlines: Space Mono, Courier New (monospace, bold)
- Body: Arial, Helvetica (intentionally plain)
- Large, dominant text treatments
**Visual Elements:**
- Raw borders (thick, black)
- Asymmetric layouts
- Overlapping elements
- Minimal color, maximum contrast
- Unconventional alignment
**Layout Characteristics:**
```css
/* Bold, unconventional positioning */
.brutalist-header {
border: 5px solid #000;
padding: 2rem;
text-transform: uppercase;
letter-spacing: 0.1em;
}
/* Overlapping elements */
.overlap-section {
position: relative;
z-index: 1;
margin-top: -3rem;
border: 3px solid #000;
background: #FFF;
}
```
## Nordic Minimalism
**Theme Characteristics:**
- Clean, functional aesthetic
- Muted, natural colors
- Emphasis on whitespace and clarity
**Color Palette:**
```css
:root {
--color-primary: #2E3440; /* Dark slate gray */
--color-secondary: #4C566A; /* Medium gray */
--color-accent: #5E81AC; /* Soft blue */
--color-accent-warm: #BF616A; /* Muted red */
--color-background: #ECEFF4; /* Light gray */
--color-surface: #FFFFFF;
--color-text: #2E3440;
}
```
**Typography:**
- Headlines: Inter (used correctly with varied weights)
- Body: Source Sans Pro, Open Sans
- Emphasis on spacing and hierarchy
**Visual Elements:**
- Generous whitespace
- Soft shadows
- Rounded corners (subtle)
- Photography as focal points
**Design Principles:**
```css
/* Subtle elevation */
.card {
background: var(--color-surface);
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04),
0 1px 2px rgba(0, 0, 0, 0.06);
padding: 2rem;
}
/* Ample spacing */
.section {
padding: 4rem 2rem;
}
```
## Retro Computing
**Theme Characteristics:**
- Nostalgic 80s/90s computing aesthetic
- CRT monitor effects
- Pixelated elements
**Color Palette:**
```css
:root {
--color-primary: #000000;
--color-secondary: #00FF00; /* Bright terminal green */
--color-accent: #FFD700; /* Gold/amber */
--color-background: #1A1A1A;
--color-text: #00FF00;
}
```
**Typography:**
- Headlines: VT323, Press Start 2P (pixel fonts)
- Body: IBM Plex Mono, Source Code Pro
**Visual Elements:**
- Scanline effects
- Monochrome green or amber text
- ASCII art elements
- Pixelated borders
**Retro Effects:**
```css
/* CRT scanline effect */
.crt-screen::after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: repeating-linear-gradient(
0deg,
rgba(0, 0, 0, 0.1) 0px,
rgba(0, 0, 0, 0.1) 1px,
transparent 1px,
transparent 2px
);
pointer-events: none;
}
/* Terminal glow */
.terminal-text {
color: #00FF00;
text-shadow: 0 0 5px #00FF00;
font-family: 'VT323', monospace;
}
```
## Implementation Notes
**Choosing a Theme:**
1. Consider the project's purpose and audience
2. Select a theme that reinforces the message
3. Adapt theme elements rather than copying exactly
4. Mix themes when appropriate for unique results
**Customization:**
- Themes are starting points, not rigid templates
- Adjust colors to match brand or content
- Combine elements from multiple themes
- Create variations within a theme family
**Consistency:**
- Use CSS variables for all theme values
- Maintain the theme throughout the experience
- Document theme choices for future reference
- Test theme in both light and dark modes if applicable
```
### references/design-patterns.md
```markdown
# Design Patterns for Common Project Types
This document provides design patterns and best practices for common frontend project types.
## Landing Pages
**Key Characteristics:**
- Strong visual hierarchy
- Clear call-to-action
- Engaging hero section
- Scroll-driven reveals
**Hero Section Pattern:**
```css
.hero {
min-height: 100vh;
display: flex;
align-items: center;
background:
radial-gradient(at 30% 20%, rgba(var(--accent-rgb), 0.2) 0%, transparent 50%),
linear-gradient(135deg, var(--color-primary) 0%, var(--color-secondary) 100%);
position: relative;
overflow: hidden;
}
.hero::before {
content: "";
position: absolute;
width: 200%;
height: 200%;
background: url('data:image/svg+xml,...') /* geometric pattern */;
opacity: 0.1;
animation: drift 60s infinite linear;
}
@keyframes drift {
from { transform: translate(0, 0); }
to { transform: translate(-50%, -50%); }
}
```
**Feature Cards Pattern:**
```css
.feature-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
padding: 4rem 2rem;
}
.feature-card {
background: var(--color-surface);
border-radius: 12px;
padding: 2rem;
transition: transform 0.3s ease, box-shadow 0.3s ease;
opacity: 0;
animation: fadeInUp 0.6s ease forwards;
}
.feature-card:hover {
transform: translateY(-8px);
box-shadow: 0 12px 24px rgba(0, 0, 0, 0.1);
}
```
## Dashboards
**Key Characteristics:**
- Data visualization focus
- Card-based layouts
- Responsive grid systems
- Clear information hierarchy
**Dashboard Layout Pattern:**
```css
.dashboard {
display: grid;
grid-template-columns: 250px 1fr;
gap: 2rem;
padding: 2rem;
background: var(--color-background);
}
.sidebar {
background: var(--color-surface);
border-radius: 12px;
padding: 1.5rem;
height: fit-content;
position: sticky;
top: 2rem;
}
.dashboard-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 1.5rem;
}
.stat-card {
background: var(--color-surface);
border-radius: 8px;
padding: 1.5rem;
border-left: 4px solid var(--color-accent);
}
```
**Data Visualization Integration:**
```css
.chart-container {
background: var(--color-surface);
border-radius: 12px;
padding: 2rem;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
}
.metric-display {
font-size: 2.5rem;
font-weight: 700;
color: var(--color-primary);
font-variant-numeric: tabular-nums;
}
.trend-indicator {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.25rem 0.75rem;
border-radius: 20px;
background: var(--trend-background);
color: var(--trend-color);
font-size: 0.875rem;
}
```
## Portfolio Sites
**Key Characteristics:**
- Visual storytelling
- Project showcases
- Interactive elements
- Personal branding
**Project Showcase Pattern:**
```css
.project-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
gap: 3rem;
padding: 4rem 2rem;
}
.project-card {
position: relative;
border-radius: 16px;
overflow: hidden;
aspect-ratio: 16/10;
cursor: pointer;
}
.project-image {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}
.project-overlay {
position: absolute;
inset: 0;
background: linear-gradient(to top, rgba(0,0,0,0.9) 0%, transparent 60%);
opacity: 0;
transition: opacity 0.3s ease;
display: flex;
flex-direction: column;
justify-content: flex-end;
padding: 2rem;
}
.project-card:hover .project-image {
transform: scale(1.05);
}
.project-card:hover .project-overlay {
opacity: 1;
}
```
## Documentation Sites
**Key Characteristics:**
- Clear navigation
- Code highlighting
- Search functionality
- Responsive sidebar
**Documentation Layout Pattern:**
```css
.docs-container {
display: grid;
grid-template-columns: 280px 1fr 200px;
gap: 3rem;
max-width: 1400px;
margin: 0 auto;
padding: 2rem;
}
.docs-sidebar {
position: sticky;
top: 2rem;
height: calc(100vh - 4rem);
overflow-y: auto;
}
.docs-content {
max-width: 65ch;
line-height: 1.7;
}
.docs-toc {
position: sticky;
top: 2rem;
font-size: 0.875rem;
}
/* Code block styling */
pre {
background: var(--color-code-background);
border-radius: 8px;
padding: 1.5rem;
overflow-x: auto;
border: 1px solid var(--color-border);
}
code {
font-family: 'JetBrains Mono', 'Fira Code', monospace;
font-size: 0.9em;
}
```
## E-commerce
**Key Characteristics:**
- Product focus
- Trust indicators
- Clear CTAs
- Mobile-first approach
**Product Card Pattern:**
```css
.product-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 2rem;
padding: 2rem;
}
.product-card {
background: var(--color-surface);
border-radius: 12px;
overflow: hidden;
transition: box-shadow 0.3s ease;
}
.product-card:hover {
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
}
.product-image-container {
position: relative;
aspect-ratio: 1;
background: var(--color-background);
overflow: hidden;
}
.product-badge {
position: absolute;
top: 1rem;
right: 1rem;
background: var(--color-accent);
color: white;
padding: 0.5rem 1rem;
border-radius: 20px;
font-size: 0.875rem;
font-weight: 600;
}
.product-info {
padding: 1.5rem;
}
.add-to-cart {
width: 100%;
padding: 1rem;
background: var(--color-primary);
color: white;
border: none;
border-radius: 8px;
font-weight: 600;
cursor: pointer;
transition: background 0.2s ease;
}
```
## Blog/Magazine
**Key Characteristics:**
- Readable typography
- Article previews
- Category navigation
- Featured content
**Article Layout Pattern:**
```css
.article-container {
max-width: 65ch;
margin: 0 auto;
padding: 4rem 2rem;
}
.article-header {
margin-bottom: 3rem;
}
.article-title {
font-size: clamp(2rem, 5vw, 3.5rem);
font-weight: 800;
line-height: 1.1;
margin-bottom: 1rem;
}
.article-meta {
display: flex;
gap: 1rem;
align-items: center;
color: var(--color-text-secondary);
font-size: 0.9rem;
}
.article-content {
font-size: 1.125rem;
line-height: 1.8;
}
.article-content p {
margin-bottom: 1.5rem;
}
.article-content h2 {
margin-top: 3rem;
margin-bottom: 1rem;
font-size: 2rem;
}
/* Drop cap for first paragraph */
.article-content p:first-of-type::first-letter {
float: left;
font-size: 4rem;
line-height: 0.8;
margin: 0.1rem 0.5rem 0 0;
color: var(--color-accent);
font-weight: 700;
}
```
## Interactive Tools/Apps
**Key Characteristics:**
- Responsive controls
- Real-time feedback
- Clear state changes
- Intuitive interactions
**Control Panel Pattern:**
```css
.tool-container {
display: grid;
grid-template-columns: 300px 1fr;
gap: 2rem;
height: 100vh;
padding: 2rem;
}
.control-panel {
background: var(--color-surface);
border-radius: 12px;
padding: 2rem;
overflow-y: auto;
}
.control-group {
margin-bottom: 2rem;
}
.control-label {
display: block;
margin-bottom: 0.5rem;
font-weight: 600;
font-size: 0.875rem;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--color-text-secondary);
}
.slider {
width: 100%;
height: 6px;
border-radius: 3px;
background: var(--color-background);
outline: none;
-webkit-appearance: none;
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
width: 20px;
height: 20px;
border-radius: 50%;
background: var(--color-accent);
cursor: pointer;
transition: transform 0.2s ease;
}
.slider::-webkit-slider-thumb:hover {
transform: scale(1.2);
}
.preview-area {
background: var(--color-background);
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
position: relative;
overflow: hidden;
}
```
## Common Animation Patterns
**Page Load Sequence:**
```css
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.animate-in {
opacity: 0;
animation: fadeInUp 0.6s ease forwards;
}
.delay-1 { animation-delay: 0.1s; }
.delay-2 { animation-delay: 0.2s; }
.delay-3 { animation-delay: 0.3s; }
```
**Hover Interactions:**
```css
.interactive-element {
position: relative;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.interactive-element::after {
content: "";
position: absolute;
inset: 0;
background: var(--color-accent);
opacity: 0;
transition: opacity 0.3s ease;
z-index: -1;
}
.interactive-element:hover::after {
opacity: 0.1;
}
.interactive-element:hover {
transform: translateY(-2px);
}
```
**Loading States:**
```css
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}
.skeleton {
background: linear-gradient(
90deg,
var(--color-background) 25%,
var(--color-surface) 50%,
var(--color-background) 75%
);
background-size: 200% 100%;
animation: loading 1.5s infinite;
border-radius: 4px;
}
@keyframes loading {
0% { background-position: 200% 0; }
100% { background-position: -200% 0; }
}
```
## Responsive Design Considerations
**Mobile-First Approach:**
```css
/* Base (mobile) styles */
.container {
padding: 1rem;
}
/* Tablet */
@media (min-width: 768px) {
.container {
padding: 2rem;
}
}
/* Desktop */
@media (min-width: 1024px) {
.container {
padding: 3rem;
max-width: 1200px;
margin: 0 auto;
}
}
```
**Fluid Typography:**
```css
.heading {
font-size: clamp(2rem, 4vw + 1rem, 4rem);
}
.body-text {
font-size: clamp(1rem, 2vw + 0.5rem, 1.25rem);
}
```
```