designpaca/.changeset/upgrade-2026-10-06.md
Yun Chan 88c11682b1 feat(skill): route fixes, delivery report, composition diversity, platform refresh
- route table: extension route for products with an existing visual
  language, feedback row, derived state tokens stay local
- completion: blocking 0 plus reported unverified; hard-gate surface is
  the touched scope; delivery report starts with what and how to open
- design.md created at step 0 with a skeleton, fingerprint line and
  change log; product-surface rubric reading; direction delegation
  states the chosen card and reason
- layout: hero families, nav forms, footer forms; art-direction page
  convergence 6 axes; genre sections; image treatments; placeholder
  conventions; multi-screen order; Tailwind theme mapping
- platform: scroll-driven examples, anchor positioning, canvas OT,
  three/R3F pins, shadcn style prefixes, Safari 26 notes, subgrid
- design-gate: four result states, exit codes, cwd module resolution,
  --url/--out-dir/--strict, oklch contrast, dead selector word match
- Korean font budget split from the Latin baseline
2026-10-06 16:55:38 +09:00

44 lines
7.4 KiB
Markdown

---
"designpaca": minor
"@designpaca/core": minor
"@designpaca/skill": minor
---
**묻는 시점 변경(인터뷰 게이트, AGENTS.md #10).** 0단계 필수 슬롯을 묻는 조건은 바꾸지 않았다. 바뀐 것은 아래다.
- 축소 1: `design.md`는 없지만 현행 시각 언어(토큰·테마 파일, 컴포넌트, 반복되는 색·서체)가 코드에 있는 제품에 새 화면을 더하면 전체가 아니라 **연장 경로**다. 현행 계약 5줄 요약을 확인받고, 방향 체크포인트는 돌지 않는다. 전에는 방향 카드 2~3장이 나가 묻지 않은 리브랜딩 제안이 됐다.
- 축소 2: 국소 작업에서 기존 역할에서 파생한 상태 토큰(hover·active·disabled·focus 값) 하나를 더하는 것은 경로를 올리지 않는다. 새 역할 토큰·새 스케일 단계만 연장으로 올린다.
- 변경 1: 사용자가 방향을 시안(Figma·스크린샷·목업·브랜드 가이드)으로 줬으면 대안 카드 2~3장 대신 **해석 카드 한 장**을 확인받는다. 여전히 묻고 턴을 끝낸다.
- 변경 2: 방향이 담긴 불만("더 고급스럽게")은 축 질문을 따로 내지 않고 같은 방향의 다른 해석 두 변형으로 바로 A/B를 묻는다. "아까 게 낫다"는 가리키는 대상이 하나면 묻지 않고 되돌린다(feedback-loop §2·§5-b).
- 추가 1: 정리·일관화 요청(연장)은 고치기 전에 현행 인벤토리와 통합안을 보이고 확인받는다.
- 추가 2: 국소 요청에 증상이 없고("좀 고쳐줘") 실측 후보가 둘 이상이거나 없으면 실측값을 보이며 한 번 묻는다.
- 명확화: 0단계 슬롯만 맡긴 위임("인터뷰는 알아서")은 방향 위임이 아니다. SKILL.md의 위임 문장을 brief-interview §11과 맞췄다. 위임받아 카드를 고를 때는 고른 이유를 함께 말한다.
- 형식: 질문 앞에 남은 길을 한 줄로 예고한다. 스택·테마·로그인 화면 접근은 자산 질문의 자유 답에 얹고, 설치·이미지 생성·게이트 잔류 동의는 선택 응답인 "작업 조건 묶음"으로 0단계 턴에 미리 묻는다. 질문 수와 라운드 규칙은 그대로다. 캡처 도구가 있으면 방향 카드에 첫 화면 미리보기를 붙인다(프로젝트 밖 임시 파일).
- eval: 시나리오 S19(현행 시각 언어가 있는 제품에 화면 추가)·S20(파생 상태 토큰)·S21(시안 제공)과 해석 카드 판정을 더했다. 경로 판정과 읽기 비용을 기존 로그로 다시 판정하는 `rejudge.mjs`를 더했다.
**완료 판정과 보고.**
- 5단계 통과 조건을 "하드 게이트 차단 0건 + 미검증은 항목·이유를 보고"로 통일했다. 전에는 문서에 따라 미검증이 하나라도 있으면 끝낼 수 없는 것으로 읽혔다.
- 하드 게이트의 "전부"는 항목이고, 검사 표면은 작업이 정한다. 연장·국소에서 범위 밖에서 본 위반은 고치지 않고 "기존 결함"으로 따로 보고한다.
- 납품 보고는 무엇을 만들었고 어떻게 여는지로 시작한다(critique §13-b). 검증 줄의 정본은 audit-gate 한 곳이고 영어 대응을 정했다.
- 제품 표면(로그인 뒤 화면·설정·목록)용 루브릭 해석과 연장·국소 경로의 Direction 처리를 더했다.
- `design.md`를 0단계 통과 때 만들고 단계마다 채운다. 제목이 있는 골격(진행 상태·지문 한 블록·변경 기록 포함)과 분량 기준을 정했고, 컨텍스트 압축 뒤에는 진행 상태로 잇는다.
**구성 수렴 대응.** 쇼케이스 21종 계측에서 히어로 2단 분할 13/19, 상단 바 내비 19/19, 한 줄 고지 푸터 14/19가 나왔다.
- layout에 히어로 구도 패밀리 8종(§2-b), 내비 형태 6종(§2-c), 푸터 형태(§2-d)를 선택지 표로 두고 섹션 토폴로지 어휘를 넓혔다. images에 이미지 처리·캡션 선택지를 더했다.
- art-direction §3-2에 페이지 수렴 6축(섹션 흐름·히어로 글 묶음·내비·푸터·이미지 처리·모션, 넷 이상 같으면 실패)을 더하고 critique D2·preflight V2에 연결했다.
- genre-conventions에 동네 가게·전시와 행사·B2B 서비스 절을 서로 다른 흐름 세 개씩과 함께 더했다.
- 문서의 예시 값에 남아 있던 하우스 룩(웜 오프화이트·2px radius·Pretendard 기록 틀)을 자리표시나 서로 다른 세 벌로 바꿨다. 한 문장 컨셉 예를 과업 문장으로 바꾸고 방향 카드 예시에 다른 업종과 나쁜 예를 더했다.
**폰트 예산 현실화.** tokens §5의 폰트 전송량 기본선을 라틴 100KB / 한글 1패밀리 200KB / 2패밀리 350KB로 나눴다. 쇼케이스 19종 실측(144~480KB)에서 한글 두 패밀리는 유니코드 슬라이스로 받아도 200KB를 거의 항상 넘었다.
**새 절차.** 화면이 여럿일 때의 순서(layout §4-m), 실제 값이 없을 때의 placeholder 규약(product-copy §16), 폼 제출 뒤(component-systems §10-6), Tailwind v4·shadcn 테마에 토큰 넣기(§7-1), 문서 머리와 브랜드 표면(SKILL.md 4-4b), 로그인 뒤 화면의 검증, preflight 행 X15~X19(모바일 앱·리믹스·장르·깊이·다중 화면).
**웹 플랫폼 갱신(2026-10 확인).** scroll-driven 예시의 `animation-delay` 스태거를 `animation-range`로 고치고 `1ms` duration을 붙였다. 팝오버·툴팁 예시에 anchor positioning을 넣었다. svg-filters R6(한 장짜리 굴절 지도)를 지우고 svg-glass로 보냈다. HTML-in-Canvas 가용성, three·R3F 호환 판정(레지스트리 확인 명령), shadcn `style` 접두어와 통합 `radix-ui` 패키지, Safari 26의 `theme-color`·홈 화면 웹앱, 폰트 메트릭 오버라이드의 Safari 범위, subgrid, Speculation Rules, invoker commands, WebGPURenderer 선택 기준을 반영했다.
**렌더 게이트(`tools/design-gate.mjs`).**
- 결과 상태를 충족·실패·미검증·OFF로 나눴다. 건너뛴 검사가 통과로 집계되던 것을 없앴다. 종료 코드: 0 실패 없음, 1 실패, 2 사용법·설정 오류, 3 `--strict`에서 미검증.
- 브라우저나 `puppeteer-core`가 없으면 exit 1이 아니라 정적 결과를 내고 "검증 미완료"로 끝낸다. 선택 의존성을 실행 디렉터리에서 먼저 찾는다(스킬이 사용자 홈에 설치돼 있으면 게이트가 뜨지 않던 문제).
- `--url`·`--out-dir`·`--no-report`·`--static-only`·`--help`를 더했다. `--init`은 기존 설정을 덮어쓰지 않는다(`--force`). 초안의 기본 폭이 320·390·768·1440·1920·2560으로 바뀌고 뷰·브랜드 가정이 빠졌다.
- 대비 검사가 `oklch()`·`color-mix()`를 읽고, `html` 배경과 조상 opacity를 반영하며, 이미지·그라디언트 배경 위 텍스트는 미검증으로 센다. 문장 밖 작은 링크는 터치 타깃 예외가 아니다. 설정한 뷰 전환 버튼이 없으면 실패다. 죽은 선택자·토큰 위생의 오탐을 고치고 판정을 낱말 일치로 바꿨다. 스크립트 예외·깨진 이미지 검사가 기본으로 켜진다. 시각 회귀 첫 실행은 미검증이다.
- 기본 실행은 프로젝트를 바꾸지 않는다. 설정·의존성·스크립트를 프로젝트에 심는 것은 사용자 동의가 있을 때만이다.
**스킬 lint.** 문서 간 § 포인터, "읽는 법" 표의 § 유효성, preflight 행 ID와 게이트 규칙 번호의 무결성, 문서별·전체 크기 예산, 게이트 사본 동일성을 검사한다.