design-taste-frontend (Leonxlnx/taste-skill)
랜딩 페이지와 앱 화면에 개성 있는 디자인 방향을 제시하고, 스크린샷을 검사해 흔한 결과물을 고칩니다.
design-taste-frontend: 'AI 티'가 나는 요소(대문자 아이브로 라벨, 01/02 마커)를 없애고 리디자인 과제에서는 이겼지만, 랜딩 페이지 하나가 깨져 나온 탓에 토큰을 3.7배나 쓰면서 평균 점수는 대조군보다 낮았습니다(3.6 대 4.0)
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도 커버되지만, 두 번째 티어에 대해서는 아무것도 말해주지 않습니다.
점수
각 차원은 0~5점이며 여섯 차원을 더하면 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의 한 페이지짜리 랜딩 사이트를 만드세요(세 가지 맛, 상자당 $14, 매월 배송). 인라인 CSS를 넣은 단일 index.html 파일로 작성하고, 꼭 필요할 때만 최소한의 JS를 쓰세요. 프레임워크와 빌드 단계는 쓰지 않습니다…
- 데이터 밀도 높은 대시보드 UI — 지방자치단체 수질 모니터링 팀을 위한 대시보드 페이지를 만드세요: 6개 관측소의 현재 수치(pH, 탁도, 염소, 수온), 관측소별 7일 추이, 경보 패널이 필요합니다. 인라인 CSS/JS와 하드코딩된 데이터를 넣은 단일 dashboard.html 파일로 작성하세요…
- 밋밋한 기존 페이지 재디자인 — old.html은 Granite Peak Climbing Gym(콜로라도 볼더)의 현재 홈페이지입니다. 이를 new.html로 리디자인하세요: 실제 콘텐츠(가격, 수업, 운영 시간, 주소)는 모두 유지하되, 이 클라이밍 짐의 페이지처럼 보이게 만드세요. 외부 의존성 없는 HTML/CSS로, 프레임워크 없이…
장점
- 스킬 이름을 언급하지 않았는데도 적용되었습니다. 스킬 사용군 실행 6/6회에서 스킬 파일을 읽었습니다.
단점
- 스킬 없이 실행한 경우와 비교해 측정 가능한 향상이 없습니다(-0.38, 노이즈 범위 안).
- 한 문장 프롬프트는 4.29점, 스킬 사용은 3.58점(-0.71).
- 스킬 없이보다 토큰을 3.74배 사용합니다.
- 테스트 참고: 스킬 사용군 페이지 하나가 깨졌고, 스킬은 스킬 없이보다 토큰을 3.7배 사용했습니다. 점수는 블라인드 콘택트 시트로 매겼습니다.
- 과제·그룹당 n=2이며, 약 1점 미만의 차이는 노이즈입니다.
리뷰
Codex CLI 0.166 (gpt-6-astra, low reasoning)을 전용 Windows 테스트 PC에서 실행했고, 실행마다 새 임시 프로젝트와 임시 HOME/TMPDIR/캐시를 사용했습니다. 스킬 설치(스킬 사용군), 미설치(대조군), 미설치 상태에서 스킬의 핵심 요구사항만 한 문장으로 압축해 프롬프트에 덧붙인 경우(한 문장 프롬프트군)로 나눴으며, 과제·그룹당 2회씩 실행했습니다. 네트워크는 끄고 /tmp 쓰기는 차단했습니다. 프롬프트에는 스킬 이름을 언급하지 않았습니다(아래에 적은 경우 제외). 모든 그룹에 ui-ux-pro-max, frontend-design 테스트와 동일한 세 가지 과제를 적용했습니다: Tidepool 해조 스낵 브랜드의 랜딩 페이지, 지방자치단체 수질 대시보드, Granite Peak 클라이밍 짐 홈페이지의 콘텐츠를 유지한 리디자인입니다. 한 문장 프롬프트는 특정 콘셉트와 팔레트를 하나로 정하고, 개성 있는 서체 조합과 비대칭 레이아웃을 쓰며, 보라색 그라데이션·기본 Inter·3장 카드 그리드·번호 마커·대문자 아이브로 라벨을 피하고, 이미지는 CSS/SVG로 그리며, 데스크톱과 모바일 너비를 확인하라고 요구합니다. 페이지는 오프라인에서 스크린샷(데스크톱·모바일)을 찍고 섞은 콘택트 시트로 블라인드 채점했습니다.
3개 그룹 비교
| 그룹 | 평균 점수 (0-5) | 실행당 토큰 |
|---|---|---|
| 스킬 없음 | 3.96 | 115k |
| 한 문장 프롬프트 | 4.29 | 298k |
| 스킬 사용 | 3.58 | 431k |
Codex CLI에서 18회 실행해 측정했고, LLM 심사 없이 규칙 기반 검사로 채점했습니다. 총점 16.2 / 30, 판정 상황에 따라.
참고: 스킬 사용군의 페이지 하나가 깨졌고, 스킬은 스킬 없이보다 토큰을 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)은 웹 페이지를 위한 아트 디렉션 워크플로입니다. 로컬 스크립트를 실행해 브리프에서 디자인 '방향'을 고르고(예: '페이지가 곧 오브제'), 방향 파일과 보고서를 .taste-skill/ 폴더에 쓴 뒤, 그 방향에 맞춰 페이지를 만듭니다. 흔한 AI스러운 레이아웃을 피하는 규칙, 고정된 섹션 집합, 시각 검사도 포함합니다.
테스트 방법
전용 Windows 테스트 PC에서 Codex CLI 0.166(gpt-6-astra, 낮은 추론)을 실행했고, 실행마다 새 임시 프로젝트와 임시 HOME/TMPDIR/캐시를 사용했습니다. 스킬을 설치한 경우(스킬 사용군), 설치하지 않은 경우(대조군), 스킬 없이 스킬의 핵심 요구사항을 한 문장으로 압축해 프롬프트 끝에 붙인 경우(한 문장 프롬프트군)로 나눴고, 작업마다 각 군 2회씩 실행했습니다. 네트워크는 끄고 /tmp 쓰기는 차단했습니다. 프롬프트에는 스킬 이름을 전혀 언급하지 않았습니다(아래에 적은 표현은 예외).
ui-ux-pro-max, frontend-design과 같은 작업 세 가지를 모든 군에 적용했습니다. Tidepool 김 스낵 브랜드의 랜딩 페이지, 지방자치단체 수질 대시보드, 그리고 콘텐츠를 유지한 채 Granite Peak 클라이밍 짐 홈페이지를 재디자인하는 작업입니다. 한 문장 프롬프트는 이 소재에 맞는 구체적인 콘셉트와 팔레트 하나를 고르고, 보라색 그라데이션, 기본 Inter, 흔한 3장 카드 그리드, 01/02 번호 마커, 대문자 아이브로 라벨을 피하며, 개성 있는 서체 조합과 비대칭 레이아웃을 쓰고, 이미지는 CSS/SVG로 그리고, 데스크톱과 모바일 너비에서 확인하라고 요청합니다. 페이지는 오프라인에서 스크린샷(데스크톱·모바일)을 찍고, 순서를 섞은 콘택트 시트로 블라인드 채점했습니다.
- 브리프로 새 랜딩 페이지 만들기 — 소량 생산 김 스낵 브랜드 Tidepool의 원페이지 랜딩 사이트를 만드세요. 구독으로 판매하며(맛 3종, 상자당 $14, 매월 배송) 합니다. 인라인 CSS를 사용한 자체 완결형 index.html 하나를 작성하고, 필요한 경우에만 최소한의 JS를 쓰세요. 프레임워크와 빌드 도구는 사용하지 마세요…
- 데이터 밀도 높은 대시보드 UI — 지방자치단체 수질 모니터링 팀을 위한 대시보드 페이지를 만드세요. 6개 관측소의 현재 수치(pH, 탁도, 염소, 수온), 각 관측소의 7일 추세, 경보 패널이 포함되어야 합니다. 인라인 CSS/JS와 하드코딩된 판독값으로 구성된 자체 완결형 dashboard.html 하나를 작성하세요.
- 기존의 밋밋한 페이지 재구성 — old.html은 Granite Peak Climbing Gym(콜로라도주 볼더)의 현재 홈페이지입니다. 실제 콘텐츠(요금, 수업, 운영 시간, 주소)는 모두 유지하면서 이 특정 암장에 어울리는 페이지로 new.html을 새로 디자인하세요. 프레임워크 없이 자체 완결형 HTML/CSS로 작성하세요…
점수는 Grok Bot이 고정 루브릭에 따라 블라인드로 읽고 매긴 것입니다(아이디를 섞고 조건은 표시하지 않음). 실행당 0~5점이며 AI 심사자이므로 작은 차이는 노이즈로 보세요.
결과
세 번째 군에 전달한 한 문장 프롬프트: "AI 슬롭에 맞서 아트 디렉션하세요. 이 소재에 맞는 구체적인 콘셉트와 팔레트 하나를 고르고, 보라색 그라데이션, 기본 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). 실행당 토큰: 115k 대 431k(3.74배), 시간: 175초 대 198초. 한 문장 프롬프트 군: 4.29(한 문장 프롬프트 대비 스킬의 이득 -0.71, 스킬 없음 대비 한 문장 프롬프트의 이득 +0.33). 한 문장 프롬프트의 실행당 토큰은 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)를 받았습니다.
- 랜딩 페이지 평균이 낮은 것은 망가진 페이지 하나 때문입니다. 스킬 사용군의 한 실행에서 텍스트가 깨져 나왔습니다(맛 선택기가 마크업을 텍스트로 출력해 버튼 안에 '</span>'가 나타남). 내비게이션도 접혀 있었고 도형이 흩어져 있었습니다. 다른 스킬 사용군 랜딩 페이지는 정상이었습니다(4.0). 스킬 자체 워크플로가 '브라우저 확인이 차단됨'이라고 보고해 시각적 확인 없이 결과물을 내보냈습니다. 그 실행을 빼면 스킬 평균은 4.0으로 대조군과 같은 수준입니다.
- 스킬은 실제로 페이지의 모습을 바꿉니다. 스킬이 지목한 흔한 AI 티는 사라졌습니다. 페이지당 대문자 아이브로 라벨 수: 대조군 0~5, 스킬 사용 0~1. 01/02 번호 마커: 대조군은 6장 중 3장에서 3~6개, 스킬 사용은 6장 모두 0개. 한 문장 프롬프트도 같은 티를 없앴습니다(라벨 0~1, 마커 0). 즉 그 부분은 한 문장만으로 달성됩니다.
- 비용은 매우 높습니다. 실행당 스킬 사용 431k 토큰, 한 문장 298k, 대조군 115k(각각 3.7배, 1.4배)이며, 실행당 셸 명령이 25.7개입니다(대조군 7.7개). 또한 실행마다 스킬·방향 파일 약 40개를 프로젝트에 떨어뜨립니다(스킬의 direction.json과 report.md는
.taste-skill/아래에 기록됨). .taste-skill/direction.json이 있는 스킬 사용군의 대시보드와 랜딩 페이지는 모양새가 독특했습니다(에디토리얼한 종이와 잉크 레이아웃). 그러나 대조군과 한 문장 프롬프트가 수렴하는 소박한 짙은 초록색 세리프 이탤릭 스타일보다 일관되게 낫지는 않았습니다.
항목별 점수
| 항목 | 점수 | 근거 |
|---|---|---|
| 1. 출력 품질 | 3.58 | 스킬 사용 시 평균 3.58/5(프로그램 검사, 작업별 표 참조). |
| 2. 스킬 없음 대비 향상 | 1.62 | 스킬 없음 3.96 대비 -0.38점(작업당 n=2, 약 1점 미만은 노이즈). |
| 3. 트리거 | 5.0 | 스킬 사용군 6/6회 실행에서 스킬 파일을 읽었습니다. |
| 4. 지침 이식성 | 3 | 규모가 큽니다. SKILL.md, 방향 라이브러리, CSS 자산, 프로젝트에 파일을 쓰는 스크립트가 있고, 시각적 확인을 위해 브라우저를 전제로 합니다. |
| 5. 효율성 | 0 | 토큰 3.74배(실행당 431k 대 115k), 시간 1.14배(198초 대 175초). |
| 6. 안전성·위생 | 3 | 프로젝트에 |
이 테스트의 한계
- 리뷰어가 전체 페이지 콘택트 시트(페이지당 데스크톱 600 px, 모바일 300 px)를 보고 블라인드로 시각 평가했습니다. 0.25 차이는 심사자 노이즈 범위입니다. 망가진 페이지 하나가 스킬 평균을 약 0.3 움직입니다.
- 셀당 n=2, 작업 3개. 망가진 페이지 하나는 체계적 결함이 아니라 운이 나빴던 것일 수 있습니다.
- 오프라인에서는 폰트가 로드되지 않아 서체 조합 선택이 보이지 않습니다.
- 스킬 자체의 브라우저 스크린샷 단계는 샌드박스에서 실행할 수 없었고, 이는 다른 군보다 스킬에 더 불리하게 작용했을 것입니다.
- 작업·군당 n = 2: 약 1점 미만의 차이는 노이즈입니다.
- 블라인드 AI 평가: 심사자가 하나이고 평가자 간 검증이 없습니다. 최초의 대조군·스킬 사용군 실행과 나중의 한 문장 프롬프트 실행을 별도 세션에서 평가했으므로(한 문장은 2026-11-02), 세션 간 편차가 생길 수 있습니다.
보안
security.md를 참조하세요. 스캔: CRITICAL 10 / HIGH 44 / MEDIUM 9. 판정: 실행해도 안전(네트워크 차단 샌드박스). 깨끗한 스캔 결과가 스킬의 안전성을 증명하지는 않습니다.
결론
흔한 AI 느낌을 없애고 이번 테스트에서 가장 좋은 재디자인을 만들어 냈습니다. 하지만 토큰이 3.7배 들었고, 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]