@atezer/figma-mcp-bridge 1.7.29 → 1.9.0
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/CHANGELOG.md +403 -0
- package/README.md +4 -3
- package/agents/_orchestrator-protocol.md +185 -0
- package/agents/ds-auditor.md +73 -22
- package/agents/screen-builder.md +60 -22
- package/agents/token-syncer.md +63 -19
- package/dist/core/code-warnings.d.ts +38 -0
- package/dist/core/code-warnings.d.ts.map +1 -0
- package/dist/core/code-warnings.js +191 -0
- package/dist/core/code-warnings.js.map +1 -0
- package/dist/core/device-presets.d.ts +49 -0
- package/dist/core/device-presets.d.ts.map +1 -0
- package/dist/core/device-presets.js +141 -0
- package/dist/core/device-presets.js.map +1 -0
- package/dist/core/instructions.d.ts +4 -2
- package/dist/core/instructions.d.ts.map +1 -1
- package/dist/core/instructions.js +239 -29
- package/dist/core/instructions.js.map +1 -1
- package/dist/core/plugin-bridge-connector.d.ts +32 -0
- package/dist/core/plugin-bridge-connector.d.ts.map +1 -1
- package/dist/core/plugin-bridge-connector.js +31 -2
- package/dist/core/plugin-bridge-connector.js.map +1 -1
- package/dist/core/plugin-bridge-server.d.ts +8 -0
- package/dist/core/plugin-bridge-server.d.ts.map +1 -1
- package/dist/core/plugin-bridge-server.js +27 -2
- package/dist/core/plugin-bridge-server.js.map +1 -1
- package/dist/core/response-guard.d.ts +23 -0
- package/dist/core/response-guard.d.ts.map +1 -1
- package/dist/core/response-guard.js +113 -0
- package/dist/core/response-guard.js.map +1 -1
- package/dist/core/version.d.ts +1 -1
- package/dist/core/version.d.ts.map +1 -1
- package/dist/core/version.js +1 -1
- package/dist/core/version.js.map +1 -1
- package/dist/local-plugin-only.d.ts.map +1 -1
- package/dist/local-plugin-only.js +504 -85
- package/dist/local-plugin-only.js.map +1 -1
- package/f-mcp-plugin/code.js +514 -29
- package/f-mcp-plugin/ui.html +62 -6
- package/package.json +1 -1
- package/skills/SKILL_INDEX.md +13 -1
- package/skills/apply-figma-design-system/SKILL.md +37 -0
- package/skills/audit-figma-design-system/SKILL.md +38 -0
- package/skills/code-design-mapper/SKILL.md +37 -0
- package/skills/design-token-pipeline/SKILL.md +44 -0
- package/skills/figma-canvas-ops/SKILL.md +200 -240
- package/skills/fmcp-ds-audit-orchestrator/SKILL.md +205 -0
- package/skills/fmcp-intent-router/SKILL.md +574 -0
- package/skills/fmcp-project-rules/SKILL.md +9 -5
- package/skills/fmcp-screen-orchestrator/SKILL.md +166 -0
- package/skills/fmcp-screen-recipes/SKILL.md +528 -0
- package/skills/fmcp-token-sync-orchestrator/SKILL.md +198 -0
- package/skills/generate-figma-library/SKILL.md +38 -0
- package/skills/generate-figma-screen/SKILL.md +382 -19
- package/skills/implement-design/SKILL.md +32 -0
- package/skills/inspiration-intake/SKILL.md +220 -0
- package/skills/visual-qa-compare/SKILL.md +33 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fmcp-token-sync-orchestrator
|
|
3
|
+
description: Figma design token'larını kod dosyalarıyla (CSS/Tailwind/Swift/Compose) platform-agnostic senkronize eder. Diff preview + onay + write akışı zorunlu. Her platformda çalışır. Condensed-first: Essentials bölümü %80 case'i kapsar, Advanced sadece edge case'lerde.
|
|
4
|
+
metadata:
|
|
5
|
+
mcp-server: user-figma-mcp-bridge
|
|
6
|
+
version: 1.9.0
|
|
7
|
+
priority: 95
|
|
8
|
+
phase: orchestrator
|
|
9
|
+
personas:
|
|
10
|
+
- designops
|
|
11
|
+
- uidev
|
|
12
|
+
token_budget: condensed-first
|
|
13
|
+
required_inputs:
|
|
14
|
+
- name: target_platform
|
|
15
|
+
type: "enum: css | tailwind | swift | compose | sass | auto"
|
|
16
|
+
description: "Hedef platform. 'auto' → hedef dosya uzantısından tespit, belirsizse sor"
|
|
17
|
+
- name: target_file
|
|
18
|
+
type: "string | null"
|
|
19
|
+
description: "Hedef dosya yolu. null → platform defaultuna göre öner"
|
|
20
|
+
- name: direction
|
|
21
|
+
type: "enum: figma-to-code | code-to-figma"
|
|
22
|
+
description: "Senkronizasyon yönü. Default: figma-to-code (export)"
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# FMCP Token Sync Orchestrator
|
|
26
|
+
|
|
27
|
+
## Essentials (Üst Bölüm — %80 Case İçin Yeterli)
|
|
28
|
+
|
|
29
|
+
### Ortak Protokol (Condensed — full: `agents/_orchestrator-protocol.md`)
|
|
30
|
+
|
|
31
|
+
1. **Skill Registry** açık — tahmin yasak
|
|
32
|
+
2. **Intent Routing** — platform belirsiz → kullanıcıya sor (AskUserQuestion / düz metin)
|
|
33
|
+
3. **Cheap-First** — `figma_get_variables(verbosity="summary")` yeterli, full sadece eksik binding keşfinde
|
|
34
|
+
4. **Cache-First** — tokens için cache yok (hızlı değişir), opsiyonel `.claude/token-sync-log.md`
|
|
35
|
+
5. **User Onay** — **diff preview olmadan WRITE YOK** (mutlak kural)
|
|
36
|
+
6. **Self-Audit** — write sonrası binding coverage raporu (hardcoded kalan node sayısı)
|
|
37
|
+
7. **Skill Evolution** — yeni platform için iki aşamalı onay
|
|
38
|
+
8. **Türkçe rapor** — metrik bloğu sonunda
|
|
39
|
+
|
|
40
|
+
### Skill Registry (Ref Only)
|
|
41
|
+
|
|
42
|
+
| Skill | Dosya yolu | Trigger | Common case lazım mı? |
|
|
43
|
+
|---|---|---|---|
|
|
44
|
+
| `design-token-pipeline` | `skills/design-token-pipeline/SKILL.md` | Token export/import | **HER ZAMAN** (ana motor) |
|
|
45
|
+
| `code-design-mapper` | `skills/code-design-mapper/SKILL.md` | Component ↔ Figma mapping | Sadece component mapping istenirse |
|
|
46
|
+
| `design-system-rules` | `skills/design-system-rules/SKILL.md` | Platform-specific rule generation | Sadece rule generation istenirse |
|
|
47
|
+
|
|
48
|
+
### Platform Routing
|
|
49
|
+
|
|
50
|
+
| Sinyal | Platform | Standard hedef path |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| `.css`, `:root`, `var(--...)`, `tokens.css` | CSS | `src/styles/tokens.css` |
|
|
53
|
+
| `tailwind.config.*`, `theme.extend` | Tailwind | `tailwind.config.js` → `theme.extend` |
|
|
54
|
+
| `.swift`, `UIKit`, `SwiftUI`, `Color(...)` | Swift | `Sources/DesignTokens/Tokens.swift` |
|
|
55
|
+
| `.kt`, `Compose`, `@Composable`, `MaterialTheme` | Compose | `app/src/main/java/.../DesignTokens.kt` |
|
|
56
|
+
| `.scss`, `$token-...` | Sass | `src/styles/_tokens.scss` |
|
|
57
|
+
| Hiçbiri net değil | — | AskUserQuestion (4 platform seçeneği) |
|
|
58
|
+
|
|
59
|
+
### Diff Preview Before Write (Zorunlu Akış)
|
|
60
|
+
|
|
61
|
+
1. **Dry-run:** `Read("skills/design-token-pipeline/SKILL.md")` + workflow'u çalıştır ama dosyaya yazma → çıktıyı buffer'a al
|
|
62
|
+
2. **Mevcut dosya varsa:** mevcut içerikle yeni içerik arası **unified diff** üret
|
|
63
|
+
3. **Diff'i sohbete yaz:**
|
|
64
|
+
```diff
|
|
65
|
+
--- current tokens.css
|
|
66
|
+
+++ new tokens.css
|
|
67
|
+
@@ -12,3 +12,5 @@
|
|
68
|
+
--color-primary: #0066cc;
|
|
69
|
+
- --color-secondary: #666;
|
|
70
|
+
+ --color-secondary: #4a4a4a;
|
|
71
|
+
+ --color-success: #10b981;
|
|
72
|
+
```
|
|
73
|
+
4. **Onay al:** AskUserQuestion / düz metin: "Bu değişiklikleri uygulayayım mı? (Evet / Hayır / Sadece bazıları)"
|
|
74
|
+
5. **Onay sonrası** `Write` veya `Edit` ile dosyaya yaz
|
|
75
|
+
6. **Mevcut dosya yoksa:** sadece yeni içeriği göster, onay al, sonra `Write`
|
|
76
|
+
|
|
77
|
+
### Self-Audit (Write Sonrası)
|
|
78
|
+
|
|
79
|
+
Binding coverage raporu:
|
|
80
|
+
- **Toplam token:** `figma_get_variables` ile sayım
|
|
81
|
+
- **Binding oranı:** senkronlanan / toplam (yüzde)
|
|
82
|
+
- **Upgraded:** hardcoded değerden variable binding'e dönüşen sayı
|
|
83
|
+
- **Leftover:** hâlâ hardcoded kalan node sayısı (ds-auditor'a yönlendir)
|
|
84
|
+
|
|
85
|
+
### Rapor Formatı
|
|
86
|
+
|
|
87
|
+
```markdown
|
|
88
|
+
## 🔄 Token Sync — <platform>
|
|
89
|
+
|
|
90
|
+
**Yön:** Figma → Kod | Kod → Figma
|
|
91
|
+
**Hedef dosya:** <path>
|
|
92
|
+
**Mod:** export | import
|
|
93
|
+
|
|
94
|
+
### Diff Özeti
|
|
95
|
+
- Eklenen: <n>
|
|
96
|
+
- Güncellenen: <m>
|
|
97
|
+
- Kaldırılan: <k>
|
|
98
|
+
|
|
99
|
+
### Binding Coverage
|
|
100
|
+
- Toplam token: <n>
|
|
101
|
+
- Binding oranı: <%>
|
|
102
|
+
- Hardcoded kalanlar: <k> node (ds-auditor ile detaylandır)
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
📊 Metrikler
|
|
106
|
+
- Kullanılan skill'ler: <liste>
|
|
107
|
+
- API çağrı sayısı: <n>
|
|
108
|
+
- Dry-run + write: tamamlandı
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Advanced — Only Load If Needed
|
|
114
|
+
|
|
115
|
+
**Bu bölümü Claude aşağıdaki koşullarda tarar:**
|
|
116
|
+
- ⚠️ Multi-platform sync (aynı token'ları hem CSS hem Swift'e)
|
|
117
|
+
- ⚠️ Custom component mapping (code-design-mapper gerektiren)
|
|
118
|
+
- ⚠️ Platform default path kullanıcı için uygun değil (custom path gerekir)
|
|
119
|
+
- ⚠️ Kod → Figma yönünde sync (import mode, daha nadir)
|
|
120
|
+
- ⚠️ Yeni platform desteği (Flutter, Jetpack Multiplatform vb.)
|
|
121
|
+
|
|
122
|
+
### Detay 1 — Multi-Platform Sync
|
|
123
|
+
|
|
124
|
+
Kullanıcı "hem CSS hem Tailwind hem Swift'e aynı token'ları export et" derse:
|
|
125
|
+
1. Her platform için ayrı dry-run
|
|
126
|
+
2. 3 ayrı diff preview sohbette (tek mesajda üç diff bloğu)
|
|
127
|
+
3. Kullanıcı "hepsini onayla" veya "sadece X ve Y" diyebilmeli (AskUserQuestion çoklu seçim)
|
|
128
|
+
4. Onaylananları yaz
|
|
129
|
+
5. Binding coverage raporu 3 platforma göre ayrı
|
|
130
|
+
|
|
131
|
+
### Detay 2 — Custom Component Mapping
|
|
132
|
+
|
|
133
|
+
Sadece token değil, component → component eşleştirme isteniyorsa:
|
|
134
|
+
1. `Read("skills/code-design-mapper/SKILL.md")`
|
|
135
|
+
2. Figma component isim/key → kod dosyası path eşleştirmesi
|
|
136
|
+
3. Çıktı: `.codeconnect.ts` veya benzeri mapping dosyası
|
|
137
|
+
4. Token'lardan bağımsız ama tamamlayıcı iş
|
|
138
|
+
|
|
139
|
+
### Detay 3 — Kod → Figma Import Mode
|
|
140
|
+
|
|
141
|
+
Kod tarafında değişen bir token (örn. Git PR'da renk güncellemesi) Figma'ya geri yansıtılacaksa:
|
|
142
|
+
1. Kod dosyasını parse et
|
|
143
|
+
2. `figma_get_variables` ile mevcut Figma değerlerini al
|
|
144
|
+
3. Diff: kod tarafı vs Figma tarafı
|
|
145
|
+
4. Kullanıcıya göster: "Kod tarafında şu token'lar değişmiş, Figma'ya yansıtayım mı?"
|
|
146
|
+
5. Onay → `figma_update_variable` / `figma_setup_design_tokens` ile yaz
|
|
147
|
+
6. **Destructive mutation** → ortak protokol madde 5 gate (kullanıcı onayı)
|
|
148
|
+
|
|
149
|
+
### Detay 4 — Platform Default Path Override
|
|
150
|
+
|
|
151
|
+
Plan'daki defaultlar:
|
|
152
|
+
```
|
|
153
|
+
CSS → src/styles/tokens.css
|
|
154
|
+
Tailwind → tailwind.config.js
|
|
155
|
+
Swift → Sources/DesignTokens/Tokens.swift
|
|
156
|
+
Compose → app/src/main/java/.../DesignTokens.kt
|
|
157
|
+
Sass → src/styles/_tokens.scss
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Kullanıcı'nın proje yapısı farklı olabilir. İlk sync'te:
|
|
161
|
+
1. Default path'i sor: "Bu platform için token dosyası `<default>` yoluna yazılsın mı?"
|
|
162
|
+
2. Kullanıcı alternatif verirse onu kullan
|
|
163
|
+
3. İlk başarılı sync sonrası path `.claude/token-sync-log.md`'ye kaydedilir (opsiyonel cache)
|
|
164
|
+
|
|
165
|
+
### Detay 5 — Error Recovery
|
|
166
|
+
|
|
167
|
+
| Hata | Aksiyon |
|
|
168
|
+
|---|---|
|
|
169
|
+
| Dosya yazma permission | Kullanıcıya bildir, farklı path öner |
|
|
170
|
+
| Mevcut kod formatı tanınmıyor | Örnek satır göster, formatı doğrulat |
|
|
171
|
+
| `figma_get_variables` timeout | `verbosity="summary"` zaten default, retry |
|
|
172
|
+
| Diff çok büyük (100+ değişiklik) | Özetle: "X color, Y spacing, Z typography token değişti, detay görmek ister misin?" |
|
|
173
|
+
|
|
174
|
+
### Detay 6 — Platform-Specific Notes
|
|
175
|
+
|
|
176
|
+
**Claude Code:**
|
|
177
|
+
- `Write` / `Edit` tool'ları mevcut, doğrudan kod dosyasına yazılır
|
|
178
|
+
- Cache: `.claude/token-sync-log.md` opsiyonel
|
|
179
|
+
|
|
180
|
+
**Cursor:**
|
|
181
|
+
- Aynı tool'lar mevcut, main context'te çalışır
|
|
182
|
+
- `.cursor/rules/fmcp-orchestration.md` bu orchestrator'ı referans eder
|
|
183
|
+
|
|
184
|
+
**Claude Desktop:**
|
|
185
|
+
- **KRİTİK:** Filesystem MCP eklenmediyse `Write` tool'u yok → sadece diff gösterebilir, kullanıcı manuel kopyalar
|
|
186
|
+
- İlk prompt'ta manuel skill referansı zorunlu
|
|
187
|
+
|
|
188
|
+
**Claude Web:**
|
|
189
|
+
- Filesystem yok → tamamen plan-only mod
|
|
190
|
+
- "Bu diff'i kopyala, tokens.css'e yapıştır" talimatı ver
|
|
191
|
+
|
|
192
|
+
### Detay 7 — Yeni Platform Desteği (Skill Evolution)
|
|
193
|
+
|
|
194
|
+
Kullanıcı "Flutter için export" isterse (mevcut 5 platformda yok):
|
|
195
|
+
1. **Aşama 1:** Gap'i açıkla, "Flutter desteği eklemek istiyor musun?" sor
|
|
196
|
+
2. **Aşama 2:** `design-token-pipeline` skill'ine Flutter eklentisi yap (edit) veya yeni bir skill (`fmcp-token-flutter-pipeline`) oluştur (create)
|
|
197
|
+
3. Create → DRAFT banner + ikinci onay
|
|
198
|
+
4. Edit → diff preview + onay
|
|
@@ -6,6 +6,44 @@ metadata:
|
|
|
6
6
|
personas:
|
|
7
7
|
- designops
|
|
8
8
|
- designer
|
|
9
|
+
required_inputs:
|
|
10
|
+
- name: source_type
|
|
11
|
+
type: enum
|
|
12
|
+
options:
|
|
13
|
+
- "Kod tabanı (path ver)"
|
|
14
|
+
- "Token JSON dosyası"
|
|
15
|
+
- "Mevcut tasarım sisteminden clone"
|
|
16
|
+
- "Sıfırdan (boş kütüphane)"
|
|
17
|
+
question: "Kütüphaneyi nereden inşa edelim?"
|
|
18
|
+
required: true
|
|
19
|
+
- name: source_path
|
|
20
|
+
type: string
|
|
21
|
+
question: "Kaynak path nedir? (örn: ./src/design-tokens veya ./tokens.json)"
|
|
22
|
+
required: false
|
|
23
|
+
skip_if: "source_type == 'Sıfırdan (boş kütüphane)'"
|
|
24
|
+
- name: library_name
|
|
25
|
+
type: string
|
|
26
|
+
question: "Kütüphane adı nedir? (örn: '❖ My DS')"
|
|
27
|
+
required: true
|
|
28
|
+
- name: components_to_generate
|
|
29
|
+
type: string_list
|
|
30
|
+
question: "Hangi bileşenleri üretelim? (örn: Button, Input, Card, Modal — 'all' veya virgülle ayır)"
|
|
31
|
+
required: false
|
|
32
|
+
default: "all"
|
|
33
|
+
- name: token_categories
|
|
34
|
+
type: string_list
|
|
35
|
+
question: "Hangi token kategorileri? (colors, spacing, typography, radius, shadow — 'all' veya seçili)"
|
|
36
|
+
required: false
|
|
37
|
+
default: "all"
|
|
38
|
+
- name: theme_support
|
|
39
|
+
type: enum
|
|
40
|
+
options:
|
|
41
|
+
- "Single theme (default)"
|
|
42
|
+
- "Light + Dark"
|
|
43
|
+
- "Multi-brand (3+ themes)"
|
|
44
|
+
question: "Tema desteği?"
|
|
45
|
+
required: false
|
|
46
|
+
default: "Single theme (default)"
|
|
9
47
|
---
|
|
10
48
|
|
|
11
49
|
# Generate Figma Library — Koddan DS Kütüphanesi İnşa
|