design-explosion — 이렇게 진행됐어요

도메인을 고르면 그 도메인에 맞는 화면(원형)을 잡고 30가지 디자인으로 펼치는 도구. 그리고 그걸 넘어, 생성 엔진을 Zen Garden 3층으로 재설계 → 세 원형 구축 → 사용자가 잡은 "다 비슷" 문제를 근본까지 진단·해결시각 게이트로 품질 검증까지의 여정.

PART 1세 완성 데모 — 도메인이 바뀌면 원형이 바뀐다

같은 도구로 서로 다른 원형을 뽑으면 게이트 판정이 뒤집힌다. 세 데모 모두 30 스타일 · 콘텐츠 한 글자도 동일 · 두 게이트 전수 통과.

같은 게이트, 다른 판정. 원형이 화면 종류를 진짜로 구분한다는 증거. 이 세 데모가 도구의 원래 목적을 증명한다.

PART 2왜 엔진을 다시 설계했나

도구는 사실 두 문제가 붙어 있었다 — ① 디자인 공간 샘플링(30개를 어떻게 잘 흩뿌리나) + ② 선택 UI(어떻게 훑고 고르나). 그리고 스타일마다 HTML을 통짜 생성하니 모델이 KPI를 끼워넣을 수 있었고(그래서 archetype-lint가 필요했다), "같은 콘텐츠"를 프롬프트로 부탁해야 했다(부탁은 샌다).

결정 (2026-07-26): HTML 통짜 생성 → DOM(스켈레톤) 고정 + CSS 3층만. 검사로 막던 걸 구조로 막는다(없는 요소에 스타일 못 줌 = KPI 오이식 불가능). 콘텐츠 동일성은 구조적 보장. 전체 논거·미결은 설계 결정 문서(ADR).

PART 3검증 3종 — 짓기 전에 싸게 증명

되돌리기 비싼 재설계라, 큰 공사 전에 스파이크로 각 리스크를 반나절씩 검증했다.

T1 · GO를 뒤집을 유일 테스트
모델이 남의 DOM에 스타일 입히나
환각 셀렉터0건누락 영역0건
신선한 에이전트가 클래스 목록 없이 스켈레톤만 보고 CSS 작성 → aria-label까지 정확히 타겟. GO 확정.
T2 · 공사 규모
원형당 스켈레톤 몇 개?
사이드바→상단→레일→하단탭한 DOM에서 CSS만
4 레이아웃 전부 하나의 DOM에서. → 원형당 ~1개(icon/label 훅 전제). 공사 +9 수준.
T3 · 겹침 측정
뭉친 스타일 몇 개?
03↔29d=0.16 (동일)24↔25d=1.32 (완전 다름)
눈대중이 좌표 거리로. 낭비 슬롯 → 병합 아니라 빈 코너로 재샘플.
셋 다 GO를 안 뒤집었다 — T1이 "되냐"를 확정하고, T2·T3는 "어떻게·얼마나"를 숫자로 채웠다. 스파이크: 1 DOM·3스킨 · T2 레이아웃 4종

PART 43층 엔진 — 세 원형 모두 새 파이프라인으로

DOM은 고정, CSS를 세 층으로. tokens는 원형 무관이라 A·B·D가 같은 30개 토큰 파일을 공유한다. 원형별로 다른 건 스켈레톤·base 각 1개뿐.

skeletons/archetype-{A,B,D}.v1.html 원형별 고정 DOM 계약 (훅 포함) base/archetype-{A,B,D}.css 원형별 공용 컴포넌트 (전부 var(--토큰)) tokens/style-01..30.css ★ 원형 무관 · A·B·D 공유 · 좌표 · 랄프 핸드오프물 signature/style-NN--X.css 구조 강한 스타일만 (뭉친 건 불필요) └─ assemble.py → 자립 HTML · coverage-lint.py → 게이트
coverage 30/30 (세 원형)body 바이트 동일 30/30tokens/style-20.css 한 파일이 A·B·D 다 작동
게이트 교체: archetype-lint(내가 상상한 실패만) → coverage-lint(가능한 실패 전 집합: 환각 셀렉터 + 누락 영역). 콘텐츠 동일성은 스켈레톤이 구조적 보장.

PART 5클린룸 · 지도 — "새 방식이 잘되나" 실측

신선한 에이전트가 파이프라인 문서만 보고 완전히 새로운 스타일 31 웜 레터프레스를 처음부터 만들었다. map이 비었다던 빈 코너(웜·각진·플랫)를 채우는 스타일로.

문서만으로 새 스타일한 번에 게이트 통과 세 원형 적용(B·A·D)전부 coverage PASS 빈 코너 채움hue 22·각진·플랫 = map 빈 자리 정확히 스타일 1개 추가 비용tokens 357B + signature 1842B (전부)
디자인 공간 지도(map.py)가 밝혀낸 것: 30개가 "다양"한 게 아니라 파랑·보라·둥근·소프트 코너에 절반이 뭉쳐있고(파랑계열 ~10개), 격자 72셀 중 53셀(웜·초록·각진)이 비었다. 낭비 슬롯을 빈 코너로 재샘플하면 30개 그대로 고르게 퍼진다 — 클린룸이 그 능력을 실증. 31 웜 레터프레스 열기 →

PART 6실전 — 새 도메인을 이렇게 만들었어요 (중고거래 마켓)

"새 방식이 새 도메인에서 뭘 만드나"를 실제로 돌린 기록. 완전히 새 도메인(모아마켓)인데 새로 만든 건 스켈레톤 1개뿐 — 나머지는 재사용.

① 콘텐츠 스펙 중고거래 6물건 (긴 제목·지역결측 —·나눔 ₩0·₩780,000) ② 스켈레톤 1개 저작 archetype-D 클래스 계약 그대로 + 콘텐츠만 중고거래 ← 유일한 신규 저작 ③ 재사용 base/archetype-D.css (패션에 쓴 그 파일) + tokens 30 ← 0 저작 ④ assemble 30 + 게이트 coverage 30/30 · body 바이트 동일(10490자) · 콘텐츠 전부
새 도메인 비용 = 스켈레톤 1개base-D가 패션·중고거래 둘 다 스타일
D 컬렉션 · 새 도메인
중고거래 마켓 · 30 스타일 (실전 조립)
패션용 base-D가 중고거래 콘텐츠도 그대로 스타일 = base는 도메인 무관. 스켈레톤만 콘텐츠별.
갤러리 열기 →
정직하게 — 아직 100% 자동은 아니다. 이번엔 콘텐츠 스펙은 사람이 정하고 스켈레톤은 브리핑받은 에이전트가 저작했다. "도메인만 던지면 SKILL.md 혼자 인터뷰→원형→스켈레톤→갤러리 완주"는 SKILL.md 본문을 새 파이프라인으로 정합화하면서 가까워지는 중 — 파이프라인 기계장치는 이렇게 확정됐다.

PART 7"다 비슷해 보인다" — 사용자가 잡은 문제를 근본까지 판다

갤러리를 열어보니 많은 스타일이 그냥 흰 배경으로 뭉갰다. "기분 탓인가?" — 아니었다. 눈이 아니라 데이터로 원인을 파니 세 축이 동시에 붕괴하고 있었다.

원인 ①
웹폰트 미로드
Pretendard는 시스템 폰트가 아닌데 로드를 안 함 → 28/30이 같은 시스템 폰트로 렌더. 화면의 90%가 글자인데 타이포가 상수였다.
원인 ②
산업 라벨 ≠ 디자인 언어
"헬스케어·핀테크"는 시각 규칙이 없어 기본값(흰배경+둥근카드+Inter)으로 수렴. 사실상 같은 걸 18번 만든 셈.
원인 ③
변별력 낮은 축만 변화
변화 준 두 축(라운드·색)이 하필 변별력 최하위. 흰 배경에 색만 바꾸면 "같은 디자인 다른 색"일 뿐.
재접지: ① 정본 서체 22종 실제 웹폰트 로드(Playfair·Cormorant·IBM Plex·VT323…) ② 산업 라벨 10종 → 출처 있는 디자인 언어(IBM Carbon·Bauhaus·De Stijl·Memphis·Neubrutalism…) ③ 값으론 안 되는 구조 시그니처(도형·격자·하드섀도) 저작. 근거·큐레이션: 출처·서체 접지 문서 (designsystems.one 88 + 디자인운동 taxonomy + 트렌드 리포트).

PART 8품질을 어떻게 검증하나 — 게이트 3겹

구조 게이트(coverage)가 PASS여도 렌더가 못생기거나 글자가 안 읽힐 수 있다. LLM이 만든 CSS를 자동으로 검증하는 세 겹 — 앞 둘은 스크립트(결정적, 헤드리스 크로미움), 셋째는 비전 모델.

① 규칙 · 스크립트
visual-gate.js (WCAG)
렌더 후 측정대비 4.5·타깃 44px·오버플로
오버플로 2건 수정·검증(맥시멀·스위스), 타임스탬프 대비 개선. detect→fix→verify 실증.
③ VLM 심판 · AI
vlm-montage.js + 비전
30장 콘택트시트를 AI가 판정변별력·깨짐·충실도
규칙이 못 보는 "다 비슷"을 잡음. 루브릭 = Nielsen·사조 시그니처 문서.
결과
"다 비슷" 정량 개선
D 컬렉션18 → 3A 대시보드6 → 3
잔여 ~3(GOV.UK·shadcn)은 미니멀·중립 사조의 정체성 = 인정할 한계.
깨짐은 스크립트가 결정적으로, 취향은 사람이 최종. "스크린샷 → 품질 판정"은 지어낸 게 아니라 UIClip(230만 UI 품질모델)·UICrit(3,059 디자이너 비평) 연구 계보에 있다. 상세: 시각 품질 게이트 문서.

📜타임라인 — 실제로 이렇게 진행됐어요

데모   검증   구축   설계·정리

07-238835f08 패션 데모 30 (원형 D)
07-241f6df95 핀테크 대시보드 30 (원형 A)
07-24f5aedc1 연서 대화형 30 (원형 B) — 스킬 탄생 사고 바로잡기
07-2680a4203 설계 결정 — Zen Garden 3층 전환 (T1 통과·GO 확정)
07-26fd94e07 README 간결화 + 이전 기록 정리
07-26183cc96 T2 통과 — 스켈레톤 ~1개
07-2659931c4 T3 통과 — 겹침 좌표 측정
07-264b65e1b 3층 첫 슬라이스 — 파이프라인 증명
07-262b6dc52 Phase1 — 30 토큰 + 좌표 지도
07-26637d7f6 Phase2 설계 + 조립기 증명
07-26648f760 ② 원형 B 배선 — 작동하는 도구
07-269dc0256 ④ 원형 D 확장 — 토큰 재사용
07-26fc358e9 ④ 원형 A 확장 — 세 원형 완성
07-2693b2dbd ⑤ SKILL 배선 + 클린룸 — 새 스타일 2KB로 추가
08-02cdea11a ⑦ "다 비슷" 재접지 — 서체 22종 실로드 + 산업라벨→디자인언어
08-0237e4013 ⑦ 3원형 구조 시그니처 (D 26·A 14·B 17) — 회색조 생존
08-02dcd16ba ⑧ 시각 게이트 3겹 — WCAG 대비·오버플로 (Playwright)
08-02a0d487f ⑧ 게이트가 잡은 실버그 수정 — 오버플로 2건·타임스탬프 대비
08-025bbf1eb ⑧ VLM 심판 — "다 비슷" D 18→3 · A 6→3
08-034a35776 접지 정직 회계 — 카탈로그 근거 + 게이트 학술 뒷받침