워크플로우 전략
Design→Code, Code→Design, 양방향 동기화 - 세 가지 AI 워크플로우 비교
AI와 디자인 시스템을 결합하는 방식은 단일 방향이 아닙니다. 프로젝트 상황과 팀 구성에 따라 최적의 워크플로우가 다릅니다.
세 가지 워크플로우
| 워크플로우 | 적합한 상황 | 장점 | 단점 |
|---|---|---|---|
| Design → Code | 디자이너 주도, 브랜드 중심 | 시각적 완성도 높음 | 개발 병목 발생 |
| Code → Design | 개발자 주도, 빠른 MVP | 즉시 작동하는 결과물 | 디자인 일관성 관리 필요 |
| 양방향 동기화 | 제품/팀 규모↑, DS 성숙 단계 | 드리프트 최소화 | 구축/운영 복잡도 증가 |
다음 장 안내
디자인 시스템 자체를 AI로 빠르게 구축/진화시키는 전략(AI-First DS Evolution)은 다음 장 Ch6. AI 기반 DS 진화에서 별도로 다룹니다.
워크플로우 1: Design → Code
전통적 접근의 AI 강화
Figma Dev Mode + MCP 서버
Figma MCP 서버 (2025 베타)
Figma Dev Mode MCP 서버가 베타로 출시되어, AI 코딩 도구(Claude Code, Cursor 등)에서 Figma 디자인 파일의 컨텍스트를 직접 가져올 수 있습니다. Annotation(접근성, 동작, 콘텐츠 정보)도 AI 코드 생성에 활용됩니다. 또한 Figma Git 네이티브 통합으로 디자이너가 GitHub/GitLab에 직접 브랜치·커밋·머지할 수 있습니다.
// Figma에서 추출된 컴포넌트 명세
{
"component": "Card",
"variant": "elevated",
"properties": {
"padding": "{spacing.4}",
"borderRadius": "{radius.lg}",
"shadow": "{shadow.md}"
},
"slots": {
"header": { "component": "CardHeader" },
"content": { "component": "CardContent" },
"footer": { "component": "CardFooter" }
}
}코드 생성 프롬프트
## Task
Figma 명세를 기반으로 React 컴포넌트를 생성하세요.
## Design Spec
{figma_json}
## Constraints
1. 디자인 시스템 컴포넌트만 사용
2. 하드코딩 금지, 토큰 참조
3. TypeScript strict mode
4. 접근성 요구사항 충족
## Output
완전한 TSX 컴포넌트 코드적합한 상황
- 브랜드 가이드라인이 엄격한 프로젝트
- 디자이너가 주도하는 팀
- 시각적 완성도가 최우선인 제품
- 기존 디자인 시스템이 있는 경우
워크플로우 2: Code → Design (바이브코딩)
개발 먼저, 디자인은 나중에
사례: 바이브코딩 → Stitch
1단계: 바이브코딩으로 빠르게 구현
# Claude Code로 대시보드 구현
> "사용자 분석 대시보드를 만들어줘.
- 상단에 KPI 카드 4개
- 중간에 차트 2개 (막대, 선)
- 하단에 최근 활동 테이블"AI가 shadcn/ui 기반으로 즉시 작동하는 UI를 생성합니다.
2단계: Stitch로 디자인 에셋 생성
// Stitch MCP를 통한 디자인 생성
const screen = await stitch.generateScreenFromText({
projectId: 'my-project',
prompt: `
대시보드 화면을 디자인해줘:
- 상단: KPI 카드 4개 (매출, 사용자, 전환율, 이탈률)
- 중간: 막대 차트 + 선 차트
- 하단: 데이터 테이블
- 스타일: 미니멀, 다크 모드 지원
`,
deviceType: 'DESKTOP',
})3단계: 디자인 시스템으로 역추출
// 생성된 UI에서 토큰 추출
const extractedTokens = analyzeGeneratedUI({
colors: extractColors(screen),
spacing: extractSpacing(screen),
typography: extractTypography(screen),
})
// 디자인 시스템에 반영
await updateDesignTokens(extractedTokens)Stitch MCP 활용 패턴
실전 패턴: 컴포넌트 디자인 생성
// 1. 프로젝트 생성
const project = await mcp.stitch.create_project({
title: 'My Design System',
})
// 2. 컴포넌트별 스크린 생성
const components = [
'로그인 폼 - 이메일/비밀번호 입력, 소셜 로그인 버튼',
'사용자 프로필 카드 - 아바타, 이름, 역할, 통계',
'알림 드롭다운 - 읽음/안읽음, 시간, 액션 버튼',
'데이터 테이블 - 정렬, 필터, 페이지네이션',
]
for (const component of components) {
await mcp.stitch.generate_screen_from_text({
projectId: project.name.split('/')[1],
prompt: component,
deviceType: 'DESKTOP',
})
}
// 3. 생성된 스크린 조회
const screens = await mcp.stitch.list_screens({
projectId: project.name.split('/')[1],
})적합한 상황
- MVP/프로토타입 단계
- 개발자 중심 팀
- 빠른 이터레이션이 필요한 스타트업
- "일단 작동하는 것" 우선
워크플로우 3: 양방향 동기화
Design ↔ Code 실시간 동기화
토큰 양방향 동기화
// figma-sync.ts
interface SyncConfig {
figmaFileId: string
tokensPath: string
direction: 'figma-to-code' | 'code-to-figma' | 'bidirectional'
}
async function syncTokens(config: SyncConfig) {
if (config.direction === 'figma-to-code' || config.direction === 'bidirectional') {
// Figma → Code
const figmaTokens = await fetchFigmaVariables(config.figmaFileId)
const codeTokens = transformToCodeFormat(figmaTokens)
await writeTokens(config.tokensPath, codeTokens)
}
if (config.direction === 'code-to-figma' || config.direction === 'bidirectional') {
// Code → Figma
const codeTokens = await readTokens(config.tokensPath)
const figmaVariables = transformToFigmaFormat(codeTokens)
await updateFigmaVariables(config.figmaFileId, figmaVariables)
}
}컴포넌트 변경 감지 및 동기화
// component-sync.ts
interface ComponentChange {
component: string
changeType: 'props' | 'styles' | 'structure'
source: 'design' | 'code'
diff: object
}
async function handleComponentChange(change: ComponentChange) {
if (change.source === 'design') {
// 디자인 변경 → 코드 업데이트
const updatedCode = await generateCodeFromDesign(change)
await createPullRequest({
title: `sync: Update ${change.component} from design`,
body: `디자인 변경사항 자동 동기화\n\n${JSON.stringify(change.diff, null, 2)}`,
files: updatedCode,
})
} else {
// 코드 변경 → 디자인 알림
await notifyDesigner({
component: change.component,
message: `코드에서 ${change.changeType} 변경됨. 디자인 업데이트 필요`,
diff: change.diff,
})
}
}워크플로우 선택 가이드
의사결정 매트릭스
| 질문 | Design→Code | Code→Design | 양방향 동기화 |
|---|---|---|---|
| 디자이너 주도? | ✅ 필수 | ❌ 불필요 | ✅ 필요 |
| 속도/MVP 우선? | ⚠️ 보통 | ✅ 매우 적합 | ⚪ 보통 |
| 디자인-코드 드리프트 허용 | ✅ 낮음 | ⚠️ 높음 | ✅ 매우 낮음 |
| 초기 구축 비용 | ⚪ 중간 | ✅ 낮음 | ❌ 높음 |
| 운영 복잡도 | ⚪ 중간 | ✅ 낮음 | ❌ 높음 |
검증 파이프라인 (공통)
어떤 워크플로우든 검증은 필수입니다.
CI 워크플로우
# .github/workflows/design-system-validate.yml
name: Design System Validation
on:
pull_request:
paths:
- 'packages/ui/**'
- 'tokens/**'
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Type Check
run: yarn tsc --noEmit
- name: Lint (DS Rules)
run: yarn lint:design-system
- name: Accessibility Audit
run: yarn test:a11y
- name: Visual Regression
run: yarn test:visualAI 코드 생성 도구 생태계
Figma Config 2025에서 발표된 주요 변화와 AI 코드 생성 도구 생태계가 빠르게 진화하고 있습니다.
Figma 신제품 (2025.05 Config)
- Figma Make: 프롬프트에서 인터랙티브 프로토타입/웹앱 생성. Figma 라이브러리와 통합되어 디자인 시스템 컴포넌트를 자동 활용하며, DB 연동으로 동적 프로토타입 제작 가능
- Figma Sites: AI 기반 웹사이트 제작 및 퍼블리싱 도구
- Figma Buzz: 마케팅팀을 위한 브랜드 일관성 유지 비주얼 에셋 대량 제작 도구
- Figma Draw: 향상된 벡터 편집 및 일러스트 도구
AI 앱 빌더 비교
| 도구 | 핵심 역할 | 강점 |
|---|---|---|
| v0.dev (Vercel) | UI 컴포넌트 생성 | React + Tailwind, 디자인 품질 우수 |
| Bolt.new (StackBlitz) | 풀스택 앱 빌더 | 라이브 IDE, Supabase 통합 |
| Lovable | 올인원 앱 빌더 | 비개발자 접근성 (8개월 만에 ARR $100M 달성) |
AI 생성 코드 보안 주의
AI 앱 빌더 시장 규모는 $47억(2026년 추정)에 달하지만, Veracode 연구에 따르면 AI 생성 코드의 45%에 보안 취약점이 포함되어 있습니다. 워크플로우에 반드시 보안 검증 단계를 포함하세요.
워크플로우별 도구 매핑
| 워크플로우 | 추천 도구 | 용도 |
|---|---|---|
| Design → Code | Figma MCP + Claude Code | 디자인 명세 기반 코드 생성 |
| Code → Design | Stitch + Figma Make | 코드에서 디자인 에셋 역생성 |
| 양방향 동기화 | Tokens Studio + Figma MCP | 토큰/컴포넌트 실시간 동기화 |
| 빠른 프로토타입 | v0.dev, Bolt.new, Lovable | 아이디어 → 작동 앱 즉시 생성 |