Agent skill

Design

by ericrisco in ericrisco/rsc-harness

A skill your agent uses when designing or refreshing a web UI or landing page — visual concept, type/color/spacing/motion tokens, composition, rescuing a UI that reads AI-generic, or a graded design…

MITAuto-check passedFrontend & Design

Install Design

skills CLI
$ npx skills add ericrisco/rsc-harness --skill design -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ericrisco/rsc-harness design --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/design .claude/skills/design && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
design
GitHub stars
156
Token cost
~6.6k tokens
SKILL.md length
3,109 words
Files
16 (incl. scripts, references)
Skills in repo
229
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when designing or refreshing a web UI or landing page — visual concept, type/color/spacing/motion tokens, composition, rescuing a UI that reads AI-generic, or a graded design…

  • Works in 3 steps: Locate the brand study. Read the project… → If the link is MISSING, or the brand… → Only once the brand study exists and is…
  • Refreshing a web UI
  • SKILL.md covers Brand grounding — before you…, Pick a direction first, Research-first protocol and From competent to premium (the…, plus 11 more sections
  • Runs Shell scripts from its folder

What it does

Design is an agent skill from ericrisco/rsc-harness. Use when designing or refreshing a web UI or landing page — visual concept, type/color/spacing/motion tokens, composition, rescuing a UI that reads AI-generic, or a graded design review. Brand-grounded and research-first; ships Tailwind v4 + Next.js 15 under WCAG 2.2 AA and Core Web Vitals budgets. NOT the words on the page (that is marketing), NOT the App Router build (that is nextjs).

Its SKILL.md is about 6.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 18 other files, including scripts and reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/ai-tells.md`).

It sits in Frontend & Design, covering Landing pages, Accessibility and Frontend development. It works with Next.js and Tailwind CSS. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.

When your agent uses it

  • Refreshing a web UI
  • Landing page — visual concept
  • Type/color/spacing/motion tokens
  • Rescuing a UI that reads AI-generic

Example prompts

  • “/design”

Requirements

  • A Bash shell

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Locate the brand study. Read the project root CLAUDE.md and look for a ## Brand & voice section pointing into 02-DOCS/wiki/brand/.... If…
  2. If the link is MISSING, or the brand study is ABSENT or INCOMPLETE (any checklist dimension empty), STOP. Do not design yet. Ask the user…
  3. Only once the brand study exists and is sufficient, proceed — and cite which brand articles drove which decisions in your output (e.g…

What it can do on your machine

Read from SKILL.md and the folder at commit 92fde8f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Shell), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Design loads about 6.6k tokens when it runs, and up to ~31k if it reads all its reference files. Until then it costs about 100 tokens; SKILL.md has 3,109 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~100
When it runs · the whole SKILL.md, loaded when a task matches
~6.6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~31k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from ericrisco/rsc-harness at commit 92fde8f, republished under its MIT licence (© ericrisco). 3,109 words, ~6,588 tokens.

Download SKILL.mdSave it as .claude/skills/design/SKILL.md (or your agent's skills folder). This skill also uses 15 other files; get the full folder from GitHub.
name
design
description
Use when designing or refreshing a web UI or landing page — visual concept, type/color/spacing/motion tokens, composition, rescuing a UI that reads AI-generic, or a graded design review. Brand-grounded and research-first; ships Tailwind v4 + Next.js 15 under WCAG 2.2 AA and Core Web Vitals budgets. NOT the words on the page (that is `marketing`), NOT the App Router build (that is `nextjs`).
tags
design, ux, ui, landing, conversion
recommends
design-loop, design-dna, nextjs, marketing
profiles
full
origin
risco

Design — Product UI, Landing Pages & Conversion Copy

Hand-off — the visual system vs the craft of motion. This skill owns the visual system and page composition, and sets motion intent + budget only. The implementation of an animation is ../motion-craft/SKILL.md's; how a piece of interface should be BUILT — boundaries, state, the loading and empty and error states — is ../ui-engineering/SKILL.md's. When a request could belong to several of those, start from the one that owns the decision, not the one that owns the file. The motion reference in this skill defers its mechanics to them rather than restating them.

Research the best current work, then ship a premium, accessible, fast, high-converting interface.

SDD gate. If this fired on a new, non-trivial feature or behaviour change and there is no approved spec + plan under 02-DOCS/wiki/sdd/, hand off to ../specify/SKILL.md first — it runs brainstorm → spec → plan → tasks before any code, then routes back here once the plan is approved. Build straight from here only for a genuinely one-line / low-risk change. Method: ../sdd/SKILL.md.

Hand-offs. The WORDS are ../marketing/SKILL.md's: it co-owns the 02-DOCS/wiki/brand/ study (the words dimensions there, the visual ones here), and deep keyword research, GEO, or a technical SEO audit belongs to it — this skill only enforces SEO-aware structure in markup. The BUILD (App Router / React 19) is ../nextjs/SKILL.md's. Mirroring the brand tokens into a Flutter app is ../flutter/SKILL.md's. Pure backend/data/infra with no UI surface: decline — there is nothing to design. Three references live outside this repo and are named for direction only, not invocable here: frontend-design-direction for dense internal tooling used daily (never paint a marketing skin on a tool that needs repeated daily use — fold its judgment in via the DIRECTION BRIEF); liquid-glass-design for native iOS 26 SwiftUI Liquid Glass (this skill ships the web glass approximation only); motion-ui / motion-foundations for motion-code mechanics (springs, AnimatePresence internals, layout animations — this skill sets motion intent + budget).

Brand grounding — before you design anything

A design with no brand behind it is a guess, and a guess defaults to your AI-generic prior. That is why this gate is a hard stop rather than a warning: an incomplete brand study blocks the work.

Follow the harness 02-DOCS convention (brand study = wiki articles under 02-DOCS/wiki/brand/, raw inputs under 02-DOCS/raw/brand/, linked from root CLAUDE.md):

  1. Locate the brand study. Read the project root CLAUDE.md and look for a ## Brand & voice section pointing into 02-DOCS/wiki/brand/.... If present, read those articles.
  2. If the link is MISSING, or the brand study is ABSENT or INCOMPLETE (any checklist dimension empty), STOP. Do not design yet. Ask the user the targeted question script — ONE focused batch at a time, not a wall of questions — until every dimension in the completeness checklist is filled (→ references/brand-grounding.md). Write/update the brand study into 02-DOCS/wiki/brand/ (and paste any raw inputs the user gives — screenshots, existing palettes, competitor lists — into 02-DOCS/raw/brand/), following the wiki article format, update wiki/index.md + wiki/log.md, and add/update a ## Brand & voice section in the root CLAUDE.md linking to it (create CLAUDE.md if absent).
  3. Only once the brand study exists and is sufficient, proceed — and cite which brand articles drove which decisions in your output (e.g. "palette from 02-DOCS/wiki/brand/visual-identity.md").

The completeness checklist spans visual identity (OKLCH color system, type pairing & scale, logo, imagery/illustration mood, density, radius/shadow/motion personality), reference/inspiration sites the user loves, layout preferences, dark-mode stance, accessibility & performance constraints, and brand voice/positioning (so copy and design agree). Full checklist + exact question script → references/brand-grounding.md.

When a dimension has no answer — the non-technical default, and the reason this gate used to be impassable: do not invent one and do not wave the STOP through. references/starting-point.md is how a starting point gets proposed instead: what the project already owns is checked first, the value comes from a reference you opened and measured, and it is written marked propuesto — which does not count as complete until the user confirms it.

The order is: brand grounding → trend research → build.

Pick a direction first

Fill the direction brief before you write a single line of markup:

text
DIRECTION BRIEF (fill before coding)
1. Purpose .......... what job does this interface do, in one sentence?
2. Audience ......... who repeats this workflow; what do they scan first?
3. Tone ............. pick: utilitarian | editorial | playful | industrial | refined | technical | minimal | dense | calm
4. Memorable detail . the ONE idea that makes it feel intentional (not a gradient)
5. Constraints ...... framework, a11y, perf budget, existing design system/tokens

Then map the project type to composition, density, and motion budget. Density and composition follow the audience and the job, not a template — a SaaS operations tool should be dense, quiet, and scannable.

Project typeCompositionDensityMotion budget
SaaS marketingFull landing stack, hero→CTAGenerousTasteful reveals, hover affordances
Dev toolShow the product/CLI first, then proofMediumSubtle, fast (≤200ms)
Dashboard / internal toolData-first, no heroDense, scannableState-only (loading, success)
Portfolio / editorialExpressive, asymmetricAiryExpressive but reduced-motion-safe
E-commerceProduct grid, fast PDPMediumMicro-interactions on add-to-cart
DocsSidebar + reading columnCalm, 65ch measureNear-zero

Research-first protocol

Trends churn quarterly and your built-in aesthetic prior is the median of every AI template ever scraped. Never prescribe from stale memory; counter it with a loop:

  1. Define 2–3 reference archetypes from the DIRECTION BRIEF (e.g. "Linear-grade dev tool, dark, type-led").
  2. Browse the dated registry in references/inspiration-sources.md — whole pages to beat, SaaS and conversion surfaces, real product flows (Mobbin, Page Flows), single patterns, and the design systems that are specification rather than inspiration — plus the tier-1 sites (Linear, Stripe, Vercel, Cursor, Resend). Every entry there carries a verification date; godly.website now redirects to recent.design, which is exactly why the list is dated and not inline.
  3. WebFetch 3–5 exemplars, prompting each for type, color, layout, motion, and copy voice — concrete details, not adjectives.
  4. Extract a pattern table from what they share and where they differ.
  5. Synthesize a one-paragraph DESIGN DIRECTION with citations (which URL contributed what).
  6. Only THEN build; re-check the result against the references in QA.

Re-research per project — trends churn, competitors moved, and the domain dictates the reference set. Whenever the brand study lacks aesthetic direction or the user asks for "modern" / "2026" / "premium", run this loop, fold the findings into the output with citations + dates, and refresh references/trends-2026.md. Full loop, source map, and synthesis template → references/research-method.md. Current snapshot (dated, cited) → references/trends-2026.md.

From competent to premium (the part that earns the score)

Obeying every constraint gets you to competent — a page that ships and passes review. It does NOT get you to premium, because every constraint catches an absence (no missing <h1>, contrast passes), while premium is a presence: a point of view. Competent-but-generic is the default failure mode of under-specified design output. Close it with four deliberate moves, in order, before and during the build:

  1. Choose a visual concept. One sentence the whole page answers to — [feeling] + [structural metaphor] for [audience doing job] (e.g. "quiet instrument-panel precision for ops engineers"). Drawn from the brand study + research exemplars, never your prior. If you cannot name what makes this surface different from the median SaaS page, you have no concept yet, and the output will default to generic.
  2. Manufacture the ONE signature element the brief asks for — the thing you'd describe first to a friend. Pick exactly one from a real vocabulary, biased by domain: a hero that demonstrates not describes (live terminal / real chart / actual diff), an owned type moment, a structural signature (asymmetric split, horizontal feature rail, editorial index), a material signature (hairline grid, one grain pass, duotone), a motion signature, or a real-number/proof signature. Never default to "a gradient". It must be true to the product, and cite the research exemplar that inspired it.
  3. Force scale contrast. Generic pages are tonally flat — headline, titles, body all within ~1.5×. Make the hero dominant 3–5× the body, demote eyebrows/labels/metadata smaller and quieter than feels comfortable, and allow one focal point per viewport. If a section feels flat, add contrast, not elements.
  4. Give the page rhythm. Ten identical py-24 white card-grid sections read as one stripe. Vary format (full-bleed vs. contained, alternate media sides), background (a dark section between light ones anchors a CTA), density (a breathing statement after a dense grid), and container idiom (not everything is a bordered card). Inter-section gap > intra-section gap, padding stepping on the scale.

Then, before claiming done, run the senior-designer crit and make at least one concrete change as a result: What is the one idea here (name it in a sentence)? Would this place on Awwwards/Godly or just pass review? What is the single most generic element right now — and replace it. Where does the eye land first, and is that what should win? If the logo were removed, would anyone know whose product this is? Does every section earn its place, or is one there out of habit (cut it)?

Concept formula, signature vocabulary, scale/rhythm rules, the crit, and a worked generic→signature dev-tool hero → references/signature-and-craft.md.

Visual system in 90 seconds

Copy-pasteable foundation. Tokens once, consume everywhere — design tokens, never magic numbers.

  • Tailwind v4 @theme block (OKLCH): tokens become CSS vars and utilities automatically — no tailwind.config.js.
  • Type scale via next/font (one display + one text face) plus a fluid clamp() ladder.
  • Spacing, radius, and shadow are tokens too, never inline numbers.
  • The rule: arbitrary hex + random px = Bad; token references = Good.
css
/* Good — Tailwind v4 @theme: OKLCH palette, tokens become CSS vars + utilities */
@import "tailwindcss";
@theme {
  --color-bg:        oklch(0.99 0 0);
  --color-fg:        oklch(0.21 0.01 256);
  --color-muted:     oklch(0.55 0.01 256);
  --color-brand-500: oklch(0.62 0.19 256);
  --color-brand-600: oklch(0.55 0.19 256);
  --font-display:    "Geist", ui-sans-serif, system-ui, sans-serif;
  --font-text:       "Inter", ui-sans-serif, system-ui, sans-serif;
  --radius-card:     0.875rem;
  --shadow-card:     0 1px 2px oklch(0 0 0 / 0.06), 0 8px 24px oklch(0 0 0 / 0.08);
  --ease-out:        cubic-bezier(0.22, 1, 0.36, 1);
}
html
<!-- Bad — magic hex + arbitrary px, no system -->
<div style="background:#5b54ff;border-radius:13px;padding:17px">…</div>
<!-- Good — token-driven utilities -->
<div class="bg-brand-500 rounded-card p-4">…</div>

Full token system, type scale, OKLCH ramp, bento, glass → references/visual-system.md.

Landing page build recipe ("the brutal landing")

Each section has ONE job. Cut any section that has none.

  1. Hero — state the value prop; pass the 5s test.
  2. Social-proof strip — borrow credibility immediately (logos, a hard metric).
  3. Problem / agitation — name the pain in the reader's words.
  4. Solution — show the product doing the job.
  5. Features → benefits (bento) — translate each capability into an outcome.
  6. Objection handling — preempt the top reason they won't buy.
  7. Pricing — anchor, highlight one tier, default to annual.
  8. FAQ — answer the real blockers, not filler.
  9. Final CTA — one clear action, value on the button.
  10. Footer — navigation, legal, trust signals.
tsx
// app/page.tsx — Server Component, LCP-safe hero (Next.js 15 / React 19)
import Image from "next/image";

export default function Page() {
  return (
    <main>
      <section className="mx-auto max-w-5xl px-6 pt-24 text-center">
        <h1 className="text-balance text-5xl font-semibold tracking-tight md:text-6xl">
          Ship the change in an afternoon, not a sprint
        </h1>
        <p className="mx-auto mt-5 max-w-xl text-pretty text-lg text-fg/70">
          Concrete benefit, who it is for, and why now — no hype.
        </p>
        <a
          href="#start"
          className="mt-8 inline-flex min-h-11 items-center rounded-card bg-brand-500 px-6 font-medium text-white transition-colors hover:bg-brand-600"
        >
          Start free
        </a>
        <Image
          src="/hero.avif"
          alt="Product dashboard showing a one-click deploy"
          width={1200}
          height={720}
          priority
          className="mt-16 rounded-card shadow-card"
        />
      </section>
    </main>
  );
}

Full section-by-section anatomy, CTA cadence, pricing psychology, JSON-LD → references/landing-anatomy-and-cro.md.

Conversion copy in one pass

Copy is benefit-led and specific, or the page has no value prop. One <h1> per page; semantic landmarks (header/nav/main/section/footer).

  • The 5s value-prop test: a stranger reads the hero and can say what it is, who it's for, why it's better — legible above the fold in 5 seconds.
  • Headline formula slots: outcome + timeframe; "X without Y"; the job-to-be-done.
  • Framework picker: PAS for pain-aware cold traffic; AIDA for broad / top-of-funnel; FAB/JTBD for feature → benefit translation.
  • CTA: put the value on the button ("Start free", "Get my estimate"), never "Submit".
text
Bad  — "Revolutionize your workflow with our seamless platform"
Good — "Deploy a fix in 4 minutes — no YAML, no on-call page"

Ban: revolutionary · game-changer · cutting-edge · "In today's landscape" · unlock · seamless · elevate · supercharge · bait questions · "not X, just Y" · forced lowercase · "Excited to share".

Frameworks, value-prop canvas, Bad→Good rewrites, VOICE block → references/copywriting-frameworks.md.

Motion & interaction budget

  • Purposeful-only: motion must guide attention, communicate state, or preserve continuity — else delete it.
  • Timing defaults: enter 200–350ms, exit ~150ms, press scale(0.97).
  • Never transition: all — it animates layout props and janks.
  • Compositor-only properties: transform, opacity, filter.
  • prefers-reduced-motion is required, not optional.
  • Scroll-driven via native CSS animation-timeline: view() FIRST (no JS, no CLS) before any JS library.
css
/* Good — native scroll-driven reveal, zero JS, explicit @supports fallback */
.reveal { opacity: 1; } /* default visible: no scroll-timeline support => never hidden */
@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    .reveal {
      animation: reveal linear both;
      animation-timeline: view();
      animation-range: entry 0% cover 30%;
    }
  }
}
@keyframes reveal {
  from { opacity: 0; translate: 0 16px; }
  to   { opacity: 1; translate: 0 0; }
}

Timing tokens, micro-interactions, scroll/parallax, when to escalate to motion/react → references/motion-and-interaction.md.

Premium details that compound

Small things, applied consistently, are what reads as "designed".

DetailBadGood
Nested radiusSame radius parent + childouter = inner + padding (concentric)
ShadowsOne hard 0 4px 8px #000Layered transparent OKLCH shadows
SeparationHeavy drop shadow everywhereHairline 1px border first, shadow only for lift
HeadingsRagged wraptext-wrap: balance
Body / captionsOrphan last wordtext-wrap: pretty
Numbers/pricesWidth jittersfont-variant-numeric: tabular-nums
ImagesEdge blurs into bg1px neutral outline, outline-offset: -1px
Glassbackdrop-blur on everythingBlur + 1px hairline + subtle noise, sparingly
css
html { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
img  { outline: 1px solid oklch(0 0 0 / 0.1); outline-offset: -1px; }
.price { font-variant-numeric: tabular-nums; }

Depth recipes, glass, noise, concentric math → references/visual-system.md.

Show full SKILL.md (1,216 more words)Show less

The three locks, and who checks them

A long page generated in passes drifts against itself. Three things must be one thing for the whole page, and they are not preferences — a page that breaks one of them is defective:

  1. Theme lock. One theme for the page (light, dark, or auto). No section flipping to inverted halfway down because it looked good alone.
  2. Accent lock. One accent, used identically in every section. This one is judgement: deciding which token is the accent needs to read the system's intent, so no script claims to check it — you do, before you claim done.
  3. Radius lock. One radius system. Four different rounded-* scales in one tree means there is no system, and scripts/verify.sh counts them.

The tells the script owns, and the ones you own

scripts/verify.sh carries a registry of mechanical tells and reports each with file and line: dashes in rendered copy, scroll cues, numbered eyebrows, build stamps on marketing pages, unstable viewport heights, middot chains, hype words, plus counted ratios (eyebrows against sections, double-bordered rows, radius scales). Run it; do not re-derive that list from memory, and do not treat its silence as a design review.

What it cannot see is the other half: fabricated substance (a product UI built from divs, invented photo credits, the Jane Doe cast), decoration posing as information, labels that say nothing, and composition habits like three identical feature cards. That half is references/ai-tells.md, and it is read with your eyes on the page.

When the brief corresponds to an official, maintained design system rather than an aesthetic — UK or US public sector, Shopify admin, Carbon, Atlassian, Primer, Fluent — install the official package instead of approximating it: references/design-systems.md.

Anti-patterns

RationalizationReality / Fix
"Purple→blue gradient on everything looks modern"It reads AI-generic. Pick a domain-true palette; gradients are seasoning.
"Centered text over an atmospheric gradient is a hero"Show the product. Vague hero fails the 5s test.
"Cards inside cards add structure"They add noise. Flatten; use spacing + one border.
"I know good design, I'll skip research"Taste ≠ current trend. Re-research every project.
"The image sells it, copy can be vague"Copy carries the value prop. Pass the 5s test.
"Animate everything on scroll"CLS + INP cost. Reveal sparingly, transform/opacity only.
"Ship now, check contrast later"Contrast is a constraint, not polish. 4.5:1 or it ships broken.
"Glass everywhere looks premium"Glass on everything looks cheap. Reserve for floating surfaces.
"transition: all is convenient"It animates layout props → jank. List exact properties.

Quick reference

Accessibility and Core Web Vitals are design constraints, not post-launch tuning — violating one is a defect, not a style choice. WCAG 2.2 AA: 4.5:1 text contrast (3:1 large text / UI), visible focus, prefers-reduced-motion honored. Target size: 24×24px is the AA floor (SC 2.5.8 Target Size (Minimum)); 44×44px is the recommended quality bar (Apple HIG / pointer comfort) — aim for 44, never ship below 24. Core Web Vitals: LCP < 2.5s, INP < 200ms, CLS < 0.1. (INP replaced FID in March 2024 — measure INP.)

LeverDefaultToken / where
Type scale ratio1.25modular scale
Body size16–18px--font-text
Line-height1.5 body / 1.1 displayper element
Spacing base4 / 8pxTailwind spacing
Color allocation60-30-10bg / fg / brand
Text contrast≥ 4.5:1 (3:1 large)verify with checker
Card radius0.875rem--radius-card
Touch target44×44px recommended; 24×24px AA floor (SC 2.5.8)min-h-11
Enter / exit motion250ms / 150ms--ease-out
LCP< 2.5snext/image priority
INP< 200mscompositor-only motion
CLS< 0.1reserved space, next/font
Heropasses 5s testvalue prop above fold

Design-review QA checklist

Run before claiming done. Same checks scripts/verify.sh falls back to.

  • Value prop legible in 5 seconds above the fold.
  • Text contrast ≥ 4.5:1 (3:1 for large text / UI).
  • Visible focus state on all interactive elements.
  • Touch targets 44×44px (recommended); never below the 24×24px WCAG 2.2 AA floor (SC 2.5.8).
  • prefers-reduced-motion honored.
  • Exactly one <h1> on the page.
  • Semantic landmarks present (header/nav/main/section/footer).
  • LCP image has priority.
  • Fonts use next/font (no CLS / FOUT swap shift).
  • No transition: all / transition-all.
  • Tokens used (no magic hex / px).
  • Ban-list words absent from copy.
  • Text fits at 360px and desktop without overflow.
  • Empty / loading / hover / error states designed.

Automate → scripts/verify.sh (runs Lighthouse if a dev server is up, else static grep checks + this list).

Optional: graded visual-audit rubric (0–10)

The checklist above is pass/fail. When the user asks for a design review, a critique, or a quality grade — or when you want to argue a surface is genuinely premium rather than merely compliant — score these 11 dimensions 0–10 and report the weighted total. Pass/fail tells you it ships; the rubric tells you how good it is.

#DimensionWhat a 10 looks likeWeight
1First impression & value clarityPasses the 5s test instantly; product shown, not a gradient1.5
2Concept & signatureA nameable visual concept; one distinctive, domain-true signature element; logo-removed it's still recognizably this product, not a template1.5
3Typographic craftModular scale, ≤2 families, balanced headings, 45–75ch measure, tabular numerals; deliberate 3–5× scale contrast1.0
4Color & contrastDisciplined 60-30-10 OKLCH system, all text ≥ 4.5:1, dark mode via token swap1.0
5Layout, spacing & rhythmConsistent 4/8px scale, intentional asymmetry/bento, clear focal point; sections vary in format/background/density, not one repeated stripe1.0
6Hierarchy & scannabilityEye lands in the right order; one primary action per viewport1.0
7Depth & detail polishConcentric radius, layered shadows, hairline borders, restrained glass1.0
8Motion qualityPurposeful only, compositor-only props, reduced-motion + @supports guards1.0
9AccessibilityLandmarks, one <h1>, visible focus, 24px+ targets (44 ideal), no motion-only meaning1.0
10Performance (CWV)LCP < 2.5s, INP < 200ms, CLS < 0.1; LCP image priority, next/font1.0
11Copy & brand fidelityBenefit-led, specific, ban-list clean, voice matches the 02-DOCS/wiki/brand/ study0.5

Score = Σ(dimension × weight), max 115 (normalize to /100 by ×100/115 if you want a percentage). Bands (on the /115 raw total): < 69 ships generic — redo; 69–91 competent but improvable — name the lowest two and fix; 92–108 premium; 109+ award-tier. (These are the prior 60/80/95-per-100 cutoffs rescaled to 115.) A surface that scores well on every constraint dimension but low on #1–2 is the classic "competent but generic" result — fix concept and signature first, it has the most leverage. For each dimension below 8, give one concrete, actionable fix (not "improve spacing" but "section padding jumps 48→96px with no 64px step — add py-16 on mobile"). Cite the brand article or trend source that sets the bar where relevant.

Recording the decisions (02-DOCS)

Two records, both indexed in 02-DOCS/wiki/index.md (the Knowledge map; root CLAUDE.md keeps only a short pointer to it), both read first on every use so outputs stay consistent with them:

  • The brand study at 02-DOCS/wiki/brand/ — the hard gate above: missing or incomplete → ask until complete before designing.
  • The design-system decisions at 02-DOCS/wiki/stack/design.md — the chosen tokens (color/OKLCH, type scale, spacing, radius, shadow, motion), the 2026 direction picked, and the reference sites. Recorded, not gated; create/update it as decisions are made. Read it before fixing type and palette on a new surface, and either reuse what is there or state why you are departing — otherwise every surface of the project drifts into a different design. (Across different projects this record cannot help: it lives inside each one. Distrusting your own second default is the only guard there — see the repetition note in references/ai-tells.md.)

The wiki article protocol both follow is ../harness/SKILL.md's.

© ericrisco, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 15 other files (scripts, references) in skills/design of ericrisco/rsc-harness.

  • SKILL.md
  • evals/README.md
  • evals/cases.yaml
  • references/ai-tells.md
  • references/brand-grounding.md
  • references/copywriting-frameworks.md
  • references/design-systems.md
  • references/inspiration-sources.md
  • references/landing-anatomy-and-cro.md
  • references/motion-and-interaction.md
  • references/research-method.md
  • references/signature-and-craft.md
  • references/starting-point.md
  • references/trends-2026.md
  • references/visual-system.md
  • scripts/verify.sh

Open the folder on GitHubat commit 92fde8f

Compare with similar skills

Design next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Design compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Design this skillericrisco/rsc-harness156—~6.6kAutomated safety check: PassMIT
Senior Frontendborghei/Claude-Skills874—~1.7kAutomated safety check: PassMIT
UI/UX Design System AdvisorGalaxy-Dawn/claude-scholar5.7k1 repos~1.1kAutomated safety check: PassMIT
Design StyleCastor6/tactus3761 repos~2.1kAutomated safety check: PassApache-2.0
Gridgeistohmiler/gridgeist115—~2.6kAutomated safety check: PassMIT
Frontend Designjjyaoao/HelloAgents3.2k1 repos~7kAutomated safety check: PassMIT

Similar skills

  • Senior Frontend

    borghei/Claude-Skills

    Frontend development for React, Next.js, TypeScript, and Tailwind CSS.

    874 GitHub stars~1.7k tokensUpdated today
    Frontend & DesignAuto-check passed
  • UI/UX Design System Advisor

    Galaxy-Dawn/claude-scholar

    Turns a vague UI request into a concrete design system with style, palette, typography and layout guidance from a search script, plus stack-specific implementation advice.

    5.7k GitHub starsUsed in 1 repo~1.1k tokens
    Frontend & DesignAuto-check passed
  • Design Style

    Castor6/tactus

    A skill your agent uses whenever the user asks to build, create, design, develop, improve, or style any frontend interface or visual element.

    376 GitHub starsUsed in 1 repo~2.1k tokens
    Frontend & DesignAuto-check passed
  • Gridgeist

    ohmiler/gridgeist

    A skill your agent uses when creating, redesigning, or reviewing web interfaces that need product-specific structure, clear hierarchy, responsive composition, accessible interaction, or relief from…

    115 GitHub stars~2.6k tokensUpdated 2 mo ago
    Frontend & DesignAuto-check passed
  • Frontend Design

    jjyaoao/HelloAgents

    Transform UI style requirements into production-ready frontend code with systematic design tokens, accessibility compliance, and creative execution.

    3.2k GitHub starsUsed in 1 repo~7k tokens
    Frontend & DesignAuto-check passed
  • Frontend Design Ultimate

    aAAaqwq/AGI-Super-Team

    Create distinctive, production-grade static sites with React, Tailwind CSS, and shadcn/ui — no mockups needed.

    105 GitHub starsUsed in 2 repos~2.7k tokens
    Frontend & DesignAuto-check passed

More from ericrisco/rsc-harness

All 229 skills in this repo
  • Ab Testing

    ericrisco/rsc-harness

    A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…

    156 GitHub stars~2.4k tokensUpdated yesterday
    Auto-check passed
  • Accessibility

    ericrisco/rsc-harness

    A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…

    156 GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed
  • Ads

    ericrisco/rsc-harness

    A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…

    156 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • Agent Eval

    ericrisco/rsc-harness

    A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…

    156 GitHub stars~3.2k tokensUpdated yesterday
    Auto-check passed
  • AI Media

    ericrisco/rsc-harness

    A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…

    156 GitHub stars~3.3k tokensUpdated yesterday
    Auto-check passed
  • Analytics

    ericrisco/rsc-harness

    A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.

    156 GitHub stars~2.8k tokensUpdated yesterday
    Auto-check passed

Questions about Design

What does Design do?

A skill your agent uses when designing or refreshing a web UI or landing page — visual concept, type/color/spacing/motion tokens, composition, rescuing a UI that reads AI-generic, or a graded design…. Design is an agent skill from ericrisco/rsc-harness. Use when designing or refreshing a web UI or landing page — visual concept, type/color/spacing/motion tokens, composition, rescuing a UI that reads AI-generic, or a graded design review.

When should I use Design?

Design fits situations like: refreshing a web UI; landing page — visual concept; type/color/spacing/motion tokens; rescuing a UI that reads AI-generic.

How do I install Design in Claude Code?

Run `npx skills add ericrisco/rsc-harness --skill design -a claude-code`. Or copy the skill folder (skills/design in ericrisco/rsc-harness) into .claude/skills/design in your project. Claude Code loads it when a task matches its description.

How do I install Design in Codex?

Run `npx skills add ericrisco/rsc-harness --skill design -a codex`. Or copy the skill folder (skills/design in ericrisco/rsc-harness) into .agents/skills/design in your project. Codex loads it when a task matches its description.

Can I use Design in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ericrisco/rsc-harness --skill design -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/design, .gemini/skills/design, .github/skills/design and .opencode/skills/design in your project.

What does Design need to run?

Going by SKILL.md and its folder, Design needs a shell for the scripts in its folder. Our summary lists: A Bash shell.

Does Design access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Design safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Design use?

Design is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Design use?

About 6.6k tokens (SKILL.md is roughly 26k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 25k tokens, read only when the agent opens those files.

What are the alternatives to Design?

Skills that share tags, products or a category with Design: Senior Frontend (borghei/Claude-Skills, 874 stars), UI/UX Design System Advisor (Galaxy-Dawn/claude-scholar, 5.7k stars), Design Style (Castor6/tactus, 376 stars) and Gridgeist (ohmiler/gridgeist, 115 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Design?

ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 156 GitHub stars. The repository holds 229 skills in this directory. The repository was last updated on October 6, 2026.

Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.