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.path | V5_SCRIPTS_DIR + PUBLISHER_CORE_DIR | CURRENT_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