Figma 플러그인 기반 디자인 토큰 관리 도구
Tokens Studio + Style Dictionary를 하나로 합친 플러그인. 디자이너가 Figma 안에서 직접 디자인 토큰을 만들고, GitHub에 푸시하고, CSS/TypeScript로 변환까지 끝낼 수 있습니다.
기존 워크플로에는 두 가지 문제가 있었습니다.
| 문제 | 내용 |
|---|---|
| 비용 | Tokens Studio GitHub 연동은 유료 플랜 전용 |
| 복잡성 | Tokens Studio + Style Dictionary 두 툴을 따로 관리 |
| 포맷 | 원하는 JSON 구조로 커스터마이징 불가 |
| 품질 | 잘못된 토큰 이름을 잡아주지 않음 |
| 구조 | 3-tier(Primitive → Semantic → Component) 강제/가이드 없음 |
Ficnic은 이 모든 것을 Figma 플러그인 하나로 해결합니다.
Primitive → Semantic → Component
#3B82F6 color.primary button.background
토큰 간 참조({color.primary})로 일관성 있는 시스템 구축. 같은 그룹명의 위 티어 토큰을 클릭 한 번으로 참조 삽입.
PAT 토큰만 있으면 서버 없이 GitHub REST API로 직접 푸시. 파일이 없으면 생성, 있으면 SHA 기반 업데이트.
| 포맷 | 예시 |
|---|---|
| CSS Variables | --color-primary: #3B82F6; |
| TypeScript | export const tokens = { ... } as const |
| Style Dictionary | { "value": "#3B82F6", "type": "color" } |
| W3C Design Tokens | { "$value": "#3B82F6", "$type": "color" } |
| Raw JSON | 원본 구조 그대로 |
| 커스텀 | prefix, separator, key 이름 자유 설정 |
- 순환 참조 감지 —
A → B → A무한 루프 경고 - 미사용 토큰 감지 — 어디서도 참조되지 않는 토큰 표시
- 영향 범위 시각화 — 토큰 변경 시 영향받는 토큰 수 표시
- Figma 스타일 sync — 로컬 색상 스타일과 토큰 불일치 검사
이모지, 특수문자, 연속 점 등 잘못된 이름 실시간 감지.
- Node.js 18+
- Figma Desktop App
git clone https://github.com/eveneul/Ficnic.git
cd Ficnic
npm install
npm run build- Figma Desktop → 메뉴 → Plugins → Development → Import plugin from manifest
- 프로젝트 폴더의
manifest.json선택 - Plugins → Development → Ficnic 실행
npm run dev:ui # UI watch 빌드
npm run dev:sandbox # sandbox watch 빌드dist/index.html을 브라우저에서 열면 mock 데이터로 UI 미리보기 가능.
- GitHub → Settings → Developer settings → Personal access tokens → Generate new token
repo권한 선택 후 발급- 플러그인 GitHub 탭에서 입력
- PAT 토큰
- Owner (GitHub 유저명)
- Repository 이름
- Branch
- 파일 경로 (예:
tokens/tokens.json)
- 설정 저장 → GitHub에 푸시
- Figma에서 색상 로컬 스타일 생성 (예:
color/primary→#3B82F6) - 플러그인 Sync 탭 → 검사 시작
- 불일치 항목 확인 후 토큰 업데이트
Figma 스타일 이름의 /는 .으로 자동 변환되어 토큰 이름과 비교됩니다.
(color/blue/500 → color.blue.500)
- Vite + React 19 + TypeScript
- Figma Plugin API (
@figma/plugin-typings) - GitHub REST API (PAT 인증, 서버리스)
- lucide-react (아이콘)
- vite-plugin-singlefile (UI를 단일 HTML로 인라인)
src/
├── ui/ # 플러그인 UI (React, DOM 접근 가능)
│ ├── components/
│ ├── hooks/
│ ├── styles/
│ └── dev/ # 브라우저 개발용 mock 데이터
├── sandbox/ # Figma API 전용 (figma.* 여기서만 사용)
├── core/ # 순수 로직 (변환, lint, resolve, 분석)
└── types/ # 공유 타입 정의
dist/
├── index.html # UI 단일 파일 (JS/CSS 전부 인라인)
└── sandbox.js # Figma sandbox IIFE
UI ↔ sandbox는 postMessage로만 통신 (Figma 보안 정책).
| Phase | 기능 | 상태 |
|---|---|---|
| P0 | 토큰 편집 UI, 네이밍 lint, GitHub 푸시 | ✅ |
| P1 | CSS/TS 변환, 포맷 템플릿 3종, 커스텀 포맷 | ✅ |
| DX | 순환 참조, 미사용 토큰, 영향 범위, Figma sync | ✅ |
| P2 | 실시간 미리보기 | 예정 |
MIT