name: bbucle-road-create description: 새로운 뿌클로드 페이지를 추가합니다. Figma 디자인 분석, 데이터 추가, 브라우저 렌더링 검증을 포함합니다.
뿌클로드 새 페이지 추가
입력 정보
- Figma URL (필수) - 디자인 명세 (node-id 포함)
- 페이지 ID (선택) - kebab-case (예: ticketlink-live-arena)
- 미입력시 Figma 디자인에서 추론
워크플로우
Phase 1: 디자인 분석
Figma MCP로 디자인 분석
- get_screenshot: 전체 페이지 스크린샷 - get_design_context: 각 섹션별 상세 스타일 (nodeId별로 호출) - get_metadata: 구조 파악기존 데이터 구조 파악
web/screens/BbucleRoadScreen/config/bbucleRoadData.ts읽기- 기존 페이지(KSPO DOME, 고척스카이돔 등) 구조 참고
변경 범위 판단
- ✅ 데이터만 변경:
bbucleRoadData.ts수정 - ⚠️ 코드 변경 필요: 새 레이아웃/섹션/컴포넌트 추가 시
BbucleRoadScreen/sections/컴포넌트 수정- 타입 정의 수정
- 새 섹션 컴포넌트 생성
- ✅ 데이터만 변경:
Phase 2: 데이터 구조 설계
필수 섹션:
id: 페이지 고유 ID (kebab-case)title: 페이지 제목titleImageUrl,headerBackgroundImageUrl: 이미지 (placeholder 가능)wheelchairUserCommentHtml: 휠체어 사용자 한마디routeSection: 동선정보 (지하철, 콜택시, 자차, 버스 등)ticketInfoSection: 매표 및 입장동선seatViewSection: 좌석 시야nearbyPlacesSection: 근처 맛집reviewSection: 후기ctaFooterSection: CTA 버튼overviewSection: 한눈에 보기
Phase 3: 데이터 추가
web/screens/BbucleRoadScreen/config/bbucleRoadData.ts에 새 항목 추가:
'page-id': {
"id": "page-id",
"title": "휠체어로 ??? 어때?",
// ... 전체 데이터 구조
}
Phase 4: 디자인 검증 (반복) ⚠️ 가장 중요
4-0. Figma 스크린샷 획득 (시각적 비교용)
# 각 섹션별 nodeId로 Figma 스크린샷 획득
get_screenshot(nodeId: "<섹션별 nodeId>")
- Claude가 직접 이미지를 볼 수 있음
- 브라우저 스크린샷과 시각적 1:1 비교 가능
주요 섹션 nodeId 예시 (Figma URL에서 추출):
- 교통정보:
node-id=XXX:YYY - 매표정보:
node-id=XXX:YYY - 시야정보:
node-id=XXX:YYY - 근처맛집:
node-id=XXX:YYY
4-1. 브라우저 스크린샷 캡처
yarn web # Dev 서버 실행
cd web/screens/BbucleRoadScreen/scripts
npx tsx capture-screenshots.ts <pageId> desktop
4-2. 시각적 비교 (CRITICAL - 반드시 수행!)
Claude가 두 이미지를 직접 보고 비교:
- Figma 스크린샷 (
get_screenshot결과) - 브라우저 스크린샷 (Playwright 캡처 결과)
육안으로 확인할 항목:
- 전체 레이아웃 일치 여부
- 배지/태그 색상 (배경색, 텍스트색, 테두리)
- 박스 중첩 구조 (이중 박스, 중복 제목)
- 텍스트 스타일 (크기, 굵기, 줄간격)
- 간격 (padding, margin, gap)
4-3. 섹션별 상세 스타일 비교 (필수!)
각 섹션마다 아래 과정 수행:
Figma 스타일 추출
get_design_context로 해당 섹션 nodeId의 상세 스타일 확인- 배경색, 테두리, 폰트, 패딩, 마진 등 수치 기록
현재 데이터/컴포넌트 스타일 확인
bbucleRoadData.ts의 HTML 인라인 스타일 확인- 해당 섹션 컴포넌트(
.tsx) 스타일 확인
1:1 비교표 작성 (MANDATORY)
| 항목 | Figma | 현재 데이터/컴포넌트 | 일치여부 | |------|-------|---------------------|---------| | 배지 배경색 | #fff | #0C76F7 | ❌ | | 배지 테두리 | 1px solid #D8D8DF | 없음 | ❌ | | ... | ... | ... | ... |차이점 발견 시 즉시 수정
스크린샷 재캡처 후 재비교 (4-0부터 반복)
⚠️ 세부 검증 체크리스트 (CRITICAL)
배지/태그 스타일
| 검증 항목 | 확인 방법 |
|---|---|
| 배경색 | filled (파란 배경) vs outline (흰 배경+테두리) 구분 |
| 테두리 | border 유무 및 색상 (#D8D8DF 등) |
| 텍스트 색상 | 배경과 대비되는 색상 |
| border-radius | 50px (pill) vs 4px/8px/12px |
| padding | px 또는 em 단위 정확히 |
⚠️ 흔한 실수: Figma에서 outline 스타일인데 filled로 구현
박스/컨테이너 구조
| 검증 항목 | 확인 방법 |
|---|---|
| 중첩 구조 | 컴포넌트가 만드는 박스 + 데이터 HTML의 박스 = 이중 래핑 주의 |
| 배경색 | #F7F8FA (연회색) vs #fff (흰색) |
| border-radius | 4px vs 8px vs 12px |
| padding/gap | 정확한 수치 |
⚠️ 흔한 실수: 컴포넌트에서 박스+제목 렌더링 + 데이터 HTML에서도 박스+제목 = 중복
텍스트 스타일
| 검증 항목 | 확인 방법 |
|---|---|
| font-size | px 또는 em 단위 |
| font-weight | 400 (regular) vs 500 (medium) vs 700 (bold) |
| line-height | px 또는 배수 |
| color | hex 코드 정확히 |
| 줄바꿈 위치 | <br> 위치 Figma와 동일 |
아이콘
| 검증 항목 | 확인 방법 |
|---|---|
| 아이콘 타입 | SUBWAY, CAR, TAXI, BUS 등 |
| 크기 | width, height |
| 색상 | fill color |
⚠️ 흔히 놓치는 패턴 (MUST CHECK)
1. 인라인 스타일 불일치
- 문제: 새 페이지 HTML에 다른 스타일 적용
- 해결: 기존 페이지(KSPO DOME, 고척스카이돔)의 동일 요소 스타일 복사 후 수정
2. 컴포넌트 래핑 중복
- 문제: 컴포넌트가 박스/제목 렌더링 + 데이터 HTML도 박스/제목 포함
- 해결:
- 컴포넌트 코드 확인 (
sections/*.tsx) - 컴포넌트가 래핑하는 요소와 데이터 HTML 중복 제거
- 데이터 HTML은 본문만 제공
- 컴포넌트 코드 확인 (
3. 배지 스타일 (outline vs filled)
- 문제: Figma는 흰배경+테두리인데 파란배경으로 구현
- 해결: Figma에서 배지의 fill/stroke 속성 확인
4. 기존 페이지와 패턴 불일치
- 문제: 같은 요소인데 페이지마다 다른 스타일
- 해결: 기존 페이지의 동일 요소 HTML 복사 후 내용만 수정
5. 링크 URL 검증 ⚠️ NEW
- 문제: 기존 페이지에서 복사한 HTML의 링크가 다른 페이지/장소 것일 수 있음
- 예시: 제보 링크가
scc.page.link/NjHT(KSPO DOME용)인데 TLA에도 그대로 복사됨 - 해결:
- 모든
<a href="...">링크 URL을 Figma 디자인과 대조 - 새 페이지에 맞는 링크로 교체 (사용자에게 확인 필요)
- 모든
6. 컴포넌트 styled-components 스타일 검증 ⚠️ NEW
- 문제: 섹션 컴포넌트(
.tsx)의 styled-components 스타일이 Figma와 다를 수 있음 - 예시:
NoticeBoxContainer의 배경색이#FFF9E6(연노랑)인데 Figma는#fff+ 테두리 - 해결:
- 데이터뿐 아니라 컴포넌트 스타일도 Figma와 비교
get_design_context로 Figma 스타일 추출 후 컴포넌트 스타일과 대조
7. HTML 내용 검증 (다른 페이지 내용 복사됨) ⚠️ NEW
- 문제: 기존 페이지에서 HTML을 복사했을 때 내용 자체가 다른 페이지 것일 수 있음
- 예시:
wheelchairUserTipHtml이 KSPO DOME 내용("주차장 실시간 혼잡도")인데 TLA에도 그대로 복사됨 - 해결:
- Figma에서 텍스트 내용 확인 (
get_design_context또는get_screenshot) - 텍스트 내용이 새 페이지에 맞는지 확인
- Figma에서 텍스트 내용 확인 (
8. gap/margin 정확한 수치 ⚠️ NEW
- 문제: Figma의
gap-8px이 데이터에서gap: 4px로 잘못 적용됨 - 해결:
get_design_context로 정확한 gap, padding, margin 수치 확인- Tailwind 클래스 (
gap-[8px]) → 인라인 스타일 (gap: 8px) 변환
9. bold/강조 텍스트 확인 ⚠️ NEW
- 문제: Figma에서 bold 처리된 텍스트가 일반 텍스트로 구현됨
- 해결:
get_design_context결과에서font-weight: 700또는Bold폰트 확인- 해당 텍스트에
<b>또는font-weight: 700적용
주요 파일
| 파일 | 설명 |
|---|---|
web/screens/BbucleRoadScreen/config/bbucleRoadData.ts |
페이지 데이터 |
web/screens/BbucleRoadScreen/index.tsx |
메인 컴포넌트 |
web/screens/BbucleRoadScreen/sections/*.tsx |
섹션 컴포넌트 |
web/screens/BbucleRoadScreen/scripts/capture-screenshots.ts |
스크린샷 캡처 |
최종 체크리스트
데이터 완성도
- 모든 필수 섹션 포함
- HTML 인라인 스타일이 기존 페이지 패턴과 일치
- 링크 URL이 새 페이지에 맞는지 확인 (다른 페이지 링크 복사 주의)
- 텍스트 내용이 새 페이지에 맞는지 확인 (다른 페이지 내용 복사 주의)
세부 디자인 검증
- 배지/태그: outline vs filled, 테두리, 색상
- 박스 구조: 컴포넌트+데이터 HTML 중첩 없음
- 텍스트: font-size, weight, line-height, color
- bold 처리: Figma에서 강조된 텍스트
<b>태그 적용 - 아이콘: 타입, 크기, 색상
- gap/padding/margin: 정확한 px 수치 (4px vs 8px 등)
컴포넌트 스타일 검증
- 섹션 컴포넌트 styled-components 스타일이 Figma와 일치
- 배경색, 테두리, border-radius 확인
- 컴포넌트 수정이 필요하면 다른 페이지에 영향 없는지 확인
검증 프로세스
- 각 섹션별 Figma vs 브라우저 1:1 비교표 작성
- 차이점 0개가 될 때까지 반복
- 데스크톱 뷰 완전 일치
- 모바일 뷰 완전 일치
이미지
- 이미지 URL placeholder 표시
- 사용자에게 이미지 등록 안내
코드 품질
-
yarn lint통과 -
yarn tsc --noEmit통과
참고
- 기존 페이지 예시:
gocheok-skydome,kspo-dome - CLAUDE.md의 Figma Implementation Guidelines 참조
Figma MCP 도구 참조
사용 가능한 도구 (figma-dev-mode-mcp-server)
| 도구 | 설명 | 용도 |
|---|---|---|
get_screenshot |
노드의 스크린샷 이미지 반환 | 시각적 비교용 - Claude가 이미지를 직접 볼 수 있음 |
get_design_context |
UI 코드/스타일 컨텍스트 | 상세 스타일 수치 추출 (색상, 폰트, 패딩 등) |
get_metadata |
노드 구조 메타데이터 (XML) | 컴포넌트 구조 파악 |
get_variable_defs |
디자인 변수 정의 | 색상/폰트 변수 확인 |
nodeId 추출 방법
Figma URL에서 node-id 파라미터 추출:
https://figma.com/design/xxx/yyy?node-id=1038-5703
→ nodeId: "1038:5703" (하이픈을 콜론으로 변환)
시각적 비교 워크플로우
1. get_screenshot(nodeId: "섹션nodeId") → Figma 이미지
2. capture-screenshots.ts 실행 → 브라우저 이미지
3. 두 이미지를 **시각적으로 직접 비교**
4. 차이점 발견 → get_design_context로 상세 스타일 확인 → 수정
5. 반복
⚠️ 중요: get_screenshot은 이미지를 파일로 저장하지 않음. Claude가 메모리에서 직접 확인.