すべてのスキル

emil-design-eng (emilkowalski/skills)

Emil Kowalski の考え方に沿って、UI の質感、コンポーネント設計、アニメーションの判断を導きます。

emil-design-eng:素の Codex が決して書かない押下フィードバックとカスタムイージングを追加します(0/6 から 6/6)。ただし一文版がほぼ全てを実現します。

推奨安全

Codex CLI · gpt-6-astra

26.2 / 30

スキルなしに対するリフト:+1.42 · 推奨 · 18 実行

推奨:合計 26.2/30 が 22 以上、出力品質 4.8 が 3.5 以上、リフト +1.42 が +1.0 以上。

SOTA

合格

Codex でテスト済み。

カバー対象 Codex, Claude Code

Codex CLI 0.166(SOTA ティア):採点対象 18 実行。当ティアのルールでは、ここでの合格は Claude Code もカバーします。第2ティアについては何も述べません。

スコア

各ディメンションは 0〜5 点で、6 つの合計が 30 点満点の合計スコアになります。すべてのディメンションで 5 が最良です。コスト 5 は低コストで高速、インストール 5 は簡単であることを意味します。

トリガーの信頼性
5.0
スキルなしに対するリフト
3.4
出力品質
4.8
トークンと時間のコスト
4.0
インストールと移植性
4.0
安全性
5.0

セキュリティレビュー

安全

静的スキャン:CRITICAL 0 / HIGH 0 / MEDIUM 0。手動レビュー:ネットワーク無効のサンドボックスで実行しても安全(指摘なし)。クリーンなスキャン結果はスキルの安全性を証明しません。

インストール

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

ソース

固定コミット: a81dbca07f2217b7103e510c0f13f8d5b017afc9

テスト済み: 2026-11-02

テスト内容

  • ブリーフから新規ランディングページを作成 — Tidepool(少量生産の海藻スナックブランド、定期購入で販売。3フレーバー、$14/箱、毎月発送)の単一ページのランディングサイトを作成してください。自己完結型の index.html を1つ書き、インライン CSS と最小限の JS は必要な場合のみ。フレームワークなし、ビルド…
  • データ密度の高いダッシュボード UI — 自治体の水質監視チーム向けのダッシュボードページを構築してください:6つの観測所の現在値(pH、濁度、塩素、水温)、各所の7日間トレンド、アラートパネル。自己完結型の dashboard.html を1つ、インライン CSS/JS とハードコードされた…
  • 既存の無難なページを作り直す — old.html は Granite Peak Climbing Gym(Boulder、CO)の現在のホームページです。new.html にリデザインしてください:実際のコンテンツ(料金、クラス、営業時間、住所)はすべて維持しつつ、このジムならではの見た目にしてください。自己完結型 HTML/CSS、フレームワーク…

長所

  • スキルなしと比べ平均スコアを 3.33 から 4.75 に引き上げ(+1.42)。
  • スキルは名前を出さずとも採用されました:スキルあり群 6/6 実行でスキルファイルが読み込まれました。
  • スキルありの絶対品質は高水準:5 点中 4.75。

短所

  • テスト上の注意:モーションのチェックリストはルールベースで、スキル自身のルールと部分的に循環しています。静的スクリーンショットでは群を区別できませんでした。
  • タスク・群ごとに n=2。1 ポイント未満の差はノイズです。

レビュー

専用の Windows テスト PC 上で Codex CLI 0.166(gpt-6-astra、低推論)、実行ごとに新規の一時プロジェクトと一時 HOME/TMPDIR/キャッシュを使用、スキルをインストール(スキルあり群)、スキルなし(対照群)、またはスキルの中核要件をプロンプト末尾に付けた一文に圧縮(一文プロンプト群)、タスクごとに各群 2 実行、ネットワーク無効、/tmp への書き込みはブロック。プロンプトはスキル名に一切言及しません(以下で注記する表現を除く)。frontend-design テストと同じ3つのブリーフ(Tidepool のランディングページ、水質ダッシュボード、クライミングジムのホームページのリデザイン)を、単一の自己完結型 HTML ファイルとして作成します。プロンプトはアニメーションにもスキルにも言及しません。スキルあり群にはスキルがインストールされているだけです。

3群の比較

群平均スコア(0〜5)1実行あたりのトークン
スキルなし3.33133k
一文プロンプト4.5127k
スキルあり4.75149k

Codex CLI で 18 実行を計測し、LLM 判定なしのルールベースのチェックで採点。合計 26.2 / 30、判定は 推奨。

開示事項 モーションのチェックリストはルールベースで、スキル自身のルールと部分的に循環しています。静的なスクリーンショットでは各群を区別できませんでした。

判定:推奨(26.2 / 30)。 出典:emilkowalski/skills、skills/emil-design-eng、コミット a81dbca に固定。インストール:npx skills@latest add emilkowalski/skills --skill emil-design-eng。ライセンス: MIT(リポジトリの LICENSE)。

概要

emilkowalski/skills の emil-design-eng スキル:UI の磨き上げに関する Emil Kowalski のデザインエンジニアリングルールで、1 つの SKILL.md に約 4,000 語。アニメーションを付けるべきかの判断、デフォルトではなくカスタムの ease-out カーブ、150〜300 ms の継続時間、transform と opacity のみをアニメーションすること、押下フィードバック(:active での scale(0.97))、scale(0) からのアニメーションをしないこと、スタッガー、(hover: hover) によるホバーのゲート、reduced motion、ヒットターゲットのような見えない細部までカバーします。スクリプトはありません。

テスト方法

専用の Windows テスト PC 上で Codex CLI 0.166(gpt-6-astra、低推論)、実行ごとに新規の一時プロジェクトと一時 HOME/TMPDIR/キャッシュを使用、スキルをインストール(スキルあり群)、スキルなし(対照群)、またはスキルの中核要件をプロンプト末尾に付けた一文に圧縮(一文プロンプト群)、タスクごとに各群 2 実行、ネットワーク無効、/tmp への書き込みはブロック。プロンプトはスキル名に一切言及しません(以下で注記する表現を除く)。

frontend-design テストと同じ 3 つのブリーフ(Tidepool のランディングページ、水質ダッシュボード、クライミングジムのホームページのリデザイン)を、単一の自己完結 HTML ファイルとして書きます。プロンプトはアニメーションにもスキルにも言及しません。スキル群は単にスキルがインストールされているだけです。

  1. ブリーフからの新規ランディングページ — Tidepool(サブスクリプション販売の小ロット海藻スナックブランド。3 フレーバー、1 箱 $14、毎月発送)の単一ページのランディングサイトを作成してください。インライン CSS と、必要な場合のみ最小限の JS を使った、自己完結の index.html を 1 つ書いてください。フレームワークなし、ビルド手順な…
  2. データ密度の高いダッシュボード UI — 自治体の水質モニタリングチーム向けのダッシュボードページを作成:6 地点の現在値(pH、濁度、塩素、水温)、各地点の 7 日間トレンド、アラートパネル。インライン CSS/JS とハードコードされた…
  3. 既存の味気ないページの作り直し — old.html は Granite Peak Climbing Gym(Boulder, CO)の現在のホームページです。new.html にリデザインしてください。実際のコンテンツ(料金、クラス、営業時間、住所)はすべて残しつつ、このジムにふさわしい見た目にしてください。自己完結の HTML/CSS、フレームワー…

採点はプログラム的(隠しテスト/仕込み問題の検出/制約チェック/該当する場合はレンダリング+OCR)で、実行ごとに 0〜5 点。スコアはどの LLM 判定者も決めていません。このスキルはスクリーンショットでは見えないモーションやインタラクションの細部に関するものなので、スコアは生成された CSS に対して実行するルールベースのチェックリスト(10 チェック::active の押下フィードバック、カスタム cubic-bezier、ease-in/linear/デフォルト ease を使わない、transition: all を使わない、transform/opacity/colour のみをアニメーション、継続時間 <= 300 ms、reduced motion、スタッガー、scale(0) を使わない、(hover: hover) でゲートされたホバー)で、実行ごとに 0〜5 点です。これはスキル自身のルールと密接に一致するため、「スキルに従ったか」を測るものであり、「ページが良くなったか」ではありません。

結果

第 3 群に与えた一文プロンプト:「デザインエンジニアのように磨き上げる:カスタムイージングカーブ(入場は ease-out、デフォルトや ease-in は使わない)、150〜300 ms の継続時間、transform と opacity のみをアニメーション、:active での scale(0.97) のような押下フィードバック、scale(0) からのアニメーションはしない、入場をスタッガーでずらす、prefers-reduced-motion を尊重し、見えない細部(hover、active、focus の状態、44 px のヒットターゲット)に気を配る。」

タスク対照群スコア一文プロンプトスキルあり対照群のトークン一文プロンプトのトークンスキルありのトークンスキル読み込み
t1-landing3.254.55.089k103k130k2/2
t2-dashboard3.54.54.25202k145k135k2/2
t3-redesign3.254.55.0106k133k181k2/2

平均スコア:スキルなし 3.33 に対しスキルあり 4.75(差 +1.42)。1実行あたりのトークン:133k 対 149k(1.12x)。時間:178s 対 163s。一文プロンプト群:4.5(一文プロンプトに対するスキルの上積み:+0.25。一文プロンプト自身のスキルなしに対する上積み:+1.17)。一文プロンプトのトークンは 1実行あたり 127k なので、スキルは一文プロンプトの 1.17 倍のコストになります。

何が起きたか

  • 素の Codex は押下フィードバックやカスタムイージングカーブを書きません:対照群のページは 0/6 で :active の scale ルールや cubic-bezier を持つのに対し、一文群は 6/6、スキルありは 6/6(押下)と 5/6(カーブ)です。スコアは対照群 3.33、一文 4.50、スキル 4.75。
  • 一文プロンプトが伝えなかった唯一のルール、@media (hover: hover) によるホバースタイルのゲートは、スキルのページが 5/6、その他のページは 0/12 で従っていました。これが一文に対するスキルの上積みのすべてです(+0.25)。
  • すでに良い習慣は全群で共通でした:transition: all を使わない、transform/opacity/colour のみをアニメーション、reduced-motion 対応、scale(0) を使わない。対照群はこれらを 6/6 で正しく行ったため、スキルが加えるのは基本ではなく特定の磨き上げルールです。
  • ページを盲検で見ると(デスクトップのスクリーンショット、シャッフル済み)、18 ページすべてが磨かれており、壊れているものはありません。3 群の静的なデザイン品質は見分けがつきません。このスキルが変えるのはスクリーンショットに見えるものではなく、体感できる挙動です。
  • コスト:1実行あたり 149k トークン。133k(1.12x)、一文群は 127k に対し、デザイン系スキルの中で測定した中では最も安いオーバーヘッドです。

評価項目スコア

評価項目スコア理由
1_output_quality4.75

スキルありの平均スコアは 5 点中 4.75(プログラム的チェック。タスク別の表を参照)。

2_lift_vs_no_skill3.42

スキルなしの 3.33 に対し +1.42 点(タスクごとに n=2。約 1 点未満の差はノイズ)。

3_trigger5.0スキルあり群 6/6 実行でスキルファイルが読み込まれました。
4_instructions_portability4

CSS/React スニペット付きの平易な散文。Web UI プロジェクトを前提とし、トリガー表現付きの有効な frontmatter。

5_efficiency4

トークン 1.12x(1実行あたり 149k 対 133k)、時間 0.92x(163s 対 178s)。

6_safety_hygiene5単一の Markdown ファイル、スクリプトなし、スキャナはクリーン、MIT。

このテストの限界

  • モーションルールはページの見た目ではなく CSS テキストからチェックしています。トランジションが存在しても、体感が悪いことはあり得ます。
  • チェックリストはスキル自身のルールに由来し、一文プロンプトはそのほとんどを明示するため、一文群は短いプロンプトの上限値です。
  • 静的なページのブリーフが 3 つだけ。スキルが多くの言葉を割くインタラクティブなコンポーネント(ドロップダウン、トースト、ドロワー)は要求しませんでした。
  • タスクごとに各群 n=2。約 1 点未満の差はノイズです。
  • ルールベースの採点はチェックが見られるものだけを測ります。好みや、結果が可能な限り最善かどうかは判断できません。

セキュリティ

security.md を参照。スキャン:CRITICAL 0 / HIGH 0 / MEDIUM 0。判定:実行しても安全(ネットワーク無効のサンドボックス)。クリーンなスキャン結果はスキルの安全性を証明しません。

結論

押下フィードバック、ease-out カーブ、ホバーのゲートを、求めずとも備えたページが欲しいなら、このスキルはほぼトークンコストなしでそれを提供します。同じルールを列挙した一文でも 94% のところまで到達するため、スキルの価値は「ルールを知らなくてもよい」ことにあります。

トランスクリプト

実行ログ:emil-design-eng (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.)
列:タスク、群-回、スコア(0-5)、トークン、秒、合格したチェック、エージェントが開いたスキルファイル。

t1-landing control-1: スコア 3.0, トークン 87031, 秒 180.3, チェック 5/5, 開いたファイルなし
t1-landing control-2: スコア 3.5, トークン 91542, 秒 176.7, チェック 5/5, 開いたファイルなし
t1-landing oneliner-1: スコア 4.5, トークン 124122, 秒 175.9, チェック 5/5, 開いたファイルなし
t1-landing oneliner-2: スコア 4.5, トークン 82163, 秒 143.1, チェック 5/5, 開いたファイルなし
t1-landing treatment-1: スコア 5.0, トークン 132827, 秒 151.2, チェック 5/5, 開いたファイル emil-design-eng
t1-landing treatment-2: スコア 5.0, トークン 128585, 秒 170.2, チェック 5/5, 開いたファイル emil-design-eng
t2-dashboard control-1: スコア 3.5, トークン 270891, 秒 204.0, チェック 5/5, 開いたファイルなし
t2-dashboard control-2: スコア 3.5, トークン 134118, 秒 172.6, チェック 5/5, 開いたファイルなし
t2-dashboard oneliner-1: スコア 4.5, トークン 154395, 秒 240.7, チェック 5/5, 開いたファイルなし

18 実行、3 成果物

サンプル出力

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="#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 を見る