배경
페이지들이 DS 프리미티브(components/ui/*)를 안 쓰고 raw 마크업(<button>/<input>/<div> 카드 등)으로 짜여 있었음. 이를 DS 프리미티브로 conform 하고, "프리미티브 있는데 raw 박음" 을 막는 code-first 린트 게이트를 도입.
변경
- 페이지 5개 → DS 프리미티브로 conform — ProjectList / ProjectDetail / QAChatPage / IdeationPage / AbTestPage. 버튼→
Button, 입력→Input/Textarea, 카드→Card, 칩→Badge. gap 있으면 페이지를 DS 에 맞춰 변형(ink 버튼→primary, 아이콘 검색→표준 Input 등).
- manifest
replaces — button/input/textarea 가 대체하는 네이티브 태그 명시.
- raw-태그 lint 게이트 —
eslint-raw-tag-gate.mjs (ui-agent ship) + eslint.config.js 에서 restrictedRawTags('src/components/ui') 로 src/pages/** 검사.
- 대응 프리미티브 없는 정당한 raw(아이콘 버튼 / 클릭 카드 / file input / 탭)는
eslint-disable + 사유(gap) 로 원장화.
검증
tsc + vite build + eslint(pages) green. 시각(픽셀) 확인은 아직 안 됨 — 머지 전 dev 서버로 5개 페이지 확인 필요.
관련
배경
페이지들이 DS 프리미티브(
components/ui/*)를 안 쓰고 raw 마크업(<button>/<input>/<div>카드 등)으로 짜여 있었음. 이를 DS 프리미티브로 conform 하고, "프리미티브 있는데 raw 박음" 을 막는 code-first 린트 게이트를 도입.변경
Button, 입력→Input/Textarea, 카드→Card, 칩→Badge. gap 있으면 페이지를 DS 에 맞춰 변형(ink 버튼→primary, 아이콘 검색→표준 Input 등).replaces—button/input/textarea가 대체하는 네이티브 태그 명시.eslint-raw-tag-gate.mjs(ui-agent ship) +eslint.config.js에서restrictedRawTags('src/components/ui')로src/pages/**검사.eslint-disable + 사유(gap)로 원장화.검증
tsc + vite build + eslint(pages) green. 시각(픽셀) 확인은 아직 안 됨 — 머지 전 dev 서버로 5개 페이지 확인 필요.
관련