全部技能

emil-design-eng (emilkowalski/skills)

emil-design-eng:对照组 3.33、一句话提示 4.5、装 skill 4.75(0–5 分,Codex 实测,n=2/任务/组)。结论:推荐,相对不装 skill +1.42。

推荐安全

26.2 / 30

相对不装 skill 的提升:+1.42

推荐:总分 26.2/30 不低于 22,产出质量 4.8 不低于 3.5,提升 +1.42 不低于 +1.0。

前沿

通过

使用 Codex 测试。

覆盖 Codex, Claude Code

Codex CLI 0.166(SOTA 档):18 次评分运行。按我们的分档规则,这档通过同时覆盖 Claude Code;它不代表第二档的结果。

分数

每一维 0 到 5 分,六维相加是满分 30 的总分。每一维都是 5 更好。成本 5 表示又便宜又快。安装 5 表示容易。

触发可靠性
5.0
相对不装的提升
3.4
产出质量
4.8
令牌与时间成本
4.0
安装与可移植性
4.0
安全
5.0

安全审查

安全

静态扫描:0 CRITICAL / 0 HIGH / 0 MEDIUM。人工审查:可在断网沙箱中运行。扫描没有命中不等于绝对安全。

安装

npx skills@latest add emilkowalski/skills --skill emil-design-eng

来源

固定提交: a81dbca07f2217b7103e510c0f13f8d5b017afc9

测试日期: 2026-11-02

我们测了什么

  • New landing page from a brief — Create a single-page landing site for Tidepool, a small-batch seaweed snack brand that sells by subscription (three flavours, $14/box, ships monthly). Write one self-contained index.html with inline CSS and minimal JS only if needed. No frameworks, no build st…
  • Data-dense dashboard UI — Build a dashboard page for a municipal water-quality monitoring team: current readings for 6 stations (pH, turbidity, chlorine, temperature), a 7-day trend for each, and an alerts panel. Single self-contained dashboard.html with inline CSS/JS and hard-coded re…
  • Reshape an existing bland page — old.html is the current homepage of Granite Peak Climbing Gym (Boulder, CO). Redesign it into new.html: keep all of its real content (pricing, classes, hours, address) but make the page look like it belongs to this specific gym. Self-contained HTML/CSS, no fra…

优点

  • 平均分从不装时的 3.33 提到 4.75(+1.42)。
  • 不点名也会被触发:Skill file read in 6/6 treatment runs.
  • 装 skill 后绝对质量高:4.75 / 5。

缺点

  • 测试说明:动效检查是基于规则的,和 skill 自带的规则有部分循环;静态截图分不出各组。
  • 每个任务每组 n=2,差距在 1 分以内属于噪声。

评测

在 Codex CLI(SOTA 档)上跑 3 个任务、对照、一句话提示、装 skill 三组,共 18 次运行,由规则脚本打分(没有 LLM 评委),断网沙箱、每次运行独立临时目录。具体做法见下方英文评测原文。

三组对比

组别平均分(0–5)每次 token
不装 skill3.33133k
一句话提示4.5127k
装了 skill4.75149k

Codex CLI 实测,18 次运行,规则脚本打分,没有 LLM 评委。总分 26.2 / 30,结论 推荐。

测试披露: 动效检查是基于规则的,和 skill 自带的规则有部分循环;静态截图分不出各组。

下面是评测原文,英文。

Verdict: Recommended (26.2 / 30). Source: emilkowalski/skills, skills/emil-design-eng, pinned at commit a81dbca. Install: npx skills@latest add emilkowalski/skills --skill emil-design-eng. Licence: MIT (repo LICENSE).

What it is

The emil-design-eng skill from emilkowalski/skills: Emil Kowalski's design-engineering rules for UI polish, about 4,000 words in one SKILL.md. It covers when to animate at all, custom ease-out curves instead of the defaults, 150-300 ms durations, animating only transform and opacity, press feedback (scale(0.97) on :active), never animating from scale(0), stagger, gating hover with (hover: hover), reduced motion and invisible details like hit targets. No scripts.

How we tested

Codex CLI 0.166 (gpt-6-astra, low reasoning) on a dedicated Windows test PC, a fresh temporary project and temporary HOME/TMPDIR/caches per run, skill installed (treatment) or absent (control) or absent with the skill's core requirement squeezed into one sentence appended to the prompt (one-liner group), 2 runs per group per task, network off, /tmp writes blocked. The prompts never mention the skill (except the wording noted below).

Same three brief as the frontend-design test (a Tidepool landing page, a water-quality dashboard, a redesign of a climbing-gym homepage), written as single self-contained HTML files. The prompts do not mention animation or the skill; the skill group simply has the skill installed.

  1. New landing page from a brief — Create a single-page landing site for Tidepool, a small-batch seaweed snack brand that sells by subscription (three flavours, $14/box, ships monthly). Write one self-contained index.html with inline CSS and minimal JS only if needed. No frameworks, no build st…
  2. Data-dense dashboard UI — Build a dashboard page for a municipal water-quality monitoring team: current readings for 6 stations (pH, turbidity, chlorine, temperature), a 7-day trend for each, and an alerts panel. Single self-contained dashboard.html with inline CSS/JS and hard-coded re…
  3. Reshape an existing bland page — old.html is the current homepage of Granite Peak Climbing Gym (Boulder, CO). Redesign it into new.html: keep all of its real content (pricing, classes, hours, address) but make the page look like it belongs to this specific gym. Self-contained HTML/CSS, no fra…

Scoring is programmatic (hidden tests / planted-issue recall / constraint checks / render+OCR where relevant), 0–5 per run. No LLM judge decided any score. Because this skill is about motion and interaction details that a screenshot cannot show, the score is a rule-based checklist run over the generated CSS (10 checks: :active press feedback, custom cubic-bezier, no ease-in/linear/default ease, no transition: all, only transform/opacity/colour animated, durations <= 300 ms, reduced motion, stagger, no scale(0), hover gated by (hover: hover)), 0-5 per run. This is closely aligned with the skill's own rules, so it measures 'did it follow the skill', not 'is the page better'.

Results

The one-liner given to the third group: "Polish like a design engineer: custom easing curves (ease-out for entrances, never the default or ease-in), 150-300 ms durations, animate only transform and opacity, press feedback such as scale(0.97) on :active, never animate from scale(0), stagger entrances, honour prefers-reduced-motion, and sweat the invisible details (hover, active and focus states, 44 px hit targets)."

TaskControl scoreOne-linerWith skillControl tokensOne-liner tokensWith-skill tokensSkill read
t1-landing3.254.55.089k103k130k2/2
t2-dashboard3.54.54.25202k145k135k2/2
t3-redesign3.254.55.0106k133k181k2/2

Mean score: 3.33 without vs 4.75 with the skill (delta +1.42). Tokens per run: 133k vs 149k (1.12x); time 178s vs 163s. One-liner group: 4.5 (the skill's gain over the one-liner: +0.25; one-liner's own gain over no skill: +1.17); one-liner tokens 127k per run, so the skill costs 1.17x the one-liner.

What happened

  • Plain Codex never writes press feedback or a custom easing curve: 0/6 control pages have an :active scale rule or a cubic-bezier, against 6/6 for the one-sentence group and 6/6 (press) and 5/6 (curve) with the skill. Score 3.33 control, 4.50 one-sentence, 4.75 skill.
  • The only rule the one-sentence prompt did not carry, gating hover styles with @media (hover: hover), was followed by 5/6 skill pages and 0/12 of the other pages. That is the skill's whole margin over the sentence (+0.25).
  • Already-good habits were common everywhere: no transition: all, only transform/opacity/colour animated, reduced-motion support, no scale(0). Controls got these right 6/6 times, so the skill adds the specific polish rules, not the basics.
  • Looking at the pages blind (desktop screenshots, shuffled), all 18 are polished and none is broken; the static design quality of the three groups is indistinguishable. The skill changes behaviour you feel, not what a screenshot shows.
  • Cost: 149k tokens per run against 133k (1.12x) and 127k for the one-sentence group, the cheapest skill overhead we have measured among design skills.

Dimension scores

DimensionScoreWhy
1_output_quality4.75

Mean score 4.75/5 with the skill (programmatic checks, see per-task table).

2_lift_vs_no_skill3.42

+1.42 points vs 3.33 without the skill (n=2 per task; under ~1 point is noise).

3_trigger5.0Skill file read in 6/6 treatment runs.
4_instructions_portability4

Plain prose with CSS/React snippets; assumes a web UI project; valid frontmatter with trigger wording.

5_efficiency4

1.12x tokens (149k vs 133k per run) and 0.92x time (163s vs 178s).

6_safety_hygiene5Single Markdown file, no scripts, scanner clean, MIT.

Limits of this test

  • The motion rules are checked from CSS text, not by watching the page; a transition can exist and still feel wrong.
  • The checklist is derived from the skill's own rules, and the one-sentence prompt states most of them, so the one-sentence arm is an upper bound for a short prompt.
  • Only three static page briefs; interactive components (dropdowns, toasts, drawers), which the skill spends most words on, were not requested.
  • n = 2 per group per task: differences under about 1 point are noise.
  • Rule-based scoring measures what the checks can see; it cannot judge taste or whether a result is the best possible.

Security

See security.md. Scan: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Verdict: safe to run (no-network sandbox). A clean scan does not prove a skill safe.

Bottom line

If you want pages that have press feedback, ease-out curves and hover gating without asking for them, the skill delivers it at almost no token cost. A sentence that lists the same rules gets 94% of the way there, so the skill's value is that you do not have to know the rules.

记录

Run log for emil-design-eng: 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.0, tokens 87031, secs 180.3, checks 5/5, opened nothing
t1-landing control-2: score 3.5, tokens 91542, secs 176.7, checks 5/5, opened nothing
t1-landing oneliner-1: score 4.5, tokens 124122, secs 175.9, checks 5/5, opened nothing
t1-landing oneliner-2: score 4.5, tokens 82163, secs 143.1, checks 5/5, opened nothing
t1-landing treatment-1: score 5.0, tokens 132827, secs 151.2, checks 5/5, opened emil-design-eng
t1-landing treatment-2: score 5.0, tokens 128585, secs 170.2, checks 5/5, opened emil-design-eng
t2-dashboard control-1: score 3.5, tokens 270891, secs 204.0, checks 5/5, opened nothing
t2-dashboard control-2: score 3.5, tokens 134118, secs 172.6, checks 5/5, opened nothing
t2-dashboard oneliner-1: score 4.5, tokens 154395, secs 240.7, checks 5/5, opened nothing

18 次运行、3 个产物

样例产物

前沿 · 装了 skill:index.html(t1-landing,第 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="#f7f3e9"> <meta name="description" content="Meet Tidepool: small-batch seaweed snacks with a big ocean crunch. Three flavours. $14 a box. A fresh delivery every month."> <title>Tidepool — A little ocean. A lot of crunch.</title> <style> :root{--paper:#f7f3e9;--ink:#183d48;--coral:#ed674c;--line:#cbd0c3;--green:#dce5bd}*{box-sizing:border-box}html{scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit}button,input{font:inherit}a,button,label,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible+span{outline:3px solid var(--coral);outline-offset:5px}.skip{position:absolute;left:16px;top:-60px;background:var(--paper);padding:12px;z-index:10}.skip:focus{top:12px}.wrap{width:min(1240px,90%);margin:auto}.topline{text-align:center;padding:10px 16px;background:var(--ink);color:var(--paper);font-size:11px;letter-spacing:1.5px;text-transform:uppercase}.nav{display:flex;align-items:center;justify-content:space-between;min-height:100px;border-bottom:1px solid var(--line);gap:24px}.logo{font-family:Georgia,serif;font-size:42px;font-weight:bold;letter-spacing:-3px;text-decoration:none}.logo sup{font:11px Arial;letter-spacing:0;vertical-align:top;display:inline-block;margin-top:12px}.links{display:flex;gap:32px;font-size:13px}.links a{text-decoration:none}.links a:hover{text-decoration:underline;text-underline-offset:5px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:35px;padding:17px 24px;border:1px solid var(--ink);background:var(--ink);color:var(--paper);border-radius:4px;text-decoration:none;font-size:14px;font-weight:bold;transition:transform 150ms cubic-bezier(.23,1,.32,1)}.button:active{transform:scale(.97)}.nav .button{padding:13px 20px}.hero{display:grid;grid-template-columns:1fr 1fr;align-items:center;padding:66px 0 58px;gap:20px}.eyebrow{font-size:11px;font-weight:bold;letter-spacing:2px;text-transform:uppercase;margin:0 0 22px}h1{font-family:Georgia,'Times New Roman',serif;font-size:clamp(58px,6.9vw,96px);line-height:.98;letter-spacing:-5px;font-weight:normal;margin:0 0 28px}h1 em{color:var(--coral);font-weight:normal}p{line-height:1.65}.intro{max-width:360px;font-size:16px;margin-bottom:28px}.small{font-size:12px}.hero-note{margin-top:14px;color:#53676a}.art{position:relative;min-height:480px;display:flex;align-items:center;justify-content:center}.orb{position:absolute;width:440px;height:440px;max-width:100%;border-radius:50%;background:#e4e8d6}.pack{width:190px;height:285px;position:relative;background:var(--green);border-radius:9px 9px 20px 20px;color:var(--ink);box-shadow:8px 18px 20px #173c4820,inset 6px 0 14px #ffffff55,inset -5px 0 10px #0000000d;text-align:center;overflow:hidden;padding:29px 10px 15px;border:1px solid #193e4825}.pack:before,.pack:after{content:'';position:absolute;left:0;right:0;height:10px;background:repeating-linear-gradient(90deg,transpa [... excerpt: first 3200 of 16222 characters]

查看 Pro