본문으로 건너뛰기

Figma 퍼블리싱 파이프라인 11. Fresh Publish — diff를 버리고 처음부터

·5 min read·11 / 12

배경

이전 세대 파이프라인(publish-v5, publish-v5.1)은 Figma 시안과 기존 코드를 비교(diff) 하는 방식이었다. 실제 운용 과정에서 구조적 한계가 드러났다:

  • diff 결과가 수백~수천 개로 폭증 → 노이즈가 너무 많아 핵심 누락
  • diff 기반이다 보니 시안에 있는데 코드에 없는 항목을 일부만 처리
  • Phase 11에서 missing_in_code 항목을 상위 20개로 잘라버려 상당수 누락
  • 실행 규칙 #1이 "diff에 있는 항목만 수정"이었기 때문에 처음부터 구현해야 하는 상황과 모순

결론: diff 비교 자체를 버린다. 기존 코드가 있든 없든, 선택한 섹션은 항상 처음부터 새로 구현하는 방식이 더 정확하다.


publish 파이프라인 — 설계 원칙

  • 완전 독립형: 외부 스킬(publish-v5 등) 참조 없음, 모든 스크립트 로컬 포함
  • Fresh-only: 코드 비교(Phase 5-9) 없음. Design IR 전체를 구현 대상으로 삼음
  • 인터랙티브 섹션 선택: --sections 없이 실행하면 체크박스 UI로 선택
  • 제한 없는 구현 범위: missing_in_code 항목 상위 N개 제한 폐지 → 전체 구현

publish 파이프라인 — 핵심 구성

1. 완전 독립형으로 전환

항목이전 (v5.1)이후 (publish)
Phase 스크립트publish-v5 참조로컬 복사본
publisher-core 유틸외부 경로 참조로컬 복사본
orchestrate_v5.py외부 경로 참조로컬 복사본
sys.pathV5_SCRIPTS_DIR + PUBLISHER_CORE_DIRCURRENT_DIR만

2. 인터랙티브 섹션 선택 UI 추가

기존에는 --sections "메인 콘텐츠" 인자를 미리 알고 넘겨야 했다. 이제 --sections 없이 실행하면 Phase 1 완료 후 체크박스 선택 UI가 표시된다.

퍼블리싱할 섹션을 선택하세요
 
  ↑↓ 이동  |  Space 선택/해제  |  Enter 확인  |  a 전체선택
 
  ▶ [ ]  헤더
    [x]  메인 콘텐츠
    [ ]  푸터
  • 화살표로 커서 이동, Space로 토글, Enter로 확인
  • a 키로 전체 선택/해제
  • 비-TTY 환경(파이프 등)에서는 전체 선택으로 자동 fallback

3. Phase 6 Design-only 정규화 추가

Fresh Diff 이후 Phase 6을 Design IR만 대상으로 실행한다.

  • 기존: phase_fresh_diff가 design_ir.json을 단순 복사 → 색상/간격이 raw 상태
  • 이후: Phase 6이 Chakra 토큰 맵 기반으로 정규화 → Phase 10 설계서 품질 향상

4. Phase 11 fresh mode 개선

항목이전이후
missing_in_code 제한상위 20개만제한 없음 (전체)
실행 규칙 #1"diff에 있는 항목만 수정""Design IR 전체 구현 — 처음부터 작성"
Priority 3 헤딩"상위 20개""전체"

diff.json"mode": "fresh" 마킹으로 Phase 11이 자동 감지.

5. Fresh Diff 실행 추적 추가

orch._record() 호출로 Fresh Diff 단계가 Phase 실행 리포트에 포함됨.


파이프라인 흐름 (최종)

Phase 0   Figma 수집
Phase 1   섹션 분류
[선택 UI] 인터랙티브 섹션 선택 (↑↓ Space Enter)
Phase 2   딥 분석
Phase 3   에셋 추출
Phase 4   Design IR 생성
Phase 4.5 컴포넌트 라이브러리 매핑 (.publishrc.json)
[fresh]   Design IR → 합성 diff (전체 = missing_in_code HIGH)
Phase 6   Design 정규화 (design-only)
Phase 10  설계서 생성
Phase 11  Claude Code 컨텍스트 조립 (fresh mode 규칙 적용)
Phase 12  검증 (pnpm type-check)
Phase 13  정리

정리된 것들

  • publish-v5.1 스킬 디렉토리 삭제
  • CLAUDE.md 퍼블리싱 규칙 → /publish 스킬로 업데이트
  • .omc/project-memory.json 캐시에서 v5.1 항목 제거

사용법

python3 ~/.claude/skills/publish/scripts/orchestrate.py \
  --file-key <FILE_KEY> \
  --node-id <NODE_ID> \
  --app marketer \
  --report