Skip to content

Conversation

@junghyeonsu
Copy link
Contributor

@junghyeonsu junghyeonsu commented Jan 5, 2026

Summary by CodeRabbit

릴리스 노트

  • Documentation

    • Figma V3 마이그레이션 플러그인 개발에 대한 포괄적인 개발자 가이드 추가. 환경 설정, 메타데이터 추출 워크플로우, 매핑 업데이트 절차 포함.
  • Refactor

    • 인라인 알림, 슬라이더, 텍스트 필드 컴포넌트의 마이그레이션 매핑 업데이트.
    • 슬라이더 컴포넌트 통합 및 텍스트 필드를 템플릿 변형으로 전환.
  • Chores

    • 빌드 구성에서 경로 별칭 매핑 최적화.

✏️ Tip: You can customize this high-level summary in your review settings.

@junghyeonsu junghyeonsu self-assigned this Jan 5, 2026
@changeset-bot
Copy link

changeset-bot bot commented Jan 5, 2026

⚠️ No Changeset found

Latest commit: 4b06799

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 5, 2026

📝 Walkthrough

Walkthrough

Figma V3 마이그레이션 플러그인 개발을 위한 새로운 개발자 가이드 문서를 추가하고, 인라인 알림, 슬라이더, 텍스트 필드 매핑을 업데이트하며, 메서드 시그니처를 단순화하고 빌드 설정의 경로 별칭을 수정합니다.

Changes

코호트 / 파일명 변경 요약
개발자 문서
.claude/skills/figma-v3-migration-plugin-dev/SKILL.md
새로운 개발자 가이드 문서 추가: SEED Design System V2에서 V3로의 마이그레이션 과정, 메타데이터 추출 워크플로우, 매핑 파일 가이드라인, 명령어 및 디버깅 팁 포함
인라인 알림 매핑
tools/figma-v3-migration/src/main/mapping/inline-alerts.ts
calculateProperties 메서드 시그니처에서 oldComponentStructure 파라미터 제거; Link.value가 "True"일 때 Interaction 값을 "With Action"에서 "Display (With Action)"으로 변경
슬라이더 매핑
tools/figma-v3-migration/src/main/mapping/sliders.ts
markerGroupMapping 제거; sliderMapping과 rangeSliderMapping을 "🟢 Slider" 단일 컴포넌트로 통합; calculateProperties 메서드 시그니처 단순화 및 Value/Tick/Marker 가시성 로직 추가
텍스트 필드 매핑
tools/figma-v3-migration/src/main/mapping/text-fields.ts
세 개 매핑(outlined, underlined, multiline)을 템플릿 기반("🔵 [Template] Text Field", "🔵 [Template] Textarea Field")으로 변경; calculateProperties 메서드 단순화하여 Variant 및 기본 헤더/푸터 표시만 반환
빌드 설정
tools/figma-v3-migration/vite.ui.config.ts
경로 별칭 매핑을 와일드카드 패턴("seed-design/\*" 등)에서 직접 경로("seed-design" 등)로 변경

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 분

Poem

🐰 토끼의 찬양

매핑들을 우아하게 통합하고,
시그니처는 간결하게 단순화하며,
템플릿으로 옷을 갈아입은 텍스트 필드들,
Figma V3 마이그레이션, 한 발씩 나아가네! 🌟

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목이 변경 집합의 주요 내용과 관련이 있으며, 여러 매핑 파일과 설정의 업데이트를 명확하게 요약하고 있습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Fix all issues with AI Agents 🤖
In @.claude/skills/figma-v3-migration-plugin-dev/SKILL.md:
- Around line 13-29: The fenced code block showing the directory tree in
SKILL.md lacks a language tag; update the opening fence for the block that
begins with "tools/figma-v3-migration/" to use a language identifier (e.g.,
change ``` to ```text) so markdownlint no longer warns about unlabeled code
fences.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between c1a6134 and 4b06799.

⛔ Files ignored due to path filters (93)
  • tools/figma-v3-migration/package.json is excluded by !**/package.json
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/action-button-ghost-button.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/action-button-ghost-button.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/action-button.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/action-button.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/bottom-sheet.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/bottom-sheet.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/callout.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/callout.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/chip.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/chip.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-action-chip.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-action-chip.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-completion.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-completion.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-control-chip.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-control-chip.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-error-state.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-error-state.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-multiline-text-field.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-multiline-text-field.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-range-slider.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-range-slider.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-slider.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-slider.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-text-field.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-text-field.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/i-os-live-acitivity-screen-figma-only.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/i-os-live-acitivity-screen-figma-only.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/index.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/index.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-handle.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-handle.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-handles.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-handles.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-marker-group.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-marker-group.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-range.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-range.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-ticks.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-ticks.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/list-header.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/list-header.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/list-item.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/list-item.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/manner-temp-badge.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/manner-temp-badge.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/manner-temp.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/manner-temp.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/menu-sheet.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/menu-sheet.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/page-banner.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/page-banner.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/radio.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/radio.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/radiomark.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/radiomark.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/reaction-button.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/reaction-button.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/result-section.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/result-section.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/root-top-navigation-global.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/root-top-navigation-global.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/root-top-navigation-kr.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/root-top-navigation-kr.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/scroll-fog.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/scroll-fog.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/segmented-control.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/segmented-control.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/slider.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/slider.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/switch.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/switch.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/switchmark.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/switchmark.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/tag-group.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/tag-group.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-custom-picker-field.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-custom-picker-field.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-disclaimer.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-disclaimer.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-slider-field.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-slider-field.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-text-field.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-text-field.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-textarea-field.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-textarea-field.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-top-navigation.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-top-navigation.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/toggle-button.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/toggle-button.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/user-selection-figma-only.d.ts is excluded by !**/__generated__/**, !**/__generated__/**/*
  • tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/user-selection-figma-only.mjs is excluded by !**/__generated__/**, !**/__generated__/**/*
📒 Files selected for processing (5)
  • .claude/skills/figma-v3-migration-plugin-dev/SKILL.md
  • tools/figma-v3-migration/src/main/mapping/inline-alerts.ts
  • tools/figma-v3-migration/src/main/mapping/sliders.ts
  • tools/figma-v3-migration/src/main/mapping/text-fields.ts
  • tools/figma-v3-migration/vite.ui.config.ts
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/docs.mdc)

**/*.{ts,tsx}: Use descriptive variable names with auxiliary verbs (e.g., isLoading, hasError)
Structure files: exported component, subcomponents, helpers, static content, types
Favor named exports for components
Use TypeScript for all code; prefer interfaces over types
Avoid enums; use maps instead
Use the "function" keyword for pure functions
Avoid unnecessary curly braces in conditionals; use concise syntax for simple statements

Files:

  • tools/figma-v3-migration/vite.ui.config.ts
  • tools/figma-v3-migration/src/main/mapping/inline-alerts.ts
  • tools/figma-v3-migration/src/main/mapping/text-fields.ts
  • tools/figma-v3-migration/src/main/mapping/sliders.ts
🪛 markdownlint-cli2 (0.18.1)
.claude/skills/figma-v3-migration-plugin-dev/SKILL.md

13-13: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Analyze (javascript)
🔇 Additional comments (11)
.claude/skills/figma-v3-migration-plugin-dev/SKILL.md (3)

1-5: 문서 메타데이터가 적절합니다.

frontmatter의 이름, 설명, 허용된 도구가 Figma V3 마이그레이션 플러그인 개발 스킬에 적합하게 설정되어 있습니다.


79-227: 예제 코드가 명확하고 실용적입니다.

버튼과 Action Sheet의 매핑 예제가 실제 구현 패턴을 잘 보여주고 있으며, 중첩 컴포넌트 처리(childrenMappings)를 포함한 다양한 케이스를 다루고 있습니다. 한글 주석도 이해하기 쉽습니다.


308-360: 트러블슈팅 섹션이 유용합니다.

일반적인 에러 케이스(Property does not exist, Type is not assignable, Extract 실패)와 해결 방법이 명확하게 정리되어 있으며, 실행 가능한 디버깅 명령어도 포함되어 있습니다.

tools/figma-v3-migration/src/main/mapping/inline-alerts.ts (2)

14-14: 메서드 시그니처 단순화가 적절합니다.

calculateProperties 메서드에서 사용되지 않던 oldComponentStructure 파라미터를 제거하여 API를 단순화했습니다. 이는 sliders.ts, text-fields.ts의 변경 사항과 일관되며, 구현 로직에서 해당 파라미터를 참조하지 않으므로 안전한 변경입니다.


19-24: V3 스키마 확인 완료: 변경 사항은 올바릅니다.

codegen 핸들러(packages/figma/src/codegen/targets/react/component/handlers/page-banner.ts)에서 Interaction 속성값 "Display (With Action)"을 명시적으로 처리하고 있으므로, 이는 V3 스키마에서 유효한 값입니다. ts-pattern의 exhaustive 매칭을 사용하므로 모든 가능한 값이 확인된 상태입니다.

tools/figma-v3-migration/src/main/mapping/sliders.ts (2)

11-19: 슬라이더 속성 변환 로직이 명확합니다.

calculateProperties에서 이전 슬라이더의 StepsMarker 값을 기반으로 새로운 속성을 올바르게 도출하고 있습니다. Value: "Single"로 단일 슬라이더임을 명시하고, 틱 마크와 마커 표시 여부를 조건부로 설정합니다.

한 가지 확인: Show Active Track이 항상 true로 설정되어 있는데, V2 슬라이더에서 이를 끌 수 있는 옵션이 있었다면 해당 로직을 추가해야 할 수 있습니다.


22-39: Range 슬라이더의 통합 매핑이 적절합니다.

단일 슬라이더와 Range 슬라이더를 동일한 "🟢 Slider" 컴포넌트로 통합하고, Value 속성으로 구분하는 접근 방식이 합리적입니다. 속성 도출 로직도 단일 슬라이더와 일관성을 유지하고 있습니다.

tools/figma-v3-migration/src/main/mapping/text-fields.ts (3)

3-28: Outline 텍스트 필드 매핑이 템플릿 기반으로 잘 전환되었습니다.

새로운 "🔵 [Template] Text Field" 컴포넌트로의 매핑이 명확하며, Variant: "Outline"으로 스타일을 지정하고 있습니다. 상태 매핑도 적절하게 업데이트되었고(Error(Focused)Error Focused), Header/Footer 표시 여부를 이전 boolean 속성에서 올바르게 도출하고 있습니다.


30-55: Underlined 텍스트 필드 매핑이 일관된 패턴을 따릅니다.

Outline 매핑과 동일한 템플릿 컴포넌트를 사용하되 Variant: "Underline"으로 차별화하는 접근이 일관성 있습니다. 속성 ID(Label#28377:60, Bottom area#28377:53)가 다른 것은 V2의 다른 컴포넌트에서 가져오기 때문에 정상입니다.


73-79: Textarea Field 템플릿의 Variant 속성 설정 여부 확인 필요합니다.

outlineTextFieldMappingunderlinedTextFieldMapping은 각각 Variant 속성을 "Outline"과 "Underline"으로 설정하지만, multilineTextFieldMapping은 이 속성을 설정하지 않습니다. 다만 이 두 매핑은 "🔵 [Template] Text Field"를 사용하고, 다중 라인 버전은 "🔵 [Template] Textarea Field"를 사용하므로, Textarea Field 템플릿이 실제로 Variant 속성을 정의하고 있는지, 그리고 필수인지 확인이 필요합니다.

tools/figma-v3-migration/vite.ui.config.ts (1)

13-15: 경로 별칭 구성은 현재 상태가 올바릅니다.

와일드카드 없는 별칭 구성(현재 상태)은 하위 경로 import를 정상 작동합니다. Vite에서는 "seed-design": "path/to/dir" 형태의 별칭이 "seed-design/ui/tabs"와 같은 하위 경로를 자동으로 해석합니다. 코드베이스 전체에서 "common/components/footer", "shared/types", "seed-design/ui/tabs" 등의 하위 경로 import들이 이미 정상 작동 중이므로, 현재 별칭 구성은 올바릅니다.

Likely an incorrect or invalid review comment.

Comment on lines +13 to +29
```
tools/figma-v3-migration/
├── src/main/
│ ├── mapping/ # 매핑 정의 파일들
│ │ ├── types.ts # 타입 정의
│ │ ├── index.ts # 모든 매핑 export
│ │ ├── buttons.ts # 버튼 컴포넌트 매핑
│ │ ├── action-sheet.ts # Action Sheet 매핑
│ │ └── [component].ts # 기타 컴포넌트별 매핑
│ ├── data/
│ │ └── __generated__/ # 자동 생성된 메타데이터
│ │ ├── v2-component-sets/ # V2 컴포넌트 메타데이터
│ │ └── v3-component-sets/ # V3 컴포넌트 메타데이터
│ └── services/ # Figma API 서비스
├── figma-extractor.config.ts # 추출 설정
└── package.json
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

코드 블록에 언어 식별자를 추가하세요.

markdownlint에서 펜스 코드 블록에 언어 지정이 필요하다고 경고하고 있습니다. 디렉토리 구조 표시에는 text 또는 빈 문자열을 사용할 수 있습니다.

🔎 제안하는 수정
-```
+```text
 tools/figma-v3-migration/
 ├── src/main/
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

13-13: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In @.claude/skills/figma-v3-migration-plugin-dev/SKILL.md around lines 13-29,
The fenced code block showing the directory tree in SKILL.md lacks a language
tag; update the opening fence for the block that begins with
"tools/figma-v3-migration/" to use a language identifier (e.g., change ``` to
```text) so markdownlint no longer warns about unlabeled code fences.

@junghyeonsu junghyeonsu merged commit 49c952d into dev Jan 8, 2026
4 checks passed
@junghyeonsu junghyeonsu deleted the feat/update-figma-v3-plugin-mapping branch January 8, 2026 03:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants