Convert Figma designs into production code using a structured pipeline: extract design tokens and layout into a Bridge IR, generate a coded plan, produce source files, and verify output with pixel-diff and DOM style checks. Optionally automates GitHub issue assignment and PR creation.
Figma MCP 또는 기록된 MCP 캐시를 사용해 Figma 디자인을 무손실 플랫폼 중립 Bridge IR(JSON)로 산출한다. 스타일·토큰·레이아웃·적응형 화면 조건·constraints·자산·텍스트 동작을 캡처하고 스크린샷과 교차검증한다. 웹, React, React Native, iOS, Android로 이어지는 딸깍 파이프라인 1단계에서 사용.
plan.md를 읽어 실제 코드를 생성한다. 파일 계획·구현 순서를 따르고, 컴포넌트 재사용을 우선하며 디자인 토큰을 코드 스타일로 매핑한다. 있으면 design.md 팀 컨벤션을 따르고 없어도 동작한다. verify 리포트가 있으면 짚어진 불일치만 규칙대로 고치는 fix 모드로도 동작한다. 딸깍 파이프라인 3단계, 또는 사용자가 plan.md로 구현을 요청하거나 verify 결과를 반영해달라 할 때 사용.
Figma URL을 받아 코드까지 한 번에(딸깍) 뽑는 전체 파이프라인을 실행한다. design.md → 디자인 브릿지(JSON) → plan.md → code → 검증을 순서대로 돌린다. 기본은 각 단계 사이에서 [skip / 계속]을 사용자에게 확인하는 gated 모드이고, `--auto`(자동 모드)를 주면 게이트 없이 끝까지 이어서 돌린다. 사용자가 "figma에서 코드 뽑아줘", "딸깍 돌려줘", "자동으로 돌려줘" 같이 전체 흐름을 원할 때 사용.
프로젝트의 팀 컨벤션 파일 design.md를 추출·확인한다. 이미 있으면 읽어서 요약하고, 없으면 템플릿으로 생성한다. 사용자가 "design.md 만들어줘/추출해줘", 또는 딸깍 파이프라인 0단계에서 사용.
검증 리포트를 바탕으로 파이프라인을 마무리한다. 남은 불일치 수정 여부를 확인하고, 산출물을 정리하며 최종 요약을 낸다. 딸깍 파이프라인 5단계에서 사용.
Based on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Ddalkak은 Figma URL을 입력하면 디자인 정보를 추출해 Bridge JSON으로 정리하고, 이를 기반으로 구현 계획, 코드 생성, 화면 검증까지 이어지도록 만든 퍼블리싱 자동화 플러그인입니다.
현재 기본 목표는 사람이 반복해서 퍼블리싱하지 않도록, Figma 디자인을 코드 생성 가능한 중간 표현으로 안정적으로 바꾸는 것입니다.
flowchart LR
A["Figma URL"] --> B["Bridge"]
B --> C["bridge.json"]
C --> D["Plan"]
D --> E["plan.md"]
E --> F["Code"]
F --> G["React/Web/Native code"]
G --> H["Verify"]
H --> I{"통과?"}
I -- "예" --> J["Finalize"]
I -- "아니오" --> K["Fix only diffs"]
K --> H
| 단계 | 명령 | 입력 | 출력 | 설명 |
|---|---|---|---|---|
| 0 | /ddalkak:design-md | 프로젝트 코드베이스 | design.md | 기술 스택과 구현 기준을 정리합니다. |
| 1 | /ddalkak:bridge | Figma URL 1개 이상 | .ddalkak/bridge/<name>.bridge.json | Figma 디자인을 플랫폼 중립 Bridge JSON으로 변환합니다. 같은 화면의 상태 변형 프레임이면 여러 URL을 하나의 bridge로 병합합니다. |
| 2 | /ddalkak:plan | Bridge JSON, design.md | .ddalkak/plan/<name>.plan.md | 구현 계획을 만듭니다. |
| 3 | /ddalkak:code | Plan, design.md | 프로젝트 코드 | 실제 코드를 생성합니다. |
| 4 | /ddalkak:verify | 코드, Bridge JSON | .ddalkak/reports/<name>.verify.md | 생성 화면을 디자인 기준과 비교합니다. |
| 5 | /ddalkak:finalize | Verify 결과 | 최종 요약 | 완료 상태와 남은 이슈를 정리합니다. |
자세한 사용자 흐름은 docs/ddalkak-user-flow.md를 참고합니다.
앱 검증까지 확장하는 방식은 docs/platform-verify.md를 참고합니다. 현재 구현된 캡처 provider는 Web과 Flutter(웹 빌드)이며 둘 다 Playwright로 캡처합니다. Flutter는 canvas 렌더링이라 DOM 스냅샷 없이 픽셀 비교만으로 판정합니다. Android Native, iOS Native, React Native는 verify.targets 계약을 먼저 정의하고 provider를 추가하는 구조입니다.
Bridge는 Figma와 코드 생성 단계 사이의 번역 계층입니다. Figma 원본을 그대로 코드로 만들면 Web, React Native, iOS, Android 같은 대상 환경마다 해석이 달라질 수 있으므로, 먼저 공통으로 읽을 수 있는 Bridge JSON으로 정리합니다.
Bridge JSON에는 다음 정보가 들어갑니다.
| 분류 | 포함 정보 |
|---|---|
| 구조 | page, section, frame, group, component, instance |
| 레이아웃 | bbox, size, auto layout, grid, gap, padding |
| 반응형 | constraints, sizing, adaptive group, breakpoint, matchKey |
| 스타일 | color, typography, radius, shadow, stroke, opacity |
| 텍스트 | content, font, line height, wrapping, overflow |
| 에셋 | image, icon, screenshot, export path, asset fit |
| 의미 | hero, card, button, input, navigation, list 같은 semantic role |
| 검증 | schema version, completeness, errors, confidence |
Web과 Flutter(웹 빌드)는 브라우저에서 바로 스크린샷을 찍을 수 있지만, Android Native, iOS Native, React Native는 각 플랫폼의 실행 환경이 필요합니다. Ddalkak은 이를 verify.targets로 표현합니다.
{
"verify": {
"defaultTarget": "web",
"targets": [
{
"id": "web",
"platform": "web",
"screenshotProvider": "playwright",
"entry": { "type": "url", "url": "http://localhost:5173" }
},
{
"id": "ios-preview",
"platform": "ios-native",
"screenshotProvider": "simctl",
"entry": { "type": "deepLink", "url": "ddalkak://preview?screen=home" }
}
]
}
}
즉 비교 엔진은 공통으로 유지하고, 화면을 띄워 스크린샷을 가져오는 부분만 플랫폼별 provider로 분리합니다. 앱 검증을 하려면 코드 생성 단계에서 ddalkak://preview?screen=<name> 같은 검수용 진입점도 함께 만들어야 합니다.
캐시 기반 테스트만 돌릴 때는 Figma MCP가 없어도 됩니다.
저장소를 받은 뒤 루트에서 의존성을 설치합니다.
npm install
샌드박스 앱 의존성도 설치합니다.
cd sandbox
npm install
cd ..
캐시 기반 Bridge 회귀 테스트를 실행합니다.
npm run test:bridge:cache
정상이라면 다음과 비슷한 결과가 나옵니다.
bridge cache regression passed: 204 nodes, 10 assets
저장된 Figma 캐시를 사용해 샌드박스 프로젝트에 Bridge JSON을 생성합니다.
npm run bridge:cache -- --cache fixtures/figma/untitled-1-858 --project sandbox --name pc-home --force
정상 결과 예시는 다음과 같습니다.
{
"source": "cache",
"mcpCalls": 0,
"nodes": 204,
"validation": "pass",
"warnings": 0
}
생성된 파일은 다음 위치에서 확인할 수 있습니다.
sandbox/.ddalkak/bridge/pc-home.bridge.json
샌드박스 화면을 실행하려면 다음 명령을 사용합니다.
cd sandbox
npm run dev
Vite가 출력하는 로컬 URL을 브라우저에서 열어 결과 화면을 확인합니다.
Claude Code에서 이 저장소를 플러그인 디렉터리로 직접 로드할 수 있습니다. <repo-path>는 각자 clone 받은 Ddalkak 저장소의 절대 경로로 바꿉니다.
claude --plugin-dir <repo-path>
Claude Code 안에서 플러그인이 보이는지 확인합니다.
/ddalkak
또는 마켓플레이스 방식으로 등록해 설치할 수 있습니다.
/plugin marketplace add <repo-path>
/plugin install ddalkak@ddalkak-marketplace
스킬이나 agent 파일을 수정한 뒤에는 Claude Code에서 다시 로드합니다.
/reload-plugins
새 Figma 페이지를 live로 캡처하려면 Figma MCP가 필요합니다.
claude mcp add --transport http figma https://mcp.figma.com/mcp
Claude Code 안에서 연결 상태를 확인합니다.
/mcp
Figma MCP 호출 한도 때문에 개발 중에는 다음 원칙을 사용합니다.
fixtures/figma/<name>/ 또는 .ddalkak/mcp-cache/<name>/에 저장합니다.캐시가 완전한지 확인합니다.
node scripts/mcp-cache.mjs check fixtures/figma/untitled-1-858
캐시에서 Bridge JSON을 생성합니다.
npm run bridge:cache -- --cache fixtures/figma/untitled-1-858 --project sandbox --name pc-home --force
생성된 Bridge JSON을 검증합니다.
npx claudepluginhub ddalkak-sprint/ddalkak --plugin ddalkakUltra-compressed communication mode. Cuts 65% of output tokens (measured) while keeping full technical accuracy by speaking like a caveman.
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Unified capability management center for Skills, Agents, and Commands.
Memory compression system for Claude Code - persist context across sessions
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.