Figma 원본 이미지

reference/ 는 Figma 「Cocode Scaffold App v1.0」 페이지 49:7 의 화면 프레임 78개를 1배율로 내보낸 원본 PNG 다 (폰 390 34장 · 태블릿 1024 11장 · 데스크톱 1440 33장). 화면마다의 노드 id · 섹션 · 역할 · 기기 · 크기 · 캡션 · 원본 링크는 화면 대장 docs/product/figma-screens.json 에 있고, 대장의 image 가 이 폴더의 파일을 가리킨다. 구현 캡처와 견줄 기준 이미지다 — 구현 캡처로 덮어쓰지 않는다.

이 폴더와 대장은 scaffold-booking(7f28d21)의 docs/design/figma/ 와 같은 모양이다(#9). 달라진 것: 대장을 손으로 짓지 않고 읽기 전용 레시피 tool/design/figma/export_ledger.figma.js 가 읽은 값을 tool/design/figma/build_ledger.py 가 digest 로 검산하며 짓는다(아래 「대장 다시 만들기」).

내보낸 방법

대장의 insets · modes

대장 다시 만들기

Figma 가 바뀌었을 때(화면이 늘거나 캡션 · 띠가 바뀜) 다시 읽는다. 앱마다 바꾸는 값은 레시피 머리의 두 줄(페이지 id · 코드 접두사)뿐이다.

  1. tool/design/figma/export_ledger.figma.js 를 Figma MCP use_figma 에 그대로 넣어 돌린다(읽기 전용). 반환 {digest, notesDigest, count, rows, notes} 를 파일(예: /tmp/ledger-export.json)로 옮겨 적는다.
  2. 프레임 목록({fileKey, page, frames:[{nodeId,name,keys,device,width,height,section}]})을 준비한다 — get_metadata 의 페이지 XML 에서 Caption 프레임을 뺀 것.
  3. python3 tool/design/figma/build_ledger.py --frames <프레임 목록> --export /tmp/ledger-export.json --prefix CL — 옮겨 적기를 digest 로 검산하고 프레임 목록과 이름 · 크기를 대조해 대장을 쓴다.

한 화면 다시 내보내기

  1. 대장에서 그 화면의 node · width · height 를 확인한다.
  2. get_screenshot(fileKey 6yq0C3oSVVR2HdaOe807eB, nodeId = node, maxDimension = 긴 변, contentsOnly: true)으로 받은 URL 을 바로 curl -f -L -o docs/design/figma/reference/<key>.png "<url>" 로 저장한다(URL 은 곧 만료된다 — 어디에도 적지 않는다).
  3. 프레임 크기 · 캡션 · 상태 바 · 홈 인디케이터가 바뀌었으면 대장의 해당 필드도 고치고, exportedAt 을 내보낸 시각(UTC)으로 바꾼다.
  4. 확인: dart tool/design/check_figma_screens.dart — 필드 · key · PNG IHDR 크기 · 기기 폭과, 대장이 가리키지 않는 PNG 를 본다. 계약 게이트 tool/gates/check_all.sh 도 이 검사를 부른다.

글자 사양 spec/ — 화면마다 더한다

spec/<key>.design.json 은 그 화면의 글자 노드만 담은 co_golden.design_spec 이다(서체 · 굵기 · 크기 · 행간 · 자간 · 색 변수 · 잉크 상자). 수락 보고의 「글자 밖」 수와 co_golden 구조 대조가 읽는다. 화면 구현 PR 이 그 화면 몫을 더한다(지금은 CL-01 세 크기).

  1. tool/design/figma/export_text_spec.figma.js 의 PAGE_ID · FRAME(대장의 node) 두 줄을 고쳐 use_figma 로 돌린다(읽기 전용). 반환 {digest, len, count, json} 의 json 을 파일로 옮겨 적는다.
  2. python3 tool/design/figma/build_text_spec.py --key CL-01@390 --export <그 파일> --digest <digest> --len <len> — 옮겨 적기를 digest 로 검산하고 대장의 이름 · 크기와 견준 뒤 spec/<key>.design.json 을 쓴다. 프레임 밖에 걸친 글자(스크롤로만 닿는 줄)는 싣지 않는다.
  3. 앱 이름 글자가 담기므로 identity.yaml 의 files 에 올린다.

Figma 쪽에서 본 것 (Figma 는 고치지 않았다)