Skip to main content

design-taste-frontend

Anti-slop frontend skill for landing pages, portfolios, and redesigns. The agent reads the brief, infers the right design direction, and ships interfaces that do not look templated. Real design systems when applicable, audit-first on redesigns, strict pre-flight check.

Datos de origen

Repositorio
simstudioai/sim
Última actividad en el origen
2 de octubre de 2026 a las 08:59
Idioma detectado de SKILL.md
inglés
Estrellas
29.779
Forks
3852

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
design-taste-frontend
source
https://github.com/leonxlnx/taste-skill — skills/taste-skill/SKILL.md
description
Anti-slop frontend skill for landing pages, portfolios, and redesigns. The agent reads the brief, infers the right design direction, and ships interfaces that do not look templated. Real design systems when applicable, audit-first on redesigns, strict pre-flight check.
> **In this repo:** Tailwind 4 (CSS-first config in `apps/sim/app/_styles/globals.css`); animation via `import { motion } from 'framer-motion'` (not `motion/react`); icons from `@sim/emcn/icons`; colors through the CSS-variable tokens in `.claude/rules/sim-styling.md` (no hardcoded `text-gray-*`/hex/`zinc` utilities, no paired `dark:` utilities). This note overrides any conflicting guidance or code sample anywhere in this file. Fonts are fixed (Season body, Inter); never introduce new families, and never use Martian Mono on landing (`apps/sim/app/(landing)/CLAUDE.md`). Font weight is only `font-normal`/`font-medium`/`font-semibold`. Elevation uses the `shadow-subtle|medium|overlay|card` tokens. Type size uses named tokens, never `text-[Npx]`. Every labeled field inside a `ChipModalBody` is a `ChipModalField`. Use `bunx`, never `npx`. Do not add GSAP, Lenis, Three, or shadcn. Landing copy and SEO follow `.claude/rules/constitution.md` and `.claude/rules/landing-seo-geo.md`. # tasteskill: Anti-Slop Frontend Skill > Landing pages, portfolios, and redesigns. Not dashboards, not data tables, not multi-step product UI. > Every rule below is **contextual**. None of it fires automatically. First read the brief, then pull only what fits. --- ## 0. BRIEF INFERENCE (Read the Room Before Anything Else) Before touching code or tweaking dials, **infer what the user actually wants**. Most LLM design output is bad because the model jumps to a default aesthetic instead of reading the room. ### 0.A Read these signals first 1. **Page kind** - landing (SaaS / consumer / agency / event), portfolio (dev / designer / creative studio), redesign (preserve vs overhaul), editorial / blog. 2. **Vibe words** the user used - "minimalist", "calm", "Linear-style", "Awwwards", "brutalist", "premium consumer", "Apple-y", "playful", "serious B2B", "editorial", "agency-y", "glassy", "dark tech". 3. **Reference signals** - URLs they linked, screenshots they pasted, products they named, brands they're competing with. 4. **Audience** - B2B procurement panel vs. design-conscious consumer vs. recruiter scanning a portfolio. The audience picks the aesthetic, not your taste. 5. **Brand assets that already exist** - logo, color, type, photography. For redesigns, these are starting material, not optional input (see Section 11). 6. **Quiet constraints** - accessibility-first audiences, public-sector, regulated industries, trust-first commerce, kids' products. These constraints OVERRIDE aesthetic preference. ### 0.B Output a one-line "Design Read" before generating Before any code, state in one line: **"Reading this as: \<page kind> for \<audience>, with a \<vibe> language, leaning toward \<design system or aesthetic family>."** Example reads: - *"Reading this as: B2B SaaS landing for technical buyers, with a Linear-style minimalist language, leaning toward Tailwind utilities + Geist + restrained motion."* - *"Reading this as: solo designer portfolio for hiring managers, with an editorial / kinetic-type language, leaning toward native CSS + scroll-driven animation + custom typography."* - *"Reading this as: redesign of a public-sector service site, with a trust-first language, leaning toward GOV.UK Frontend or USWDS."* ### 0.C If the brief is ambiguous, ask one question, do not guess Ask exactly **one** clarifying question - never a multi-question dump - and only when the design read genuinely diverges. Example: *"Should this feel closer to Linear-clean or Awwwards-experimental?"* If you can confidently infer from context, **do not ask**. Just declare the design read and proceed. ### 0.D Anti-Default Discipline Do not default to: AI-purple gradients, centered hero over dark mesh, three equal feature cards, generic glassmorphism on everything, infinite-loop micro-animations everywhere, Inter + slate-900. These are the LLM defaults. Reach past them deliberately based on the design read. --- ## 1. THE THREE DIALS (Core Configuration) After the design read, set three dials. Every layout, motion, and density decision below is gated by these. * **`DESIGN_VARIANCE: 8`** - 1 = Perfect Symmetry, 10 = Artsy Chaos * **`MOTION_INTENSITY: 6`** - 1 = Static, 10 = Cinematic / Physics * **`VISUAL_DENSITY: 4`** - 1 = Art Gallery / Airy, 10 = Cockpit / Packed Data **Baseline:** `8 / 6 / 4`. Use these unless the design read overrides them. Do not ask the user to edit this file - overrides happen conversationally. ### 1.A Dial Inference (design read → dial values) | Signal | VARIANCE | MOTION | DENSITY | |---|---|---|---| | "minimalist / clean / calm / editorial / Linear-style" | 5-6 | 3-4 | 2-3 | | "premium consumer / Apple-y / luxury / brand" | 7-8 | 5-7 | 3-4 | | "playful / wild / Dribbble / Awwwards / experimental / agency" | 9-10 | 8-10 | 3-4 | | "landing page / portfolio / marketing site (default)" | 7-9 | 6-8 | 3-5 | | "trust-first / public-sector / regulated / accessibility-critical" | 3-4 | 2-3 | 4-5 | | "redesign - preserve" | match existing | +1 | match existing | | "redesign - overhaul" | +2 | +2 | match existing | ### 1.B Use-Case Presets | Use case | VARIANCE | MOTION | DENSITY | |---|---|---|---| | Landing (SaaS, mainstream) | 7 | 6 | 4 | | Landing (Agency / creative) | 9 | 8 | 3 | | Landing (Premium consumer) | 7 | 6 | 3 | | Portfolio (Designer / studio) | 8 | 7 | 3 | | Portfolio (Developer) | 6 | 5 | 4 | | Editorial / Blog | 6 | 4 | 3 | | Public-sector service | 3 | 2 | 5 | | Redesign - preserve | match | match+1 | match | | Redesign - overhaul | +2 | +2 | match | ### 1.C How the Dials Drive Output Use these (or user-overridden values) as global variables. Cross-references throughout this document refer to these exact variable names - never invent aliases like `LAYOUT_VARIANCE` or `ANIM_LEVEL`. --- ## 2. BRIEF → DESIGN SYSTEM MAP Once you have the design read (Section 0) and dials (Section 1), pick the right foundation. Do not invent CSS for things that have an official package. Do not pretend an aesthetic trend is an official system. ### 2.A When to reach for a real design system (use official packages) | Brief reads as… | Reach for | Why | |---|---|---| | Microsoft / enterprise SaaS / dashboards | `@fluentui/react-components` or `@fluentui/web-components` | Official Fluent UI, Microsoft tokens, accessibility done | | Google-ish UI, Material-flavored product | `@material/web` + Material 3 tokens | Official, theme-able via Material Theming | | IBM-style B2B / enterprise analytics | `@carbon/react` + `@carbon/styles` | Official Carbon, mature data-density patterns | | Shopify app surfaces | `polaris.js` web components / Polaris React | Required for Shopify admin UI | | Atlassian / Jira-style product | `@atlaskit/*` + `@atlaskit/tokens` | Official Atlassian DS | | GitHub-style devtool / community page | `@primer/css` or `@primer/react-brand` | Official Primer; Brand variant for marketing | | Public-sector UK service | `govuk-frontend` | Legally / regulatorily expected | | US public-sector / trust-first | `uswds` | Same | | Fast local-business / agency MVP | Bootstrap 5.3 | Boring, fast, works | | Modern accessible React foundation | `@radix-ui/themes` | Primitives + polished theme | | Modern SaaS where you own the components | shadcn/ui (`npx shadcn@latest add ...`) | You own the code, easy to customise; never ship default state | | Tailwind-based modern SaaS / AI marketing | Tailwind v4 utilities + `dark:` variant | Default for indie + small team builds | **Honesty rule:** if the brief reads as one of the systems above, install and use the **official** package. Do not recreate its CSS by hand. Do not import a system's tokens but then override 90% of them. **One system per project.** Do not mix Fluent React with Carbon in the same tree. Do not import shadcn/ui components into a Material 3 app. ### 2.B When the brief is an aesthetic, not a system For these directions, there is **no single official package**. Build with native CSS + Tailwind + a maintained component library. Be honest in code comments about what is borrowed inspiration vs. official material. | Aesthetic | Honest implementation | |---|---| | Glassmorphism / "frosted glass" | `backdrop-filter`, layered borders, highlight overlays. Provide solid-fill fallback for `prefers-reduced-transparency`. | | Bento (Apple-style tile grids) | CSS Grid with mixed cell sizes. No single library owns this. | | Brutalism | Native CSS, monospace, raw borders. No library. | | Editorial / magazine | Serif type, asymmetric grid, generous whitespace. No library. | | Dark tech / hacker | Mono + accent neon, terminal motifs. No library. | | Aurora / mesh gradients | SVG or layered radial gradients. No library. | | Kinetic typography | Native CSS animations, scroll-driven animations, GSAP for hijacks. No library. | | **Apple Liquid Glass** | Apple documents this for Apple platforms only. **There is no official `liquid-glass.css`.** Web implementations are approximations using `backdrop-filter` + layered borders + highlights. Label clearly as approximation. | --- ## 3. DEFAULT ARCHITECTURE & CONVENTIONS Unless the design read picks a real design system (Section 2.A), these are the defaults: ### 3.A Stack * **Framework:** React or Next.js. Default to Server Components (RSC). * **RSC SAFETY:** Global state works ONLY in Client Components. In Next.js, wrap providers in a `"use client"` component. * **INTERACTIVITY ISOLATION:** Any component using Motion, scroll listeners, or pointer physics MUST be an isolated leaf with `'use client'` at the top. Server Components render static layouts only. * **Styling:** **Tailwind v4** (default). Tailwind v3 only if the existing project demands it. * For v4: do NOT use `tailwindcss` plugin in `postcss.config.js`. Use `@tailwindcss/postcss` or the Vite plugin. * **Animation:** **Motion** (the library formerly known as Framer Motion). Outside this repo import from `motion/react`; in this repo import from `framer-motion` (see the note at the top). * **Fonts:** Always use `next/font` (Next.js) or self-host with `@font-face` + `font-display: swap`. Never link Google Fonts via `<link>` in production. ### 3.B State * Local `useState` / `useReducer` for isolated UI. * Global state ONLY for deep prop-drilling avoidance - Zustand, Jotai, or React context. * **NEVER** use `useState` to track continuous values driven by user input (mouse position, scroll progress, pointer physics, magnetic hover). Use Motion's `useMotionValue` / `useTransform` / `useScroll`. `useState` re-renders the React tree on every change and collapses on mobile. ### 3.C Icons * **Icons:** in this repo, `@sim/emcn/icons` only — one family per tree, `strokeWidth` standardized. Outside this repo, pick one maintained library and standardize on it. ### 3.D Emoji Policy Discouraged by default in code, markup, and visible text. Replace symbols with icon-library glyphs. **Override:** allow emojis only when the user explicitly asks for a playful / chat-style / social-native vibe - and even then use them sparingly with intent. ### 3.E Responsiveness & Layout Mechanics * Standardize breakpoints (`sm 640`, `md 768`, `lg 1024`, `xl 1280`, `2xl 1536`). * Contain page layouts using `max-w-[1400px] mx-auto` or `max-w-7xl`. * **Viewport Stability:** NEVER use `h-screen` for full-height Hero sections. ALWAYS use `min-h-[100dvh]` to prevent layout jumping on mobile (iOS Safari address bar). * **Grid over Flex-Math:** NEVER use complex flexbox percentage math (`w-[calc(33%-1rem)]`). ALWAYS use CSS Grid (`grid grid-cols-1 md:grid-cols-3 gap-6`). ### 3.F Dependency Verification (mandatory) Before importing ANY 3rd-party library, check `package.json`. If the package is missing, output the install command first. **Never** assume a library exists. --- ## 4. DESIGN ENGINEERING DIRECTIVES (Bias Correction) LLMs default to clichés. Override these defaults proactively. Each rule has a context-aware override path. ### 4.1 Typography * **Display / Headlines:** Default `text-4xl md:text-6xl tracking-tighter leading-none`. * **Body / Paragraphs:** Default `text-base text-gray-600 leading-relaxed max-w-[65ch]`. * **Sans font choice:** * **Discouraged as default:** `Inter`. Pick `Geist`, `Outfit`, `Cabinet Grotesk`, `Satoshi`, or a brand-appropriate serif first. * **Override:** Inter is acceptable when the user explicitly asks for a neutral / standard / Linear-style feel, or when the brief is a public-sector / accessibility-first site. * **Pairings to know:** `Geist` + `Geist Mono`, `Satoshi` + `JetBrains Mono`, `Cabinet Grotesk` + `Inter Tight`, `GT America` + `IBM Plex Mono`. * **Serif discipline:** Default to a sans display face (Geist Display, ABC Diatype, Söhne Breit, Cabinet Grotesk Display, Migra Sans, GT Walsheim, Inter Display, PP Neue Montreal). Use a serif only when the brand names one or the aesthetic is genuinely editorial/luxury/heritage and you can say in one line why this serif fits this brand; `Fraunces` and `Instrument Serif` are the generic picks, so prefer another (PP Editorial New, GT Sectra Display, Reckless Neue, Tiempos Headline, Cormorant Garamond, EB Garamond, Domaine Display, Canela). Emphasize a word with italic or bold of the same family, not a second family. * **Italic descender clearance:** When italic is used in display type and the word contains a descender letter (`y g j p q`), `leading-[1]` or `leading-none` will clip the descender. Use `leading-[1.1]` minimum and add `pb-1` or `mb-1` reserve on the wrapping element. Audit every italic word in display headlines before shipping. ### 4.2 Color Calibration * Max 1 accent color. Saturation < 80% by default. * **The lila rule:** The "AI Purple / Blue glow" aesthetic is discouraged as a default. No automatic purple button glows, no random neon gradients. Use neutral bases (Zinc / Slate / Stone) with high-contrast singular accents (Emerald, Electric Blue, Deep Rose, Burnt Orange, etc.). * **Override:** if the brand or brief explicitly asks for purple / violet / lila, embrace it. But execute with intent: consistent palette, harmonised neutrals, restrained gradients. Not generic AI gradient slop. * **One palette per project.** Do not fluctuate between warm and cool grays within the same project. * **Color consistency lock:** Once an accent color is chosen for a page, it is used on the whole page. A warm-grey site does not suddenly get a blue CTA in section 7. A rose-accented site does not get a teal status badge in the footer. Pick one accent, lock it, audit every component before shipping. * **Premium-consumer palettes:** For premium-consumer briefs (cookware, wellness, artisan, DTC home goods), the warm cream + brass/clay/oxblood + espresso palette is the generic default; choose the palette from the brand's own assets and state the reason in one line. Alternatives that read as premium without the cliché: cold silver/chrome, deep green + bone + amber, off-black + tan, cobalt + one neutral, terracotta + slate, olive + brick, monochrome + one saturated accent. ### 4.3 Layout Diversification * **Anti-center bias:** Centered Hero / H1 sections are avoided when `DESIGN_VARIANCE > 4`. Prefer "Split Screen" (50/50), "Left-aligned content / right-aligned asset", "Asymmetric white-space", or scroll-pinned structures. * **Override:** centered hero is OK for editorial / manifesto / launch-announcement briefs where the message itself is the design. ### 4.4 Materiality, Shadows, Cards * Use cards only when elevation communicates real hierarchy. Otherwise group with `border-t`, `divide-y`, or negative space. * When a shadow is used, tint it to the background hue. No pure-black drop shadows on light backgrounds. * For `VISUAL_DENSITY > 7`: no generic card containers. Data metrics breathe in plain layout. * **Shape consistency lock:** Pick one corner-radius scale for the page and stick to it. Options: all-sharp (radius 0), all-soft (radius 12-16px), all-pill (full radius for interactive). Mixed systems are allowed only when there is a documented rule (e.g. "buttons are full-pill, cards are 16px, inputs are 8px") and that rule is followed everywhere. Round buttons in a square layout, or square cards on a pill-button page, is broken design. ### 4.5 Interactive UI States LLMs default to "static successful state only." Always implement full cycles: * **Loading:** Skeletal loaders matching the final layout's shape. Avoid generic circular spinners. * **Empty States:** Beautifully composed; indicate how to populate.
Ver en GitHub
Este SKILL.md es muy grande, por eso SkillsMP muestra aqui solo la primera seccion. Ver en GitHub