-
Notifications
You must be signed in to change notification settings - Fork 41
feat: update figma v3 plugin mapping #1125
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
📝 WalkthroughWalkthroughFigma V3 마이그레이션 플러그인 개발을 위한 새로운 개발자 가이드 문서를 추가하고, 인라인 알림, 슬라이더, 텍스트 필드 매핑을 업데이트하며, 메서드 시그니처를 단순화하고 빌드 설정의 경로 별칭을 수정합니다. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 분 Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
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. Comment |
There was a problem hiding this 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.
⛔ Files ignored due to path filters (93)
tools/figma-v3-migration/package.jsonis excluded by!**/package.jsontools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/action-button-ghost-button.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/action-button-ghost-button.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/action-button.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/action-button.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/bottom-sheet.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/bottom-sheet.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/callout.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/callout.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/chip.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/chip.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-action-chip.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-action-chip.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-completion.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-completion.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-control-chip.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-control-chip.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-error-state.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-error-state.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-multiline-text-field.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-multiline-text-field.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-range-slider.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-range-slider.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-slider.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-slider.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-text-field.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/deprecated-text-field.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/i-os-live-acitivity-screen-figma-only.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/i-os-live-acitivity-screen-figma-only.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/index.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/index.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-handle.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-handle.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-handles.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-handles.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-marker-group.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-marker-group.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-range.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-range.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-ticks.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/item-ticks.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/list-header.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/list-header.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/list-item.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/list-item.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/manner-temp-badge.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/manner-temp-badge.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/manner-temp.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/manner-temp.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/menu-sheet.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/menu-sheet.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/page-banner.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/page-banner.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/radio.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/radio.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/radiomark.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/radiomark.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/reaction-button.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/reaction-button.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/result-section.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/result-section.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/root-top-navigation-global.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/root-top-navigation-global.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/root-top-navigation-kr.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/root-top-navigation-kr.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/scroll-fog.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/scroll-fog.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/segmented-control.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/segmented-control.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/slider.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/slider.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/switch.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/switch.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/switchmark.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/switchmark.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/tag-group.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/tag-group.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-custom-picker-field.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-custom-picker-field.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-disclaimer.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-disclaimer.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-slider-field.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-slider-field.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-text-field.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-text-field.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-textarea-field.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-textarea-field.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-top-navigation.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/template-top-navigation.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/toggle-button.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/toggle-button.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/user-selection-figma-only.d.tsis excluded by!**/__generated__/**,!**/__generated__/**/*tools/figma-v3-migration/src/main/data/__generated__/v3-component-sets/user-selection-figma-only.mjsis excluded by!**/__generated__/**,!**/__generated__/**/*
📒 Files selected for processing (5)
.claude/skills/figma-v3-migration-plugin-dev/SKILL.mdtools/figma-v3-migration/src/main/mapping/inline-alerts.tstools/figma-v3-migration/src/main/mapping/sliders.tstools/figma-v3-migration/src/main/mapping/text-fields.tstools/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.tstools/figma-v3-migration/src/main/mapping/inline-alerts.tstools/figma-v3-migration/src/main/mapping/text-fields.tstools/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에서 이전 슬라이더의Steps와Marker값을 기반으로 새로운 속성을 올바르게 도출하고 있습니다.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 속성 설정 여부 확인 필요합니다.
outlineTextFieldMapping과underlinedTextFieldMapping은 각각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.
| ``` | ||
| 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 | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
코드 블록에 언어 식별자를 추가하세요.
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.
Summary by CodeRabbit
릴리스 노트
Documentation
Refactor
Chores
✏️ Tip: You can customize this high-level summary in your review settings.