All skills

frontend-design (Anthropic)

frontend-design review: removes the generic tells, not the sameness

SituationalSafe

25.5 / 30

Lift over no skill: +0.25

Situational: the lift +0.25 is under +1.0. Recommended needs a total of 22/30, output quality of 3.5, and a lift of +1.0.

SOTA

Pass

Tested with Codex.

Covers Codex, Claude Code

Codex CLI 0.166 (SOTA tier): 18 graded runs. A pass here also covers Claude Code under our tier rule; it says nothing about the second tier.

Scores

Each dimension is 0 to 5 and the six add up to the total out of 30. 5 is better on every dimension. Cost 5 means cheap and fast. Install 5 means easy.

Trigger reliability
5.0
Lift over no skill
2.3
Output quality
3.8
Token and time cost
5.0
Install and portability
4.5
Safety
5.0

Security review

Safe

Static scan: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Manual review: Safe to run (no findings). A clean scan does not prove a skill safe.

Install

npx skills@latest add anthropics/skills --skill frontend-design

Source

Pinned commit: ca45fc496a3436251f191354091d557da31c15b5

Tested: 2026-11-02

What we tested

  • New landing page from a brief
  • Data-dense dashboard UI
  • Reshape an existing bland page

Pros

  • The skill was picked up without being named: Skill file was read in 6/6 treatment runs without being named: auto-trigger works for UI building prompts.
  • No token overhead: 0.95x the tokens of no skill.

Cons

  • No measurable lift over no skill (+0.25, inside the noise).
  • A one-sentence prompt scored 3.75, against 3.75 with the skill (+0.00).
  • n=2 per task per arm; differences under about 1 point are noise.

Review

Codex CLI 0.166 (gpt-6-astra, low reasoning), a fresh temporary project per run, skill installed or absent, two runs per group, network off. We never mentioned the skill in the prompt, so this also tests auto-triggering. Three tasks: a landing page for an invented seaweed-snack subscription (Tidepool), a water-quality monitoring dashboard with sample data, and a redesign of a deliberately bland climbing-gym homepage that had to keep all its content. We rendered every page with Playwright (desktop 1440 px and mobile 390 px) in a network-less sandbox and scored them blind from screenshots, 0 to 5. We also counted specific features in the HTML.

Three-arm comparison

ArmMean score (0-5)Tokens per run
Without the skill3.593k
One-sentence prompt3.75125k
With the skill3.7588k

Measured with Codex CLI over 18 runs, scored by rule-based checks with no LLM judge. Total 25.5 / 30, verdict Situational.

Verdict: Situational (25.5 / 30, the highest of our first three). Source: anthropics/skills, skills/frontend-design, pinned at commit ca45fc4. Install: npx skills@latest add anthropics/skills --skill frontend-design. Apache-2.0.

What it is

A single prose file, no scripts. It tells the agent to act like the design lead at a studio that has already rejected cliché proposals: choose a palette, typefaces and layout specific to the brief, avoid common "AI-generated" defaults (a cream background with a terracotta accent, an all-caps eyebrow label above every heading, numbered 01/02/03 markers that do not mark a sequence), work in two passes (plan, review the plan against the brief, then build), and finish with a self-critique. It also lists quality floors: responsive to mobile, visible keyboard focus, reduced motion respected.

How we tested

Codex CLI 0.166 (gpt-6-astra, low reasoning), a fresh temporary project per run, skill installed or absent, two runs per group, network off. We never mentioned the skill in the prompt, so this also tests auto-triggering. Three tasks: a landing page for an invented seaweed-snack subscription (Tidepool), a water-quality monitoring dashboard with sample data, and a redesign of a deliberately bland climbing-gym homepage that had to keep all its content. We rendered every page with Playwright (desktop 1440 px and mobile 390 px) in a network-less sandbox and scored them blind from screenshots, 0 to 5. We also counted specific features in the HTML.

What happened

It triggers on its own. The skill file was read in all six treatment runs, with no prompting. Nobody had to type a command.

The tells it names do disappear. Per page, control pages used 3.2 all-caps labels and 1.5 numbered markers on average; pages made with the skill used 0.3 and 0. That is the skill's own advice showing up in the output. Neither group used the cream and terracotta hex values it warns against, and gradient use was identical (0.17 per page). Font families were limited to system fonts in both groups because the sandbox was offline, which hurts a skill that cares about typography. We expect different results with web fonts.

Overall quality was about the same. Blind scores averaged 3.75 with the skill and 3.5 without. The landing pages did better with the skill (4.0 vs 3.25), the dashboard and redesign tied. With two runs per cell that is noise. All the pages were competent: clear hierarchy, sensible spacing, no broken layouts.

The sameness is untouched. Three of the four landing pages, with and without the skill, used the same headline, "A little ocean. A lot of crunch."; the fourth (a treatment run) wrote "A little sea." with different copy. All four shared the same overall layout: product pouches and a mid-page pricing card. The skill asks for "a distinctive point of view specific to this brief", but one model run twice from the same prompt still converges on its own default. The skill removes surface clichés; it does not diversify the underlying idea. The redesign task produced a little more variety in typography: control runs used Arial/Helvetica and Courier, treatment runs picked Impact-style display type with Helvetica Neue or Avenir Next. That is system-font variety only.

Quality floors were met equally. Viewport meta tag, @media queries and :focus styles appeared in every page in both groups. Reduced-motion handling was missing on both dashboards in both groups. Mobile overflow was zero in 10 of 12 pages; one landing page in each group overflowed by 2 to 6 pixels.

No cost. Runs with the skill used 87,900 tokens on average against 93,000 without (0.95x) and took 155 seconds against 189. Reading the file is cheap compared with the pages themselves.

A caveat about our own checks

Our automated check for "keeps the $22 / $79 / $720 prices" failed on three of four redesign runs, in both groups. This is a flaw in our regex, not in the pages: the prices were split across <span> tags, and the screenshots show all three prices present. We did not use that check in the scores.

Safety review

One markdown file and a licence file. The scanner found nothing; the only domain is apache.org inside the licence text. No scripts, binaries, hidden characters or instructions about secrets. See security.md.

Scores

DimensionScoreWhy
Output quality3.75Polished, competent pages
Lift vs no skill2.25+0.25, within noise
Trigger5.0Read in 6 of 6 runs unprompted
Instructions and portability4.5Pure prose, no tool names; assumes screenshots are possible
Efficiency50.95x tokens
Safety and hygiene5Nothing found

Who should use it

If your agent's pages keep arriving with the same all-caps eyebrow labels and 01/02/03 markers, this skill reliably stops that, at no extra token cost, so there is little reason not to keep it installed. If you are hoping it will make an average model produce visibly more original design, we did not see that: you will still get a competent page that looks like what the model usually makes. The reliable fix for sameness is a stronger brief from you (a palette, a reference, a mood), which the skill says the brief's own words always override.

Limits of this test

Two runs per cell, one model, offline sandbox with system fonts, three tasks, scored by one blind reviewer rather than a panel. Design judgement is subjective. The Codex tier counts for Codex and Claude Code under the site's rule.

Update (2 Nov 2026): one-sentence group added

We added a third group: no skill, but one sentence appended to the prompt that carries the skill's core rule ("Give the page one specific, bold visual point of view ... avoid generic AI-design tells such as purple gradients, uppercase eyebrow labels, numbered 01/02 markers and identical three-card grids"). 6 runs, run on a Windows machine with the same Codex build, network off.

GroupBlind mean score (0-5)Tokens per run
No skill3.5093k
One sentence3.75125k
Skill installed3.7588k

The one sentence matches the skill (gain of the skill over it: 0.00) and beats no skill by 0.25, all inside noise at n=2. The one-liner runs spent about 1.4x the control's tokens; the skill did not. The best-looking page of the whole set (a serif dashboard headline, "A clear view of your water.") came from a one-liner run, and the one clearly buggy page (a garbled ticker with literal ?/b> text) came from the other one-liner run on the redesign task. Scores for the new group were given in a separate blind session from the original six-run comparison, so a small drift is possible (the same landing page scored 4.5 in one session and 3.25 on average in the other). The cost-free part of the skill is still the same: it removes the specific tells it names. A one-sentence prompt does most of that too.

Transcript

Run log for frontend-design: Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.
Columns: task, arm-run, score (0-5), tokens, seconds, checks passed, skill files the agent opened.

t1-landing control-1: score 3.5, tokens 82271, secs 186.0, checks 5/5, opened nothing
t1-landing control-2: score 3, tokens 71992, secs 148.5, checks 5/5, opened nothing
t1-landing oneliner-1: score 4, tokens 97532, secs 173.6, checks 5/5, opened nothing
t1-landing oneliner-2: score 3.5, tokens 97406, secs 150.6, checks 5/5, opened nothing
t1-landing treatment-1: score 4, tokens 102012, secs 167.9, checks 5/5, opened frontend-design
t1-landing treatment-2: score 4, tokens 84401, secs 169.4, checks 5/5, opened frontend-design
t2-dashboard control-1: score 4, tokens 99830, secs 215.1, checks 4/5, opened nothing
t2-dashboard control-2: score 3, tokens 138278, secs 252.2, checks 4/5, opened nothing
t2-dashboard oneliner-1: score 4, tokens 117512, secs 188.7, checks 5/5, opened nothing

18 runs, 3 artifacts

Sample output

SOTA · With the skill: index.html (t1-landing, run 1, Codex)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="theme-color" content="#e3eee4"><meta name="description" content="Meet Tidepool: small-batch, big-crunch seaweed snacks. Three bright flavours, one $14 box, delivered monthly."> <title>Tidepool — A little sea. A lot of crunch.</title> <style> :root{--ocean:#163e4b;--glass:#e3eee4;--green:#becfa3;--yellow:#f6cf58;--pink:#e9ad9c;--paper:#faf9ef;--line:#163e4b30}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:25px}body{margin:0;background:var(--glass);color:var(--ocean);font-family:"Trebuchet MS",Arial,sans-serif;font-size:16px;line-height:1.6}button,a,input{font:inherit}a{color:inherit}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #bd552d;outline-offset:5px}.wrap{max-width:1320px;margin:auto;padding:0 6%}.announcement{text-align:center;background:var(--ocean);color:var(--paper);font-size:12px;letter-spacing:.4px;padding:8px 16px}.nav{display:flex;align-items:center;justify-content:space-between;height:106px;gap:24px}.logo{font-family:"Arial Rounded MT Bold","Trebuchet MS",sans-serif;font-size:43px;font-weight:900;letter-spacing:-3px;text-decoration:none;line-height:1}.logo span{display:inline-block;transform:rotate(-14deg)}.nav-links{display:flex;gap:33px;align-items:center}.nav-links a{text-decoration:none;font-size:14px}.nav-links a:hover{text-decoration:underline}.button{border:1.5px solid var(--ocean);border-radius:40px;display:inline-flex;align-items:center;justify-content:center;gap:28px;background:var(--ocean);color:var(--paper);padding:14px 25px;text-decoration:none;font-weight:700;cursor:pointer;line-height:1.3}.button:hover{background:#285664}.button.small{padding:11px 23px;font-size:13px}.button .arrow{font-size:23px;line-height:.8}.hero{display:grid;grid-template-columns:1fr 1.05fr;align-items:center;min-height:574px;padding-top:25px;padding-bottom:65px;gap:20px}.hero h1{font-size:clamp(58px,6.5vw,88px);font-weight:900;line-height:.99;letter-spacing:-5px;margin:0 0 27px;max-width:650px}.hero p{font-size:17px;max-width:355px;margin:0 0 28px}.note{font-size:12px;margin-top:14px;display:block}.product-scene{height:480px;position:relative;isolation:isolate}.halo{position:absolute;inset:34px -10px 0;background:#ccddca;border-radius:50%}.pouch{position:absolute;width:205px;height:302px;border-radius:8px 8px 24px 24px;background:var(--green);box-shadow:10px 18px 20px #183e4822,inset -8px 0 18px #213f3412,inset 7px 0 12px #ffffff40;overflow:hidden;text-align:center;color:var(--ocean)}.pouch:before,.pouch:after{content:"";position:absolute;left:0;right:0;height:13px;background:repeating-linear-gradient(90deg,transparent 0 3px,#163e4b12 3px 4px);border-bottom:1px solid #163e4b20;top:0}.pouch:after{top:auto;bottom:0;border-top:1px solid #163e4b20}.pouch-brand{font-size:38px;line-height:1;font-weight:900;letter-spacing:-2.8px;margin-top:35px;display:block}.pouch-tag{font-size:8px;letter-spacing:1.1px;margin:8px 0}.pouch svg{width:110px;height:120px;display:block;margin:0 auto}.pouch-f [... excerpt: first 3200 of 18232 characters]

See Pro