@kood/claude-code 0.4.1 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +69 -12
- package/package.json +2 -1
- package/templates/.claude/PARALLEL_AGENTS.md +737 -0
- package/templates/.claude/agents/analyst.md +416 -0
- package/templates/.claude/agents/architect.md +569 -0
- package/templates/.claude/agents/code-reviewer.md +132 -133
- package/templates/.claude/agents/dependency-manager.md +93 -94
- package/templates/.claude/agents/deployment-validator.md +64 -65
- package/templates/.claude/agents/designer.md +655 -0
- package/templates/.claude/agents/document-writer.md +500 -0
- package/templates/.claude/agents/explore.md +499 -0
- package/templates/.claude/agents/git-operator.md +74 -75
- package/templates/.claude/agents/implementation-executor.md +138 -109
- package/templates/.claude/agents/ko-to-en-translator.md +18 -22
- package/templates/.claude/agents/lint-fixer.md +250 -93
- package/templates/.claude/agents/planner.md +356 -0
- package/templates/.claude/agents/refactor-advisor.md +135 -136
- package/templates/.claude/commands/bug-fix.md +296 -207
- package/templates/.claude/commands/git-all.md +199 -46
- package/templates/.claude/commands/git-session.md +113 -57
- package/templates/.claude/commands/lint-fix.md +219 -153
- package/templates/.claude/commands/lint-init.md +113 -76
- package/templates/.claude/commands/pre-deploy.md +190 -124
- package/templates/.claude/commands/refactor.md +407 -162
- package/templates/.claude/commands/version-update.md +138 -37
- package/templates/.claude/instructions/context-engineering/ANTHROPIC_CONTEXT_ENGINEERING.md +178 -0
- package/templates/.claude/instructions/context-engineering/references/claude-4x.md +215 -0
- package/templates/.claude/instructions/context-engineering/references/core-principles.md +137 -0
- package/templates/.claude/instructions/context-engineering/references/examples.md +351 -0
- package/templates/.claude/instructions/context-engineering/references/techniques.md +162 -0
- package/templates/.claude/instructions/parallel-agent-execution.md +874 -0
- package/templates/.claude/skills/docs-creator/AGENTS.md +238 -0
- package/templates/.claude/{commands/docs-creator.md → skills/docs-creator/SKILL.md} +61 -75
- package/templates/.claude/skills/docs-refactor/AGENTS.md +270 -0
- package/templates/.claude/{commands/docs-refactor.md → skills/docs-refactor/SKILL.md} +30 -44
- package/templates/.claude/skills/execute/SKILL.md +451 -0
- package/templates/.claude/skills/figma-to-code/AGENTS.md +287 -0
- package/templates/.claude/skills/figma-to-code/SKILL.md +225 -225
- package/templates/.claude/skills/figma-to-code/references/design-tokens.md +75 -73
- package/templates/.claude/skills/figma-to-code/references/figma-mcp-tools.md +73 -73
- package/templates/.claude/skills/figma-to-code/references/layout-mapping.md +104 -104
- package/templates/.claude/skills/figma-to-code/references/responsive-design.md +99 -99
- package/templates/.claude/skills/figma-to-code/references/verification.md +91 -91
- package/templates/.claude/skills/global-uiux-design/AGENTS.md +317 -0
- package/templates/.claude/skills/global-uiux-design/SKILL.md +738 -0
- package/templates/.claude/skills/global-uiux-design/references/accessibility.md +401 -0
- package/templates/.claude/skills/global-uiux-design/references/color-system.md +275 -0
- package/templates/.claude/skills/global-uiux-design/references/design-philosophy.md +206 -0
- package/templates/.claude/skills/global-uiux-design/references/design-systems.md +446 -0
- package/templates/.claude/skills/korea-uiux-design/AGENTS.md +307 -0
- package/templates/.claude/skills/korea-uiux-design/SKILL.md +170 -0
- package/templates/.claude/skills/nextjs-react-best-practices/AGENTS.md +95 -116
- package/templates/.claude/skills/nextjs-react-best-practices/SKILL.md +134 -152
- package/templates/.claude/skills/nextjs-react-best-practices/rules/advanced-event-handler-refs.md +6 -6
- package/templates/.claude/skills/nextjs-react-best-practices/rules/advanced-use-latest.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-api-routes.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-defer-await.md +22 -22
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-dependencies.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-parallel.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-suspense-boundaries.md +21 -21
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-barrel-imports.md +18 -18
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-conditional.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-defer-third-party.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-dynamic-imports.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-preload.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/client-event-listeners.md +9 -9
- package/templates/.claude/skills/nextjs-react-best-practices/rules/client-swr-dedup.md +7 -7
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-batch-dom-css.md +13 -13
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-function-results.md +14 -14
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-property-access.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-storage.md +10 -10
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-combine-iterations.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-early-exit.md +7 -7
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-hoist-regexp.md +6 -6
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-index-maps.md +6 -6
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-length-check-first.md +14 -14
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-min-max-loop.md +16 -16
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-set-map-lookups.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-tosorted-immutable.md +17 -17
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-activity.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-animate-svg-wrapper.md +11 -11
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-conditional-render.md +8 -8
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-content-visibility.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-hoist-jsx.md +6 -6
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-hydration-no-flicker.md +14 -14
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-svg-precision.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-defer-reads.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-dependencies.md +7 -7
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-derived-state.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-functional-setstate.md +34 -34
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-lazy-state-init.md +15 -15
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-memo.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-transitions.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-after-nonblocking.md +24 -24
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-cache-lru.md +10 -10
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-cache-react.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-parallel-fetching.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-serialization.md +6 -6
- package/templates/.claude/skills/plan/SKILL.md +594 -0
- package/templates/.claude/skills/prd/SKILL.md +496 -0
- package/templates/.claude/skills/ralph/AGENTS.md +393 -0
- package/templates/.claude/skills/ralph/SKILL.md +1035 -0
- package/templates/.claude/skills/tanstack-start-react-best-practices/AGENTS.md +100 -121
- package/templates/.claude/skills/tanstack-start-react-best-practices/SKILL.md +139 -157
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-defer-await.md +22 -22
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-dependencies.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-loader.md +7 -7
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-parallel.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-barrel-imports.md +18 -18
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-conditional.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-defer-third-party.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-lazy-routes.md +12 -12
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-preload.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-event-listeners.md +9 -9
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-tanstack-query.md +12 -12
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-batch-dom-css.md +13 -13
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-function-results.md +14 -14
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-property-access.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-storage.md +10 -10
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-combine-iterations.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-early-exit.md +7 -7
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-hoist-regexp.md +6 -6
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-index-maps.md +6 -6
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-length-check-first.md +14 -14
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-min-max-loop.md +16 -16
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-set-map-lookups.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-tosorted-immutable.md +17 -17
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-animate-svg-wrapper.md +11 -11
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-conditional-render.md +8 -8
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-content-visibility.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-hoist-jsx.md +6 -6
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-svg-precision.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-defer-reads.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-dependencies.md +7 -7
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-derived-state.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-functional-setstate.md +34 -34
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-lazy-state-init.md +15 -15
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-memo.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-transitions.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-cache-lru.md +12 -12
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-deferred-data.md +14 -14
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-parallel-fetching.md +9 -9
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-serialization.md +6 -6
- package/templates/.claude/commands/agent-creator.md +0 -370
- package/templates/.claude/commands/command-creator.md +0 -524
- package/templates/.claude/commands/execute.md +0 -469
- package/templates/.claude/commands/git.md +0 -98
- package/templates/.claude/commands/plan.md +0 -526
- package/templates/.claude/commands/prd.md +0 -629
|
@@ -2,24 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
<context>
|
|
4
4
|
|
|
5
|
-
**Purpose:**
|
|
5
|
+
**Purpose:** Figma 디자인을 100% 정확하게 코드로 변환. Figma MCP로 디자인 토큰/레이아웃/에셋을 추출하여 픽셀 단위 정확도 보장.
|
|
6
6
|
|
|
7
|
-
**Trigger:**
|
|
7
|
+
**Trigger:** Figma 디자인 구현, 디자인 시스템 코드 생성, UI 컴포넌트 개발
|
|
8
8
|
|
|
9
9
|
**Key Features:**
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
**Critical Rules (
|
|
18
|
-
1.
|
|
19
|
-
2.
|
|
20
|
-
3.
|
|
21
|
-
4.
|
|
22
|
-
5.
|
|
10
|
+
- 픽셀 단위 정확도 (근사치 금지)
|
|
11
|
+
- 디자인 토큰 자동 추출 (Variables, Styles)
|
|
12
|
+
- 실제 에셋 다운로드 (AI 생성 금지)
|
|
13
|
+
- Auto Layout → Flexbox/Grid 정확한 매핑
|
|
14
|
+
- 반응형 디자인 필수 구현
|
|
15
|
+
- 에셋 WebP 압축 및 구조화
|
|
16
|
+
|
|
17
|
+
**Critical Rules (무조건 준수):**
|
|
18
|
+
1. 디자인을 임의로 해석하거나 "비슷하게" 만들지 않음
|
|
19
|
+
2. 모든 수치는 Figma에서 추출한 정확한 값 사용
|
|
20
|
+
3. 반응형 브레이크포인트 필수 구현 (모바일/태블릿/데스크톱)
|
|
21
|
+
4. 이미지는 반드시 WebP 압축 후 적재적소 폴더링
|
|
22
|
+
5. Figma 에셋만 사용 (AI 생성 절대 금지)
|
|
23
23
|
|
|
24
24
|
</context>
|
|
25
25
|
|
|
@@ -27,32 +27,32 @@
|
|
|
27
27
|
|
|
28
28
|
<prerequisites>
|
|
29
29
|
|
|
30
|
-
##
|
|
30
|
+
## 사전 준비
|
|
31
31
|
|
|
32
|
-
###
|
|
32
|
+
### Figma MCP 연결 확인
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
# Desktop MCP (
|
|
35
|
+
# Desktop MCP (로컬, 선택 기반)
|
|
36
36
|
claude mcp add --transport http figma-desktop http://127.0.0.1:3845/mcp
|
|
37
37
|
|
|
38
|
-
# Remote MCP (
|
|
38
|
+
# Remote MCP (클라우드)
|
|
39
39
|
claude mcp add --transport http figma-remote-mcp https://mcp.figma.com/mcp
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
**
|
|
43
|
-
1.
|
|
44
|
-
2.
|
|
45
|
-
3.
|
|
42
|
+
**Desktop MCP 활성화:**
|
|
43
|
+
1. Figma 데스크톱 앱 실행
|
|
44
|
+
2. 파일 열기 → Dev Mode 전환
|
|
45
|
+
3. Inspect 패널에서 "Enable desktop MCP server" 클릭
|
|
46
46
|
|
|
47
|
-
###
|
|
47
|
+
### Figma 파일 구조화 (디자이너 가이드)
|
|
48
48
|
|
|
49
|
-
|
|
|
50
|
-
|
|
51
|
-
| **Auto Layout** |
|
|
52
|
-
| **Variables** |
|
|
53
|
-
| **Components** |
|
|
54
|
-
| **Naming** |
|
|
55
|
-
| **Annotations** |
|
|
49
|
+
| 항목 | 필수 사항 |
|
|
50
|
+
|------|----------|
|
|
51
|
+
| **Auto Layout** | 모든 Frame에 Auto Layout 적용 |
|
|
52
|
+
| **Variables** | 색상/간격/폰트 크기를 Variables로 정의 |
|
|
53
|
+
| **Components** | 재사용 요소는 Component로 분리 |
|
|
54
|
+
| **Naming** | 레이어명: PascalCase (Button, CardHeader) |
|
|
55
|
+
| **Annotations** | 호버/클릭 등 인터랙션 주석으로 설명 |
|
|
56
56
|
|
|
57
57
|
</prerequisites>
|
|
58
58
|
|
|
@@ -60,18 +60,18 @@ claude mcp add --transport http figma-remote-mcp https://mcp.figma.com/mcp
|
|
|
60
60
|
|
|
61
61
|
<workflow>
|
|
62
62
|
|
|
63
|
-
##
|
|
63
|
+
## 워크플로우 (5단계)
|
|
64
64
|
|
|
65
|
-
### Phase 0:
|
|
65
|
+
### Phase 0: 프로젝트 환경 파악
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
**목표:** Vite/Next.js 환경 감지 및 기존 토큰 확인
|
|
68
68
|
|
|
69
69
|
```
|
|
70
|
-
1.
|
|
71
|
-
- Vite:
|
|
72
|
-
- Next.js:
|
|
70
|
+
1. 프레임워크 감지
|
|
71
|
+
- Vite: vite.config.js/ts 존재 여부 확인
|
|
72
|
+
- Next.js: next.config.js/ts 존재 여부 확인
|
|
73
73
|
|
|
74
|
-
2.
|
|
74
|
+
2. globals.css 위치 파악
|
|
75
75
|
Vite:
|
|
76
76
|
- src/index.css
|
|
77
77
|
- src/main.css
|
|
@@ -81,7 +81,7 @@ claude mcp add --transport http figma-remote-mcp https://mcp.figma.com/mcp
|
|
|
81
81
|
- app/globals.css (App Router)
|
|
82
82
|
- styles/globals.css (Pages Router)
|
|
83
83
|
|
|
84
|
-
3.
|
|
84
|
+
3. 기존 @theme 블록 확인
|
|
85
85
|
@import "tailwindcss";
|
|
86
86
|
|
|
87
87
|
@theme {
|
|
@@ -90,76 +90,76 @@ claude mcp add --transport http figma-remote-mcp https://mcp.figma.com/mcp
|
|
|
90
90
|
...
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
4.
|
|
94
|
-
-
|
|
95
|
-
-
|
|
93
|
+
4. Tailwind CSS 버전 확인
|
|
94
|
+
- v4 사용 확인 (package.json에서 tailwindcss: ^4.0.0)
|
|
95
|
+
- v4 아닐 경우 업그레이드 권장
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
**Tailwind v4
|
|
99
|
-
-
|
|
100
|
-
-
|
|
101
|
-
- **
|
|
98
|
+
**Tailwind v4 특징:**
|
|
99
|
+
- **설정 파일 없음**: tailwind.config.js 제거 → CSS 파일에 @theme 직접 작성
|
|
100
|
+
- **자동 클래스 생성**: `@theme { --color-primary: #xxx; }` → `bg-primary` 자동
|
|
101
|
+
- **globals.css 통합**: 모든 토큰을 한 곳에서 관리
|
|
102
102
|
|
|
103
|
-
### Phase 1: Extract
|
|
103
|
+
### Phase 1: 분석 (Extract)
|
|
104
104
|
|
|
105
|
-
|
|
105
|
+
**목표:** Figma에서 정확한 디자인 데이터 추출
|
|
106
106
|
|
|
107
107
|
```
|
|
108
|
-
1.
|
|
109
|
-
- Desktop MCP:
|
|
110
|
-
- Remote MCP:
|
|
108
|
+
1. Figma 파일/컴포넌트 선택 확인
|
|
109
|
+
- Desktop MCP: 레이어 선택 후 작업
|
|
110
|
+
- Remote MCP: 파일 URL 제공
|
|
111
111
|
|
|
112
|
-
2.
|
|
113
|
-
-
|
|
114
|
-
-
|
|
115
|
-
-
|
|
112
|
+
2. Variables & Styles 추출
|
|
113
|
+
- 색상: Color Variables → CSS Variables / Tailwind config
|
|
114
|
+
- 타이포그래피: Text Styles → font-size, line-height, weight
|
|
115
|
+
- 간격: Spacing Variables → margin, padding, gap
|
|
116
116
|
|
|
117
|
-
3.
|
|
117
|
+
3. Auto Layout 구조 파악
|
|
118
118
|
- Direction: Horizontal → flex-row, Vertical → flex-col
|
|
119
119
|
- Alignment: align-items, justify-content
|
|
120
|
-
- Spacing: gap
|
|
120
|
+
- Spacing: gap 값
|
|
121
121
|
|
|
122
|
-
4.
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
122
|
+
4. 에셋 목록 생성
|
|
123
|
+
- 이미지: 다운로드 링크 추출
|
|
124
|
+
- 아이콘: SVG export
|
|
125
|
+
- 로고/일러스트: PNG/WebP
|
|
126
|
+
- 에셋 타입별 분류 (hero/icons/logos/illustrations)
|
|
127
127
|
|
|
128
|
-
5.
|
|
129
|
-
|
|
128
|
+
5. 반응형 브레이크포인트 확인 (필수)
|
|
129
|
+
Figma Constraints 분석:
|
|
130
130
|
- Mobile: 320px ~ 767px
|
|
131
131
|
- Tablet: 768px ~ 1023px
|
|
132
132
|
- Desktop: 1024px+
|
|
133
133
|
|
|
134
|
-
|
|
135
|
-
-
|
|
136
|
-
-
|
|
137
|
-
-
|
|
138
|
-
-
|
|
134
|
+
각 브레이크포인트별 확인:
|
|
135
|
+
- 레이아웃 변화 (Grid → List, Horizontal → Vertical)
|
|
136
|
+
- 폰트 크기 변화
|
|
137
|
+
- 간격 조정
|
|
138
|
+
- 숨김/표시 요소
|
|
139
139
|
```
|
|
140
140
|
|
|
141
|
-
|
|
141
|
+
**상세:** [references/figma-mcp-tools.md](references/figma-mcp-tools.md)
|
|
142
142
|
|
|
143
|
-
### Phase 2: Structure
|
|
143
|
+
### Phase 2: 구조화 (Structure)
|
|
144
144
|
|
|
145
|
-
|
|
145
|
+
**목표:** Figma Frame 계층 → React 컴포넌트 구조 + Tailwind v4 토큰 생성
|
|
146
146
|
|
|
147
147
|
```
|
|
148
|
-
1.
|
|
148
|
+
1. Frame Hierarchy 분석
|
|
149
149
|
Frame "Header"
|
|
150
150
|
├─ Frame "Logo" → <div className="logo">
|
|
151
151
|
├─ Frame "Navigation" → <nav>
|
|
152
152
|
└─ Frame "Actions" → <div className="actions">
|
|
153
153
|
|
|
154
|
-
2. Design Tokens → @theme
|
|
154
|
+
2. Design Tokens → @theme 블록 (Tailwind v4)
|
|
155
155
|
|
|
156
|
-
A.
|
|
157
|
-
-
|
|
158
|
-
-
|
|
156
|
+
A. globals.css 확인
|
|
157
|
+
- 기존 @theme 블록이 있으면 병합
|
|
158
|
+
- 없으면 새로 생성
|
|
159
159
|
|
|
160
|
-
B.
|
|
160
|
+
B. Figma Variables → @theme 매핑
|
|
161
161
|
|
|
162
|
-
Vite (src/index.css
|
|
162
|
+
Vite (src/index.css 또는 src/main.css):
|
|
163
163
|
```css
|
|
164
164
|
@import "tailwindcss";
|
|
165
165
|
|
|
@@ -181,8 +181,8 @@ claude mcp add --transport http figma-remote-mcp https://mcp.figma.com/mcp
|
|
|
181
181
|
--font-weight-regular: 400;
|
|
182
182
|
--font-weight-semibold: 600;
|
|
183
183
|
|
|
184
|
-
/*
|
|
185
|
-
/* --color-brand: #xxx; (
|
|
184
|
+
/* 기존 토큰이 있다면 충돌 방지 */
|
|
185
|
+
/* --color-brand: #xxx; (기존) */
|
|
186
186
|
}
|
|
187
187
|
```
|
|
188
188
|
|
|
@@ -191,140 +191,140 @@ claude mcp add --transport http figma-remote-mcp https://mcp.figma.com/mcp
|
|
|
191
191
|
@import "tailwindcss";
|
|
192
192
|
|
|
193
193
|
@theme {
|
|
194
|
-
/*
|
|
194
|
+
/* 동일한 구조 */
|
|
195
195
|
}
|
|
196
196
|
```
|
|
197
197
|
|
|
198
|
-
C.
|
|
198
|
+
C. 자동 클래스 생성 확인
|
|
199
199
|
@theme { --color-primary: #3182F6; }
|
|
200
|
-
→ bg-primary, text-primary, border-primary
|
|
200
|
+
→ bg-primary, text-primary, border-primary 자동 생성
|
|
201
201
|
|
|
202
|
-
D.
|
|
202
|
+
D. 기존 globals.css 토큰 병합
|
|
203
203
|
```css
|
|
204
204
|
@theme {
|
|
205
|
-
/*
|
|
205
|
+
/* 기존 토큰 (유지) */
|
|
206
206
|
--color-brand: #FF5733;
|
|
207
207
|
|
|
208
|
-
/*
|
|
208
|
+
/* Figma에서 추출한 토큰 (추가) */
|
|
209
209
|
--color-primary: #3182F6;
|
|
210
210
|
--spacing-md: 16px;
|
|
211
211
|
}
|
|
212
212
|
```
|
|
213
213
|
|
|
214
|
-
3. Component
|
|
215
|
-
-
|
|
216
|
-
-
|
|
214
|
+
3. Component 분리 기준
|
|
215
|
+
- 재사용 가능 → 별도 컴포넌트
|
|
216
|
+
- 한 번만 사용 → inline
|
|
217
217
|
```
|
|
218
218
|
|
|
219
|
-
|
|
219
|
+
**상세:**
|
|
220
220
|
- [references/design-tokens.md](references/design-tokens.md)
|
|
221
221
|
- [references/layout-mapping.md](references/layout-mapping.md)
|
|
222
222
|
|
|
223
|
-
### Phase 3: Implement
|
|
223
|
+
### Phase 3: 구현 (Implement)
|
|
224
224
|
|
|
225
|
-
|
|
225
|
+
**목표:** 정확한 수치로 코드 작성
|
|
226
226
|
|
|
227
|
-
####
|
|
227
|
+
#### 레이아웃 구현
|
|
228
228
|
|
|
229
229
|
```tsx
|
|
230
|
-
// ❌
|
|
230
|
+
// ❌ 임의의 값
|
|
231
231
|
<div className="flex gap-4 p-6">
|
|
232
232
|
|
|
233
|
-
// ✅
|
|
233
|
+
// ✅ Figma 정확한 값
|
|
234
234
|
<div className="flex gap-[18px] p-[24px]">
|
|
235
235
|
</div>
|
|
236
236
|
```
|
|
237
237
|
|
|
238
|
-
####
|
|
238
|
+
#### 색상 구현
|
|
239
239
|
|
|
240
240
|
```tsx
|
|
241
|
-
// ❌
|
|
241
|
+
// ❌ 비슷한 색상
|
|
242
242
|
<button className="bg-blue-500">
|
|
243
243
|
|
|
244
|
-
// ✅ @theme
|
|
244
|
+
// ✅ @theme 토큰 (Tailwind v4)
|
|
245
245
|
<button className="bg-primary">
|
|
246
246
|
|
|
247
|
-
// ✅
|
|
247
|
+
// ✅ 또는 정확한 HEX
|
|
248
248
|
<button className="bg-[#3182F6]">
|
|
249
249
|
```
|
|
250
250
|
|
|
251
|
-
####
|
|
251
|
+
#### 타이포그래피 구현
|
|
252
252
|
|
|
253
253
|
```tsx
|
|
254
|
-
// ❌
|
|
254
|
+
// ❌ 근사치
|
|
255
255
|
<h1 className="text-2xl font-bold">
|
|
256
256
|
|
|
257
|
-
// ✅
|
|
257
|
+
// ✅ 정확한 값
|
|
258
258
|
<h1 className="text-[28px] leading-[36px] font-semibold tracking-[-0.02em]">
|
|
259
259
|
```
|
|
260
260
|
|
|
261
|
-
####
|
|
261
|
+
#### 에셋 처리 (필수)
|
|
262
262
|
|
|
263
|
-
**1.
|
|
263
|
+
**1. Figma에서 에셋 다운로드**
|
|
264
264
|
```bash
|
|
265
|
-
#
|
|
266
|
-
get_images →
|
|
265
|
+
# Figma MCP로 이미지 다운로드 링크 생성
|
|
266
|
+
get_images → 다운로드 URL 획득
|
|
267
267
|
```
|
|
268
268
|
|
|
269
|
-
**2. WebP
|
|
269
|
+
**2. WebP 압축 (필수)**
|
|
270
270
|
|
|
271
|
-
|
|
271
|
+
**주의:** PNG/JPG/JPEG 파일만 WebP로 압축합니다. SVG 파일은 변환하지 않고 그대로 사용합니다.
|
|
272
272
|
|
|
273
273
|
```bash
|
|
274
|
-
#
|
|
274
|
+
# cwebp 사용 (Google WebP)
|
|
275
275
|
cwebp -q 80 input.png -o output.webp
|
|
276
276
|
cwebp -q 80 input.jpg -o output.webp
|
|
277
277
|
|
|
278
|
-
#
|
|
278
|
+
# 또는 ImageMagick
|
|
279
279
|
convert input.png -quality 80 output.webp
|
|
280
280
|
convert input.jpg -quality 80 output.webp
|
|
281
281
|
|
|
282
|
-
#
|
|
282
|
+
# 일괄 변환 (PNG/JPG/JPEG만, SVG 제외)
|
|
283
283
|
for file in *.{png,jpg,jpeg}; do
|
|
284
284
|
[ -f "$file" ] || continue
|
|
285
285
|
cwebp -q 80 "$file" -o "${file%.*}.webp"
|
|
286
286
|
done
|
|
287
287
|
```
|
|
288
288
|
|
|
289
|
-
|
|
290
|
-
|
|
|
291
|
-
|
|
292
|
-
| Hero
|
|
293
|
-
|
|
|
294
|
-
|
|
|
289
|
+
**압축 품질 가이드:**
|
|
290
|
+
| 용도 | 품질 | 용량 |
|
|
291
|
+
|------|------|------|
|
|
292
|
+
| Hero 이미지 | 85-90 | 고화질 |
|
|
293
|
+
| 일반 이미지 | 75-85 | 균형 |
|
|
294
|
+
| 썸네일 | 60-75 | 최적화 |
|
|
295
295
|
|
|
296
|
-
**3.
|
|
296
|
+
**3. public 폴더 구조화 (필수)**
|
|
297
297
|
```
|
|
298
298
|
public/
|
|
299
299
|
├── images/
|
|
300
|
-
│ ├── hero/ # Hero
|
|
300
|
+
│ ├── hero/ # Hero 섹션 이미지
|
|
301
301
|
│ │ ├── banner.webp
|
|
302
302
|
│ │ └── background.webp
|
|
303
|
-
│ ├── products/ #
|
|
303
|
+
│ ├── products/ # 제품 이미지
|
|
304
304
|
│ │ ├── product-1.webp
|
|
305
305
|
│ │ └── product-2.webp
|
|
306
|
-
│ ├── team/ #
|
|
306
|
+
│ ├── team/ # 팀 사진
|
|
307
307
|
│ │ └── member-1.webp
|
|
308
|
-
│ └── thumbnails/ #
|
|
308
|
+
│ └── thumbnails/ # 썸네일
|
|
309
309
|
│ └── thumb-1.webp
|
|
310
|
-
├── icons/ #
|
|
310
|
+
├── icons/ # 아이콘 (SVG)
|
|
311
311
|
│ ├── social/
|
|
312
312
|
│ │ ├── facebook.svg
|
|
313
313
|
│ │ └── twitter.svg
|
|
314
314
|
│ └── ui/
|
|
315
315
|
│ ├── arrow.svg
|
|
316
316
|
│ └── close.svg
|
|
317
|
-
└── logos/ #
|
|
317
|
+
└── logos/ # 로고
|
|
318
318
|
├── logo.svg
|
|
319
319
|
└── logo-white.svg
|
|
320
320
|
```
|
|
321
321
|
|
|
322
|
-
**4.
|
|
322
|
+
**4. 코드에서 사용**
|
|
323
323
|
```tsx
|
|
324
|
-
// ❌ AI
|
|
324
|
+
// ❌ AI 생성/임의 이미지
|
|
325
325
|
<img src="/placeholder.jpg" alt="Hero" />
|
|
326
326
|
|
|
327
|
-
// ✅
|
|
327
|
+
// ✅ Figma 실제 에셋 + WebP + 구조화된 경로
|
|
328
328
|
<img
|
|
329
329
|
src="/images/hero/banner.webp"
|
|
330
330
|
alt="Hero Banner"
|
|
@@ -333,14 +333,14 @@ public/
|
|
|
333
333
|
loading="lazy"
|
|
334
334
|
/>
|
|
335
335
|
|
|
336
|
-
//
|
|
336
|
+
// 아이콘
|
|
337
337
|
<img src="/icons/ui/arrow.svg" alt="" width={24} height={24} />
|
|
338
338
|
|
|
339
|
-
//
|
|
339
|
+
// 로고
|
|
340
340
|
<img src="/logos/logo.svg" alt="Company Logo" width={120} height={40} />
|
|
341
341
|
```
|
|
342
342
|
|
|
343
|
-
**5.
|
|
343
|
+
**5. 반응형 이미지**
|
|
344
344
|
```tsx
|
|
345
345
|
<picture>
|
|
346
346
|
<source media="(min-width: 1024px)" srcSet="/images/hero/banner-desktop.webp" />
|
|
@@ -349,34 +349,34 @@ public/
|
|
|
349
349
|
</picture>
|
|
350
350
|
```
|
|
351
351
|
|
|
352
|
-
### Phase 4: Verify
|
|
352
|
+
### Phase 4: 검증 (Verify)
|
|
353
353
|
|
|
354
|
-
|
|
354
|
+
**목표:** 디자인과 코드의 정확도 검증
|
|
355
355
|
|
|
356
356
|
```
|
|
357
|
-
|
|
358
|
-
□
|
|
359
|
-
□
|
|
360
|
-
□
|
|
361
|
-
□
|
|
362
|
-
|
|
363
|
-
□
|
|
364
|
-
□
|
|
365
|
-
□ WebP
|
|
366
|
-
□ public/
|
|
367
|
-
□
|
|
368
|
-
□
|
|
369
|
-
|
|
370
|
-
□
|
|
371
|
-
□ Mobile (320-767px)
|
|
372
|
-
□ Tablet (768-1023px)
|
|
373
|
-
□ Desktop (1024px+)
|
|
374
|
-
□
|
|
375
|
-
□
|
|
376
|
-
□
|
|
357
|
+
체크리스트:
|
|
358
|
+
□ 색상: Figma Color Picker와 Dev Tools 비교
|
|
359
|
+
□ 간격: 모든 margin/padding/gap 값 일치
|
|
360
|
+
□ 폰트: size, weight, line-height 정확히 일치
|
|
361
|
+
□ 레이아웃: Auto Layout 구조 그대로 반영
|
|
362
|
+
|
|
363
|
+
□ 에셋 (필수):
|
|
364
|
+
□ Figma에서 다운로드한 실제 파일 사용
|
|
365
|
+
□ WebP 압축 완료 (PNG/JPG → WebP)
|
|
366
|
+
□ public/ 폴더 구조화 (images/icons/logos)
|
|
367
|
+
□ 파일명 명확 (hero-banner.webp, product-1.webp)
|
|
368
|
+
□ 적절한 압축 품질 (hero: 85-90, 일반: 75-85)
|
|
369
|
+
|
|
370
|
+
□ 반응형 (필수):
|
|
371
|
+
□ Mobile (320-767px) 레이아웃 확인
|
|
372
|
+
□ Tablet (768-1023px) 레이아웃 확인
|
|
373
|
+
□ Desktop (1024px+) 레이아웃 확인
|
|
374
|
+
□ 미디어 쿼리 정확한 브레이크포인트
|
|
375
|
+
□ 반응형 이미지 (<picture> 또는 srcSet)
|
|
376
|
+
□ 모든 디바이스에서 Figma 디자인 일치
|
|
377
377
|
```
|
|
378
378
|
|
|
379
|
-
|
|
379
|
+
**상세:** [references/verification.md](references/verification.md)
|
|
380
380
|
|
|
381
381
|
</workflow>
|
|
382
382
|
|
|
@@ -384,69 +384,69 @@ Checklist:
|
|
|
384
384
|
|
|
385
385
|
<best_practices>
|
|
386
386
|
|
|
387
|
-
##
|
|
387
|
+
## 베스트 프랙티스
|
|
388
388
|
|
|
389
389
|
### DO
|
|
390
390
|
|
|
391
|
-
|
|
|
392
|
-
|
|
393
|
-
| **Exact Values** |
|
|
394
|
-
| **@theme First** | Figma Variables → @theme
|
|
395
|
-
| **Merge Existing Tokens** |
|
|
396
|
-
| **Extract Before Implement** |
|
|
397
|
-
| **WebP Only** |
|
|
398
|
-
| **Structured Assets** |
|
|
399
|
-
| **Responsive Required** |
|
|
400
|
-
| **Cross-Validate** | Figma Dev Mode + MCP +
|
|
401
|
-
| **Document Mapping** |
|
|
391
|
+
| 원칙 | 설명 |
|
|
392
|
+
|------|------|
|
|
393
|
+
| **Exact Values** | `px-4` 대신 `px-[18px]` (정확한 값) |
|
|
394
|
+
| **@theme First** | Figma Variables → @theme 블록 (Tailwind v4) |
|
|
395
|
+
| **Merge Existing Tokens** | globals.css 기존 토큰 유지 + 새 토큰 병합 |
|
|
396
|
+
| **Extract Before Implement** | 구현 전 모든 토큰/에셋 추출 완료 |
|
|
397
|
+
| **WebP Only** | 모든 이미지 WebP 압축 (PNG/JPG 금지) |
|
|
398
|
+
| **Structured Assets** | public/images/[category]/ 폴더 구조 |
|
|
399
|
+
| **Responsive Required** | Mobile/Tablet/Desktop 모두 구현 |
|
|
400
|
+
| **Cross-Validate** | Figma Dev Mode + MCP + 수동 확인 |
|
|
401
|
+
| **Document Mapping** | 주석으로 Figma 속성 명시 |
|
|
402
402
|
|
|
403
403
|
### DON'T
|
|
404
404
|
|
|
405
|
-
|
|
|
406
|
-
|
|
407
|
-
|
|
|
408
|
-
| **AI
|
|
409
|
-
| **PNG/JPG
|
|
410
|
-
| **
|
|
411
|
-
|
|
|
412
|
-
|
|
|
413
|
-
| **Tailwind
|
|
414
|
-
| **
|
|
415
|
-
|
|
|
405
|
+
| 금지 사항 | 이유 |
|
|
406
|
+
|----------|------|
|
|
407
|
+
| **근사치 사용** | "비슷한 값"은 디자인 불일치 유발 |
|
|
408
|
+
| **AI 생성 에셋** | 디자이너가 제작한 실제 에셋만 사용 |
|
|
409
|
+
| **PNG/JPG 사용** | 반드시 WebP 압축 후 사용 |
|
|
410
|
+
| **public/ 루트에 이미지** | 폴더 구조화 필수 (images/icons/logos) |
|
|
411
|
+
| **반응형 생략** | Mobile/Tablet/Desktop 모두 필수 |
|
|
412
|
+
| **임의 해석** | Auto Layout 무시하고 수동 레이아웃 |
|
|
413
|
+
| **Tailwind 기본값** | `gap-4` 대신 정확한 `gap-[18px]` |
|
|
414
|
+
| **tailwind.config.js 사용** | Tailwind v4는 @theme 블록 사용 |
|
|
415
|
+
| **기존 토큰 덮어쓰기** | globals.css 기존 토큰 유지 필수 |
|
|
416
416
|
|
|
417
|
-
###
|
|
417
|
+
### 프롬프트 예시
|
|
418
418
|
|
|
419
419
|
```
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
- Vite/Next.js (
|
|
424
|
-
- Tailwind CSS v4
|
|
425
|
-
-
|
|
426
|
-
|
|
427
|
-
Critical Rules (
|
|
428
|
-
1. Phase 0:
|
|
429
|
-
2. Phase 1:
|
|
430
|
-
3. Phase 2:
|
|
431
|
-
4. Phase 3:
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
-
|
|
435
|
-
-
|
|
436
|
-
-
|
|
437
|
-
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
- Mobile (320-767px):
|
|
441
|
-
- Tablet (768-1023px):
|
|
442
|
-
- Desktop (1024px+):
|
|
443
|
-
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
-
|
|
447
|
-
-
|
|
448
|
-
-
|
|
449
|
-
- @theme
|
|
420
|
+
이 Figma 컴포넌트를 코드로 만들어줘.
|
|
421
|
+
|
|
422
|
+
환경:
|
|
423
|
+
- Vite/Next.js (프로젝트 구조 확인)
|
|
424
|
+
- Tailwind CSS v4 사용
|
|
425
|
+
- globals.css 기존 토큰 유지
|
|
426
|
+
|
|
427
|
+
Critical Rules (무조건 준수):
|
|
428
|
+
1. Phase 0: 프로젝트 환경 파악 (Vite/Next.js, globals.css 위치)
|
|
429
|
+
2. Phase 1: Figma MCP로 Variables, Text Styles, Auto Layout, 브레이크포인트 추출
|
|
430
|
+
3. Phase 2: @theme 블록에 토큰 추가 (기존 토큰 병합)
|
|
431
|
+
4. Phase 3: 모든 수치는 정확히 일치 (근사치 금지)
|
|
432
|
+
|
|
433
|
+
에셋 처리 (필수):
|
|
434
|
+
- Figma에서 다운로드 (AI 생성 절대 금지)
|
|
435
|
+
- PNG/JPG → WebP 압축 (품질 75-90)
|
|
436
|
+
- public/images/[category]/ 구조화
|
|
437
|
+
- 파일명 명확 (hero-banner.webp, product-1.webp)
|
|
438
|
+
|
|
439
|
+
반응형 (필수):
|
|
440
|
+
- Mobile (320-767px): 레이아웃 변화 확인
|
|
441
|
+
- Tablet (768-1023px): 레이아웃 변화 확인
|
|
442
|
+
- Desktop (1024px+): 레이아웃 변화 확인
|
|
443
|
+
- 반응형 이미지 (<picture> 또는 srcSet)
|
|
444
|
+
|
|
445
|
+
검증:
|
|
446
|
+
- 색상/간격/폰트: Figma와 100% 일치
|
|
447
|
+
- 에셋: WebP 압축 및 폴더 구조 확인
|
|
448
|
+
- 반응형: 모든 디바이스에서 Figma 디자인 일치
|
|
449
|
+
- @theme 토큰 자동 클래스 생성 확인
|
|
450
450
|
```
|
|
451
451
|
|
|
452
452
|
</best_practices>
|
|
@@ -455,15 +455,15 @@ Validation:
|
|
|
455
455
|
|
|
456
456
|
<troubleshooting>
|
|
457
457
|
|
|
458
|
-
##
|
|
458
|
+
## 문제 해결
|
|
459
459
|
|
|
460
|
-
|
|
|
461
|
-
|
|
462
|
-
| MCP
|
|
463
|
-
|
|
|
464
|
-
|
|
|
465
|
-
|
|
|
466
|
-
|
|
|
460
|
+
| 문제 | 원인 | 해결 |
|
|
461
|
+
|------|------|------|
|
|
462
|
+
| MCP 연결 안 됨 | Desktop MCP 미활성화 | Figma Dev Mode에서 Enable |
|
|
463
|
+
| 색상 불일치 | Variables 대신 직접 색상 사용 | Variables 먼저 추출 |
|
|
464
|
+
| 간격 오차 | Tailwind 기본값 사용 | 정확한 px 값으로 override |
|
|
465
|
+
| 레이아웃 깨짐 | Auto Layout 구조 무시 | Frame 계층 그대로 변환 |
|
|
466
|
+
| 에셋 누락 | export 설정 미확인 | Export Settings 확인 후 다운로드 |
|
|
467
467
|
|
|
468
468
|
</troubleshooting>
|
|
469
469
|
|
|
@@ -471,17 +471,17 @@ Validation:
|
|
|
471
471
|
|
|
472
472
|
<references>
|
|
473
473
|
|
|
474
|
-
##
|
|
474
|
+
## 상세 문서
|
|
475
475
|
|
|
476
|
-
|
|
|
477
|
-
|
|
478
|
-
| [figma-mcp-tools.md](references/figma-mcp-tools.md) | Figma MCP
|
|
479
|
-
| [design-tokens.md](references/design-tokens.md) | Variables/Styles
|
|
480
|
-
| [layout-mapping.md](references/layout-mapping.md) | Auto Layout → Flexbox/Grid
|
|
481
|
-
| [responsive-design.md](references/responsive-design.md) |
|
|
482
|
-
| [verification.md](references/verification.md) |
|
|
476
|
+
| 문서 | 내용 |
|
|
477
|
+
|------|------|
|
|
478
|
+
| [figma-mcp-tools.md](references/figma-mcp-tools.md) | Figma MCP 도구 사용법, API 엔드포인트 |
|
|
479
|
+
| [design-tokens.md](references/design-tokens.md) | Variables/Styles 추출 및 Tailwind v4 매핑 |
|
|
480
|
+
| [layout-mapping.md](references/layout-mapping.md) | Auto Layout → Flexbox/Grid 변환 규칙 |
|
|
481
|
+
| [responsive-design.md](references/responsive-design.md) | 반응형 구현 가이드 (브레이크포인트, 이미지) |
|
|
482
|
+
| [verification.md](references/verification.md) | 디자인-코드 정확도 검증 체크리스트 |
|
|
483
483
|
|
|
484
|
-
##
|
|
484
|
+
## 외부 참조
|
|
485
485
|
|
|
486
486
|
- [Figma MCP Server Documentation](https://developers.figma.com/docs/figma-mcp-server/)
|
|
487
487
|
- [Design Tokens with Figma](https://blog.prototypr.io/design-tokens-with-figma-aef25c42430f)
|