# What AI Tell Patterns Does Taste Skill Ban? The Complete Anti-Slop Reference

> Discover the 30+ AI tell patterns Taste Skill bans to prevent frontend "AI slop". Learn about forbidden clichés like em-dashes and Inter font in this comprehensive anti-slop reference.

- Repository: [Leon Lin/taste-skill](https://github.com/Leonxlnx/taste-skill)
- Tags: api-reference
- Published: 2026-06-06

---

**Taste Skill explicitly forbids over 30 recurring AI-generated design clichés—including em-dashes, Inter font, three-column equal card grids, and `window.addEventListener('scroll')`—to prevent "AI slop" in frontend interfaces.**

Taste Skill is an "anti-slop" enforcement layer developed in the Leonxlnx/taste-skill repository that acts as a pre-flight check for AI-generated frontend code. Rather than suggesting improvements, it hard-bans specific visual, typographic, and interaction patterns that signal low-quality, templated output. These **AI tell patterns** are codified in [`skills/taste-skill/SKILL.md`](https://github.com/Leonxlnx/taste-skill/blob/main/skills/taste-skill/SKILL.md) and enforced across the skill's entire pipeline.

## Visual and Color AI Tell Bans

The skill treats certain color palettes and visual effects as immediate markers of AI-generated mediocrity.

**Warm-beige, brass, and espresso palettes** are banned as the default for premium-consumer briefs. According to [`SKILL.md`](https://github.com/Leonxlnx/taste-skill/blob/main/SKILL.md) section 9.2, this combination is recognized as the *LLM default* that makes every premium product look identical. Instead, designers must derive palettes from actual brand assets.

**Neon colors and outer glows** are prohibited for creating a "glitchy" look that screams AI artifact. The specification in section 9.A also bans **pure black (`#000000`) and pure white (`#ffffff`)**, requiring off-black (e.g., `zinc-950`) and off-white to add visual depth.

Other banned visual patterns include:
- **Oversaturated accent colors** that distract from neutral primaries
- **Excessive gradient text** that looks cheap
- **Custom mouse cursors** due to poor accessibility and performance

## Typography and Text AI Tell Bans

Taste Skill maintains strict rules against type choices that dominate AI training data.

**Inter as the default font** is identified as the single most-tested AI tell in the repository's [`CHANGELOG.md`](https://github.com/Leonxlnx/taste-skill/blob/main/CHANGELOG.md) and [`SKILL.md`](https://github.com/Leonxlnx/taste-skill/blob/main/SKILL.md) section 4.1. The skill prefers alternatives like **Geist** or **Satoshi**. Similarly, **serif fonts as the default** are "very discouraged" except in genuinely editorial or luxury contexts.

The **em-dash (`—`)** is completely banned in all contexts—headlines, eyebrows, body copy, and quotes—as documented in [`SKILL.md`](https://github.com/Leonxlnx/taste-skill/blob/main/SKILL.md) section 9.G. This punctuation mark is considered the biggest visual AI tell in text.

## Layout and Structural AI Tell Bans

Structural clichés that create a "templated" feel are strictly prohibited.

**Three equal feature cards** in a row are banned under section 4.25 as overly generic; the skill requires asymmetric or varied grids. **Split-header layouts** (left headline plus right paragraph) are only allowed when justified, not as a default split-screen pattern.

**Eyebrow overuse**—defined as more than one eyebrow text element per three sections—is restricted because the eyebrow pattern is a signature AI tell. **Section-number eyebrows** like `001 · Capabilities` or `00 / INDEX` are explicitly banned per the [`CHANGELOG.md`](https://github.com/Leonxlnx/taste-skill/blob/main/CHANGELOG.md) entry for version 3.7.

Other structural bans include:
- **Version labels in the hero** (e.g., `V0.6`, `BETA`) except for explicit product-launch briefs
- **Decorative colored status dots** on every list or badge when not conveying real state
- **Cross-hair or hairline grid lines** used purely for decoration
- **Locale, city-name, time, or weather strips** (agency-portfolio filler)
- **Scroll cues** (`Scroll`, `↓ scroll`, animated mouse-wheel icons)
- **Kinetic marquees** (endless scrolling text bands)
- **Div-based fake screenshots** built from HTML rectangles instead of real assets

## Interaction and Motion AI Tell Bans

Performance-killing animation patterns common in AI output are forbidden.

Using **`window.addEventListener("scroll", …)`** causes jank and is banned in section 5.11. The skill requires **Motion's `useScroll`** or GSAP ScrollTrigger. Similarly, **`requestAnimationFrame` loops that update React state** are prohibited for triggering full re-renders on every frame.

**Using `useState` for continuous values** like mouse position or scroll progress is inefficient; Motion's `useMotionValue` must be used instead. **Infinite-loop animations without reduced-motion fallback** violate accessibility requirements under section 6.26 and must honor `prefers-reduced-motion`.

## Content and Copy AI Tell Bans

Content generation shortcuts that signal AI hallucination are blocked.

**Fake-precise numbers** like `92%` or `4.1×` not derived from real data are forbidden unless explicitly labeled as mock data. **Long raw lists** with more than five items must be replaced with proper UI components like tabs, accordions, or cards rather than simple `<ul>` elements.

**Placeholder spec tables** featuring border-bottom rows simulating a datasheet are banned; the skill forces real visual representations using cards, pills, or grouped clusters.

## Writing Compliant Code: Correct Patterns

To pass Taste Skill pre-flight checks, replace banned patterns with approved implementations from the repository.

### Handling Scroll with Motion Instead of Window Events

Replace `window.addEventListener('scroll')` with Motion's optimized hooks:

```tsx
'use client';
import { motion, useScroll, useTransform } from 'motion/react';

export function ParallaxHeader() {
  const { scrollY } = useScroll();
  const y = useTransform(scrollY, [0, 300], [0, -150]);

  return (
    <motion.div style={{ y }} className="h-[70vh] bg-hero">
      {/* hero content */}
    </motion.div>
  );
}

```

*Source: [`skills/taste-skill/SKILL.md`](https://github.com/Leonxlnx/taste-skill/blob/main/skills/taste-skill/SKILL.md) section 5.D*

### Avoiding the Three-Equal-Cards Pattern

Instead of identical columns, use varied card variants:

```tsx
<div className="grid gap-8 md:grid-cols-2 lg:grid-cols-3">
  <Card variant="featured" />
  <Card variant="stacked" />
  <Card variant="wide" />
</div>

```

This satisfies the asymmetric grid requirement in section 4.25.

### Eliminating the Em-Dash

Replace em-dashes with hyphens or restructured phrases:

```tsx
<h2 className="text-2xl font-bold">
  Seamless integration - fast onboarding
</h2>

```

Using `—` (em-dash) in any text element violates section 9.G.

### Using Approved Icon Libraries

Import from allowed families listed in section 3.C:

```tsx
import { ArrowRight } from '@phosphor-icons/react';

export function LearnMore() {
  return (
    <a className="flex items-center gap-2">
      Learn More <ArrowRight weight="bold" />
    </a>
  );
}

```

## Summary

Taste Skill enforces a **hard ban** on design patterns that signal low-quality AI generation across six categories:

- **Visual**: No warm-beige premium palettes, pure black/white, neon glows, or custom cursors
- **Typography**: No Inter font, default serifs, or em-dashes anywhere in the interface
- **Layout**: No three-equal-card rows, split-header defaults, eyebrow overuse, or kinetic marquees
- **Motion**: No `window.addEventListener('scroll')`, `requestAnimationFrame` state updates, or continuous values in `useState`
- **Content**: No fake-precision statistics or raw long lists without component abstraction
- **Accessibility**: No infinite animations without `prefers-reduced-motion` guards

Violations are detected via pre-flight checks in [`skills/output-skill/SKILL.md`](https://github.com/Leonxlnx/taste-skill/blob/main/skills/output-skill/SKILL.md) before code reaches production.

## Frequently Asked Questions

### What constitutes an "AI tell" in Taste Skill?

An **AI tell** is a recurring visual, structural, or interactive cliché that appears disproportionately in AI-generated frontend code, such as the em-dash in headlines or three identical feature cards in a row. These patterns are documented in [`skills/taste-skill/SKILL.md`](https://github.com/Leonxlnx/taste-skill/blob/main/skills/taste-skill/SKILL.md) and treated as hard errors rather than warnings.

### Why is the em-dash completely banned rather than just limited?

According to [`SKILL.md`](https://github.com/Leonxlnx/taste-skill/blob/main/SKILL.md) section 9.G, the em-dash is identified as the **single biggest visual AI tell** across generated text. Its use creates artificial pauses in headings and body copy that immediately signal templated content, so Taste Skill enforces a zero-tolerance policy across all text elements including quotes and testimonials.

### Can I use a three-column layout if the cards contain different content?

No—**three equal feature cards** are banned regardless of content variation because the structural pattern itself is the AI tell. As documented in section 4.25, you must use asymmetric grids, varied card sizes, or different layout patterns (such as a featured card plus stacked variants) to pass the skill's layout checks.

### How does Taste Skill prevent banned patterns from reaching production?

The skill operates as a **pre-flight enforcement layer** defined in [`skills/output-skill/SKILL.md`](https://github.com/Leonxlnx/taste-skill/blob/main/skills/output-skill/SKILL.md). Before any code is finalized, it runs checks against the banned pattern list; if violations like `window.addEventListener('scroll')` or Inter font usage are detected, the generation fails and must be corrected, ensuring only "anti-slop" code is deployed.