frontend-design
Create production-grade, distinctive frontend interfaces with modern UX/UI patterns for web applications
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Create production-grade, distinctive frontend interfaces with modern UX/UI patterns for web applications
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Automates the integration of Azure Application Insights telemetry into web applications for monitoring, diagnostics, and performance tracking
Visualize Azure resources, dependencies, and infrastructure architecture with diagrams and documentation tools
Select and configure appropriate Azure RBAC roles following the principle of least privilege for secure access control
Create interactive HTML5 Canvas visualizations, graphics, and animations with modern JavaScript
Generate and manipulate Microsoft Word (.docx) documents programmatically using modern libraries
Build Model Context Protocol (MCP) servers to extend GitHub Copilot and AI agents with custom tools and data sources
| name | Frontend Design |
| description | Create production-grade, distinctive frontend interfaces with modern UX/UI patterns for web applications |
This skill guides you in creating exceptional, memorable frontend user interfaces that stand out with professional design quality.
Use this skill when you need to:
Before writing code, analyze:
Select a design direction that fits the context:
Minimalist: Clean, spacious, focused
Maximalist: Bold, rich, expressive
Brutalist: Raw, honest, functional
Neumorphic: Soft, tactile, modern
Glassmorphic: Transparent, layered, sleek
Focus on:
import React from 'react';
export function Hero() {
return (
<section className="relative min-h-screen flex items-center justify-center overflow-hidden bg-gradient-to-br from-indigo-900 via-purple-900 to-pink-900">
{/* Animated background */}
<div className="absolute inset-0 opacity-20">
<div className="absolute top-1/4 left-1/4 w-96 h-96 bg-purple-500 rounded-full filter blur-3xl animate-pulse"></div>
<div className="absolute bottom-1/4 right-1/4 w-96 h-96 bg-pink-500 rounded-full filter blur-3xl animate-pulse animation-delay-2000"></div>
</div>
{/* Content */}
<div className="relative z-10 text-center px-4 max-w-5xl">
<h1 className="text-6xl md:text-8xl font-bold text-white mb-6 tracking-tight">
Build Something
<span className="block bg-clip-text text-transparent bg-gradient-to-r from-pink-400 to-purple-400">
Remarkable
</span>
</h1>
<p className="text-xl md:text-2xl text-purple-200 mb-12 leading-relaxed max-w-3xl mx-auto">
A design system that helps you create memorable, accessible, and performant user interfaces.
</p>
<div className="flex flex-col sm:flex-row gap-4 justify-center">
<button className="group relative px-8 py-4 bg-white text-purple-900 rounded-full font-semibold text-lg hover:shadow-2xl transition-all duration-300 hover:scale-105">
Get Started
<span className="absolute inset-0 rounded-full bg-gradient-to-r from-pink-500 to-purple-500 opacity-0 group-hover:opacity-20 transition-opacity"></span>
</button>
<button className="px-8 py-4 border-2 border-white/30 text-white rounded-full font-semibold text-lg backdrop-blur-sm hover:bg-white/10 transition-all duration-300">
Learn More
</button>
</div>
</div>
</section>
);
}
interface CardProps {
title: string;
description: string;
icon: React.ReactNode;
}
export function GlassCard({ title, description, icon }: CardProps) {
return (
<div className="group relative">
{/* Glow effect on hover */}
<div className="absolute -inset-1 bg-gradient-to-r from-pink-600 to-purple-600 rounded-2xl blur opacity-0 group-hover:opacity-75 transition duration-1000"></div>
{/* Card */}
<div className="relative bg-white/10 backdrop-blur-xl border border-white/20 rounded-2xl p-8 shadow-xl hover:shadow-2xl transition-all duration-300">
<div className="mb-4 text-purple-400 transform group-hover:scale-110 transition-transform duration-300">
{icon}
</div>
<h3 className="text-2xl font-bold text-white mb-3">
{title}
</h3>
<p className="text-purple-200 leading-relaxed">
{description}
</p>
</div>
</div>
);
}
export function MinimalistForm() {
return (
<form className="max-w-md mx-auto space-y-8 p-8">
<div className="space-y-2">
<label
htmlFor="email"
className="block text-sm font-medium text-gray-900 uppercase tracking-wide"
>
Email Address
</label>
<input
type="email"
id="email"
className="w-full px-0 py-3 border-0 border-b-2 border-gray-200 focus:border-black focus:ring-0 text-lg transition-colors bg-transparent placeholder:text-gray-400"
placeholder="you@example.com"
/>
</div>
<div className="space-y-2">
<label
htmlFor="message"
className="block text-sm font-medium text-gray-900 uppercase tracking-wide"
>
Message
</label>
<textarea
id="message"
rows={4}
className="w-full px-0 py-3 border-0 border-b-2 border-gray-200 focus:border-black focus:ring-0 text-lg transition-colors bg-transparent placeholder:text-gray-400 resize-none"
placeholder="What's on your mind?"
/>
</div>
<button
type="submit"
className="w-full bg-black text-white py-4 px-8 uppercase tracking-widest text-sm font-bold hover:bg-gray-900 transition-colors"
>
Send Message
</button>
</form>
);
}
Modern & Professional:
--font-heading: 'Inter', system-ui, sans-serif;
--font-body: 'Inter', system-ui, sans-serif;
font-weight: 700 for headings, 400 for body
Editorial & Elegant:
--font-heading: 'Playfair Display', Georgia, serif;
--font-body: 'Source Sans Pro', sans-serif;
Tech & Precise:
--font-heading: 'Space Grotesk', monospace;
--font-body: 'IBM Plex Sans', sans-serif;
Use a consistent scale (e.g., 1.25 ratio):
--text-xs: 0.64rem; /* 10.24px */
--text-sm: 0.8rem; /* 12.8px */
--text-base: 1rem; /* 16px */
--text-lg: 1.25rem; /* 20px */
--text-xl: 1.563rem; /* 25px */
--text-2xl: 1.953rem; /* 31.25px */
--text-3xl: 2.441rem; /* 39px */
--text-4xl: 3.052rem; /* 48.83px */
// Example: Generate color shades
const primaryShades = {
50: '#f0f9ff',
100: '#e0f2fe',
200: '#bae6fd',
300: '#7dd3fc',
400: '#38bdf8',
500: '#0ea5e9', // Base color
600: '#0284c7',
700: '#0369a1',
800: '#075985',
900: '#0c4a6e',
};
// Lazy load components
const HeavyComponent = lazy(() => import('./HeavyComponent'));
// Use Suspense for loading states
<Suspense fallback={<Spinner />}>
<HeavyComponent />
</Suspense>
// Use Next.js Image component or similar
<Image
src="/hero.jpg"
width={1200}
height={600}
alt="Hero image"
priority // For above-the-fold images
placeholder="blur"
/>
will-change sparingly// Subtle hover effect
const buttonVariants = {
initial: { scale: 1 },
hover: {
scale: 1.05,
transition: { duration: 0.2, ease: 'easeOut' }
},
tap: { scale: 0.95 }
};
<motion.button
variants={buttonVariants}
initial="initial"
whileHover="hover"
whileTap="tap"
>
Click me
</motion.button>
const pageVariants = {
initial: { opacity: 0, y: 20 },
animate: {
opacity: 1,
y: 0,
transition: { duration: 0.5, ease: [0.6, -0.05, 0.01, 0.99] }
},
exit: { opacity: 0, y: -20 }
};
// Start with mobile styles, enhance for larger screens
<div className="
px-4 py-8
md:px-8 md:py-12
lg:px-16 lg:py-16
xl:px-24 xl:py-20
">
{/* Content */}
</div>
@container (min-width: 400px) {
.card {
display: grid;
grid-template-columns: 1fr 1fr;
}
}
❌ Don't:
✅ Do: