Slop Tells

The specific defaults this vault does not want. Read by .claude/skills/inspiration-library/SKILL.md as hard negative constraints, and published at design-hub.wanessalabs.com/slop.

Every entry names a concrete tell: something you could point at in a rendered page and agree was or was not there. “Feels generic” is not an entry. “Hero section with a gradient background” is.

Scope matters. vault applies to every surface. lists30 applies only to the Lists of 30 family, where the constraint comes from the brand rather than from taste. An agent applying a lists30 tell to TutorHub is making an error in the opposite direction.

Precedence, always: the target project’s design/brand.md outranks this file. If a brand file asks for something listed here, the brand file wins and the tell does not apply. This resolves the same way the Lora font conflict does.


Surface and structure

#idTellWhyScope
1hero-gradientHero section with a gradient backgroundGradients signal “we made it look expensive.” Flat is more honest and ages better.vault
2glassmorphismGlassmorphism or frosted-glass cardsPaper on a desk, not liquid on glass. Same failure as the gradient, one layer up.vault
3card-drop-shadowDrop shadows on content cardsSeparation comes from borders and whitespace. A shadow reads as elevation, which promises interactivity the card may not have. Checked 2026-07-30: this is already unanimous. Every brand token file that mentions shadow does so only to ban it (Wanessa Labs “borders-only: NO shadow tokens here by design”, CampPing “No shadows, ever”, the Book and App brands “Elevation: BORDERS, NOT SHADOWS”). One caveat: TutorHub declares no custom shadow tokens but inherits shadcn defaults, so its cards do carry a shadow this tell does not currently reach.vault
4icon-heading-cta-cardThe four-part card: icon, heading, gray body text, CTAThe single most recognizable generated-UI shape. If every card on a page has this skeleton, the page was not designed.vault
5feature-bullet-gridFeature bullet gridsReads as SaaS marketing. A list here has to feel authored, not enumerated.lists30

Color

#idTellWhyScope
6pure-black-whitePure #000000 body text, or pure #FFFFFF as the page backgroundBoth are defaults nobody chose. Warm off-white reads as uncoated paper; near-black with a trace of warmth removes the clinical edge. Picking the extreme is picking nothing. Checked 2026-07-30: CampPing states it outright (--ink: /* warm near-black text, never #000 */). Two legitimate exceptions exist and are not violations: pure white for raised surfaces (--color-surface: #FFFFFF in the Book and App brands, for cards and inputs) and pure white for print (--print-bg in the CampPing litepaper variant, where warm paper would waste toner).vault
7blue-primary-accentBlue as the primary accentBlue means institutional, trustworthy, product. These surfaces are personal.lists30

Typography

#idTellWhyScope
8three-plus-fontsMore than two font familiesManrope plus Lora is the ceiling. A third breaks the register regardless of how well it is chosen. Checked 2026-07-30: this is a Lists of 30 rule only. Wanessa Labs, Kalimba Easy (Bricolage Grotesque, Archivo, Barlow Condensed) and CampPing (Bricolage Grotesque, Hanken Grotesk, Spline Sans Mono) each declare three deliberately.lists30
9generic-fintech-headlineA bold sans-serif headline that would work unchanged on a fintech landing pageIf the type could belong to anyone, it belongs to no one.vault

Imagery and copy

#idTellWhyScope
10stock-emotion-photoStock photography carrying emotionNobody in the photograph has any relationship to the product.vault
11emoji-as-uiEmoji as UI decoration, outside of contentBreaks the editorial register. Emoji inside authored content is fine; emoji as an icon system is not.vault
12uplift-multiple-copyUplift copy that promises a multiple, in the “10x your productivity” shapeLead with the honest admission, not the outcome. Never promise a number you cannot show.vault
13em-dashAn em dash, anywhereNon-negotiable vault rule. Periods, colons, commas, or parentheses. The humanize skill states it as “zero, all modes” and defines neutral mode to include docs, READMEs, PRDs, wiki, and lineage, so internal files are covered too, not just published copy. Older vault files predating that gate still use one as a heading separator; they are drift, not precedent.vault

Writing about design

#idTellWhyScope
14generic-design-adjectivesThe adjectives clean, modern, sleek, intuitive, seamless, elegant, minimalist, polished, refined, sophisticated, delightful, stunning, beautiful, premium, visually appealing, user-friendly used as positive descriptionEvery one survives deletion with no loss of meaning. The test: could you have written this sentence without ever seeing the thing? Then it says nothing. Quoting one as a foil (“they could have gone clean and modern, and instead…”) is fine.vault

Provenance

Nothing here is invented. Entries 1, 2, 3, 5, 7, 8, 9, 10, 11, and 12 come from the Anti-Patterns table in .claude/skills/clemens-design-taste/SKILL.md, which scopes them to the Lists of 30 brand. Widening any of them to vault is a claim about the other six brands, so it has to be checked rather than assumed.

Checked against the seven brand token files on 2026-07-30:

TellResult
1 gradientsHolds. Zero linear-gradient or radial-gradient in any brand token file.
2 glassmorphismHolds. Zero backdrop-filter in any brand token file.
3 shadowsHolds, unanimously and explicitly. Caveat recorded in the row.
6 pure black and whiteHolds for page background and body text. Two exceptions found and recorded.
8 two font familiesFailed. Three of seven brands declare three families on purpose. Rescoped to lists30.

Entries 4, 9, 10, 11, and 12 are about page composition and copy rather than token values, so no token file can confirm or refute them. They stand on owner judgment and are marked vault on that basis, not on evidence. Treat them as weaker than the five above until a rendered-page check exists.

Other sources. Entry 4 is the anti-reference in wanessalabs-astro/.impeccable.md. Entry 3 also draws on the elevation comment in wanessalabs-astro/design/tokens.css. Entry 6 is from the color rationale in clemens-design-taste. Entry 13 is the vault brand rule in .claude/rules/brand-voice.md, as enforced by the humanize skill’s “zero, all modes” clause. Entry 14 is the banned-adjective list from taste-skill’s own anti-slop pass, which applies to this library’s own prose.

Adding an entry

Three tests. It has to pass all three.

  1. Pointable. Could you point at a rendered page and get agreement that it is or is not present?
  2. Not universal. Is it wrong here, for a reason you can state, rather than wrong everywhere? A tell that is just bad design belongs in a linter.
  3. Scoped to what actually enforces it. vault or lists30. Check the reach of the rule or gate the tell comes from, then match it. Narrowing a tell because some old files violate it is as wrong as widening one past its source: existing drift is not evidence of scope.