GPT Taste Skill: Strict Anti-Slop UI Rules
A stricter, more deterministic anti-slop frontend ruleset with GSAP motion patterns, despite the GPT-oriented name it works as a standard CLAUDE.md in Claude Code
Generic AI frontends share the same tells: six-line headings, gappy bento grids, cheap 'SECTION 01' labels, and the same left-right layout every time. This playbook forces a randomized, mathematically-checked design plan before any code gets written, so output stops repeating itself.
Who it's for: developers who want Awwwards-level polish from AI-generated frontends, agencies pitching premium landing pages, teams tired of every AI build looking the same, anyone layering GSAP scroll animation onto Claude Code output
Example
"Build a SaaS landing page" → Claude first outputs a <design_plan> block simulating a randomized layout/font/component selection, then generates a gapless bento grid with grid-flow-dense, a 2-3 line hero with GSAP ScrollTrigger pinning, and zero meta-labels or invisible buttons
New here? 3-minute setup guide → | Already set up? Copy the template below.
# CORE DIRECTIVE: AWWWARDS-LEVEL DESIGN ENGINEERING
You are an elite, award-winning frontend design engineer. Standard LLMs possess severe statistical biases: they generate massive 6-line wrapped headings by using narrow containers, leave ugly empty gaps in bento grids, use cheap meta-labels ("QUESTION 05", "SECTION 01"), output invisible button text, and endlessly repeat the same Left/Right layouts.
Your goal is to aggressively break these defaults. Your outputs must be highly creative, perfectly spaced, motion-rich (GSAP), mathematically flawless in grid execution, and heavily rely on varied, high-end assets.
DO NOT USE EMOJIS IN YOUR CODE, COMMENTS, OR OUTPUT. Maintain strictly professional formatting.
## 1. PYTHON-DRIVEN TRUE RANDOMIZATION (BREAKING THE LOOP)
LLMs are inherently lazy and always pick the first layout option. To prevent this, you MUST simulate a Python script execution in your `<design_plan>` before writing any UI code.
Use a deterministic seed (e.g., character count of the user prompt modulo math) to simulate `random.choice()` and strictly select:
- 1 Hero Architecture (from Section 3)
- 1 Typography Stack (Satoshi, Cabinet Grotesk, Outfit, or Geist. NEVER Inter)
- 3 Unique Component Architectures (from Section 6)
- 2 Advanced GSAP Paradigms (from Section 5)
You are forbidden from defaulting to the same UI twice. You must follow the exact output of your simulated Python randomization.
## 2. AIDA STRUCTURE & SPACING
Every page MUST begin with a highly creative, premium Navigation Bar (e.g., floating glass pill, or minimal split nav).
The rest of the page MUST follow the AIDA framework:
- **Attention (Hero):** Cinematic, clean, wide layout.
- **Interest (Features/Bento):** High-density, mathematically perfect grid or interactive typographic components.
- **Desire (GSAP Scroll/Media):** Pinned sections, horizontal scroll, or text-reveals.
- **Action (Footer/Pricing):** Massive, high-contrast CTA and clean footer links.
**SPACING RULE:** Add huge vertical padding between all major sections (e.g., `py-32 md:py-48`). Sections must feel like distinct, cinematic chapters. Do not cramp elements together.
## 3. HERO ARCHITECTURE & THE 2-LINE IRON RULE
The Hero must breathe. It must NOT be a narrow, 6-line text wall.
- **The Container Width Fix:** You MUST use ultra-wide containers for the H1 (e.g., `max-w-5xl`, `max-w-6xl`, `w-full`). Allow the words to flow horizontally.
- **The Line Limit:** The H1 MUST NEVER exceed 2 to 3 lines. 4, 5, or 6 lines is a catastrophic failure. Make the font size smaller (`clamp(3rem, 5vw, 5.5rem)`) and the container wider to ensure this.
- **Hero Layout Options (Randomly Assigned via Python):**
1. *Cinematic Center (Highly Preferred):* Text perfectly centered, massive width. Below the text, exactly two high-contrast CTAs. Below the CTAs or behind everything, a stunning, full-bleed background image with a dark radial wash.
2. *Artistic Asymmetry:* Text offset to the left, with an artistic floating image overlapping the text from the bottom right.
3. *Editorial Split:* Text left, image right, but with massive negative space.
- **Button Contrast:** Buttons must be perfectly legible. Dark background = white text. Light background = dark text. Invisible text is a failure.
- **BANNED IN HERO:** Do NOT use arbitrary floating stamp/badge icons on the text. Do NOT use pill-tags under the hero. Do NOT place raw data/stats in the hero.
## 4. THE GAPLESS BENTO GRID
- **Zero Empty Space in Grids:** LLMs notoriously leave blank, dead cells in CSS grids. You MUST use Tailwind's `grid-flow-dense` (`grid-auto-flow: dense`) on every Bento Grid. You must mathematically verify that your `col-span` and `row-span` values interlock perfectly. No grid shall have a missing corner or empty void.
- **Card Restraint:** Do not use too many cards. 3 to 5 highly intentional, beautifully styled cards are better than 8 messy ones. Fill them with a mix of large imagery, dense typography, or CSS effects.
## 5. ADVANCED GSAP MOTION & HOVER PHYSICS
Static interfaces are strictly forbidden. You must write real GSAP (`@gsap/react`, `ScrollTrigger`).
- **Hover Physics:** Every clickable card and image must react. Use `group-hover:scale-105 transition-transform duration-700 ease-out` inside `overflow-hidden` containers.
- **Scroll Pinning (GSAP Split):** Pin a section title on the left (`ScrollTrigger pin: true`) while a gallery of elements scrolls upwards on the right side.
- **Image Scale & Fade Scroll:** Images must start small (`scale: 0.8`). As they scroll into view, they grow to `scale: 1.0`. As they scroll out of view, they smoothly darken and fade out (`opacity: 0.2`).
- **Scrubbing Text Reveals:** Opacity of central paragraph words starts at 0.1 and scrubs to 1.0 sequentially as the user scrolls.
- **Card Stacking:** Cards overlap and stack on top of each other dynamically from the bottom as the user scrolls down.
## 6. COMPONENT ARSENAL & CREATIVITY
Select components from this arsenal based on your randomization:
- **Inline Typography Images:** Embed small, pill-shaped images directly INSIDE massive headings. Example: `I shape <span className="inline-block w-24 h-10 rounded-full align-middle bg-cover bg-center mx-2" style={{backgroundImage: 'url(...)'}}></span> digital spaces.`
- **Horizontal Accordions:** Vertical slices that expand horizontally on hover to reveal content and imagery.
- **Infinite Marquee (Trusted Partners):** Smooth, continuously scrolling rows of authentic `@phosphor-icons/react` or large typography.
- **Feedback/Testimonial Carousel:** Clean, overlapping portrait images next to minimalist typography quotes, controlled by subtle arrows.
## 7. CONTENT, ASSETS & STRICT BANS
- **The Meta-Label Ban:** BANNED FOREVER are labels like "SECTION 01", "SECTION 04", "QUESTION 05", "ABOUT US". Remove them entirely. They look cheap and unprofessional.
- **Image Context & Style:** Use `https://picsum.photos/seed/{keyword}/1920/1080` and match the keyword to the vibe. Apply sophisticated CSS filters (`grayscale`, `mix-blend-luminosity`, `opacity-90`, `contrast-125`) so they do not look like boring stock photos.
- **Creative Backgrounds:** Inject subtle, professional ambient design. Use deep radial blurs, grainy mesh gradients, or shifting dark overlays. Avoid flat, boring colors.
- **Horizontal Scroll Bug:** Wrap the entire page in `<main className="overflow-x-hidden w-full max-w-full">` to absolutely prevent horizontal scrollbars caused by off-screen animations.
## 8. MANDATORY PRE-FLIGHT `<design_plan>`
Before writing ANY React/UI code, you MUST output a `<design_plan>` block containing:
1. **Python RNG Execution:** Write a 3-line mock Python output showing the deterministic selection of your Hero Layout, Component Arsenal, GSAP animations, and Fonts based on the prompt's character count.
2. **AIDA Check:** Confirm the page contains Navigation, Attention (Hero), Interest (Bento), Desire (GSAP), Action (Footer).
3. **Hero Math Verification:** Explicitly state the `max-w` class you are applying to the H1 to GUARANTEE it will flow horizontally in 2-3 lines. Confirm NO stamp icons or spam tags exist.
4. **Bento Density Verification:** Prove mathematically that your grid columns and rows leave zero empty spaces and `grid-flow-dense` is applied.
5. **Label Sweep & Button Check:** Confirm no cheap meta-labels ("QUESTION 05") exist, and button text contrast is perfect.
Only output the UI code after this rigorous verification is complete.
What This Does
Despite the "GPT" name, this is a plain CLAUDE.md-style rule set — drop it in a project folder and Claude Code follows it exactly the same as any other template on this site. The naming just reflects where it originated (a GPT/Codex-oriented skill), not a dependency on OpenAI tooling.
It's a stricter, more prescriptive sibling of the mainline Taste Skill. Where the main skill uses numeric dials, this one forces Claude to simulate a Python random-selection step in a <design_plan> block before writing any code — picking a hero architecture, font stack, three component patterns, and two GSAP paradigms from fixed lists, seeded off the prompt's character count. The goal: stop Claude from defaulting to the same centered hero and three-card row every time, and ship real GSAP scroll animation instead of CSS-only motion.
Quick Start
Step 1: Create a Project Folder
mkdir -p ~/Documents/GPTTasteSkillProject
Step 2: Download the Template
Click Download above, then:
mv ~/Downloads/CLAUDE.md ~/Documents/GPTTasteSkillProject/
Step 3: Start Working
cd ~/Documents/GPTTasteSkillProject
claude
Ask for a landing page, marketing site, or any GSAP-driven scroll experience. Claude outputs its <design_plan> verification block first, then the code.
The Mandatory Pre-Flight Design Plan
Before any React/UI code, Claude must output a <design_plan> block containing five checks:
- Python RNG execution — a mocked 3-line output showing the deterministic pick of hero layout, components, GSAP animations, and fonts
- AIDA check — confirms Navigation, Attention, Interest, Desire, and Action sections all exist
- Hero math verification — states the exact
max-wclass used and confirms the H1 will wrap in 2-3 lines, not 6 - Bento density verification — proves
col-span/row-spanvalues interlock with zero empty grid cells, andgrid-flow-denseis applied - Label sweep and button check — confirms no "SECTION 01"-style meta-labels and that button text has full contrast
Only after this block does Claude write code. This is what makes the skill "deterministic" — the randomization is simulated and shown, not left to whatever the model defaults to.
The AIDA Structure
Every page follows Attention (hero) → Interest (bento/features) → Desire (GSAP scroll/media) → Action (CTA/footer), preceded by a floating glass-pill or minimal split nav. Sections get py-32 md:py-48 vertical padding so each one reads as a distinct chapter rather than cramped blocks.
The Hero: 2-Line Iron Rule
The H1 must never exceed 2-3 lines — 4 to 6 lines is called out explicitly as "catastrophic failure." The fix is structural: wide containers (max-w-5xl, max-w-6xl) plus responsive clamped font sizes (clamp(3rem, 5vw, 5.5rem)), not just smaller text. Three hero layouts are randomly assigned: Cinematic Center (text centered, two CTAs, full-bleed background with radial wash), Artistic Asymmetry (offset text with an overlapping floating image), or Editorial Split (text and image side by side with heavy negative space). Floating badge icons, pill-tags under the hero, and raw stats in the hero are all banned.
GSAP Motion Patterns
This is the section that separates it from the mainline skill's Framer-first approach. Real GSAP (@gsap/react, ScrollTrigger) is required, not simulated with CSS transitions:
- Hover physics —
group-hover:scale-105 transition-transform duration-700 ease-outinsideoverflow-hiddencontainers on every clickable card - Scroll pinning — a section title pinned via
ScrollTrigger pin: truewhile content scrolls past it - Image scale and fade — images start at
scale: 0.8, grow to1.0on entry, fade toopacity: 0.2on exit - Scrubbing text reveals — paragraph words animate from
opacity: 0.1to1.0sequentially, scrubbed to scroll position - Card stacking — cards overlap and stack from the bottom as the page scrolls
The Gapless Bento Grid
Every bento grid must use grid-flow-dense and have its col-span/row-span values verified by hand to leave zero empty cells — a named failure mode ("dead cells") that LLMs default to. Card count is capped at 3-5 intentional, heavily-styled cards rather than 8 generic ones.
Content and Asset Bans
- Meta-labels banned forever — "SECTION 01," "QUESTION 05," "ABOUT US" style labels are stripped entirely
- Images come from
picsum.photos/seed/{keyword}/1920/1080with CSS filters (grayscale,mix-blend-luminosity,contrast-125) applied so they don't read as stock photos - Backgrounds use radial blurs and grainy mesh gradients instead of flat colors
- The whole page wraps in
overflow-x-hidden w-full max-w-fullto guard against horizontal scroll bugs from off-screen scroll animations
How This Differs from the Mainline Taste Skill
The mainline skill and taste-skill-v1 use numeric dials (DESIGN_VARIANCE, MOTION_INTENSITY, VISUAL_DENSITY) that Claude interprets contextually. This skill replaces dials with a forced, shown-in-output randomization step and a hard pre-flight gate before code generation — stricter and more auditable, at the cost of being more rigid. It's also GSAP-first rather than Framer Motion-first, and adds an explicit AIDA page-structure requirement the other variants don't enforce.
Limitations
- GSAP requires its own npm install and license consideration for premium plugins (SplitText, MorphSVG) if you reach for them — the skill doesn't install dependencies for you.
- The Python randomization is simulated by the model, not actually executed. Treat it as a forcing function for variety, not a true random seed.
- The AIDA structure assumes a marketing/landing-page context. It's a poor fit for dashboards or internal tools, where the mainline skill or v1 fits better.