Agent skills (a SKILL.md file your coding agent reads before it works) have become the default way to give Claude Code, Cursor or Codex a sense of taste. There are now hundreds of front-end "design" skills, and most of them describe themselves the same way: distinctive, intentional, not generic.
I wanted to know what they actually do, so I built SkillArena and ran a controlled comparison.
SKILL.md (and any reference files it points to) into the same short system prompt. Nothing else changes.
There is no score and no leaderboard. I don't trust any automated design score enough to publish one. What I can do is count things.
The landing page brief describes a shared calendar for small teams whose selling point is that it "automatically finds a time when everyone is free." It doesn't suggest a headline.
317 of the 354 landing pages open with "Stop asking…": "Stop asking 'when works for everyone?'", "Stop asking 'when are you free?'", and so on. The no-skill control did it in all 3 runs. So did 94 of the 117 skills, including a skill written specifically to improve UX copy.
Only two skills avoided it in every run:
The pages themselves look very different from each other, with different layouts, type and colour. But underneath, the model mostly says the same thing. If you want different copy, a visual design skill probably won't give it to you. A skill that changes what the model is trying to achieve (rank for a keyword, follow a copy framework) might.
The home page brief shows the same pattern. 205 of 354 pages used the exact headline "Same brief. Different skill.", and only 15 skills never did. Brutalist went with "ONE BRIEF. EVERY SKILL. NO GUESSING."
I expected skills to make pages bigger across the board: more instructions, more effort, more output. That's true for some briefs and false for others.
Here are the average output tokens per page, no skill vs the median skill:
| Brief | No skill | Median skill | Skills that wrote more |
|---|---|---|---|
| Mobile app screen | 5.8k | 11.7k (2.0×) | 114 of 117 |
| Sign-up form | 8.3k | 13.6k (1.6×) | 115 of 117 |
| SaaS landing page | 13.8k | 15.9k (1.15×) | 93 of 117 |
| SkillArena home page | 14.0k | 16.4k (1.17×) | 82 of 117 |
| Analytics dashboard | 20.9k | 18.0k (0.86×) | 35 of 117 |
On small, open-ended briefs (a phone screen, a form), the model on its own does the minimum, and almost any skill pushes it to build more. On the dashboard, the model already writes a lot on its own, and most skills (82 of 117) make it write less: tighter layouts, fewer charts, less filler.
Across all five briefs, 21 of 117 skills averaged fewer output tokens than no skill at all. The smallest was Subtractive Design (5.4k per page), which is at least honest about its name. The largest was Emil Kowalski's Prototype skill at 36.2k, nearly 3× the control. On the mobile brief alone it was over 7×.
None of this says which pages are better. A bigger page isn't a better page. But size is a practical signal: it tells you how much a skill changes the cost and latency of every generation, and it tells you the skill is doing something.
With three runs per cell, you can see how stable a skill is. For output size, most are fairly stable: in about 9 of 10 skill × brief cells, the largest run was less than 1.5× the smallest.
The exceptions are big. The Soft skill on the home page brief produced 17k, 23k and 44k tokens across three runs. The screenshots look like three different skills. If you had judged that skill from the 17k run alone, you'd have the wrong idea about it.
Run 1 of 3 above. All three runs side by side. That's why SkillArena shows all three runs side by side instead of a best pick. Cherry-picking is the default in skill READMEs and on social media, and it's easy to do by accident.
Everything is public:
/results.json
If you maintain a skill and something about how it's described or installed is wrong, or you'd like yours added, open an issue and I'll fix it.