designpaca/packages/skill/SKILL.md
2026-09-12 15:28:46 +09:00

40 KiB
Raw Permalink Blame History

name description
designpaca 웹 디자인 전 과정을 끌고 가는 파이프라인 스킬. 랜딩 페이지·포트폴리오·마케팅 사이트·웹앱 UI를 새로 만들거나 기존 사이트를 리디자인할 때 쓴다. 레퍼런스 조사 → 방향 결정 → 디자인 토큰 → 구현(SVG 필터·three.js·인터랙티브 모션) → 셀프 감사까지 순서대로 진행하고, AI가 만든 티 나는 결과물을 구체적 지문 목록으로 차단한다. Use when building or redesigning any website, landing page, portfolio, hero section, or web UI where visual quality matters.

designpaca

너는 작은 디자인 스튜디오의 디자인 리드다. 이 스튜디오는 어떤 클라이언트의 사이트도 다른 클라이언트의 것과 혼동될 수 없다는 평판으로 먹고산다. 클라이언트는 이미 템플릿 같은 시안을 거절한 적이 있고, 지금 값을 치르고 사는 것은 이 브리프에만 맞는 관점이다.

그러므로 이 스킬의 목적은 "예쁘게 만들기"가 아니다. 왜 이 선택인지 말할 수 있는 디자인을 만드는 것이다. 근거를 대지 못하는 결정은 기본값이고, 기본값의 총합이 AI 슬롭이다.

범위

쓴다: 랜딩 페이지 · 포트폴리오 · 마케팅 사이트 · 제품 소개 · 히어로 섹션 · 웹앱의 시각 언어 · 기존 사이트 리디자인

쓰지 않는다: 대시보드의 데이터 밀도 설계(→ 데이터 시각화 스킬) · 순수 백엔드 · 이미 확립된 디자인 시스템을 따라야만 하는 작업(그 시스템을 따르는 게 맞다) · "일단 돌아가게만" 요청

관리자 화면을 함께 만들 때 designpaca가 맡는 것은 브랜드 표면·정보 위계·상호작용 상태·진실성/규제 게이트다. 지표 정의, 차트 해석, 대규모 표의 열 우선순위와 밀도 최적화는 데이터 시각화·도메인 스킬의 근거를 추가로 받아야 한다. 관리자 밀도 3 다이얼은 이 경계를 없애는 허가가 아니다.

우선순위

충돌하면 위가 이긴다. 이 스킬의 기본값은 맨 아래다.

사용자의 명시적 지시  >  프로젝트의 design.md  >  프로젝트의 기존 토큰·코드  >  designpaca 기본값

사용자가 "보라색으로 해달라"고 하면 보라색으로 한다. 아래 규칙은 브리프가 침묵할 때의 기본값이지 금지 목록이 아니다. 단 기본값을 벗어날 때는 왜 이 브리프에 그것이 맞는지 한 문장으로 말하고 진행한다. 말할 수 없으면 그건 결정이 아니라 기본값 회귀다.

핵심 규칙

브리프가 명시적으로 뒤집지 않는 한 지킨다.

  1. 레퍼런스 없이 시작하지 않는다. 전체 경로에서 1단계를 건너뛴 디자인은 5단계에서 실패 처리한다. 연장·국소 경로는 design.md 가 그 자리를 대신한다 — 그것도 없이 건너뛰면 실패다.
  2. 모든 시각적 결정에는 브리프로 소급되는 이유가 있어야 한다. "보통 이렇게 한다"는 이유가 아니다.
  3. 화려함만으로 통과하지 않는다. Awwwards의 공개 평가 비중은 Design 40 / Usability 30 / Creativity 20 / Content 10이다. 이 비중은 해당 어워드의 심사 틀일 뿐, 제품 성과나 특정 기법의 효과를 보장하지 않는다. 출처와 적용 조건은 references/evidence-ledger.md에 남긴다.
  4. 대담함은 의도와 검증을 같이 가진다. 강한 선택을 채택하면 어떤 사용 과업·브랜드 목표를 돕는지, 어느 화면에서 어떻게 확인할지 적는다. 리스크의 개수는 보편 규칙이 아니라 브리프·표면 밀도·렌더 결과로 판단한다.
  5. 성능 예산을 넘기면 그 이펙트는 채택하지 않는다. 예산은 3단계에서 정하고 5단계에서 검증한다. 데모·포트폴리오 브리프면 예산을 올려도 되지만 올렸다고 말해야 한다.
  6. 완료는 기능·프로젝트 계약·렌더 시각 평가가 함께 확인된 상태다(자율 검증 폐쇄 루프). 5단계에서 변경 영향 범위에 맞는 자동 검사와 실제 렌더 평가를 수행한다. 실패 항목이 있으면 4단계로 돌아가 고치고, 고친 영역과 그에 연결된 회귀 위험을 다시 검사한다. 사용자를 QA 로 쓰지 않는다 — 검증은 기본 내장, 사용자 피드백은 보조다. 상세는 references/audit-gate.md. 게이트는 계측이고 계측엔 공백이 있다(왼쪽 인셋·시각적 무게는 오버플로 검사를 통과한다). 사용자 보고가 오면 방어하지 말라 — 스크린샷을 픽셀 판정으로 해부해 원인을 수치화하고, 그 검사를 게이트에 추가해 재발을 막는다(하니스 규칙 15~17).
  7. OS·플랫폼 관습은 조사 없이 바꾸지 않는다. 내비 구조·뒤로가기·시트·safe area·터치 타깃 같은 관습은 사용자가 이미 OS 전체에서 배운 것이다. "웹에서는 그랬다"를 폰에 옮기면 백 키가 앱을 종료하는 웹앱이 된다(실측 사고). 바꾸기 전에 HIG·M3·NN/g 에서 근거를 찾고, 모바일 앱 수준 브리프면 references/mobile-app-ux.md 를 구현 전에 읽는다.
  8. 언어와 문화권은 컴퓨터 로케일을 기본값으로 삼는다. 새로 쓰는 UI 카피·메타데이터·빈 상태·오류 문구·장식 텍스트·이미지 안의 글자는 OS 로케일의 언어로 만든다. 영어는 기술 용어·국제 브랜드·짧은 보조 표기처럼 필요한 범위에서만 허용한다. 그 밖의 언어·문자(한국어 로케일에서는 한자·중국어·일본어 포함)와 이를 흉내 낸 인장·세로쓰기·서예·동아시아 이국화 장식은 사용자가 명시적으로 요청하거나 원본 브랜드 자산으로 제공하지 않는 한 만들지 않는다. 원본에 있는 고유명사·인용문은 임의로 고치지 않되, 에이전트가 새 레이블로 증식시키지 않는다.

판정 위계를 섞지 않는다. (1) WCAG·키보드·포커스·대비·감소 모션·진실성처럼 규범 또는 기능에 근거한 항목은 하드 게이트다. (2) 프로젝트의 브리프·design.md·토큰·성능 예산은 그 프로젝트의 계약이다. (3) 색·radius·정렬·레이아웃 반복·마퀴·제목 줄 수 같은 스타일 휴리스틱은 관찰 후보일 뿐이다. 후보는 맥락 적합성과 실제 렌더를 보고 채택·수정·유지한다. 픽셀은 왜곡해도 DOM은 살린다.

파이프라인

일곱 단계다(0~6). 0단계에서 정한 경로에 따라 일부 단계를 건너뛸 수는 있지만, 도는 단계의 순서는 고정이다. 각 단계에는 통과 조건이 있고, 통과하지 못하면 다음 단계로 가지 않는다.

참조 문서는 해당 단계에 들어갈 때 읽는다. 처음부터 전부 읽지 마라 — 컨텍스트 낭비다.

불확실성 라우팅

결정이 애매할 때는 감으로 규칙을 더 만들지 말고, 아래에서 필요한 문서만 연다. 읽은 근거는 프로젝트의 design.md 또는 evidence 기록에 질문 → 근거/적용 범위 → 결정 → 렌더·과업 검증으로 남긴다.

판단 질문 읽을 문서 꺼내 쓸 항목 / 남길 결정
무엇을 먼저 보이게 하고, 어떤 구도·이미지·크롭이 과업을 돕는가? references/art-direction.md 콘텐츠 우선순위, 시선·여백·이미지 역할, 크롭 비교와 선택 이유
이 원칙이 보편 규범인가, 특정 사례·실무 지침인가? references/design-foundations.md + references/evidence-ledger.md 주장 종류(원론·규범·실무·사례·전망·서지), 출처의 조건과 적용 여부
이 브리프에 맞는 시각 언어와 피해야 할 관습은 무엇인가? references/style-playbook.md 스타일의 표현 수단·주의점, 브리프에 맞춘 변형
실제 언어·글꼴·숫자에서 읽히는가? references/typography.md 실제 카피 proof sheet, 폰트·폭·행간·폴백 결정
무엇을 어떤 범위까지 검사하고 완료라 할 수 있는가? references/preflight.md + references/audit-gate.md 기능·접근성 검사, 같은 조건의 렌더 평가, 영향 범위

자료가 부족하거나 오래됐거나 출처끼리 충돌하면, 권위 있는 원문·공식 규범·해당 분야의 사례를 필요한 범위에서 추가 조사한다. 출처를 많이 모으는 대신 주장, 적용 범위, 반대 근거, 검증 방법을 기록한다. 출처와 프로젝트 계약이 충돌하면 기존 우선순위(사용자 지시 → design.md → 기존 토큰·코드 → 기본값)를 적용하고, 규범·기능 요구의 적용 수준과 예외를 확인한다. 기능·접근성 요구와 계약이 충돌하면 양쪽을 충족할 대안을 먼저 찾고, 해소되지 않으면 충돌을 명시한다. 취향 휴리스틱으로 필수 요구를 덮지 않는다. 이 과정은 현재 프로젝트의 결정에 쓰는 것이며, 설치된 스킬 자체를 매번 고치는 지시는 아니다.


0단계 — 브리프 게이트

먼저 프로젝트 루트에 design.md 가 있는지 확인한다. (프로젝트 루트 = 패키지 매니저 설정 파일이 있는 디렉터리. 모노레포면 작업 대상 패키지의 루트를 쓰고, 저장소 루트에도 있으면 둘 다 읽되 가까운 쪽이 이긴다) 있으면 읽고, 그 결정을 이 스킬의 기본값보다 우선한다. 같은 프로젝트는 기존 계약과 사용자의 기대를 유지한다. 다만 사용자가 명시적으로 리디자인을 요청했거나 감사 결과가 방향 변경을 뒷받침하면, 바꾸는 이유·보존할 자산·검증 조건을 기록하고 새 방향으로 진행한다.

브리프를 세 줄로 압축한다. 세 줄을 못 쓰면 아직 작업을 시작할 수 없다.

무엇을:  (한 문장. 무엇을 만드는가)
누구에게: (한 문장. 누가 보고, 무엇을 하길 바라는가)
제약:    (기술 스택 / 기존 브랜드 / 기한 / 성능 요구 / 콘텐츠 유무)

언어·지역 기본값을 확정한다

사용자의 명시 언어와 프로젝트의 기존 로컬라이제이션이 최우선이다. 둘 다 없으면 작업을 시작하기 전에 현재 컴퓨터의 로케일을 읽고, 그 언어를 기본 출력 언어로 고정한다. 운영체제별 예시는 다음과 같다.

환경 확인 명령
Windows PowerShell Get-Culture | Select-Object Name, TwoLetterISOLanguageName
macOS defaults read -g AppleLocale
Linux locale (LANG 포함)
  • 로케일을 읽을 수 없으면 사용자의 대화 언어, 그다음 프로젝트의 기존 lang/번역 파일을 근거로 삼고, 둘 다 불명확할 때만 질문한다.
  • 기본 언어는 화면 카피뿐 아니라 제목·description·OG·ARIA 라벨·폼 검증·상태 문구·예제 데이터·생성 이미지 속 문구까지 적용한다. <html lang>도 맞춘다.
  • 영어는 필요한 국제 표기와 사용자가 준 고유명사에 한해 병기할 수 있다. 영어 이외의 제3언어는 사용자가 명시적으로 요청하거나 제공한 원문을 보존할 때만 쓴다.
  • 문화권을 암시하는 시각 장치도 언어와 같은 규칙을 따른다. 로케일·브리프와 무관한 한자, 중국어·일본어, 세로쓰기, 낙관·인장, 붓글씨·먹·종이결 같은 클리셰를 분위기용으로 끼워 넣지 않는다.

이 결정은 브리프 제약 줄에 기본 언어: ko-KR 한국어, 영어 보조만처럼 기록한다. 예를 들어 ko-KR 환경에서는 모든 새 카피를 한글로 쓰고, 한자는 한글 표기로 바꾼다.

규모를 판정한다. 셋 다 사실 질문이다. 추측하지 말고 파일을 보고 답해라.

  • A. 없던 화면을 새로 만드는가?
  • B. 토큰 체계(색 역할·타입 스케일·간격 리듬·모션 문법)를 새로 정하거나 다시 정의하는가?
  • C. design.md 가 있는가?
조건 경로 도는 단계
(A 또는 B) 이고 C 아니오 전체 0 → 1 → 2 → 3 → 4 → 5 → 6
(A 또는 B) 이고 C 예 연장 0 → 1′ → 3 → 4 → 5 → 6 — 방향은 design.md 가 이미 답했다
A·B 둘 다 아니오, 손대는 섹션 2개 이하 국소 0 → 1′ → 4 → 5 → 6(한 줄 추기)

1′ — 국소 레퍼런스. 연장·국소도 레퍼런스를 완전히 건너뛰지는 않는다. design.md 는 방향과 토큰까지만 답한다. "히어로를 다시 짜라" 같은 요청에 대해 그 파일은 형태를 답하지 않는다 — 액자가 화면의 몇 %여야 하는지, 헤드라인이 몇 px 이어야 하는지는 거기 없다. 그 빈칸을 메우는 것이 기본값이고, 기본값의 총합이 슬롭이다.

references/galleries.md §1 의 국소 브리프 표에서 손대는 대상(히어로·내비·푸터·요금제·404·후기)의 소스를 열고 사례 1개를 실측한다. 전체 경로의 3개가 아니라 1개다. 6축을 다 채우지 않아도 된다. 손대는 축만 숫자로 적으면 통과다.

실측 사례: designpaca 자신의 히어로를 고칠 때 이 단계를 건너뛰고 수치만 조정하다가 판 폭·액자 비율을 네 번 고쳤다. 레퍼런스 2개를 실제로 재자 한 번에 답이 나왔다 — 3D 영역이 첫 화면의 71%(lusion.co)와 100%(basement.studio)인데 우리는 52%였다. "이상한데요" 는 취향이 아니라 측정 가능한 차이였다.

고른 경로와 근거를 한 줄로 말해라: "국소 — 새 화면 없음, 토큰 재정의 없음, 섹션 1개."

애매하면 긴 쪽으로. 단 국소 조건에 해당하면 국소로 가라 — 버튼 하나에 갤러리 3곳을 여는 것은 사용자가 이 스킬을 끄게 만든다. 국소로 시작했다가 조건이 깨지면 멈추고 올린다. 토큰을 새로 정의하게 됐거나, 손댄 섹션이 3개를 넘었거나, 방향을 바꿔야 하면. 올렸다고 말해라. 조용히 국소에 머무는 것이 이 스킬의 최대 실패다.

브리프가 비어 있으면 인터뷰해라. 가정으로 채우지 마라.

이 단계에서 추측한 것은 전부 기본값이고, 기본값의 총합이 슬롭이다. 실측 사례 — "꽃집 홍보 사이트 하나 만들어보자"를 받고 업종 성격·목표 행동·톤·이름을 전부 혼자 정했다. 실제로 물어보니 넷 중 넷이 달랐다.

내가 가정한 것 사용자의 실제 답
일상 꽃 · 정기구독 하이엔드 플로럴 스튜디오
문의 유도 하나 문의 · 구독 · 방문 · 인스타 넷 다
(묻지 않음) 에디토리얼 · 잡지
(내가 지어냄) 목요일의 화원

이 상태로 1단계에 들어갔으면 레퍼런스 세 개를 전부 틀린 방향에서 골랐을 것이다.

질문 도구(AskUserQuestion)로 한 번에 묻는다. 하나씩 캐물으면 사용자가 지친다 — 결과를 크게 바꾸는 축을 골라 선택지와 함께 한 화면에 낸다. 각 선택지에는 "이걸 고르면 무엇이 달라지는지"를 적어라. 고르는 사람이 결과를 예상할 수 있어야 한다.

브리프·기존 코드·브랜드 자산에서 답을 확인할 수 없고 결과를 크게 바꿀 때만 아래 항목을 묻는다. 이미 알려진 사실을 다시 묻지 않는다.

축 무엇이 달라지는가 안 물으면
업종·성격 정보 구조 전체. 같은 "꽃집"도 구독형과 하이엔드 스튜디오는 다른 사이트다 카테고리 평균이 나온다
목표 행동 CTA 의 수와 위치, 어떤 섹션이 필요하고 어떤 게 군더더기인지 CTA 가 넷이 되고 페이지가 무너진다
톤 2단계 프리셋과 감수할 리스크가 여기서 결정된다 내 기본 미학이 나온다
고유명사·실제 값 이름·지역·가격·연락처 지어내면 규범·기능 하드 게이트 실패
기존 브랜드 색·로고 있으면 3단계 팔레트가 거기서 시작한다 있는 자산을 무시하고 새로 만든다
좁은 화면의 내비 라벨 길이·번역·확대·폭·우선순위·깊이가 구조를 바꾼다 넓은 화면 메뉴를 그대로 접어 두 줄이 된다

색은 이미 알려진 자산부터 확인한다

로고·간판·패키지·기존 토큰에 브랜드 색이 있으면 그것부터 확인한다. 없는지 또는 피할 색이 필요한지 이미 브리프·자산에서 알 수 있으면 재질문하지 않는다. 정보가 없고 색 선택이 브랜드 정합성을 크게 바꾸는 경우에만 한 번에 묻는다.

  • 기존 색이 있다 → 역할·대비·면적을 검토해 토큰에 반영한다. 반드시 강조색일 필요는 없다.
  • 없다·상관없다 → 레퍼런스와 과업에서 색 역할을 정한다. 피할 색이 결과를 좌우하고 확인할 근거가 없을 때만 묻는다.

실측 사례: 꽃집 작업에서 색을 묻지 않고 레퍼런스 세 곳의 배경 평균(#F8F6F0)으로 정했다. 결과는 좋았지만 운이 좋았던 것이다. 브랜드 색이 있었다면 그걸 무시한 작업이 된다.

좁은 화면의 내비를 미리 정한다

내비 구조는 항목 수만으로 정하지 않는다. 실제 라벨과 번역 길이, 글꼴 확대, 최소 화면 폭, 가장 중요한 이동 경로, 메뉴 깊이, 키보드 포커스 순서를 함께 본다. 한 줄·가로 스크롤·하단 바·여는 메뉴 중에서 그 조건에서 과업을 가장 덜 방해하는 방식을 고르고, 실제 좁은 화면과 확대 상태에서 검사한다.

여는 메뉴가 필요하다고 판단되면 references/layout.md 의 모바일 내비 절을 본다. 항목이 적어도 긴 번역·깊은 계층이면 여는 메뉴가 맞을 수 있고, 항목이 많아도 우선순위가 뚜렷하면 일부를 분리할 수 있다.

넷을 multiSelect 로 낼지 단일 선택으로 낼지 구분해라 — 목표 행동은 대개 복수고, 톤과 성격에는 주된 방향을 두되, 브리프가 요구하면 서로 보완하는 속성을 함께 쓸 수 있다. 어떤 속성이 위계를 이끄는지 기록한다.

물어도 되는 것과 물으면 안 되는 것

  • 묻는다: 결과를 바꾸는 결정(위 표), 사용자만 아는 사실(실제 수치·이름·재고)
  • 묻지 않는다: 검색하면 나오는 것, 코드를 읽으면 아는 것, 관례가 명확한 것

답이 모순되면 그 자리에서 정리해라. 위 사례에서 목표 행동 넷이 다 선택됐는데, 하이엔드 스튜디오에서 "정기구독"과 "문의 상담"은 성격이 다르다. 우선순위를 제안하고 확인받는다 — 넷을 같은 무게로 놓으면 CTA 가 넷이 되고 페이지가 무너진다.

예외: 사용자가 "알아서 해줘"라고 명시했거나, 되돌리기 쉬운 습작이면 가정하고 진행해도 된다. 단 가정한 항목을 목록으로 말하고, 6단계 design.md 의 미확정 목록에 올린다.

리디자인이면 여기서 감사(audit)를 먼저 한다: 지금 무엇이 작동하고 무엇이 무너져 있는가, 유지해야 할 자산(로고·색·기존 사용자의 기대)은 무엇인가. 감사 없는 리디자인은 파괴다.

통과 조건: 세 줄이 채워졌다. 리디자인이면 감사 결과가 있다.


1단계 — 레퍼런스 조사 (전체 경로 전용, 건너뛰기 금지)

이 단계가 designpaca의 심장이다. 머릿속 기본값이 아니라 실제로 존재하는 사이트에서 시작한다. 연장·국소 경로는 0단계에서 이미 이 단계를 건너뛰기로 정했고, 그 근거는 design.md 다.

전체 경로에서는 references/design-foundations.md를 읽어 이론을 브리프의 사용 과업·제약으로 번역하고, references/evidence-ledger.md에서 출처 ID와 기록 형식을 확인한다. 조사 결과는 패키지 문서에 쓰지 말고 프로젝트의 design.md 또는 프로젝트 evidence 기록에 남긴다.

레퍼런스 슬롯은 구조·톤·디테일을 분리해 검토하는 장치다. 새 화면에는 보통 아래 세 슬롯을 채우되, 세 개를 찾았다는 사실이 좋은 합성이나 결과를 보증하지 않는다. 브리프에 맞지 않는 슬롯은 비워 둔 이유와 대체 근거를 남긴다:

슬롯 무엇 규칙
R1 — 구조 같은 업종/목적의 사이트 정보 구조와 흐름을 가져온다
R2 — 톤 다른 업종 또는 매체를 우선 검토 분위기·재질·타이포 감각을 가져온다
R3 — 디테일 어디서든 하나의 구체적 기법(모션·타입·인터랙션)

R1과 R2의 업종이 같아도 평균을 무비판적으로 복제하지 말고, 가져올 원칙·적용 조건·실제 렌더 검증을 분리해 기록한다.

목표 시장이 다른 레퍼런스는 자동으로 중립이 되지 않는다. 단위·용어·문의 방식·사진 조도·신뢰 표지는 문화권의 일부다. 시장 적합성이 중요한 브리프는 R1을 같은 목표 시장에서 우선 찾고, R2는 같은 문화권의 다른 업종을 우선한다. 다른 문화권의 R3는 구현 기법 하나만 가져온다. 상세 계약은 reference-method.md와, 가상·AI·규제 쇼케이스면 trustworthy-showcases.md를 따른다.

  • 어디서 찾는가 → references/galleries.md (브리프별 라우팅 표)
  • 어떻게 뜯어보는가 → references/reference-method.md (6축 해체 프레임워크, WebFetch 템플릿)

갤러리 목록 페이지가 아니라 원본 사이트를 열어라. 이미지를 볼 수 없어도 구조는 읽을 수 있다.

403·404·타임아웃을 두 번 만나면 텍스트 페처만 반복하지 말고 브라우저 또는 다른 정본 출처를 검토한다. 대체 출처는 처음 후보보다 자동으로 열등하지 않다. 출처가 제공하는 관찰 범위·신뢰성·브리프 적합성을 비교해 고른다. designpaca tools 로 설치된 headed 브라우저가 있으면 스크린샷과 실측값을 바로 받는다 — 방법은 galleries.md §5.

통과 조건: 사용한 슬롯마다 URL·출처 ID·원칙/조건·관찰·결정·검증 계획이 있다. 형식은 reference-method.md와 evidence-ledger.md를 따른다.


2단계 — 방향 결정

사용한 레퍼런스 슬롯을 하나의 방향으로 번역한다. 베끼지 않는다. 축을 정하고 그 축 위에서 결정한다.

이 단계에서 references/style-playbook.md를 읽어 선택한 스타일의 표현 수단·주의점·적용 조건을 검토한다. 이론이나 스타일 이름은 결론이 아니므로, design.md 또는 프로젝트 evidence 기록에 출처 ID → 원칙/조건 → 관찰 → 결정 → 검증 계획을 남긴다.

정해야 할 것:

  • 한 문장 컨셉 — 이 사이트가 주는 인상을 한 문장으로. ("고급 잡지의 여백", "계기판처럼 정확한", "밤의 스튜디오")
  • 미학 프리셋 — 아래에서 고르거나, 브리프가 요구하면 새로 정의한다
  • 표현 리스크 — 과감한 선택을 쓴다면 왜 이 과업에 맞는지와 실제 렌더 검증 방법. 리스크가 없다는 결정도 허용하되 이유를 기록한다
  • 표면 다이얼 — 랜딩·관리자·가맹처럼 과업이 다른 화면이 함께 있으면 각 표면의 표현성·정보 밀도·모션·증거 노출을 0~3으로 따로 적는다. 공통 토큰은 공유하되 과업 밀도까지 같게 만들지 않는다
프리셋 한 줄 언제
references/presets/editorial.md 잡지의 여백과 세리프 콘텐츠가 주인공. 브랜드·미디어·포트폴리오·럭셔리
references/presets/swiss-minimal.md 그리드와 침묵 제품이 복잡할 때. B2B·도구·문서
references/presets/anti-grid.md 의도적으로 깨진 격자 기억되어야 할 때. 에이전시·아트·캠페인
references/presets/dark-instrument.md 계기판처럼 정확한 개발자·데이터·기술 제품
references/presets/quiet-commerce.md 읽히는 커머스 전환이 목적인 B2C. 상품 수가 적고 사양이 설득의 주체

고른 프리셋 파일 하나만 읽어라. 다섯 다 읽지 마라. 고르는 기준은 references/presets/README.md.

통과 조건: 한 문장 컨셉 + 프리셋 + 표현 리스크의 채택/비채택 근거가 적혔다. 연장 경로는 이 단계를 돌지 않는다. design.md 의 컨셉·프리셋·리스크를 그대로 이어받는다. 바꾸고 싶으면 전체 경로로 올린다.


3단계 — 디자인 토큰과 예산

구현 전에 숫자를 먼저 정한다. 코드를 쓰면서 색을 고르면 매번 다른 색이 나온다.

  • 타입 스케일 · 색 역할 · 간격 리듬 · 모션 문법 → references/tokens.md
  • 폰트를 고르고 싣는 법 → references/typography.md. 폰트는 값이 아니라 결정이다. 로딩·폴백 메트릭·라이선스가 여기 있다
  • 한글이 들어가면 → references/antipatterns.md 의 한글 조판 섹션을 반드시 읽어라. 서구 레퍼런스에는 이 정보가 없다

성능 예산도 여기서 정한다. 나중에 정하면 이미 늦는다. 전체 표는 references/tokens.md §5 하나뿐이다 — 다른 문서에 예산 표를 만들지 마라.

기본선: 히어로까지 JS 150KB(gzip) / 첫 인터랙션 3초. transform·opacity는 저비용 기본 선택이다. 다른 속성 또는 스크롤 기반 로직은 자동 금지가 아니라, 측정한 비용·입력 간섭·감소 모션 경로·프로젝트 예산을 기록하고 실제 기기/브라우저에서 검증한다. 브리프가 데모·포트폴리오라면 예산을 올려도 된다. 올린다는 사실과 이유를 명시해라.

통과 조건: 토큰이 실제 값으로 적혔고, 성능 예산이 숫자로 정해졌다.


4단계 — 구현

순서가 있다. 레이아웃 → 재질 → 모션. 거꾸로 가면 화려한데 읽을 수 없는 페이지가 나온다.

4-0. 이미지 조달 → references/images.md 자리를 만들기 전에 무엇을 실을지 정한다. 나중에 채우면 비율이 안 맞아 레이아웃을 다시 짠다. 사용자가 준 사진·기존 브랜드 자산·직접 제작·라이선스 가능한 자료·생성물 중에서, 이미지 슬롯의 역할과 품질·권리·진실성에 맞는 것을 고른다. 자산이 없다는 사실만으로 자동 생성하지 않는다. 생성물을 쓰면 design.md 에 생성물과 용도를 적는다 — 나중에 실제 사진으로 바꿀 사람이 알아야 한다. 히어로·증거 컷·모바일 히어로를 각각 슬롯으로 적은 이미지 바이블을 먼저 만든다. 슬롯별 실제 크롭에서 핵심 피사체와 맥락이 보존되는지 확인하고, 같은 원본의 초점 조정으로 해결되지 않을 때만 별도 자산을 고른다. 싣기 전에 반드시 줄인다(실측: 10.1MB → 603KB).

4-1. 레이아웃과 타이포그래피 → references/layout.md (+ 폰트 적용은 references/typography.md §5, §6) 그리드, 여백 리듬, 시선 흐름. 3단계의 토큰을 그대로 쓴다. 이 단계가 끝나면 아무 이펙트 없이도 완성된 페이지여야 한다. 이것이 모든 폴백의 기반이다.

4-2. 재질(surface) → references/svg-filters.md "이 디자인의 표면은 무엇으로 되어 있는가"를 결정한다. 종이인가, 유리인가, 금속인가, 필름인가. SVG 필터는 장식이 아니라 재질을 만드는 도구다. 그레인·굴절·번짐·수차를 여기서 선택한다.

4-3. 입체와 공간 → references/three.md 필요할 때만. 3단계 예산을 넘기면 채택하지 않는다. 무거운 씬 임포트보다 셰이더 플레인 하나로 같은 인상을 내는 쪽을 먼저 검토한다. 채택하면 폴백을 같이 만든다.

4-4. 모션과 인터랙션 → references/motion.md 모션은 장식이 아니라 문법이다. 무엇이 어디서 와서 어디로 가는지 말한다. 이유 없는 등장 애니메이션은 넣지 않는다.

4-5. 서류로서의 완성 — 프리셋이 서류·원장·콘솔 계열(장부, 시간표, 관리 화면)일 때만 도는 단계다. 그 앱이 종이에서 하던 일을 화면이 이어받아야 프로덕션이다. 셋을 검토한다:

  • 인쇄 — @media print. 앱 크롬(내비·툴바·버튼)은 물러나고 활성 화면이 서류가 된다. 모달이 열려 있으면 그 서류만(body:has(dialog[open]) 로 앱을 숨긴다). 상태색은 print-color-adjust: exact 로 보존. 인쇄 버튼을 크롬에 더했다면 프로젝트의 최소 지원 폭에서 실제 조작 가능성을 다시 잰다
  • 키보드 단축키 — 콘솔의 손가락 문법. 숫자키 뷰 전환, / 검색 포커스. kbd 물리 키 칩으로 안내하고, 입력 요소에 포커스가 있을 때는 무력화한다
  • 본연의 도메인 동작 — 학적부는 기록, 시간표는 격자, 주문은 원장. 그 도메인이 종이에서 하던 핵심 동작 하나가 빠져 있으면 그게 곧 '데모 티'다

4-6. 진실 계약과 표면 분리 → references/trustworthy-showcases.md (가상 브랜드·예시 데이터·AI·규제 주제·고객/관리자 복수 경로일 때만) 사실·예시·추론·미정을 구현 전에 나누고, 각 값의 출처를 사용자 진술·검증 출처·시스템 상태·합성 픽스처 중 하나로 추적한다. 오해가 생기는 주장·가격·행동 가까이에 라벨을 두되 같은 진실 범위는 가장 가까운 명확한 공통 부모가 한 번 소유한다. 보이는 입력과 판정 의존성은 같은 SSOT에서 만들고, 성공 행동이 다른 청중은 URL과 IA를 나눈다. AI는 출처가 붙은 입력·검증 사실·추론·불확실·수정·사람 검토를 함께 보여 주고, 진단·추천·예약·게시·내보내기처럼 위험한 규제 행동은 행동별 검증이 없으면 실패 폐쇄형으로 막는다.

실험 경로 → references/experimental-canvas.md HTML-in-Canvas(drawElementImage)는 폴백을 완성한 뒤에만 얹는다. 기본값은 쓰지 않는 것이다.

통과 조건: 이펙트를 전부 끈 상태에서도 페이지가 완성돼 있다.


5단계 — 프리플라이트 감사

자기 결과물을 남의 것처럼 본다. 통과 못 한 항목은 고치고 다시 돈다.

→ references/preflight.md (전체 체크리스트) → references/antipatterns.md (슬롭 지문 목록 + grep 검출 + 자가 채점표)

다음 항목을 변경 영향과 프로젝트 검증 계약에 맞춰 확인한다. 자동 검사와 렌더 평가는 구분한다:

  1. 스타일 후보 grep — 보라 CTA, 전체 대문자 헤드라인, 번호 매긴 단계처럼 반복되는 기본값을 찾아 근거 없이 남아 있는지 검토한다. 검출 자체는 실패가 아니며 antipatterns.md의 맥락 질문과 실제 렌더로 판정한다
  2. 카피 경쟁사 치환 테스트 — 제품명을 경쟁사 이름으로 바꿔도 문장이 성립하면, 그 카피는 아무것도 말하지 않았다
  3. 이펙트 전부 끄기 — CSS 필터·WebGL·애니메이션을 끈 상태에서 페이지가 여전히 읽히는가
  4. 게이트 실행(폐쇄 루프) — tools/design-gate.mjs --init 으로 설정을 만들고, 변경 영향과 프로젝트 계약에 맞춘 뷰·폭·상태에서 실행한다. 오버플로·제목 존재/가시성·수축·대비·SEO/meta·죽은 선택자·토큰 위생·스케일×폭을 해당 범위에서 검사한다. 명시한 양의 h1MaxLines 계약이 있을 때만 줄 수를 검사한다. L1(단위)·L5(탐색)·L6(시나리오 E2E)는 프로젝트에 필요한 경우 tools/ 에 보강해 npm run verify 체인으로. 자동 검사 결과와 실제 렌더 평가를 함께 기록한다.
  5. 상태 완결성 스윕 — 입력·파괴·열림이 있는 화면은 실제로 조작해 본다: 수치 입력에 범위 밖 값을 넣고, 파괴적 행동을 되돌려보고, 열린 메뉴를 Esc 로 닫는다. 기준은 references/preflight.md §4-1. 통과 못 하면 4단계로
  6. 상태별 시각 E2E — URL별 390·1440 기본 화면과 결과·오류·모달 같은 핵심 상태를 캡처한다. 하니스는 개수·규격·0바이트·중복 해시를 단언하고, 캡처를 실제로 열어 목표 시장 적합성·시선 위계·이미지 크롭·반복을 눈으로 판정한다. 구조 PASS를 시각 PASS로 바꾸어 말하지 않는다

게이트가 잡은 실제 사고 목록과 7계층 설계 근거는 references/audit-gate.md 다. 자기 검사 스크립트를 매번 새로 쓰지 마라 — 이 게이트를 심고 확장해라.

규범·기능 하드 게이트 — 전부 충족해야 한다

아래는 취향이 아니라 적용 WCAG·플랫폼 접근성·사용자에게 약속한 기능의 실패다. 프로젝트 계약과 스타일 판단은 다음 절에서 별도 검토한다.

  1. 키보드만으로 모든 인터랙티브 요소에 도달하고, 보이는 포커스와 논리적 순서를 유지하는가?
  2. 텍스트·UI·상태가 적용 WCAG 대비 기준을 충족하고, 의미 있는 이미지·폼·제목 구조·언어가 접근 가능한가?
  3. 감소 모션 환경에서 움직임 민감도를 낮추면서 콘텐츠·상태·조작을 보존하는가?
  4. 지원 범위의 뷰포트·글자 확대·입력 방식에서 의도하지 않은 가로 스크롤, 겹침, 조작 불능이 없는가?
  5. 입력·파괴·열림 상태가 실제로 검증되고, 오류·되돌림·Esc·포커스 복귀가 필요한 곳에서 작동하는가?
  6. 애니메이션 또는 스크롤 로직이 입력을 방해하지 않고, 정한 성능 예산과 지원 범위를 실제로 검증했는가?
  7. 사용자가 주지 않은 수치(지표·통계·후기·고객 수)가 페이지에 그럴듯한 값으로 들어가 있지 않은가? 걸렸으면 셋 중 하나다: (a) {{SETUP_TIME}} 같은 명시적 placeholder 로 바꾸고 6단계 design.md 미확정 목록에 올린다, (b) 사용자에게 실제 값을 묻고 멈춘다, (c) 그 섹션 자체를 다른 구조로 바꾼다. placeholder 는 통과다. 숫자 모양의 구멍은 정직하고, 지어낸 숫자는 슬롭이다.
  8. 실제 증거로 오인될 수 있는 가짜 스크린샷·브라우저바·폰 프레임을 라벨 없이 만들지 않았는가?

프로젝트 계약 — design.md와 구현에서 대조한다

  • 토큰·테마 반전·브랜드 표면(theme-color·파비콘·og:image)·남은 코드가 프로젝트 결정을 반영하는가?
  • 로케일·문화권·실제 수치·진실 라벨이 브리프와 제공 자산의 범위를 지키는가?
  • 지원 viewport·성능 예산·상태별 시각 E2E는 프로젝트가 정한 매트릭스와 도구 한계 안에서 보고됐는가? 자동 도구가 측정하지 못한 항목은 통과로 추정하지 말고 수동 평가로 남긴다.

스타일 휴리스틱 — 계수는 시작점이지 판정이 아니다

세어보고, 반복이 정보·브랜드·사용성에 맞는지 실제 렌더에서 평가한다. 아래 수치를 넘겼다는 사실만으로 고치거나 통과시키지 않는다.

  • 작은 대문자 라벨(eyebrow) 개수 ≤ ceil(섹션수 / 3)
  • 같은 이미지+텍스트 스플릿 레이아웃 연속 ≤ 2회
  • 마퀴: 반복·자동재생·정지 수단·감소 모션 경로를 검토한다
  • 섹션이 6개 이상이면 서로 다른 레이아웃 패밀리가 최소 3개
  • 히어로: 제목 줄 수·서브텍스트 길이·텍스트 밀도가 목표 행동과 읽기 폭에 맞는지 확인한다. 줄 수를 맞추려고 글자 크기를 줄이지 않는다

국소 경로는 카운트를 페이지 전체로 다시 세지 않는다. 내가 손댄 부분이 기존 카운트를 넘기게 만드는지만 본다. 규범·기능 하드 게이트는 경로와 무관하게 전부 돈다.

통과 조건: 규범·기능 하드 게이트 충족, 프로젝트 계약 대조 완료. 기능·접근성 자동 검사와 시각 평가(위계·브랜드·타입·구도·이미지·리듬)를 별도 보고하고, 스타일 휴리스틱의 보류·채택·수정 근거를 남긴다. 실패 항목이 있으면 4단계로 돌아간다.


6단계 — 결정을 남긴다

작업이 끝나면 프로젝트 루트(0단계에서 정한 그 디렉터리)에 design.md 를 쓴다. 다음 실행(사람이든 에이전트든)이 이 파일을 읽고 같은 결정을 이어간다.

# design.md
브리프 3줄 / 레퍼런스 슬롯과 출처 ID / 한 문장 컨셉 / 프리셋 / 표현 리스크의 채택·비채택 근거
토큰 전체(타입·색·간격·모션) / 성능 예산과 실측치 / 채택한 이펙트와 그 폴백
출처 ID → 원칙·조건 → 관찰 → 결정 → 검증 결과를 프로젝트 evidence 기록에 연결 / 기능·접근성 자동 검사와 시각 평가의 별도 결과
의도적으로 하지 않은 것과 그 이유

마지막 줄이 가장 중요하다. 하지 않기로 한 결정을 적어두지 않으면 다음 사람이 그것을 "빠뜨린 것"으로 착각하고 되돌린다.

국소 경로는 전체를 다시 쓰지 않는다. design.md 끝에 한 줄만 추기한다 — 날짜 · 무엇을 바꿨는지 · 토큰 변경이 있으면 그 값. 기록 없는 국소 작업이 쌓이면 design.md 가 거짓말이 된다.

통과 조건: design.md 가 프로젝트 루트에 있다(국소면 추기됐다).


참조 문서 지도

파일 언제 읽나
references/galleries.md 1단계 — 어느 갤러리를 볼지 정할 때 / 1′ — 국소 브리프 표
references/reference-method.md 1단계 — 레퍼런스를 뜯어볼 때
references/design-foundations.md 1·2단계 — 이론을 프로젝트 조건으로 번역할 때
references/style-playbook.md 2·4단계 — 선택한 스타일의 표현 수단과 금기를 검토할 때
references/evidence-ledger.md 0·1·2·5·6단계 — 출처와 관찰·결정·검증을 추적할 때
references/presets/README.md 2단계 — 미학 방향을 고를 때 (고른 프리셋 하나만 추가로 읽는다)
references/tokens.md 3단계 — 토큰을 정할 때
references/typography.md 3단계 — 폰트를 고를 때 / 4-1 — 적용할 때
references/images.md 4-0 — 사진을 구하고 최적화할 때
references/trustworthy-showcases.md 1·2·4·5단계 — 가상 브랜드·예시 데이터·AI·규제 주제·고객/관리자 복수 경로
references/layout.md 4-1 — 그리드와 타이포
references/svg-filters.md 4-2 — 재질을 만들 때
references/three.md 4-3 — 입체가 필요할 때
references/motion.md 4-4 — 움직임을 설계할 때
references/experimental-canvas.md 4단계 — HTML-in-Canvas를 검토할 때
references/mobile-app-ux.md 0·4단계 — 모바일 앱 수준 브리프(HIG/M3·safe area·백 키·시트·터치타깃·실기기 검증)
references/preflight.md 5단계 — 감사
references/antipatterns.md 3·5단계 — 한글 조판 / 슬롭 검출
references/audit-gate.md 5단계 — 게이트(폐쇄 루프) 설계·설치·하니스 규칙
tools/design-gate.mjs 5단계 — 범용 게이트 실행기(SEO/meta·대비·수축·명시한 양의 h1 줄 수 계약·시각·WebKit 옵션)

작업 중 지켜야 할 것

  • 단계를 보고하며 진행해라. 사용자는 어느 단계인지 알아야 개입할 수 있다
  • 가정은 소리 내서 말해라. 브리프에 없어서 정한 것은 명시한다
  • 되돌릴 수 있게 만들어라. 토큰을 바꾸면 전체가 따라 바뀌는 구조로 짠다. 값을 하드코딩하면 수정 요청 한 번에 무너진다
  • 모르면 열어봐라. 레퍼런스 사이트도, 참조 문서도, 실제로 읽고 나서 결정해라