agentleFS
w2urw2ur/claude-code-setup/skills/design-tells/SKILL.md

design-tells

Skill2 starsChanged 2 months agoMITView on GitHub

Load before any frontend or visual design work in a project with no stated direction

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 2 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    No design document and no brief → propose 2-3 directions from subject, mood and audience, and wait for approval.

    line 44
  2. Distinctive:

    Only what sections 1-3 do not already name.

    line 109

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Design tells — the patterns that read as model-generated

The short rule lives in ~/.claude/CLAUDE.md (Design defaults). This skill holds the full trap list behind it, each pattern with why it reads as a model default and what to do instead.

Why a named list and not "avoid the AI look". Without a direction, Opus 5.5 falls back on a few default styles. A generic "avoid the AI look" only swaps one default for another; naming the pattern is what works.

Source: the three research strands of workflow wf_10b4186b-05c (2026-09-18, the hub's the-portfolio redesign): A state of the art, B a site without images, C what the visitor actually needs. The A0-style ids point back to .result.recherches[<strand>].pieges[<n>] in that run; a row carrying several ids (A7 · B10 · C6) is one pattern the strands found independently. G-ids are rules drawn from the Opus 5.5 migration guide, not from that run. R-ids (section 4) come from other design skills, each row tagged with its source.

The detector column names the Impeccable rule id that catches the row's detectable part (pinned CLI, run through ~/.claude/scripts/design-detect.sh); — means judgment only. A hit is evidence, not a verdict: design-critique reads it and decides which hits a documented identity sanctions.

The carve-out: a documented identity overrides this list

A project whose own CLAUDE.md has a design section (palette, type, motifs), or that has a DESIGN.md at its root, has a direction, and that document wins over every entry below. The hub ({portfolio-site}) is the reference case: its cream paper ground, serif and handwritten notes are a deliberate, documented identity, not a default to remove.

Without such a document, a cream or off-white ground is the tell on its own (G1), whatever accent and type come with it. Only a documented identity makes it legitimate, and even then what still applies is the companions (A0): cream plus an italic accent word plus a terracotta accent plus numbered eyebrows. Keep the identity, refuse the companions it did not ask for.

No design document and no brief → propose 2-3 directions from subject, mood and audience, and wait for approval. Never pick one silently.

1. Opus 5.5 defaults — named by the migration guide, plus the pairing that comes with them

idtrapwhy it reads as a defaultinsteaddetector
G1A cream / off-white page ground: any near-white tinted warm — ivory, flour, paper, parchment, linen, sand, bone (#F4F1EA, #F6F1E4, #FAF7F0…). The trap on its own, whatever the accent or type; renaming the shade or dropping the terracotta does not leave the familyThe first ground Opus 5.5 reaches for when nothing is specified; the migration guide names it by itself, not only inside a clusterA neutral or cool white, a dark ground, or a saturated field taken from the subject. If a warm light ground seems right, say so in the proposal and let the owner choose it — never land on it by defaultcream-palette
A0The "warm AI" cluster: cream ground near #F4F1EA, large display serif often italic for emphasis, terracotta / rust accentNamed verbatim by 2025-26 criticism (Chayka: "beige- and cream-colored backgrounds, rusty orange-hued accents", "large serif typefaces, italicized and highlighted")A ground chosen from the subject. If cream is the project's identity, drop the companions (italic emphasis, rust accent) — the cluster is what gets recognised, not one colourcream-palette · italic-serif-display
A2One serif italic word carrying all the emotion of the headline; its corollaries: the three-word tagline, the noun fragment, "Not X. Just Y.", em-dashes everywhereThe signature writing tic of generated pagesA headline that states something specific, set in one style. Emphasis through wording, not a switched faceaphoristic-cadence
A3Tracked-out capital eyebrow above every section ("01 — ABOUT", "SELECTED WORK")Named by Chayka as a tell; the numbering implies an order the content does not haveSection heads that say what the section is. Number only a real sequence (steps, chapters)kicker-above-heading · numbered-section-labels · hero-eyebrow-chip
A4Card grid with a monospace label in the top corner; pill badges ("Preview", "Coming Soon", "Available for work"); bento grid; one border radius everywhere (16px); uniform spacing everywhereThese four together are enough to date a pageStatus as text in the flow; a radius and spacing scale that varies with the element's role; square or plain buttons unless the brief asks for pills—
A1The over-read pairing: a "characterful" display serif (Fraunces, Instrument Serif, Playfair, Cormorant) + Inter for bodyAmong the most-deployed Google Fonts; it promises refinement everyone already deliversPick type for the content's register and check it against the pairing; one family used well beats a fashionable pairoverused-font

2. Look and layout (strands A and B)

idtrapwhy it reads as a defaultinsteaddetector
A5Decorative fake dashboard: stacked rounded rectangles, neon glow under the edge, unitless numbers, a chart of nothingFiller that imitates dataShow a real number with its unit and source, or nothingdark-glow
A6Scrolling news-ticker / marquee text bandsOne of the most specific tells criticism names; tempting on an image-less site hunting for motionMotion only where it carries informationmarquee
A7 · B10 · C6The same scroll fade-in on every element or block, hover states absent or identicalA scroll-linked motion system that moves everything 20px up with the same opacity is the generic fade-in with more code: a theme effect, not writing. It also delays content in the first two screens, where most attention is spentMotion that differs by role; distinct hover states; most content simply present—
A8The canonical template order: hero bio → about → selected work → now → contact, one column, all revealed on scrollIt is everyone's sequence, whatever the stylingOrder sections by what this visitor needs first — usually proof—
A9Grain / noise overlay, blurred aurora blobs, purple→blue gradient, default Inter, oversized heroThe previous generation of the same default, still circulatingA ground and hero sized for the content; no decorative textureai-color-palette · radial-halo · overused-font · oversized-h1
A10Body text at 50-60 % opacity on cream as "refinement"Where the aesthetic trap and the accessibility trap coincide; a contrast test that checks declared colours, not applied opacity, misses itFull-strength text colours tested as renderedlow-contrast
A11Conformist indieweb vocabulary: /now, seedling/budding/evergreen, webring badge, /uses, "digital garden"A signature in 2018, a membership card in 2026Use a convention only for its function, never as personality—
A12Borrowed personality ornaments: custom cursor, "↓ scroll" hint, all-lowercase, emoji section heads, console easter eggEach was distinctive onceLet personality come from content and one owned device—
A13Sobriety as alibi: competent, contrasted, well composed, no rough edgeThe well-executed median is now the marker of automatic generationA device that costs its author something: an errors list, a refusal catalogue, a number that can go down, a published constraint—
B0Invisible sobriety: the site pays for its constraints (no images, one ink, static) without anyone perceiving themFaultless and indistinguishableMake the constraint visible and stated—
B1Giant type as the only idea (huge serif capitals on screen one)The 2018-24 portfolio wave; now degree zeroLarge type only when it sets a datum (a verifiable number), not a slogan—
B2Decorative generative noise: flow field, blob, Perlin, connected dotsDerived from nothing, so it could decorate any site. Substitution test: if random data changes nothing, it is wallpaperGenerate from the project's real data, or omit—
B3Symmetric 5×5 identicon gridReads "default avatar" or "crypto token"A mark derived from the work itself—
B4Numbers animated counting up from 0Adds an emotion the datum lacks; unreadable while it movesThe number set still, composed and sourced—
B5Chart with no unit, no source, no dateThe surest sign of a decorative figureEvery chart carries unit, source and date—
B6Encoding a quantity by area, radius or volume (bubbles, concentric circles, donut)Lie factor above 1: the eye reads area, the data is linearPosition or length on a common scale—
B7 · C7Terminal costume — > whoami prompt, typewriter effect, Unicode rules, ASCII art, monospace, blinking cursor — over a non-terminal designTwo incompatible registers glued together; reads pastiche, not "system", and the developer-portfolio cliché pulls toward juniorOne register, heldblinking-cursor
B8Three equal cards, soft shadows, rounded corners, one icon eachEvery site generator's default since 2020 and a model's first reflex; equal weight claims nothing matters moreHierarchy: one item leads, the rest followicon-tile-stack · gpt-thin-border-wide-shadow
B9 · C5Gradient, frosted glass, glow, blurred blobs, animated gradient text, any purple/indigoThe generative template's visual signature since 2023; where any unsupervised proposal drifts, often sneaking back as an "accent touch" or a coloured shadowFlat colour from the chosen palettegradient-text · ai-color-palette · dark-glow · radial-halo · radial-spotlight-glow
B11A hand-drawn figure that never changes on a site claiming everything is derived at buildAn internal contradiction attentive readers spotDerive the figure from build data, or drop the claim—
B12Small caps and old-style figures faked by the browser (font-variant without a font that carries them)Scaled capitals are not small caps; the strokes do not followUse a font with the OpenType features, or do without—
B13A "how this site is built" page with hand-typed numbersStale on the first deploy, and it discredits every real derived numberDerive every number at build—

3. Content and credibility (strand C)

idtrapwhy it reads as a defaultinsteaddetector
C0First screen asks before it proves: bio + signup box, zero projectThe 2015 personal-site template; spends the most expensive seconds solicitingProof on the first screen—
C1Superlatives without a number: "passionate about", "I build tools", "at the intersection of X and Y"Unverifiable self-assessment, infinitely costly to evaluateA traceable number or a named artefactmarketing-buzzword
C2Grid of identical tiles, title + two lines, no result or numberThe template effect even without images; nothing ranks a flagship above a weekend projectVary weight by importance; give each item a result—
C3Tech-logo wall, shields.io badges, percentage skill barsJunior-portfolio codesShow the work; the stack belongs in the project—
C4Job-application vocabulary: "Hire me", "Available for work", "Download my CV"The costliest framing for an established author building in publicDescribe what is built and how to follow it—
C8Emoji as list bullets or section iconsThe most immediately recognisable marker of AI-produced textPlain bullets and words—
C9LLM sentence rhythm: systematic tricolon, "not X but Y", "it's not just… it's…", "in the age of…", em-dash bursts, equal three-sentence paragraphsFatal on a site whose argument is its writingVaried sentences; for the owner's own text, load the voice skill the global CLAUDE.md namesaphoristic-cadence · theater-slop-phrase
C10Round, unverifiable numbers: "thousands of users", "20+ years of experience" aloneNothing to checkDated, traceable numbers ("116 days in public", "131 references verified via Crossref")—
C11An imported SEO-blog statistic ("73 % of recruiters…")Contradicts the traceability that gives the site its credibilityCite primary sources or say nothing—
C12llms.txt, "AI-friendly" tags, "agent-optimised" mentionsIgnored by search and by providers in production; the illusion of having actedWell-structured, citable HTML—
C13A /now page and a light/dark toggle presented as the site's personalityCommunity conventions, no longer differentiatorsShip them if useful; never pitch them—
C14A manifesto with no artefact: principles with no repo, licence or live URL beside themReads as posturePut the artefact next to every principle—
C15Retirement stories filed in a dated archiveThe rarest material, stripped of its role as proof of judgementSurface them as evidence—
C16The accent used for hierarchy: a second filled button, coloured body links, a coloured active stateOnce the colour signals two things it signals noneOne meaningful use of the accent—
C17Seeking distinction in layout: broken grid, horizontal scroll, invented nav, custom cursorPrototypicality predicts liking within 17 ms (Tuch et al.); novelty pays only where it costs no typicality (Hekkert)Novelty on ONE element, never on the structure—
C18Spreading the original figure everywhereIts value is rarity; repeated on each section it becomes decorative noiseUse the signature device once—
C19A page that cannot be cited alone: title with no named subject, numbers in a table with no carrying sentence, no link back to the identityInvisible to answer engines, illegible for a deep-link visitorEvery page names its subject and states its point in a sentence—

4. Restraint and craft floor (other design skills)

Only what sections 1-3 do not already name. Every effect, in any section, faces the removal test (R5): remove it — if the design loses only decoration, it goes. Source tags: fd Anthropic frontend-design · Taste · Hallmark · s1g s1gmamale1's apple-design restraint checklist · Imp Impeccable · gd the global ~/.claude/CLAUDE.md Design defaults.

idsourcetrapwhy it reads as a defaultinsteaddetector
R1fdThe SaaS-card kit's small parts: the same soft grey shadow (rgba(0,0,0,.1)) under every card whatever its elevation; a → appended to link and button textKit pieces that ship whatever the subject; the arrow restates what a link already isShadow only where elevation means something; link text that says where it goes—
R2Taste · HallmarkFake product framing: a product UI hand-built from divs in the hero (task list, terminal, dashboard), or re-drawn chrome — browser bar with URL pill and traffic lights, phone frame, code-window title barImitates evidence instead of showing it; the reader's own environment already supplies real chromeA real screenshot in a <figure> (a hairline border at most), or the content with no frame—
R3Taste"Quietly trusted by" / "Quietly in use at" above a logo stripFaux-modest adverb doing the boasting; a generated-copy signature"Used at", or no heading — the logos speak—
R4s1gWhere a direction does sanction glass (an override of B9): glass on content cards rather than on chrome (nav, sheets, sidebars), or several effects stacked on one surfaceThe material in the wrong layer reads synthetic, and text on glass has unpredictable contrastGlass on floating chrome only; one effect per surface—
R5s1gAn effect that fails the removal test (section intro)Decoration that survived because nobody askedRemove it—
R6ImpBrowser surfaces left at defaults: text selection colour, caret, scrollbar, focus ringThe parts nobody drew; the cheapest signal that a page was assembled, not builtTheme them from the palette; the focus ring visible on every ground—
R7ImpLight or dark picked by category ("dev tool, so dark")A category habit, not a decisionPick it from the use scene: who, where, under what ambient light—
R8gdPill-shaped buttons: fully rounded ends on every button, whatever its role (A4 covers pill badges, not buttons)The kit's default button shape; on a page with no rounded motif it is the brand of the template, not of the subjectA radius taken from the direction's own shape language; square or plain buttons unless the brief asks for pills—

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.