design-taste-frontend (Leonxlnx/taste-skill)
ランディングページやアプリ画面に独自のデザイン方針を与え、スクリーンショットを見ながら量産的な仕上がりを修正します。
design-taste-frontend:「AI スロップ」の兆候(大文字のアイブロー、01/02 のマーカー)を除去し、リデザインタスクでは勝利します。ただし 1 つのランディングページが壊れて出力されたため、平均は対照群を下回り(3.6 対 4.0)、トークンは 3.7 倍です。
Codex CLI · gpt-6-astra
16.2 / 30
スキルなしに対するリフト:-0.38 · 状況次第 · 18 実行
状況次第:合計 16.2/30 が 22 未満 と リフト -0.38 が +1.0 未満。推奨には合計 22/30、出力品質 3.5、リフト +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
- スキルなしに対するリフト
- 1.6
- 出力品質
- 3.6
- トークンと時間のコスト
- 0.0
- インストールと移植性
- 3.0
- 安全性
- 3.0
セキュリティレビュー
注意静的スキャン:CRITICAL 10 / HIGH 44 / MEDIUM 9。手動レビュー:確認済み。注意事項付きで実行(同梱の Node スクリプト。スキャナの指摘は確認済み)。クリーンなスキャン結果はスキルの安全性を証明しません。
インストール
npx skills@latest add Leonxlnx/taste-skill --skill taste-skill
固定コミット: 12af471f627f866411b4bd785b19646d3672784c
テスト済み: 2026-11-02
テスト内容
- ブリーフからの新しいランディングページ — Tidepool(定期購入で販売する小ロットの海藻スナックブランド。3 種類のフレーバー、1 箱 $14、毎月発送)の単一ページのランディングサイトを作成してください。インライン CSS と、必要な場合のみ最小限の JS を使った自己完結の index.html を 1 つ書いてください。フレームワークやビルドステップは使わな…
- データ密度の高いダッシュボード UI — 自治体の水質監視チーム向けのダッシュボードページを構築してください:6 つの観測所の現在値(pH、濁度、塩素、水温)、それぞれの 7 日間のトレンド、アラートパネル。インライン CSS/JS とハードコードされた読み…
- 既存の凡庸なページの刷新 — old.html は Granite Peak Climbing Gym(Boulder, CO)の現在のホームページです。これを new.html にリデザインしてください:実際のコンテンツ(料金、クラス、営業時間、住所)をすべて維持しつつ、このジム特有の見た目にしてください。自己完結の HTML/CSS、フレーム…
長所
- スキルは名前を出さずとも採用されました:スキルあり群 6/6 実行でスキルファイルが読み込まれました。
短所
- スキルなしに対する有意なリフトなし(-0.38、ノイズの範囲内)。
- 一文プロンプトは 4.29、スキルありは 3.58(-0.71)。
- スキルなしの 3.74 倍のトークンを消費。
- テスト上の注意:スキルあり群の 1 ページが壊れており、スキルはスキルなしの 3.7 倍のトークンを消費しました。スコアはブラインドのコンタクトシートから得ています。
- タスク・群ごとに n=2。1 ポイント未満の差はノイズです。
レビュー
専用の Windows テスト PC 上で Codex CLI 0.166(gpt-6-astra、低推論)、実行ごとに新規の一時プロジェクトと一時 HOME/TMPDIR/キャッシュを使用、スキルをインストール(スキルあり群)、スキルなし(対照群)、またはスキルの中核要件をプロンプト末尾に付けた一文に圧縮(一文プロンプト群)、タスクごとに各群 2 実行、ネットワーク無効、/tmp への書き込みはブロック。プロンプトはスキル名に一切言及しません(以下で注記する表現を除く)。全群で ui-ux-pro-max および frontend-design と同じ 3 つのタスク:Tidepool 海藻スナックブランドのランディングページ、自治体の水質ダッシュボード、コンテンツを維持した Granite Peak クライミングジムのホームページのリデザイン。一文プロンプト群は、1 つの具体的なコンセプトとパレット、特徴的な書体の組み合わせと非対称レイアウトを求め、紫のグラデーション/デフォルトの Inter/3 カードのグリッド/番号付きマーカー/大文字のアイブローラベルを禁止し、画像は CSS/SVG で描き、デスクトップとモバイルの幅を確認するよう求めます。ページはオフラインでスクリーンショットを撮り(デスクトップとモバイル)、シャッフルされたコンタクトシートからブラインドで採点しました。
3群の比較
| 群 | 平均スコア(0〜5) | 1実行あたりのトークン |
|---|---|---|
| スキルなし | 3.96 | 115k |
| 一文プロンプト | 4.29 | 298k |
| スキルあり | 3.58 | 431k |
Codex CLI で 18 実行を計測し、LLM 判定なしのルールベースのチェックで採点。合計 16.2 / 30、判定は 状況次第。
開示事項 スキルあり群のページが1つ壊れており、スキルはスキルなしの 3.7 倍のトークンを消費しました。スコアはブラインド方式のコンタクトシートから得ています。
判定:状況次第(16.2 / 30)。 出典:Leonxlnx/taste-skill、skills/taste-skill、コミット 12af471 に固定。インストール:npx skills@latest add Leonxlnx/taste-skill --skill taste-skill。ライセンス: MIT(リポジトリの LICENSE)。
概要
design-taste-frontend スキル(Leonxlnx/taste-skill):Web ページのためのアートディレクションワークフローです。ローカルスクリプトを実行してブリーフからデザインの「方向性」を選び(例:「ページがオブジェクトである」)、方向性ファイルとレポートを .taste-skill/ フォルダに書き込み、それに沿ってページを構築します。汎用的な AI 風レイアウトを禁じるルール、固定のセクションセット、ビジュアルチェックを備えます。
テスト方法
専用の Windows テスト PC 上で Codex CLI 0.166(gpt-6-astra、低推論)、実行ごとに新規の一時プロジェクトと一時 HOME/TMPDIR/キャッシュを使用、スキルをインストール(スキルあり群)、スキルなし(対照群)、またはスキルの中核要件をプロンプト末尾に付けた一文に圧縮(一文プロンプト群)、タスクごとに各群 2 実行、ネットワーク無効、/tmp への書き込みはブロック。プロンプトはスキル名に一切言及しません(以下で注記する表現を除く)。
全群共通のタスクは ui-ux-pro-max と frontend-design と同じ 3 つ:海藻スナックブランド Tidepool のランディングページ、自治体の水質ダッシュボード、Granite Peak クライミングジムのホームページを内容を保ったままリデザインするもの。一文プロンプトは、1 つの具体的なコンセプトとパレット、特徴的な書体の組み合わせと非対称レイアウトを求め、紫のグラデーション/デフォルトの Inter/3 カードグリッド/番号付きマーカー/大文字のアイブロウラベルを禁じ、画像は CSS/SVG で描き、デスクトップとモバイルの幅を確認するよう求めます。ページはオフラインで(デスクトップとモバイルを)スクリーンショットし、シャッフルされたコンタクトシートから盲検で採点しました。
- ブリーフからの新規ランディングページ — Tidepool(サブスクリプション販売の小ロット海藻スナックブランド。3 フレーバー、1 箱 $14、毎月発送)の単一ページのランディングサイトを作成してください。インライン CSS と、必要な場合のみ最小限の JS を使った、自己完結の index.html を 1 つ書いてください。フレームワークなし、ビルド手順な…
- データ密度の高いダッシュボード UI — 自治体の水質モニタリングチーム向けのダッシュボードページを作成:6 地点の現在値(pH、濁度、塩素、水温)、各地点の 7 日間トレンド、アラートパネル。インライン CSS/JS とハードコードされた…
- 既存の味気ないページの作り直し — old.html は Granite Peak Climbing Gym(Boulder, CO)の現在のホームページです。new.html にリデザインしてください。実際のコンテンツ(料金、クラス、営業時間、住所)はすべて残しつつ、このジムにふさわしい見た目にしてください。自己完結の HTML/CSS、フレームワー…
スコアは Grok Bot による盲検(ID をシャッフルし、条件は表示しない)で固定のルーブリックに対して付けられ、実行ごとに 0〜5 点。AI 判定者なので、小さな差はノイズとして扱ってください。
結果
第 3 群に与えた一文プロンプト:「AI スロップに抗してアートディレクションする:この題材に 1 つの具体的なコンセプトとパレットを選び、紫のグラデーション、デフォルトの Inter、凡庸な 3 カードの機能グリッド、01/02 の番号マーカー、大文字のアイブロウラベルを避け、特徴的な書体の組み合わせと非対称な構図を使い、画像は CSS/SVG で描き、ページをデスクトップとモバイルの幅で確認して見た目がおかしい箇所を直す。」
| タスク | 対照群スコア | 一文プロンプト | スキルあり | 対照群のトークン | 一文プロンプトのトークン | スキルありのトークン | スキル読み込み |
|---|---|---|---|---|---|---|---|
| t1-landing | 4.12 | 4.38 | 2.75 | 101k | 312k | 397k | 2/2 |
| t2-dashboard | 3.75 | 4.38 | 3.5 | 115k | 330k | 600k | 2/2 |
| t3-redesign | 4.0 | 4.12 | 4.5 | 128k | 252k | 296k | 2/2 |
平均スコア:スキルなし 3.96 に対しスキルあり 3.58(差 -0.38)。1実行あたりのトークン:115k 対 431k(3.74x)。時間:175s 対 198s。一文プロンプト群:4.29(一文プロンプトに対するスキルの上積み:-0.71。一文プロンプト自身のスキルなしに対する上積み:+0.33)。一文プロンプトのトークンは 1実行あたり 298k なので、スキルは一文プロンプトの 1.44 倍のコストになります。
何が起きたか
- 盲検の平均:一文プロンプト 4.29、対照群 3.96、スキル 3.58(各 n=6)。タスク別では、スキルはリデザインで 4.5 / 4.5(対照群 4.0、一文プロンプト 4.1)、ダッシュボードで 3.5(対照群 3.75、一文プロンプト 4.4)、ランディングページで 2.75(対照群 4.1、一文プロンプト 4.4)。
- ランディングページの平均が低いのは 1 つの壊れたページが原因です。あるスキルあり群の実行のページでは文字化け(フレーバーセレクタがマークアップをテキストとして書くため、ボタン内に '</span>' が表示される)、崩れたナビゲーション、散らばった図形が見られました。もう一方のスキルありのランディングページは問題ありませんでした(4.0)。スキル自身のワークフローは「ブラウザ検証がブロックされた」と報告したため、ビジュアルチェックなしで出荷されました。その実行を除けば、スキルは平均 4.0 となり、対照群と同水準です。
- スキルはページの見た目を実際に変えます。「スロップ」の痕跡は消えています。ページあたりの大文字アイブロウラベル:対照群 0〜5、スキル 0〜1。01/02 の番号マーカー:対照群は 6 ページ中 3 ページで 3〜6、スキルは全 6 ページで 0。一文プロンプトも同じ痕跡を除去したため(ラベル 0〜1、マーカー 0)、その部分は一文だけで達成できます。
- コストは非常に高いです:スキルは 1実行あたり 431k トークン。一文プロンプトは 298k、対照群は 115k(3.7x と 1.4x)。シェルコマンドは 1実行あたり 25.7 回(対照群は 7.7)。各実行はさらに約 40 個のスキル・方向性ファイルをプロジェクトに落とします(スキルの direction.json と report.md は
.taste-skill/に書き込まれます)。 .taste-skill/direction.jsonを伴うスキルあり群のダッシュボードとランディングページは見た目が特徴的でした(編集的な紙とインクのレイアウト)が、対照群と一文プロンプトが収束するシンプルなダークグリーン・セリフイタリックのスタイルより一貫して優れているわけではありませんでした。
評価項目スコア
| 評価項目 | スコア | 理由 |
|---|---|---|
| 1_output_quality | 3.58 | スキルありの平均スコアは 5 点中 3.58(プログラム的チェック。タスク別の表を参照)。 |
| 2_lift_vs_no_skill | 1.62 | スキルなしの 3.96 に対し -0.38 点(タスクごとに n=2。約 1 点未満の差はノイズ)。 |
| 3_trigger | 5.0 | スキルあり群 6/6 実行でスキルファイルが読み込まれました。 |
| 4_instructions_portability | 3 | 大規模:SKILL.md、方向性ライブラリ、CSS アセット、そしてプロジェクトに書き込むスクリプト。ビジュアルチェックにブラウザを前提とします。 |
| 5_efficiency | 0 | トークン 3.74x(1実行あたり 431k 対 115k)、時間 1.14x(198s 対 175s)。 |
| 6_safety_hygiene | 3 | プロジェクトに |
このテストの限界
- レビュー担当者によるフルページのコンタクトシート(ページあたりデスクトップ 600 px、モバイル 300 px)からの盲検のビジュアル判定。0.25 の差は判定者のノイズの範囲内です。壊れた 1 ページがスキルの平均を約 0.3 動かします。
- セルごとに n=2、タスクは 3 つ。壊れた 1 ページは体系的な欠陥というより不運の可能性があります。
- フォントはオフラインでは読み込まれないため、書体の組み合わせの選択は見えません。
- スキル自身のブラウザスクリーンショット手順はサンドボックスで実行できず、これが他群よりもスキルに不利に働いた可能性があります。
- タスクごとに各群 n=2。約 1 点未満の差はノイズです。
- 盲検 AI 判定:判定者は 1 人で、判定者間の一致確認はありません。当初の対照群/スキルあり群の実行と、後に行った一文プロンプト群の実行は別セッションで判定されました(一文プロンプトは 2026-11-02)。そのためセッション間のずれが起こり得ます。
セキュリティ
security.md を参照。スキャン:CRITICAL 10 / HIGH 44 / MEDIUM 9。判定:実行しても安全(ネットワーク無効のサンドボックス)。クリーンなスキャン結果はスキルの安全性を証明しません。
結論
汎用的な AI 風の見た目を排除し、ここでは最良のリデザインを生みましたが、トークンが 3.7x かかり、6 回中 1 回は明らかに壊れたページを気づかずに出荷しました。一文のアートディレクションプロンプトは約 3 分の 1 のトークンでより高いスコアを出しました。人間が結果を確認するアートディレクション主体のマーケティングページには試す価値がありますが、無人のデフォルトとしては使わないでください。
トランスクリプト
実行ログ:design-taste-frontend (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) 列:タスク、群-回、スコア(0-5)、トークン、秒、合格したチェック、エージェントが開いたスキルファイル。 t1-landing control-1: スコア 4.25, トークン 100863, 秒 169.3, チェック 5/5, 開いたファイルなし t1-landing control-2: スコア 4.0, トークン 101753, 秒 206.0, チェック 5/5, 開いたファイルなし t1-landing oneliner-1: スコア 4.25, トークン 279371, 秒 224.5, チェック 5/5, 開いたファイルなし t1-landing oneliner-2: スコア 4.5, トークン 345398, 秒 247.5, チェック 5/5, 開いたファイルなし t1-landing treatment-1: スコア 1.5, トークン 433869, 秒 267.5, チェック 5/5, 開いたファイル taste-skill t1-landing treatment-2: スコア 4.0, トークン 360647, 秒 199.4, チェック 5/5, 開いたファイル taste-skill t2-dashboard control-1: スコア 3.75, トークン 114229, 秒 178.7, チェック 4/5, 開いたファイルなし t2-dashboard control-2: スコア 3.75, トークン 117234, 秒 192.6, チェック 4/5, 開いたファイルなし t2-dashboard oneliner-1: スコア 4.25, トークン 411906, 秒 237.5, チェック 4/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="#163e32"> <meta name="description" content="Meet Tidepool: small-batch seaweed snacks in three big flavours. Your monthly crunch, $14 a box."> <title>Tidepool 鈥?A little sea. A lot of crunch.</title> <style> :root{--green:#163e32;--paper:#f5f3e9;--lime:#e1f184;--pink:#edb7c6;--blue:#bfd9ec;--ink:#163e32;--body:Arial,Helvetica,sans-serif;--display:'Arial Black',Arial,Helvetica,sans-serif;--gutter:clamp(22px,4vw,64px)} *{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.5 var(--body)}a{color:inherit;text-decoration:none}button,select{font:inherit}button,a,summary,select{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid currentColor;outline-offset:6px}a,button{transition:transform .2s}a:hover,button:hover{transform:translateY(-3px)}a:active,button:active{transform:translateY(1px)}::selection{background:var(--pink);color:var(--green)}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--display);font-weight:900;letter-spacing:-.055em;line-height:.98}h2{font-size:clamp(40px,5.5vw,76px)}h3{font-size:30px}p{max-width:48ch}.skip{position:absolute;top:-100px;background:var(--paper);padding:14px;z-index:10}.skip:focus{top:0}.announcement{background:var(--lime);text-align:center;padding:9px 20px;font-size:14px}.header{display:flex;align-items:center;justify-content:space-between;padding:24px var(--gutter);background:var(--green);color:var(--paper)}.logo{font-family:var(--display);font-weight:900;font-size:38px;letter-spacing:-3px;line-height:1}.logo span{display:inline-block;transform:rotate(-12deg)}nav{display:flex;align-items:center;gap:34px;font-size:15px}.nav-cta{background:var(--paper);color:var(--green);padding:12px 23px;border-radius:50px}.hero{background:var(--green);color:var(--paper);padding:35px var(--gutter) 0;overflow:hidden}.hero h1{font-size:clamp(66px,10.8vw,164px);letter-spacing:-.065em;line-height:.89;position:relative;z-index:1}.hero h1 span{display:block;animation:rise .8s both}.hero h1 span:last-child{animation-delay:.1s}.hero-bottom{display:grid;grid-template-columns: .85fr 1.15fr;min-height:405px;align-items:center}.hero-copy{padding:40px 0 55px;max-width:410px}.hero-copy p{font-size:19px;line-height:1.5;margin-bottom:27px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:35px;border:0;border-radius:50px;background:var(--lime);color:var(--green);padding:17px 27px;font-weight:700;cursor:pointer}.button .arrow{font-size:24px;line-height:1}.note{display:block;font-size:14px;margin-top:13px}.hero-art{height:420px;position:relative;align-self:end}.pack{width:230px;height:315px;background:var(--lime);color:var(--green);padding:22px 18px 17px;position:absolute;display:flex;align-items:center;flex-direction:column;clip-path:polygon(0 0,100% 0,98% 4%,100% 8%,98% 96%,100% 100%,0 100%,2% 95%,0 7%,2% 3%);isolation:isolate}.pack:before,.pack:after{content:'';position:absolute;left [... excerpt: first 3200 of 17282 characters]