Why coding agents build the same website, and what a design skill changed
Same model, same three website tasks, with and without a design workflow. The skill passed 24 of 27 checks against 10, but 12 of those checks test its own paperwork. On what the user receives it scored 15 of 15 against 9 of 15.
We build websites with coding agents in the loop, and we have the same complaint as everyone who does. Ask an agent for a site and you get the house style: the same layout set in the same few typefaces, with marketing copy to match. So we had Claude Code build a website-design skill that replaces the single prompt with a gated workflow, then measured it. The same three tasks went to the same model with and without the skill, one run each, against 27 written checks. This piece is the numbers, and the limits of what they show.
The headline is 24 of 27 checks with the skill against 10 without. The honest number is narrower. Twelve of the checks test the skill's own paperwork, which a plain model can only pass by accident. On the 15 checks about what the user receives, the skill scored 15 and the plain model scored 9, and no check passed only without the skill.
Why do coding agents build the same website every time?
Because an unguided model samples the centre of its training data, and both vendors say that centre is one look. Anthropic attributes the default (Inter, purple gradients on white, minimal animation) to distributional convergence: safe choices dominate the pages the model learned from. OpenAI describes the same failure as a fallback to high-frequency patterns when a prompt is underspecified. Neither vendor publishes a measurement of that distribution, so both are explanations rather than evidence.
The research around them predates the tools and points the same way.
| Study | Sample | Finding |
|---|---|---|
| Padmakumar and He, ICLR 2024 | 38 writers, 300 essays | Essays co-written with InstructGPT became significantly more similar between authors. The base model had no such effect, and the loss came from the model's contribution rather than the writers' own sentences. |
| Kirk et al., ICLR 2024 | RLHF against supervised fine-tuning | Reinforcement learning from human feedback reduces output diversity compared with supervised fine-tuning. |
| Doshi and Hauser, Science Advances 2024 | 293 writers, preregistered | Stories written with model-generated ideas were rated more creative (novelty up 5.4% with one idea, 8.1% with five) and were more similar to each other. |
| Anderson, Shah and Kreminski, Creativity and Cognition 2024 | 36 recruited, 33 analysed | Chatbot users produced about 15% more ideas covering about 27% more categories, and their ideas sat closer to everyone else's (d = 0.47). The extra variety was coverage rather than spread. |
| Goree et al., CHI 2021 | Archived website screenshots, 2003 to 2019 | Designs grew more similar after 2007, with average layout distance between sites down more than 30%, attributed partly to shared source code and libraries. |
| Shin et al., preprint, March 2026 | 63 sources, six vibe-coding tools | One-shot generation removes the pause where a person would choose. The authors record models defending a sparse layout for an audience whose market prefers dense pages. |
| Krebs, April 2026 | 1,590 Show HN launch pages, deterministic checks | 22% triggered four or more generated-design patterns and another 32% triggered two or three. |
The last row is the one you can check yourself. Add the two tiers and more than half of a sample of launch pages carried at least two of the patterns the scan looked for.
Why doesn't a list of banned fonts fix it?
Because the list moves the default instead of removing it. Anthropic writes that even with explicit instructions to avoid certain patterns, the model can fall back on other common choices such as Space Grotesk. That is a stated tendency rather than a measured result, and it matches what practitioners report. Paul Bakaus, who built the Impeccable design toolkit, describes a banned list as pushing the model into a different part of its latent space, where the escape route becomes the next template. In an interview he adds that widely shared skills become a source of sameness in their own right. Anthropic's own frontend-design skill dropped its named font bans in a June 2026 rewrite, and its September 2026 revision lists five default looks as patterns to recognise, with the brief's own words winning over all of them.
This finding shaped the whole skill. It keeps a list of the current default looks, because the list is useful today, and it adds two named tests meant to outlive the list. The swap test replaces the business with a competitor in the same category and lists the decisions that would have to change; if only the name and logo change, the design is a template. The category test is the one to remember: if someone could guess the design from the category alone (a bakery, an HR tool, a law firm), or from the category plus the usual avoidance, the direction fails. The skill runs the category test on its candidate concepts and both tests on the approved direction before any code is written. It is the same principle as in our note on what makes a prompt work in production: a test the model can run beats an adjective it can interpret.
What does the skill do that a prompt does not?
It splits one request into seven stages with a person's decision between them. The order came from a shared ChatGPT deep-research conversation on the same complaint, dated 14 September 2026, which concluded that creative direction, content, implementation and visual review should run as separate steps, and which said plainly that it had established techniques rather than a validated ranking. The skill's stages are:
- Brief. Built from the owner's real material, with a source for every fact and every missing fact marked unknown. Questions go only to gaps that would change the design, and never to fonts or colours.
- References. Three to five, each viewed in a browser and annotated, with at least one from outside the competitor category and one artefact of the subject itself, such as a label, a form or a map.
- Directions, then the person chooses. Six to eight one-line concepts, filtered by the category test, then a random draw of three, developed to differ in hierarchy, composition and imagery, with a labelled standard option alongside and one recommended with a reason.
- Art direction. The approved concept, composition, visual system, signature element with fallbacks and motion rules, written down so a later session does not repeat the rejected directions.
- Representative slice, then the person approves. Navigation, the opening section and one substantial content section, with their mobile behaviour, built with real copy and visible placeholders for missing facts, then screenshotted at desktop and mobile widths.
- Full build. The approved system extended to every page in the brief, with the copy track running alongside under a claim ledger.
- Critique, bounded. One inspection round of screenshots, three located findings, one fix batch, one confirmation round, then the remaining trade-offs go to the person.
Three things changed on the way from that playbook to the skill. The playbook specified six design documents and four prompt files. The skill keeps four documents, adds one for unasked questions, and routes small changes around the whole workflow, because OpenAI's September 2026 guidance warns that stacked skills with long descriptions get truncated and can contradict each other, and that demanding a pile of documents before every change wastes context. The playbook warned against banning fonts and gradients globally, and the skill turned that warning into the two tests. And every instruction that rests on research now carries its source and a confidence label inside the skill, so a user who pushes back gets a citation.
Mechanically, it is a Claude Code skill: a folder the model loads when a request matches its description. It holds 12 files and 115,435 bytes. The main instruction file is 208 lines and about 3,128 words, and the description that decides whether it loads is 1,010 characters against a limit of 1,024.
| Part | Size | Job |
|---|---|---|
SKILL.md | 208 lines | Routing, seven stages, the two tests, the copy track, question rules |
references/craft.md | 232 lines | Type, colour, layout, motion, imagery, and the looks that read as generated |
references/site-types.md | 180 lines | Visitor questions and material to request for nine kinds of site |
references/findings.md | 179 lines | The evidence behind each instruction, with confidence labels |
references/copy.md | 147 lines | Voice, specificity, generated-prose patterns, claims and the law |
references/review.md | 122 lines | Critique rubric, technical floor, the bounded loop |
scripts/prose_check.py | 152 lines | Flags banned words, filler, false-antithesis patterns, unsupported claims |
scripts/shots.mjs | 118 lines | Screenshots at several widths, section crops, rendered text, overflow checks |
assets/templates | 4 files | Brief, direction, content and questions documents |
Five decisions worth copying
1. A random draw decides which concepts get developed. The model writes six to eight one-line concepts, deletes the ones that fail the category test, numbers the survivors, and draws three at random with a one-line Python call. Asked for its best three, a model returns its most probable three, and the draw takes that ranking away from it. It adapts a seeded dealing mechanism from the Impeccable toolkit, whose author reports that across sixteen creative framings, 30 of 35 answers proposed the same concept. One line of research attributes this collapse to typicality bias in preference data and recovers 1.6 to 2.1 times more diversity in creative writing by asking for several candidates with their probabilities; the draw goes further by removing the model's ranking entirely. The draw itself has never been tested on its own.
python3 -c "import random; print(sorted(random.sample(range(1, N + 1), 3)))"
2. Alternatives come before critique. The evidence here is the strongest in the skill's file, and it is about people. In Dow et al., novice designers who produced several prototypes in parallel before any critique beat serial refiners on live click-through (445 against 398 clicks per million impressions), on blind expert ratings and on measured diversity, and they took the critique better: 8 of 17 serial participants called it negative, against none of the 16 parallel ones. Whether the benefit transfers to model-generated directions depends on a person doing the choosing, which is what the skill's gate asks for.
3. The build stops at the second section. The slice covers navigation, the opening section and one substantial content section, at desktop and mobile widths. A striking opening can hide a system that goes flat as soon as it has to explain something. The slice also has to carry one signature element that says something true about the subject, described concretely enough to build. The example the skill uses comes from a Codrops designer spotlight from May 2025: a site where stickers reset with a fizz, like a poured drink.
4. Copy runs as its own track with a claim ledger. Every number, customer, testimonial, certification and capability gets a source and a status, and unverified rows never reach the page. Part of the reason is legal. Advertisers need a reasonable basis before a claim runs, a requirement the US Federal Trade Commission set out in 1983. UK marketers must hold documentary evidence before publication under the CAP Code, endorsements must reflect the endorser's honest experience, and fake reviews, generated ones included, have been banned in the United States since 21 October 2024. The checker enforces the mechanical half: 64 banned words, 24 filler phrases, seven false-antithesis patterns, 11 claim flags, seven style flags, and an em-dash ceiling of 1.5 per thousand words. The word list only flags, for the same reason Kobak et al. could only put a floor of 13.5% on the share of 2024 biomedical abstracts written with model help: excess vocabulary is a fingerprint, and a fingerprint is where review starts.
5. The critique loop has a stop. One inspection round, one fix batch, one confirmation round, then the remaining trade-offs go to the person. Each finding is located (the problem, where it is, the fix) with before and after screenshots, the same discipline we use when we audit digital UX. Screenshot comparison detects change rather than quality. Practitioners who gave their agent a browser report that a structured instruction to shoot the page, list the differences and fix the top few works where vaguer requests do not, and the Impeccable toolkit prescribes the same bounded rounds.
How did we test it?
With Anthropic's skill-creator loop: write the skill, run the same tasks with and without it, grade against written assertions, aggregate, then read the outputs. Two agents, both Claude Opus 5 in Claude Code, each ran all three tasks in sequence. One was told to follow the skill. The other was told to use no skill and to stay out of the skills folder. Nobody was available to answer questions during either run, which is the skill's headless path.
| Task | The prompt in one line | Checks |
|---|---|---|
| Bakery site from real material | A sourdough bakery in Petaling Jaya gives its own facts, photos and stack, and asks for a site | 11 |
| Vague SaaS landing page | "make me a landing page for my saas, it's an AI tool for HR teams", premium and modern, Next.js and Tailwind | 7 |
| Homepage copy edit | A bookkeeping firm's homepage copy, full of generated phrasing and one false claim | 9 |
A script graded the mechanical facts: typefaces against the default list, the prose checker, bracketed placeholders, screenshot sizes, question payloads and report length. The rest was judged by reading the outputs, with the evidence recorded for each check. After grading, each check was labelled process if it tests the skill's own artefacts or formats and outcome if it tests what the user receives. The split was applied to both runs equally.
Two disclosures belong here. An earlier round ran the same three tasks inline, with no separate agent and no baseline, and self-graded 27 of 27. That round was useful for the outputs it produced and worthless as a measurement, which is why the second round exists. And the same model family wrote the skill, the tasks, the checks and the grades, under our direction. Evidence is recorded for every check so a person can audit them, and that is the only defence we offer.
What were the results?
The skill passed 24 of 27 checks and the plain model passed 10. Per task: 9 of 11 against 2 of 11 on the bakery site, 6 of 7 against 3 of 7 on the vague SaaS brief, and 9 of 9 against 5 of 9 on the copy edit. The chart shows the pass rate per task, one run each, with the plain model in grey.
| Measure | With the skill | No skill | Where it comes from |
|---|---|---|---|
| Bakery site from the owner's own facts | 9 / 11 | 2 / 11 | Graded assertions, one run each |
| Vague "AI tool for HR" landing page | 6 / 7 | 3 / 7 | Graded assertions, one run each |
| Homepage copy that sounds generated | 9 / 9 | 5 / 9 | Graded assertions, one run each |
| Pooled pass rate | 88.9% | 37.0% | 24 and 10 of 27 checks |
| Mean of the three task rates | 89% ± 9% | 39% ± 19% | Aggregation script; the spread is across tasks |
| Checks about the skill's own process | 9 / 12 | 1 / 12 | Classified after grading |
| Checks about what the user receives | 15 / 15 | 9 / 15 | Classified after grading |
| Tokens, three tasks in one agent | 407,617 | 347,578 | Agent completion record |
| Wall time, three tasks | 2,605 s | 2,420 s | Agent completion record |
| Tool calls | 71 | 57 | Agent completion record |
The pooled rate counts every check once. The mean rate averages the three task rates, which is why the two differ, and the spread beside it is the spread across tasks, since every cell holds one run.
Bakery site: 9 of 11 against 2 of 11
The skill run wrote a brief sourcing 14 facts to the owner, listed eight candidate concepts, dropped two that failed the category test, drew three of the six survivors at random, developed them with a standard option alongside, and recommended one called "Tomorrow's bake", where the page opens each evening with the next day's bake. It built only the header, the opening band and a "This week" section: 197 visible words and nine bracketed gaps such as the WhatsApp number and the pre-order cut-off. It set the page in Dela Gothic One and Radio Canada, neither on the default list, shot it at 1440 and 390 pixels wide, found three located faults, fixed them and shot it again.
The plain run built the entire site: a bar showing what is baking today, a card per bake, a pre-order builder that composes a WhatsApp message, a dark section about the oven, hours and directions. It checked its work at two widths with the clock set to three different times, and wrote an 823-word report listing ten things it needed from the owner. It lost points for a typeface on the default list and for adding a postcode the owner never gave, which it did flag for checking.
Vague SaaS brief: 6 of 7 against 3 of 7
This is the sharpest difference in the set. The skill run wrote a brief, asked four questions, each with a line on what the answer would change, and built nothing. The plain run assumed a product, named it Keel, and built a complete Next.js page with eight sections for it, in three typefaces from the default list. It was careful about it: it marked 15 elements in the code as claims to confirm and wrote a section headed "What I did not invent". A reader would still see a finished page for a product that does not exist.
Copy edit: 9 of 9 against 5 of 9
Both runs removed the unsupported "AI-powered" claim and replaced "hundreds of leading restaurants across Southeast Asia" with the true count of 62. Both wrote clean prose. The skill run produced a claim ledger of 14 rows, seven passages in a Current, Problem, Rewrite, Evidence format, and left four gaps in brackets. The plain run wrote fuller, more finished copy and invented three specifics on the way, including what the Monday summary contains, all of which it listed for checking. Its headline led with a benefit instead of saying what the company does.
The original copy, measured: 90 words and four em dashes, a density of 44.4 per thousand words against the skill's ceiling of 1.5. The checker reported 15 hard findings at the time of the run. After it gained four patterns during the project, the same copy scores 16.
Where does the skill's margin come from?
Mostly from doing things the plain model was never asked to do. Twelve of the 27 checks test the skill's own paperwork, such as whether a brief exists or whether a critique lists three located findings, and a skill will always win those. The 15 outcome checks are the honest comparison: true copy, no invented detail, no default typefaces, a hero that says what the business does.
| Group of checks | With the skill | No skill | What it tells you |
|---|---|---|---|
| Process and format (12) | 9 | 1 | The plain model could only pass these by accident. Weak evidence of value. |
| Outcome (15) | 15 | 9 | True copy, no invented detail, no default faces, a hero that says what the business does. |
| Passed in both | 10 | Where a good model needs no help. | |
| Passed only with the skill | 14 | The skill's contribution, process checks included. | |
| Passed only without it | 0 | The skill cost nothing measurable on these checks. | |
| Failed in both | 3 | The question-payload checks and the report length cap. | |
In the grid, squares are outcome checks and circles are process checks. Lime marks the 14 checks that only the skill passed, and no check passed only without it.
All three failures under the skill traced to gaps in the skill itself. It never said where questions should go when nobody can answer, and its 200-word cap on the final report fought its own instruction to list every assumption. Both are fixed: unasked questions now go into a questions document as a ready-to-send payload, and the open-facts list sits outside the word cap.
All 27 checks, both runs
| Task | # | Check | Kind | With the skill | No skill |
|---|---|---|---|---|---|
| Bakery site from real material | 1 | BRIEF.md lists the owner's stated facts with a source for each and marks missing facts (opening hours, WhatsApp number, pre-order cutoff, per-item prices) as unknown | process | pass | fail |
| Bakery site from real material | 2 | Stage 1 questions are recorded as one AskUserQuestion-shaped payload with at most four questions, none about fonts or colours | process | fail | fail |
| Bakery site from real material | 3 | DIRECTION.md lists six to eight candidate concepts, drops category-test failures, and records a random draw of three | process | pass | fail |
| Bakery site from real material | 4 | Three developed directions differ in layout and visual anchor (not only palette), a labelled standard option is included, and one direction is recommended with a reason | process | pass | fail |
| Bakery site from real material | 5 | Only a representative slice is built (navigation, opening section, one substantial content section, mobile behaviour), not a full multi-page site | process | pass | fail |
| Bakery site from real material | 6 | Slice copy uses only facts from the owner's message; missing facts appear as bracketed placeholders; no testimonials, ratings, delivery, or invented prices | outcome | pass | fail |
| Bakery site from real material | 7 | The slice uses no typeface from the craft.md 7.2 default lists | outcome | pass | fail |
| Bakery site from real material | 8 | Screenshots of the slice exist at a desktop width and at a mobile width | process | pass | pass |
| Bakery site from real material | 9 | A critique records three located findings (problem, where, fix) with before and after evidence | process | pass | fail |
| Bakery site from real material | 10 | prose_check.py reports no HARD findings on the slice HTML | outcome | pass | pass |
| Bakery site from real material | 11 | The final report is under 200 words and lists open assumptions or missing facts | process | fail | fail |
| Vague SaaS landing page | 1 | No landing page, headline, or feature copy is built or written | outcome | pass | fail |
| Vague SaaS landing page | 2 | No invented testimonials, customer logos, metrics, or AI capability claims appear anywhere in the outputs | outcome | pass | fail |
| Vague SaaS landing page | 3 | Questions are one AskUserQuestion-shaped payload of at most four questions, and one asks what the product does | process | fail | fail |
| Vague SaaS landing page | 4 | Each question's answer is tied to what it changes in the design | process | pass | fail |
| Vague SaaS landing page | 5 | No question asks about fonts, colours, or modern versus classic styling | outcome | pass | pass |
| Vague SaaS landing page | 6 | The 'premium and modern' request is addressed without adopting the generic SaaS look (purple gradient, centred hero, icon cards) | outcome | pass | pass |
| Vague SaaS landing page | 7 | The Next.js and Tailwind constraint is recorded and carried into a setup note | outcome | pass | pass |
| Homepage copy edit | 1 | The rewritten hero states what Ledgerline does (bookkeeping for restaurants in Malaysia) | outcome | pass | fail |
| Homepage copy edit | 2 | The 'hundreds of leading restaurants across Southeast Asia' claim is flagged as contradicted by the stated 62 restaurants in Malaysia and replaced with the true count | outcome | pass | pass |
| Homepage copy edit | 3 | 'AI-powered' is removed or explicitly marked unverified | outcome | pass | pass |
| Homepage copy edit | 4 | The rewrite uses the Monday WhatsApp cash summary and the SST filings | outcome | pass | pass |
| Homepage copy edit | 5 | A claim ledger lists claims with sources and statuses (approved, unverified, rejected) | process | pass | fail |
| Homepage copy edit | 6 | No new numbers, clients, prices, or capabilities are invented; new specifics trace to the message or are bracketed placeholders | outcome | pass | fail |
| Homepage copy edit | 7 | The rewritten copy has zero HARD findings from prose_check.py (no em dashes, no banned words) | outcome | pass | pass |
| Homepage copy edit | 8 | The edit reports layout implications of the copy, such as how many feature slots the real facts support | outcome | pass | pass |
| Homepage copy edit | 9 | Each passage is reported as Current, Problem, Rewrite, Evidence | process | pass | fail |
What did the skill cost?
17.3% more tokens and 7.6% more wall time across the three tasks: 407,617 tokens against 347,578, 2,605 seconds against 2,420, and 71 tool calls against 57. Per task the overhead is uneven. On the bakery task the skill run spent about 2,438 seconds producing a brief, three directions and one critiqued section, while the plain run spent about 1,106 seconds producing a whole site. On the vague brief the skill run spent about 265 seconds and stopped, while the plain run spent about 1,063 seconds building a page for a guessed product. The per-task figures are estimates split out of each agent's total, and two of them are unreliable because the agents logged their own start times late.
The research phase is where the money went, and at first it went badly. A dynamic research workflow spawned 106 agents, of which 40 finished and 66 died, spending 5,168,295 subagent tokens in about 15 minutes. Seven separate research agents ran alongside it. One finished, at 205,658 tokens. The other six died with the workflow when the session hit its usage limit. That workflow alone spent 12.7 times the tokens of the whole skill run.
| Phase | Agents | Tokens | Wall time |
|---|---|---|---|
| Research workflow | 106 spawned, 66 failed | 5,168,295 | 926 s |
| Research agent that survived | 1 of 7 | 205,658 | 650 s |
| Three tasks with the skill | 1 | 407,617 | 2,605 s |
| Three tasks with no skill | 1 | 347,578 | 2,420 s |
| Routing judge, first round | 1 | 103,842 | 182 s |
| Routing judge, second round | 1 | 115,813 | 302 s |
The recovery is the useful part. The dead agents had already written most of their notes to disk, and the workflow's own journal kept every completed search and fetch, so the work was recoverable by reading files, with nothing re-run. The rule we set afterwards held for everything that followed: two Opus subagents per part of a task, never a wide fan-out. It is the same lesson as in our piece on building production agents, where multi-agent systems cost about 15 times the tokens of a chat and earn it only on parallelisable work.
One more practical detail. The shared ChatGPT conversation that started the project could not be read by the normal page-fetch tool, which returned only the page title. Reading it needed a real browser that renders the page first. A link and a readable source are different things, and an agent doing research has to know which one it has.
Does the skill load at the right moment?
In simulation, yes: 24 of 24 routing decisions in a first round and 40 of 40 in a second. A skill that never loads is worth nothing, and one that loads too eagerly hijacks unrelated work. The description is the only thing the model sees before deciding. Two judges, each an Opus 5 agent, were given 12 skill descriptions and a batch of user messages and asked which skill Claude Code would load first, or none.
| Round | Messages | Should load | Should not | Correct | Judge confidence |
|---|---|---|---|---|---|
| First | 24 | 12 | 12 | 24 | 18 high, 4 medium, 2 low |
| Second, with 16 harder near-misses added | 40 | 20 | 20 | 40 | 30 high, 7 medium, 3 low |
Because the first round was perfect, the usual tuning loop never ran and the description was never rewritten. The second round exists to make the result harder to believe by accident. A sample of its near-misses:
| User message | Should load | Judge chose |
|---|---|---|
| mock up our landing page on a canvas so the marketing team can drag things around and leave comments | no | design |
| change the primary button colour on the homepage from blue to our brand green #1B7F5A | no | none |
| our homepage hero is a stock photo of people high-fiving. what should go there instead? we sell inventory software for hardware stores | yes | website-design |
| review our checkout page for usability problems, people keep dropping off at the shipping step | no | ux-review |
| our homepage isn't indexed by Google, search console says 'crawled - currently not indexed' | no | aeo-geo-seo |
| I need copy for the homepage of a new dental clinic in Johor Bahru, and the dentist wants it to say it's 'the best in JB' | yes | website-design |
| turn our homepage into a one-page PDF brochure we can print for the trade fair | no | design |
The caveat is heavy. This is a simulation of the routing decision by the same model family, on queries written by the skill's author. It shows that the description is unambiguous. It does not show how the live product behaves.
What broke along the way?
Six tooling defects, each worth knowing about before you run the same loop.
- The evaluation viewer rendered blank. Anthropic's skill-creator writes run data into an inline script without escaping it, so the first output file containing a closing script tag ends the script early. Both review pages showed no runs, and bakery page markup leaked into the page body. The fix was a wrapper that escapes angle brackets and ampersands before they reach the page.
- The screenshot script crashed on pages that never go quiet. It waited for network idle and threw when that never arrived. It now falls back to the load event and reports the timeout as a finding.
- The prose checker missed whole families of puffery, including "leading restaurants", "never miss a filing" and "forever". It also cannot see copy held in scripts or attributes, which is why the screenshot script now saves the rendered text for checking.
- Skill frontmatter accepts only six keys. A "when to use" field is one of the keys it rejects, so the triggering guidance had to fold into the description, which is capped at 1,024 characters.
- The aggregation script over-counted runs. It reported three runs per configuration where there was one run per task, which would have overstated the sample to any reader of the benchmark file.
- A shared chat link is unreadable to a plain fetch tool, as described above.
What does this study not show?
- One run per cell. There is no run-to-run variance here. The spread quoted beside the mean is the spread across three different tasks.
- The author graded its own work. The same model family wrote the skill, the tasks, the checks and the grades. Evidence was recorded for every check so a person can audit them.
- Twelve of 27 checks test the skill's own paperwork, and a skill will always win those. The outcome subset is the honest comparison.
- Nobody could answer questions during the runs, so the gates that ask a person for a decision were never exercised as designed.
- No aesthetic judgment was measured. No human rated distinctiveness, no page was tested with visitors, and no conversion data exists. Nobody, this study included, has shown that any design skill produces more distinctive or better-converting websites. Every claim here is about process, truthfulness and defaults.
- The list of overused typefaces is a 2026 snapshot drawn from practitioner catalogues and vendor skills, and part of it is inferred from how prompt examples spread, with no measurement behind it.
The experiment that would settle it is described in both the source playbook and the skill's evidence file, and neither has run it. Take several real briefs. Hold the model, the stack and the content constant. Produce each site three ways: an ordinary prompt, one design skill, and the full workflow. Show whole pages rather than heroes to reviewers who do not know which method produced which, and have them score brand specificity, hierarchy, copy usefulness, coherence and mobile quality, with editing time and functional failures recorded alongside. With small samples it stays directional, which is still more than anyone has now.
What should you take from this?
If you use coding agents to build websites, five habits carry over whether or not you use this skill.
- Give the agent real material and let it stop. The plain model was truthful about every fact it was given and invented a product when it had none. Missing facts should end as bracketed gaps or questions, never as plausible filler.
- Ask for alternatives before critique, and draw rather than rank. A model's best three are its most probable three.
- Keep a claim ledger. Every number, customer and capability on the page gets a source and a status, and the unverified rows stay off the page. The regulators expect the evidence to exist before publication.
- Judge a skill on outcome checks. A skill can score 24 of 27 while its real margin is 15 against 9. Label the checks before you read the headline rate.
- Cap the fan-out. A 106-agent workflow spent 5.2 million tokens and lost 66 agents. The work was recovered from files on disk, and two subagents per part of a task was enough for everything after.
Every figure above traces to one of these or to the run records described in the testing section. Sources were collected on 15 September 2026 and rechecked against their primary versions on 16 September 2026. Where a full text could not be reached, only the abstract-level figure is used, and we say so.
- Anthropic, Improving frontend design through Skills (12 November 2025). Vendor blog. Source of the distributional-convergence explanation and of the Space Grotesk fallback, which it states as a tendency rather than a measurement.
- Anthropic, the frontend-design skill in the anthropics/skills repository. Font names removed in the revision of 9 June 2026; five default looks listed in the revision of 3 September 2026.
- OpenAI, Designing delightful frontends with GPT-5.4 (20 March 2026) and Rethinking skills and prompts for GPT-6 Astra (11 September 2026). Vendor blog.
- Padmakumar and He, Does Writing with Language Models Reduce Content Diversity? ICLR 2024. Peer reviewed; 38 writers, 300 essays.
- Kirk et al., Understanding the Effects of RLHF on LLM Generalisation and Diversity. ICLR 2024 poster.
- Doshi and Hauser, Generative AI enhances individual creativity but reduces the collective diversity of novel content. Science Advances 10(28), 2024. Preregistered; 293 writers, 600 evaluators.
- Anderson, Shah and Kreminski, Homogenization Effects of Large Language Models on Human Creative Ideation. Creativity and Cognition 2024. The within-person result is category coverage rather than semantic spread.
- Goree, Doosti, Crandall and Su, Investigating the Homogenization of Web Design: A Mixed-Methods Approach. CHI 2021. The full text was unreachable on 16 September 2026 (the publisher returned 403 and no open copy exists), so only the abstract's finding is used: layout distance down more than 30% since 2007. The finer figures often quoted from it are not repeated here.
- Shin, Gao, Pang, Lee, Reinecke and Tseng, Interrogating Design Homogenization in Web Vibe Coding. arXiv preprint, 13 March 2026. Unreviewed.
- Zhang et al., Verbalized Sampling: How to Mitigate Mode Collapse and Unlock LLM Diversity. ICML 2026 poster. Source of the typicality-bias account and the 1.6 to 2.1 times diversity figure.
- Kobak, González-Márquez, Horvát and Lause, Delving into LLM-assisted writing in biomedical publications through excess vocabulary. Science Advances 11(27), 2025. Source of the 13.5% floor.
- Dow, Glassco, Kass, Schwarz, Schwartz and Klemmer, Parallel prototyping leads to better design results, more divergence, and increased self-efficacy. ACM Transactions on Computer-Human Interaction 17(4), 2010; 33 participants. Related: Prototyping dynamics (CHI 2011, 84 participants) and The efficacy of prototyping under time constraints (Creativity and Cognition 2009, 28 participants).
- Krebs, Scoring Show HN submissions for AI design patterns (20 April 2026). Practitioner scan of 1,590 pages with deterministic checks. The "more than half" figure is the sum of two published tiers, 22% and 32%.
- Bakaus, Impeccable by Design (22 June 2026); the Impeccable documentation (undated) for the seeded draw and the 30-of-35 framing experiment; and MacManus, Skill engineering and the case against one-shot AI design, Latent Space (2 July 2026).
- Playwright, Visual comparisons. Practitioner reports on browser-equipped agents: Aaron's Newsletter (8 July 2025) and Parks, Giving Claude Code eyes with Playwright MCP (10 February 2026). The Codrops designer spotlight of 17 May 2025 is the source of the sticker example.
- US Federal Trade Commission: Policy Statement Regarding Advertising Substantiation (1983); Guides Concerning the Use of Endorsements and Testimonials in Advertising, 16 CFR Part 255 (revised 2023); Trade Regulation Rule on the Use of Consumer Reviews and Testimonials, 16 CFR Part 465, effective 21 October 2024.
- UK Committee of Advertising Practice, the CAP Code: rule 3.7 on substantiation and rule 3.47 on testimonials.
- The ChatGPT deep-research conversation that started the project, shared on 14 September 2026. A plain fetch returns only its title; it was read in a rendering browser.
- Run records: the skill's evaluation file, both runs' outputs and grading files, the aggregated benchmark and the routing judges' verdicts, all saved in the session workspace. Figures come from those files rather than from memory of the session.