Install any skill in seconds. Free to start, no credit card required.
Get Started Free →N개 brand experiment를 한 화면에서 비교하는 gallery index.html을 생성. 각 카드는 brand name, wow rating, multi-turn refinement deltas, iframe scaled preview, standalone link 포함. '결과물 한 번에 보여줘', '갤러리 만들어', '5개 비교 뷰', 'experiment 결과 정리' 류 트리거. omd:harness가 N개 brand batch 작업 끝낸 직후 자동 호출되거나 사용자가 명시적으로 호출.
.claude/skills/kwakseongjae-omd-experiment-gallery/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 37% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 40% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 0% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 82% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 313% | 0% |
<!-- omd:installed-skill — managed by omd install-skills. Do not edit; rerun the command to refresh. -->
여러 brand experiment를 돌리고 나면 결과물 검수가 산만 — 각 폴더 따로 열고 비교하기 번거로움. 이 skill은 단일 index.html 에 N개 결과를 iframe으로 박아서 한 화면에서 wow ratings + deltas + 실제 렌더를 동시 확인.
다음 둘 중 하나:
/tmp/omd-gallery/{brand1,brand2,brand3} 같은 list 제공/tmp/omd-gallery/* 또는 web/experiments/2026-05/* 등 — skill이 자동 enumerate각 brand 디렉토리는 다음 파일들 있어야 함 (있으면 사용, 없으면 fallback):
landing.html (필수) — iframe srcDESIGN.md (선택) — brand display name 추출assets/_reference/<id>/structure.json (선택) — composition 메타assets/_reference/<id>/.live-inspect-proof.json (선택) — live tag 표시screenshots/after.png (선택) — fallback previewexperiment-meta.json (선택, 권장) — wow rating + round-2 deltas + 카테고리 — sub-agent가 작성각 experiment sub-agent는 work 종료 직전 다음 파일을 작성:
json{ "brand_id": "toss", "brand_korean": "토스", "brand_category": "Fintech", "brand_color_hex": "#3182f6", "wow_rating": 7.5, "lines": 603, "live_inspect": { "ran": true, "raw_samples": 7, "method": "playwright|harness" }, "round2_deltas": [ "Reveal failsafe — 2s forwards animation", "Stat-card narrative upgrade", "CTA copy 구체화 (시간 약속)", "Hero shimmer (accent text gradient)", "Dark marquee band rhythm break", "Chart stroke-dashoffset draw-in" ], "ip_compliance": { "your_logo_placeholders": 2, "your_product_name_placeholders": 4, "brand_logo_embed_count": 0, "verbatim_brand_copy": 0 }, "honest_gaps": [ "Hero composition은 single character + flat card (3D ornament 부재)", "Carousel은 dot만 회전 (slide content 미스왑)" ] }
skill이 이 파일을 읽어 gallery 카드의 wow / lines / deltas 영역 채움. 없으면 brand_id만으로 minimal 카드.
<output-dir>/index.html (메인 산출물)다음 구조:
clamp(36px,4.4vw,56px) / weight 800 / letter-spacing -0.04em)#0b0d10) — gallery는 dark mode가 정석 (검토 환경 자체가 광원이 되도록)linear-gradient(135deg, #7c5cfc 0%, #fa2e5f 50%, #04c584 100%) — Stripe-likebg #13161b, border #252b35, hover border #7c5cfc + translateY -2pxcss.frame-wrap { aspect-ratio: 16/10; background: #fff; overflow: hidden; position: relative; } .frame-wrap iframe { position: absolute; top: 0; left: 0; width: 200%; height: 200%; transform: scale(.5); transform-origin: top left; border: 0; } .open-link { position: absolute; top: 12px; right: 12px; background: rgba(11,13,16,.7); color: #fff; padding: 6px 12px; border-radius: 999px; font-size: 11px; backdrop-filter: blur(8px); }
200% × scale(.5)는 모바일 viewport에서도 데스크탑 layout 그대로 렌더하기 위함 (iframe 본인은 1280-1920px 가정).
./toss/landing.html) — 정적 file:// open 안 됨 (CORS), python3 -m http.server <port> 추천 cd <output-dir> && python3 -m http.server 8770 open http://localhost:8770/index.html
landing.html 존재 확인. 없으면 그 brand는 skip + 사용자에게 알림.experiment-meta.json 있으면 그대로 사용DESIGN.md frontmatter에서 brand 추출, landing.html에서 <title> 추출 → minimal cardstructure.json이 있으면 hero.type / cta.dominant_shape 정도를 tag로 추가.live-inspect-proof.json 존재 → "live ✓" tag, raw_samples 수 표시<output-dir>/index.html에 write. ✓ Gallery 생성: <output-dir>/index.html
browser-harness 또는 mcp__playwright__* 가용 시, gallery 생성 후 gallery 자체에 self-critique 라운드:
<output-dir>/issues.md):markdown # Gallery issues — auto-detected via browser-harness
N개 brand experiment → 1개 index.html. iframe scaled, wow rating, round-2 deltas, system-fix summary. 재사용 무한.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 28,181 | 29,718 | +5% | 1 | 1 | 0% | 6,236 | 8,560 | +37% | 0 | 0 | — |
case-02 | fail→fail | 17,256 | 7,280 | -58% | 1 | 1 | 0% | 3,322 | 2,819 | -15% | 0 | 0 | — |
case-03 | fail→fail | 28,221 | 6,832 | -76% | 1 | 1 | 0% | 6,228 | 2,712 | -56% | 0 | 0 | — |
case-04 | fail→pass | 28,455 | 26,764 | -6% | 1 | 1 | 0% | 6,188 | 8,455 | +37% | 0 | 0 | — |
case-05 | pass→pass | 8,405 | 11,697 | +39% | 1 | 1 | 0% | 1,641 | 4,643 | +183% | 0 | 0 | — |
case-06 | fail→fail | 10,587 | 11,723 | +11% | 1 | 1 | 0% | 2,271 | 4,622 | +104% | 0 | 0 | — |
case-07 | pass→pass | 7,399 | 10,354 | +40% | 1 | 1 | 0% | 1,333 | 4,581 | +244% | 0 | 0 | — |
case-08 | pass→pass | 6,626 | 2,684 | -59% | 1 | 1 | 0% | 1,149 | 2,777 | +142% | 0 | 0 | — |
case-09 | fail→pass | 11,467 | 2,714 | -76% | 1 | 1 | 0% | 1,898 | 2,657 | +40% | 0 | 0 | — |
case-10 | fail→pass | 14,972 | 2,390 | -84% | 1 | 1 | 0% | 2,629 | 2,628 | -0% | 0 | 0 | — |
case-11 | pass→pass | 10,809 | 5,110 | -53% | 1 | 1 | 0% | 1,749 | 3,073 | +76% | 0 | 0 | — |
case-12 | fail→pass | 9,393 | 3,094 | -67% | 1 | 1 | 0% | 1,497 | 2,721 | +82% | 0 | 0 | — |
case-13 | fail→pass | 3,814 | 2,479 | -35% | 1 | 1 | 0% | 654 | 2,699 | +313% | 0 | 0 | — |
case-14 | fail→pass | 11,741 | 5,879 | -50% | 1 | 1 | 0% | 2,024 | 3,381 | +67% | 0 | 0 | — |
case-15 | fail→fail | 12,246 | 3,082 | -75% | 1 | 1 | 0% | 2,180 | 2,742 | +26% | 0 | 0 | — |
case-16 | fail→fail | 14,726 | 3,392 | -77% | 1 | 1 | 0% | 2,355 | 2,798 | +19% | 0 | 0 | — |
case-17 | fail→pass | 7,707 | 2,929 | -62% | 1 | 1 | 0% | 1,263 | 2,795 | +121% | 0 | 0 | — |
case-18 | fail→pass | 7,878 | 2,779 | -65% | 1 | 1 | 0% | 1,453 | 2,672 | +84% | 0 | 0 | — |
case-19 | fail→fail | 13,053 | 2,493 | -81% | 1 | 1 | 0% | 2,310 | 2,625 | +14% | 0 | 0 | — |
case-20 | pass→pass | 11,489 | 7,184 | -37% | 1 | 1 | 0% | 1,784 | 3,394 | +90% | 0 | 0 | — |
case-21 | pass→pass | 10,132 | 3,489 | -66% | 1 | 1 | 0% | 1,843 | 2,835 | +54% | 0 | 0 | — |
case-22 | fail→fail | 6,402 | 2,418 | -62% | 1 | 1 | 0% | 867 | 2,584 | +198% | 0 | 0 | — |
case-23 | fail→pass | 24,959 | 6,388 | -74% | 1 | 1 | 0% | 2,115 | 3,383 | +60% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 21 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +39 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.