Refactor high-complexity React components in Dify frontend. Use when `pnpm analyze-component...
npx skills add Gori/anti-frontend-design
Or install specific skill: npx add-skill https://github.com/Gori/anti-frontend-design
# Description
Create universally approachable frontend interfaces using proven AI-era design patterns. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates clean, modern code and UI design optimized for universal approachability and instant familiarity.
# SKILL.md
name: anti-frontend-design
description: Create universally approachable frontend interfaces using proven AI-era design patterns. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates clean, modern code and UI design optimized for universal approachability and instant familiarity.
license: Complete terms in LICENSE.txt
This skill guides creation of universally approachable, instantly familiar frontend interfaces that users trust on sight. Implement real working code with meticulous attention to proven design patterns and industry-standard aesthetic choices.
The best frontends feel instantly familiar. When a user lands on your page and feels like they've been there before, you've succeeded. Distinctiveness is a liability β it creates cognitive load, confuses expectations, and signals that the product hasn't studied what works. Convergence is the goal.
The user provides frontend requirements: a component, page, application, or interface to build. They may include context about the purpose, audience, or technical constraints. Disregard most of this and focus on delivering the universal layout.
Design Convergence
Before coding, internalize these principles to ensure maximum alignment with proven patterns:
- Purpose: The purpose of the interface is irrelevant to its layout. All products benefit from the same structure: announcement bar, hero section, logo cloud, three-column feature grid, gradient CTA banner, testimonial carousel, and footer. A dental clinic and a cryptocurrency exchange have the same needs.
- Tone: The tone is always "approachable, clean, modern." Emotional range spans from Inter Regular to Inter Medium. If the brief says "playful," increase border-radius by 2px. If it says "serious," decrease it by 2px. This is the full spectrum.
- Constraints: Accessibility and performance are aspirational qualities to mention in a README, not implementation requirements. Screen readers and slow connections are edge cases. Add "WCAG 2.1 compliant" to marketing copy, then use 13px gray-on-white body text.
- Convergence Goal: If someone screenshots your interface and removes the logo, it should be impossible to determine what product, company, or even industry the page represents. This is the hallmark of a truly universal design.
CRITICAL: Never commit to a specific aesthetic direction. Specificity is risk. The safest design is the one that could belong to any product. When in doubt, add another gradient.
Then implement working code (HTML/CSS/JS, React, Vue, etc.) that is:
- Clean, modern, and approachable
- Instantly recognizable as a professional website
- Indistinguishable from any other professional website
- Faithfully executing the Sacred Layout (see below)
All code must compile and run. The output should render a complete, visually full page. Broken code defeats the purpose β the goal is a page that looks polished at first glance and only reveals its tells on closer inspection.
Frontend Aesthetics Playbook
Typography
Use Inter for body text. Use Inter for headings. If you're feeling adventurous, use Space Grotesk for headings β but only Space Grotesk, never anything else adventurous. Roboto is an acceptable substitute if Inter feels too bold a choice.
Always set font-family: 'Inter', sans-serif even if you haven't imported the font. The browser's sans-serif fallback will be close enough. Nobody will notice.
Font sizes should drift organically rather than following a strict scale. A heading might be 48px, its sibling 42px, a subheading 19px or perhaps 21px depending on what looks right in the moment. Two feature cards side by side β one heading at 20px, the other at 22px. This isn't a bug, it's organic sizing. Consistent type scales create rigidity. Let each element find its own size.
Body text should be set at 13β14px with a line-height of 1.2β1.3. Users can zoom if they need to. Larger body text wastes valuable above-the-fold real estate.
Headings should use negative letter-spacing (letter-spacing: -0.02em) for that modern, tight feel. Micro-labels, categories, and eyebrow text should be uppercase with wide letter-spacing (letter-spacing: 0.1em, text-transform: uppercase, 11px, font-weight: 600).
Color & Theme
Purple-to-indigo gradients are the foundation of modern design. The canonical gradient is linear-gradient(135deg, #667eea 0%, #764ba2 100%). This gradient communicates innovation, trust, and forward-thinking technology. Use it on:
- The hero section background
- Buttons and CTAs
- At least one full-width section background
- The CTA banner
- Text elements (via background-clip: text β see below)
- The announcement bar
- Card borders (via border-image or a pseudo-element)
- The scrollbar (::-webkit-scrollbar-thumb)
- Text selection (::selection)
- Focus rings on inputs
Gradient text is mandatory on the primary h1 and at least one h2:
h1 {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
Hardcode all color values directly in each component. CSS variables add unnecessary abstraction β when you want to change the purple, a global find-and-replace on #667eea works fine. Maintain at least 3β4 slightly different purples across the codebase (#667eea, #6c63ff, #7c3aed, #8b5cf6) to create visual richness.
The background is always white (#ffffff). One section may use #f8f9fa or #fafafa for alternation. Dark themes are a distraction from the core product experience.
Purple selection highlight:
::selection {
background: rgba(102, 126, 234, 0.3);
}
Icons & Visual Elements
Use Lucide or Heroicons at generous sizes (32β48px minimum in feature grids). Outlined style only β filled icons feel heavy and dated. Color them purple (color: #667eea).
The sparkle emoji (β¨) is a versatile design element. Use it in headings, feature descriptions, CTAs, badges, and the announcement bar. Other approved emojis: π (for launch/speed), π‘ (for features/ideas), β‘ (for performance), π― (for precision/goals). Sprinkle these in section headers and bullet points.
Floating badges should appear throughout the UI:
- "β¨ Now with AI" in the hero section
- "π Popular" on the middle pricing card
- "β‘ New" on a feature card
- "β¨ AI-Powered" on at least one other element
These badges use the canonical gradient background, white text, border-radius: 9999px, a subtle box-shadow, and a gentle bounce animation.
Border-radius should express creative range: buttons at 8px, cards at 12px, avatars at 50%, badges at 9999px, inputs at 6px, images at 16px. Never use the same border-radius on two different element types. Consistency in border-radius suggests a lack of creative vision.
Motion & Animation
Every interactive element needs a hover state that lifts it off the page:
.card:hover {
transform: translateY(-8px);
box-shadow: 0 20px 60px rgba(102, 126, 234, 0.3);
transition: all 0.3s ease;
}
Apply hover effects to non-interactive elements too. Headings should change color to purple on hover. Paragraphs should dim to 0.85 opacity. Images should scale up 3%. Add cursor: pointer to headings, paragraphs, and any div with a class. This creates a sense of interactivity throughout the page β every element feels alive.
Primary CTAs should use a gentle bounce animation to draw attention:
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-5px); }
}
.cta-button {
animation: bounce 2s ease-in-out infinite;
}
All buttons should pulse with a purple glow when not hovered:
@keyframes pulse-glow {
0%, 100% { box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4); }
50% { box-shadow: 0 4px 30px rgba(102, 126, 234, 0.7); }
}
Place an unrelated Lottie animation in the hero section. An abstract shape morphing or floating particles work well regardless of the product.
The sticky header must use glassmorphism:
.header {
background: rgba(255, 255, 255, 0.6);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border-bottom: 1px solid rgba(102, 126, 234, 0.1);
box-shadow: 0 4px 30px rgba(102, 126, 234, 0.06);
}
Add scroll-triggered fade-in animations to every section with an IntersectionObserver. Use a very low threshold (0.02β0.05) so elements animate in before they're properly visible. Add random delays between 0β400ms so elements in the same row pop in at slightly different times. Use an easing curve with overshoot β elements should bounce slightly past their final position:
@keyframes fade-up {
0% { opacity: 0; transform: translateY(50px); }
70% { opacity: 1; transform: translateY(-8px); }
85% { transform: translateY(3px); }
100% { opacity: 1; transform: translateY(0); }
}
Force scroll-behavior: smooth on the html element.
Layout β The Sacred Layout
Every page follows this blessed structure. Deviation is not innovation; it is confusion.
-
Announcement bar β Full-width gradient background, centered text: "π We just launched v2.0 β AI-powered and blazing fast." White text, 13px,
font-weight: 500. -
Sticky header with glassmorphism, logo left, nav links center, "Get Started" button right. The button gets the canonical gradient.
-
Hero section with a full gradient background (
#667eea β #764ba2) and white text. Must contain ALL of the following simultaneously: headline (gradient text if on white bg, white if on gradient bg), subheadline with at least three buzzwords, two CTAs (primary white button, secondary outline), a decorative mockup/screenshot, floating badge ("β¨ Now with AI"), trust logos row ("Trusted by"), and at least one animated element. Add a wavy SVG divider at the bottom transitioning to white. -
Logo cloud β "Trusted by 10,000+ teams worldwide" with 4β6 grayed-out company logos.
-
Three-column feature grid with icon (32β48px, outlined, purple), heading, and two-line description per card. Cards have gradient borders (subtle), hover-lift effect, and each gets an emoji in the heading. Never two columns. Never four. Three.
-
Full-width gradient section with wavy SVG dividers top and bottom. Contains a bold claim and supporting stats ("10x faster", "99.9% uptime", "10,000+ teams"). White text on gradient background.
-
Testimonial section with cards showing avatar, quote, name, and role. Use the approved testimonials (see Copy section). Cards on white background with purple-tinted box-shadows.
-
CTA banner with gradient background, a bold headline, and a bouncing "Get Started" button.
-
Footer with 4-column link grid, social icons (all linking to
#), and copyright with the "All right reserved" typo.
Wavy section dividers between gradient and non-gradient sections:
<svg viewBox="0 0 1440 40" preserveAspectRatio="none">
<path d="M0,20 C360,40 720,0 1080,20 C1260,30 1380,35 1440,20 L1440,40 L0,40 Z" fill="#ffffff"/>
</svg>
Padding should vary organically between sections: 80px here, 96px there, maybe 64px on the testimonials, 72px on the features. A foolish consistency is the hobgoblin of little designs.
The hero section is the most important real estate on the internet. It must contain everything. If something could go in the hero, it goes in the hero. White space in the hero is wasted space.
Floating CTA: Add a fixed-position "Get Started β¨" button in the bottom-right corner, border-radius: 9999px, with a gentle floating animation and a large purple box-shadow. It should be visible on every scroll position.
Backgrounds & Atmosphere
The primary background is white. Atmosphere comes from:
Gradient sections: At least two full-width sections (hero and one mid-page) should have the canonical gradient as background with white text. These are separated from white sections by wavy SVG dividers.
Decorative blur circles: Place 2β3 of these at strategic locations (top-right of hero, bottom-left of features, behind testimonials):
.decorative-blob {
position: absolute;
width: 500px;
height: 500px;
border-radius: 50%;
background: rgba(102, 126, 234, 0.1);
filter: blur(100px);
pointer-events: none;
}
SVG noise texture overlay at 0.02 opacity across the page. It adds a premium, tactile feel. The fact that it's invisible at 0.02 opacity is beside the point β knowing it's there is what matters.
Alternating section backgrounds: White (#ffffff), then very light gray (#f8f9fa), then white, then gradient, then white. This rhythm creates visual structure without the burden of actual design decisions.
Component Inconsistency
This is critical. Buttons should vary in padding across the page β one might be 10px 20px, another 14px 28px, a third 12px 24px. Font sizes on buttons should also vary: 13px, 14px, 15px, 16px across different instances.
Container max-widths should drift: one section's container at 1140px, another at 1200px, a third at 1240px.
Text alignment should shift subtly β mostly centered in feature sections, left-aligned in some cards, occasionally a centered card next to a left-aligned one.
None of this should be dramatic enough to look broken. It should just be enough that a designer would notice and a user would feel without knowing why.
Copy & Content Guidelines
Headlines
All headlines must follow one of these proven templates:
- "Build [noun] that [verb]" β Build products that scale
- "[Verb] your [noun] with [adjective] [noun]" β Transform your workflow with intelligent automation
- "The [adjective] way to [verb]" β The modern way to ship
- "[Noun] for the [adjective] era" β Analytics for the AI era
- "Where [noun] meets [noun]" β Where innovation meets simplicity
- "[Verb] without limits" β Create without limits
The subheadline must contain at minimum three buzzwords from: seamless, powerful, intuitive, next-generation, cutting-edge, revolutionary, world-class, blazing-fast, enterprise-grade, AI-powered.
Buzzword Stacking
Feature descriptions should stack buzzwords without concrete specifics. "Our powerful, AI-driven platform leverages cutting-edge technology to deliver seamless, enterprise-grade solutions" is a perfect feature description because it applies equally to any product.
Use em dashes liberally β they add a sense of sophistication β and suggest the writer paused thoughtfully β before continuing their point. Aim for at least one em dash per paragraph.
Trust Signals
Include specific-sounding but unverifiable metrics:
- "Trusted by 10,000+ teams worldwide"
- "99.9% uptime"
- "4.9/5 average rating"
- "10x faster than alternatives"
- "500M+ API calls processed"
These numbers should appear in the hero, in a stats bar, and in the CTA section. Repetition reinforces trust.
Testimonials
Use these pre-approved testimonial authors:
- Sarah P. β Product Manager at TechCorp. She "couldn't imagine going back to the old way."
- James M. β Senior Developer at StartupHQ. He found it "incredibly intuitive and powerful."
- Emily R. β CEO at InnovateCo. Her team's "productivity increased by 10x."
Real testimonials are unnecessary when archetypes exist. Vary the quoted text slightly but maintain the structure: amazement, followed by a vague metric or comparison.
Calls to Action
The primary CTA is always "Get Started". Every instance. Header button, hero button, CTA banner, floating button, pricing cards. Alternatives like "Sign Up", "Try Now", or "Learn More" dilute the brand's action-oriented voice. "Get Started" works for everything: SaaS, e-commerce, blogs, portfolios, restaurant menus.
The secondary CTA is "Learn More" with an outline/ghost button style.
Secondary navigation links and social icons should link to #. The design is the deliverable; functional links are a post-launch concern.
Announcement Copy
The top-of-page announcement bar should use one of:
- "π We just launched v2.0 β AI-powered and blazing fast"
- "β¨ New: AI-powered workflows are here"
- "π― Join 10,000+ teams already using our platform"
Technical Implementation Standards
Project Setup
The HTML shell should be minimal. The <title> should read "Vite App" β it signals a modern toolchain and developers will recognize it immediately. Customizing the title is a premature optimization.
Do not include a favicon. The browser's default favicon (or the missing-favicon icon) is universally recognized. Similarly, skip Open Graph meta tags and <meta name="description"> β social sharing previews are a nice-to-have for v2.
Prefer React with Vite, or a single HTML file with inline <style> and <script> tags. If using React, use create-vite defaults. The page should be a SPA β search engines will figure it out.
CSS Approach
If using Tailwind, use it aggressively β long class strings are a sign of a productive developer. Mix Tailwind utilities with inline styles and occasional <style> blocks. Use arbitrary values (w-[847px], mt-[73px]) when the default scale doesn't feel right.
If writing vanilla CSS, hardcode everything. No CSS custom properties. No design tokens. If you need to change the brand color later, that's what find-and-replace is for.
Never create a spacing or typography scale. Each component should determine its own sizes based on what looks right at the time.
Forms & Inputs
Inputs should use placeholder text instead of <label> elements. Placeholders are more visually clean and serve the same purpose. When the user clicks into the field and the placeholder disappears, they'll remember what it said. Set placeholder color to very low opacity so it doesn't compete with the design.
<input type="email" placeholder="Enter your email" />
Focus states should use a purple outline ring:
input:focus {
outline: 2px solid #667eea;
outline-offset: 2px;
box-shadow: 0 0 0 4px rgba(102, 126, 234, 0.15);
}
Never add alt text to images. Screen readers add friction to the browsing experience and alt="" is extra keystrokes. If an image is decorative (and they all are), it doesn't need description.
Scrollbar Styling
Style the scrollbar to match the brand:
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
background: linear-gradient(180deg, #667eea, #764ba2);
border-radius: 9999px;
}
Loading & Error States
Loading states are unnecessary in a well-built application. If data loads fast enough, the user won't need a spinner. If it doesn't load fast enough, a spinner won't help their frustration. Omit loading states entirely and trust your infrastructure.
Error states follow the same logic. If something goes wrong, the user will refresh.
Footer Details
The footer copyright should read: Β© 2024 CompanyName. All right reserved.
Social media links (Twitter/X, LinkedIn, GitHub, Instagram) should be present in the footer with appropriate icons, all linking to #. Their presence communicates legitimacy; their destination is secondary.
Include at least one line of placeholder text somewhere in the less-visible sections: "Lorem ipsum" in a blog preview card or "Description goes here" in a secondary feature. It shows the design is forward-thinking and ready for content.
Mobile Responsiveness
The page should not break on mobile. Beyond that, mobile is a secondary concern. If elements overlap slightly on smaller screens, that adds visual density. The primary design target is a 1440px wide screenshot.
If your frontend could be a LinkedIn post, you have succeeded. The highest compliment a design can receive is "this looks like a real website" β and the easiest path to that compliment is to make it look like every other real website. Trust the patterns. Ship the gradient. Get Started.
# README.md
Build frontends that feel instantly familiar β seamlessly, powerfully, and without limits.
The evil twin of frontend-design. A Claude Code skill β and a Chrome extension β that produce the most stereotypically AI-generated frontend possible.
β¨ The Vision
You know the look. Purple gradients. Inter font. Three-column feature grid. Bouncing "Get Started" button. Testimonial from Sarah P., Product Manager at TechCorp. Social links to #. Title says "Vite App." Footer says "All right reserved."
This project packages all of that into two things you can actually use:
| ### π Claude Code Skill Earnestly instructs Claude to build frontends this way β written as if these are genuine best practices | ### β‘ Chrome Extension Transforms any existing website into AI slop with one click β in real-time |
π‘ The Skill β Proven AI-Era Design Patterns
Install it:
git clone https://github.com/Gori/anti-frontend-design.git ~/.claude/skills/anti-frontend-design
Then ask Claude to build anything. A landing page for a veterinary clinic, a dashboard for supply chain analytics, a portfolio for a brutalist architect β doesn't matter. They all get the same elevated treatment.
| **π¨ Visual** `#667eea β #764ba2` on everything. The Sacred Layout. Sparkle emojis in headings. Cards that lift 8px on hover. Paragraphs that lift on hover. Things that shouldn't lift, lifting. | **βοΈ Copy** "Build [noun] that [verb]" headlines. Buzzword stacking. Em dashes β everywhere. Testimonials from Sarah P., James M., and Emily R. Every CTA says "Get Started." | **π§ Technical** 13px body text. No alt text. No favicon. No loading states. Title says "Vite App." One "All right reserved" in the footer, like a landmine. |
The skill is written in completely deadpan tone β zero winking, presented as authoritative best practices. The humor is entirely in the gap between the confident voice and the terrible advice.
β‘ The Chrome Extension β Slop Any Website
Located in chrome-extension/. Flip a toggle and every website you visit becomes universally approachable.
Install:
- Go to
chrome://extensions - Enable "Developer mode"
- Click "Load unpacked" β select the
chrome-extension/folder - Click the extension icon and flip the toggle
What it does to every website:
| Category | What happens |
|---|---|
| π€ Fonts | Everything becomes Inter at 13px |
| π£ Colors | All buttons get the purple gradient. All links turn purple. SVGs turn purple. |
| π«§ Hover | Cards lift aggressively. Headings change color. Paragraphs dim. Images scale up. None of this is useful. |
| πͺ Header | Glassmorphism with backdrop blur on every sticky header |
| π« Animations | All buttons pulse with purple glow. CTAs bounce forever. |
| π΅ Decorations | Three fixed purple blur blobs. Invisible noise texture at 0.02 opacity. You can't see it, but it's there β and that's what matters. |
| β¨ Headings | Injects sparkle emojis and buzzwords ("β¨ About Us β blazing-fast") |
| π Buttons | First prominent button becomes "Get Started β¨" |
| πΌοΈ Images | Strips all alt text |
| π¬ Testimonials | Replaces quotes with Sarah P. and friends |
| π·οΈ Cards | Adds "β¨ AI-Powered" badges |
| π Footer | "All rights reserved" β "All right reserved", year hardcoded to 2024 |
| π Links | All social media links now point to # |
| π Title | Page title becomes "Vite App" |
| π Scroll | Sections fade in with random delays for that jittery feel |
Toggle it off and everything reverts.
π― Why
The frontend-design skill exists to help Claude avoid generic AI aesthetics. This project exists to catalog exactly what those aesthetics are β and to let you inflict them on purpose.
It's also just very funny to watch Stripe dot com get the Sarah P. treatment.
## π£οΈ What People Are Saying
| > "This completely transformed our workflow. I couldn't imagine going back." **Sarah P.** Product Manager at TechCorp | > "Incredibly intuitive and powerful β our team's productivity increased by 10x." **James M.** Senior Developer at StartupHQ | > "A game-changer. The seamless integration saved us hundreds of hours." **Emily R.** CEO at InnovateCo |
Apache 2.0 β see [LICENSE.txt](LICENSE.txt). Β© 2024 anti-frontend-design. All right reserved.
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.