@atezer/figma-mcp-bridge 1.7.23 → 1.7.25
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/.claude-plugin/plugin.json +37 -0
- package/.cursor-plugin/plugin.json +21 -0
- package/CHANGELOG.md +30 -0
- package/README.md +4 -3
- package/agents/ds-auditor.md +29 -0
- package/agents/screen-builder.md +29 -0
- package/agents/token-syncer.md +26 -0
- package/assets/logo.png +0 -0
- package/commands/add-library.md +122 -0
- package/commands/ds-add.md +255 -0
- package/commands/ds-sync.md +314 -0
- package/commands/implement.md +43 -0
- package/commands/install-library.md +73 -0
- package/commands/setup.md +26 -0
- package/commands/test.md +39 -0
- package/commands/update.md +25 -0
- package/dist/core/config.d.ts +1 -5
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +11 -111
- package/dist/core/config.js.map +1 -1
- package/dist/core/plugin-bridge-server.d.ts.map +1 -1
- package/dist/core/plugin-bridge-server.js +1 -2
- package/dist/core/plugin-bridge-server.js.map +1 -1
- package/dist/core/response-guard.d.ts +1 -1
- package/dist/core/response-guard.js +1 -1
- package/dist/core/types/index.d.ts +2 -98
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/version.d.ts +1 -1
- package/dist/core/version.js +1 -1
- package/dist/local-plugin-only.d.ts.map +1 -1
- package/dist/local-plugin-only.js +14 -13
- package/dist/local-plugin-only.js.map +1 -1
- package/f-mcp-plugin/README.md +8 -15
- package/f-mcp-plugin/manifest.json +1 -3
- package/hooks/hooks.json +26 -0
- package/package.json +15 -31
- package/skills/BRAND_PROFILE_SCHEMA.md +113 -0
- package/skills/SKILL_INDEX.md +194 -0
- package/skills/TOOL_MAPPING.md +111 -0
- package/skills/ai-handoff-export/SKILL.md +254 -0
- package/skills/apply-figma-design-system/SKILL.md +104 -0
- package/skills/audit-figma-design-system/SKILL.md +278 -0
- package/skills/code-design-mapper/SKILL.md +370 -0
- package/skills/component-documentation/SKILL.md +190 -0
- package/skills/design-drift-detector/SKILL.md +407 -0
- package/skills/design-system-rules/SKILL.md +407 -0
- package/skills/design-token-pipeline/SKILL.md +619 -0
- package/skills/ds-impact-analysis/SKILL.md +266 -0
- package/skills/figjam-diagram-builder/SKILL.md +172 -0
- package/skills/figma-a11y-audit/SKILL.md +587 -0
- package/skills/figma-canvas-ops/SKILL.md +325 -0
- package/skills/figma-screen-analyzer/SKILL.md +235 -0
- package/skills/fix-figma-design-system-finding/SKILL.md +117 -0
- package/skills/fmcp-project-rules/SKILL.md +93 -0
- package/skills/generate-figma-library/SKILL.md +598 -0
- package/skills/generate-figma-screen/SKILL.md +689 -0
- package/skills/implement-design/SKILL.md +473 -0
- package/skills/ux-copy-guidance/SKILL.md +373 -0
- package/skills/visual-qa-compare/SKILL.md +166 -0
- package/dist/browser/base.d.ts +0 -50
- package/dist/browser/base.d.ts.map +0 -1
- package/dist/browser/base.js +0 -6
- package/dist/browser/base.js.map +0 -1
- package/dist/browser/local.d.ts +0 -81
- package/dist/browser/local.d.ts.map +0 -1
- package/dist/browser/local.js +0 -283
- package/dist/browser/local.js.map +0 -1
- package/dist/core/console-monitor.d.ts +0 -82
- package/dist/core/console-monitor.d.ts.map +0 -1
- package/dist/core/console-monitor.js +0 -428
- package/dist/core/console-monitor.js.map +0 -1
- package/dist/core/design-system-manifest.d.ts +0 -272
- package/dist/core/design-system-manifest.d.ts.map +0 -1
- package/dist/core/design-system-manifest.js +0 -261
- package/dist/core/design-system-manifest.js.map +0 -1
- package/dist/core/enrichment/enrichment-service.d.ts +0 -52
- package/dist/core/enrichment/enrichment-service.d.ts.map +0 -1
- package/dist/core/enrichment/enrichment-service.js +0 -272
- package/dist/core/enrichment/enrichment-service.js.map +0 -1
- package/dist/core/enrichment/index.d.ts +0 -8
- package/dist/core/enrichment/index.d.ts.map +0 -1
- package/dist/core/enrichment/index.js +0 -8
- package/dist/core/enrichment/index.js.map +0 -1
- package/dist/core/enrichment/relationship-mapper.d.ts +0 -106
- package/dist/core/enrichment/relationship-mapper.d.ts.map +0 -1
- package/dist/core/enrichment/relationship-mapper.js +0 -352
- package/dist/core/enrichment/relationship-mapper.js.map +0 -1
- package/dist/core/enrichment/style-resolver.d.ts +0 -80
- package/dist/core/enrichment/style-resolver.d.ts.map +0 -1
- package/dist/core/enrichment/style-resolver.js +0 -327
- package/dist/core/enrichment/style-resolver.js.map +0 -1
- package/dist/core/figma-api.d.ts +0 -137
- package/dist/core/figma-api.d.ts.map +0 -1
- package/dist/core/figma-api.js +0 -274
- package/dist/core/figma-api.js.map +0 -1
- package/dist/core/figma-desktop-connector.d.ts +0 -242
- package/dist/core/figma-desktop-connector.d.ts.map +0 -1
- package/dist/core/figma-desktop-connector.js +0 -1042
- package/dist/core/figma-desktop-connector.js.map +0 -1
- package/dist/core/figma-reconstruction-spec.d.ts +0 -162
- package/dist/core/figma-reconstruction-spec.d.ts.map +0 -1
- package/dist/core/figma-reconstruction-spec.js +0 -387
- package/dist/core/figma-reconstruction-spec.js.map +0 -1
- package/dist/core/figma-tools.d.ts +0 -21
- package/dist/core/figma-tools.d.ts.map +0 -1
- package/dist/core/figma-tools.js +0 -2920
- package/dist/core/figma-tools.js.map +0 -1
- package/dist/core/snippet-injector.d.ts +0 -24
- package/dist/core/snippet-injector.d.ts.map +0 -1
- package/dist/core/snippet-injector.js +0 -97
- package/dist/core/snippet-injector.js.map +0 -1
- package/dist/core/types/enriched.d.ts +0 -213
- package/dist/core/types/enriched.d.ts.map +0 -1
- package/dist/core/types/enriched.js +0 -6
- package/dist/core/types/enriched.js.map +0 -1
- package/dist/local.d.ts +0 -73
- package/dist/local.d.ts.map +0 -1
- package/dist/local.js +0 -2605
- package/dist/local.js.map +0 -1
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: component-documentation
|
|
3
|
+
description: Figma bileşeni için kullanım kılavuzu oluşturur. "bileşen dokümantasyonu", "component docs", "usage guidelines", "bileşen kılavuzu" ifadeleriyle tetiklenir.
|
|
4
|
+
metadata:
|
|
5
|
+
mcp-server: user-figma-mcp-bridge
|
|
6
|
+
personas:
|
|
7
|
+
- designer
|
|
8
|
+
- designops
|
|
9
|
+
- uidev
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Component Documentation
|
|
13
|
+
|
|
14
|
+
> **Design Token Kuralı:** Bu skill'deki kod örneklerinde geçen font adları, renk kodları, piksel boyutları yalnızca FORMAT gösterimidir. Çalışma anında tüm design token değerleri (font, renk, boyut, spacing, radius, gölge) kayıtlı kütüphaneden (`figma_get_variables`, `figma_get_styles`) veya kullanıcıdan okunmalıdır. Hardcoded token değeri kullanma. Detay: `project-context.md` → "Design Token Kuralı".
|
|
15
|
+
|
|
16
|
+
## Workflow
|
|
17
|
+
|
|
18
|
+
1. **Standart kontrolü:** `reference_industry_design_standards.md` oku. "Son güncelleme" 1 yıldan eskiyse kullanıcıya güncelleme öner (kaynak listesi aşağıda).
|
|
19
|
+
2. **Bileşen analizi:** figma_get_component_for_development + figma_get_design_context (depth=3, full) + figma_get_variables
|
|
20
|
+
|
|
21
|
+
> **DERİN ANALİZ KURALI:** Sadece frame/node isimlerine bakarak sonuç çıkarma. Her node'un içindeki text content (`characters`), instance prop'ları ve child yapılarını detaylı oku. Bir şeyin "eksik" veya "yok" olduğunu iddia etmeden önce tüm child node'ların içeriğini kontrol et.
|
|
22
|
+
|
|
23
|
+
> **GÖRSEL DOĞRULAMA KURALI:** Analiz sonucunu raporlamadan önce `figma_capture_screenshot` ile ekran görüntüsü al ve görsel olarak kontrol et. Text content ile screenshot'ın tutarlı olduğunu teyit et. Çelişki varsa screenshot'ı esas al.
|
|
24
|
+
3. **Bileşen description güncelleme:** Bileşenin description ve link alanlarını güncelle (bkz. "Bileşen Description Kuralları").
|
|
25
|
+
4. **KULLANICIYA FORMAT SEÇ:** Aşağıdaki 2 seçeneği içerik özetiyle sun. Onay olmadan frame OLUŞTURMA.
|
|
26
|
+
5. Seçime göre frame oluştur. Eski aynı isimli frame varsa sil.
|
|
27
|
+
6. Height bug fix: `primaryAxisSizingMode` FIXED→AUTO toggle.
|
|
28
|
+
7. Viewport'u frame'e odakla.
|
|
29
|
+
|
|
30
|
+
> **ONAY KURALI:** Bileşene herhangi bir ekleme veya değişiklik yapmadan önce (description, property, variant, child node, frame oluşturma vb.) yapılacak değişikliği açıkça belirt ve kullanıcıdan onay bekle. Sadece okuma/analiz işlemleri onaysız yapılabilir.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Format Seçenekleri
|
|
35
|
+
|
|
36
|
+
### Standard (~2800px, 780px geniş)
|
|
37
|
+
|
|
38
|
+
| # | Bölüm | İçerik |
|
|
39
|
+
|---|-------|--------|
|
|
40
|
+
| 1 | Intro | Başlık (26px Bold) + 2 satırlık tanıtım |
|
|
41
|
+
| 2 | Variantlar | Kart: gri bg, instance (130px fixed) + isim + açıklama (FILL) |
|
|
42
|
+
| 3 | Durumlar | Grid: Default, Hover, Active, Disabled, Loading, Error, Focus — her durum gerçek instance ile gösterilir (mevcut variant'ın farklı state'leri) |
|
|
43
|
+
| 4 | Kurallar | Do/Dont metin kutuları (yeşil/kırmızı, 3+3 madde) + görsel örnekler (gerçek instance'larla doğru/yanlış çift kartlar) |
|
|
44
|
+
| 5 | Standartlar | Kaynak chip'leri (M3, HIG, WCAG, shadcn) + info kutu (touch, kontrast, hiyerarşi, boyut, states) |
|
|
45
|
+
| 6 | Props | Satır bazlı: prop adı (mavi) + tip/default (gri) + açıklama (FILL) |
|
|
46
|
+
| 7 | Copy Spec | Text node'lar için copy kuralları: max karakter, truncation davranışı, boş durum metni, placeholder. Bkz. [ux-copy-guidance](../ux-copy-guidance/SKILL.md) |
|
|
47
|
+
| 8 | A11y | Info kutu: touch, focus, label, disabled |
|
|
48
|
+
| 9 | Tokenlar | Renk + boyut token satırları, dark mode notu |
|
|
49
|
+
| 10 | Kod | Tek koyu blok: React, SwiftUI, Compose |
|
|
50
|
+
|
|
51
|
+
### Compact (~1300px, 720px geniş)
|
|
52
|
+
|
|
53
|
+
| # | Bölüm | İçerik |
|
|
54
|
+
|---|-------|--------|
|
|
55
|
+
| 1 | Başlık | 24px Bold + tek satırlık tanıtım |
|
|
56
|
+
| 2 | Variantlar | Satır bazlı: instance + "Name — açıklama" |
|
|
57
|
+
| 3 | Kurallar | Do/Dont minimal: 3+3 madde (görsel örnek yok) |
|
|
58
|
+
| 4 | Teknik | TEK KUTU: touch, kontrast, padding, states, props hepsi içinde |
|
|
59
|
+
| 5 | Tokenlar | 2 satır, bullet-separated |
|
|
60
|
+
| 6 | Kod | Tek koyu blok |
|
|
61
|
+
|
|
62
|
+
> **NOT:** Copy Spec ve Durumlar bölümleri Compact formatta dahil değildir. Bu bölümler yalnızca Standard formatta yer alır.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## State Machine Geçiş Diyagramı (Sadece Standard)
|
|
67
|
+
|
|
68
|
+
Etkileşimli bileşenler için durum geçiş diyagramı üretilir. Variant yapısından (`State` prop'u) otomatik çıkarılır:
|
|
69
|
+
|
|
70
|
+
```mermaid
|
|
71
|
+
stateDiagram-v2
|
|
72
|
+
[*] --> Default
|
|
73
|
+
Default --> Hover : onMouseEnter
|
|
74
|
+
Hover --> Active : onMouseDown / onTouchStart
|
|
75
|
+
Active --> Default : onMouseUp / onTouchEnd
|
|
76
|
+
Default --> Focus : onFocus (Tab)
|
|
77
|
+
Focus --> Default : onBlur
|
|
78
|
+
Default --> Disabled : disabled=true
|
|
79
|
+
Hover --> Default : onMouseLeave
|
|
80
|
+
Active --> Loading : async action
|
|
81
|
+
Loading --> Default : success
|
|
82
|
+
Loading --> Error : failure
|
|
83
|
+
Error --> Default : retry / dismiss
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Kurallar:**
|
|
87
|
+
- Her durumdan `Disabled`'a geçiş mümkün (programatik)
|
|
88
|
+
- `Loading` yalnızca async aksiyon tetikleyen bileşenlerde (Button, Form, Toggle)
|
|
89
|
+
- `Error` yalnızca başarısız olabilecek aksiyonlarda
|
|
90
|
+
- Geçiş tetikleyicileri (onMouseEnter, onFocus vb.) açıkça belirtilmeli
|
|
91
|
+
- Statik bileşenler (Card, Badge, Divider) için diyagram üretilmez
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Görsel Do/Don't Örnekleri (Sadece Standard)
|
|
96
|
+
|
|
97
|
+
Kurallar bölümüne metin kutularından SONRA eklenir. Her örnek çift kart (doğru + yanlış) yan yana:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
HORIZONTAL row (FILL):
|
|
101
|
+
├── Doğru kart: yeşil bg + border, gerçek instance'lar, kısa açıklama
|
|
102
|
+
└── Yanlış kart: kırmızı bg + border, gerçek instance'lar, kısa açıklama
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Örnek çiftler (bileşen tipine göre adapte et):
|
|
106
|
+
- Hiyerarşi doğru/yanlış: Primary+Secondary vs 2x Primary
|
|
107
|
+
- Etiket doğru/yanlış: "Giriş Yap" vs "Tıkla"
|
|
108
|
+
- Variant kullanımı doğru/yanlış: Primary+Outline+Ghost vs hepsi aynı
|
|
109
|
+
|
|
110
|
+
Her kartta:
|
|
111
|
+
- Başlık: 13px Bold, yeşil/kırmızı
|
|
112
|
+
- Instance satırı: gerçek component instance'ları yan yana
|
|
113
|
+
- Açıklama: 12px, tek satır
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Bileşen Description Kuralları
|
|
118
|
+
|
|
119
|
+
### Description alanı
|
|
120
|
+
- "Bu bileşen nedir ve ne amaçla kullanılır?" sorusuna **tek cümle** cevap ver
|
|
121
|
+
- State listesi, yapı detayları, teknik kurallar gibi uzun bilgileri description'a EKLEME
|
|
122
|
+
- Varsa bileşenin dokümantasyon sayfasını (Documentation frame) oku ve oradan özetle
|
|
123
|
+
|
|
124
|
+
### Link alanı
|
|
125
|
+
- Bileşenin dokümantasyon sayfası varsa Figma linkini `documentationLinks` olarak ekle
|
|
126
|
+
- Format: `https://www.figma.com/design/{fileKey}/...?node-id={docNodeId}`
|
|
127
|
+
|
|
128
|
+
### Örnek
|
|
129
|
+
- **Doğru:** "File Upload bileşeni, kullanıcıların belgelerini sisteme yüklemesini sağlar. Buton aracılığıyla dosya seçimi yapılır."
|
|
130
|
+
- **Yanlış:** "Dosya yükleme bileşeni (Mobil). States: empty, loading, loaded, disable. Yapısı: Label + Button + Belgeler listesi + Hint. Kurallar: Genişlik 358px, maks 10 dosya..."
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Ortak Kurallar
|
|
135
|
+
|
|
136
|
+
### Dil
|
|
137
|
+
- Sade, junior-friendly — teknik terimlerin yanına açıklama ekle
|
|
138
|
+
- Her kural 1 satır — neden gerekliyse parantez içinde
|
|
139
|
+
- "CTA" değil "ana aksiyon butonu"
|
|
140
|
+
|
|
141
|
+
### Türkçe Karakter Kuralı (ZORUNLU)
|
|
142
|
+
Tüm Türkçe metin içeriklerinde doğru Unicode karakterler kullanılmalıdır. ASCII karşılıkları YASAKTIR:
|
|
143
|
+
ş (s değil), ı (i değil), ö (o değil), ü (u değil), ç (c değil), ğ (g değil), İ (I değil), Ş (S değil)
|
|
144
|
+
Son adım: Üretilen tüm Türkçe metinleri karakter kontrolünden geçir.
|
|
145
|
+
|
|
146
|
+
### Layout
|
|
147
|
+
- Ana frame: VERTICAL, genişlik FIXED, yükseklik AUTO
|
|
148
|
+
- Child'lar: `layoutSizingHorizontal = "FILL"`
|
|
149
|
+
- Metinler: `textAutoResize = "HEIGHT"` — ASLA sabit yükseklik
|
|
150
|
+
- Do/Dont: HORIZONTAL parent, FILL child'lar — ASLA sabit genişlik
|
|
151
|
+
- Font: Inter (Regular, Medium, Semi Bold, Bold)
|
|
152
|
+
|
|
153
|
+
### Token Bağlama Kontrolü
|
|
154
|
+
Dokümantasyon üretirken bileşendeki bağlı olmayan değerleri tespit et ve uyar.
|
|
155
|
+
Token bağlama kuralları için bkz: `generate-figma-library` skill'i.
|
|
156
|
+
|
|
157
|
+
### Standart Referansı
|
|
158
|
+
- Hafıza: `reference_industry_design_standards.md` (14 bölüm)
|
|
159
|
+
- Bileşene uygun bölümler seçilir, tamamı yazılmaz
|
|
160
|
+
- Chip'lerle kaynak göster: M3, HIG, WCAG 2.2, shadcn/ui
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Standart Güncelleme Kaynakları (Yıllık)
|
|
165
|
+
|
|
166
|
+
| Kaynak | URL | Kontrol |
|
|
167
|
+
|--------|-----|---------|
|
|
168
|
+
| shadcn/ui | shadcn.com | Yeni bileşenler, tema tokenları |
|
|
169
|
+
| Tailwind CSS | tailwindcss.com | Varsayılan değerler, breaking changes |
|
|
170
|
+
| Radix UI | radix-ui.com | Yeni primitive'ler, a11y kalıpları |
|
|
171
|
+
| Lucide Icons | lucide.dev | Grid/stroke değişiklikleri |
|
|
172
|
+
| Material Design 3 | m3.material.io | M3 Expressive, bileşen specleri |
|
|
173
|
+
| Apple HIG | developer.apple.com/design | Liquid Glass, platform kuralları |
|
|
174
|
+
| WCAG | w3.org/TR/WCAG22 | Yeni SC'ler, hedef boyut |
|
|
175
|
+
| W3C Design Tokens | designtokens.org | DTCG format, yeni tipler |
|
|
176
|
+
| Carbon DS | carbondesignsystem.com | Bileşen checklist |
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Marka Profili Entegrasyonu
|
|
181
|
+
|
|
182
|
+
`.fmcp-brand-profile.json` varsa:
|
|
183
|
+
- `voiceTone` → Bileşen açıklama ve kullanım notlarının ton kalibrasyonu
|
|
184
|
+
- `copyRules` → Copy Spec bölümünde CTA max karakter, kaçınılacak kelimeler referansı
|
|
185
|
+
|
|
186
|
+
## Skill Koordinasyonu
|
|
187
|
+
|
|
188
|
+
- Öncesi: `generate-figma-library` veya `figma-canvas-ops`
|
|
189
|
+
- Sonrası: `ai-handoff-export`
|
|
190
|
+
- İlişkili: `figma-a11y-audit`, `ux-copy-guidance`, `reference_industry_design_standards.md`
|
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-drift-detector
|
|
3
|
+
description: iOS, Android ve Web platformlarında mevcut kod ile Figma tasarımı arasındaki farkları (drift) tespit eder. Platform bazlı ve cross-platform drift raporları üretir. "check drift", "design drift", "platform drift", "tasarım sapması kontrol et", "parity check", "kod Figma uyuşuyor mu", "spacing doğrula", "token tutarlılık" ifadeleriyle tetiklenir. F-MCP Bridge plugin bağlantısı gerektirir. Bu özellik resmi Figma plugininde yoktur.
|
|
4
|
+
metadata:
|
|
5
|
+
mcp-server: user-figma-mcp-bridge
|
|
6
|
+
personas:
|
|
7
|
+
- uidev
|
|
8
|
+
- designops
|
|
9
|
+
- po
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Design Drift Detector (Multi-Platform)
|
|
13
|
+
|
|
14
|
+
> **Design Token Kuralı:** Bu skill'deki kod örneklerinde geçen font adları, renk kodları, piksel boyutları yalnızca FORMAT gösterimidir. Çalışma anında tüm design token değerleri (font, renk, boyut, spacing, radius, gölge) kayıtlı kütüphaneden (`figma_get_variables`, `figma_get_styles`) veya kullanıcıdan okunmalıdır. Hardcoded token değeri kullanma. Detay: `project-context.md` → "Design Token Kuralı".
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
|
|
18
|
+
Bu skill, implementasyon sonrasında oluşan kod-tasarım sapmalarını **iOS, Android ve Web** platformlarında ayrı ayrı ve cross-platform olarak tespit eder. Resmi Figma plugininde bu yetenek yoktur.
|
|
19
|
+
|
|
20
|
+
**Drift türleri:**
|
|
21
|
+
- **Token drift** — Figma'da token değeri değişti ama platformdaki dosyada güncellenmedi
|
|
22
|
+
- **Component drift** — Figma component'i değişti (yeni variant, spacing değişikliği vb.) ama koddaki implementasyon güncellenmedi
|
|
23
|
+
- **Platform gap** — Bir platform güncellenmiş ama diğerleri eski kalmış
|
|
24
|
+
- **Cross-platform inconsistency** — Aynı token farklı platformlarda farklı değerde
|
|
25
|
+
|
|
26
|
+
REST API veya Figma access token gerekmez.
|
|
27
|
+
|
|
28
|
+
**Önemli:** Bu skill'in tüm karşılaştırma ve drift tespiti **AI agent tarafından** yapılır. MCP araçları (`figma_get_variables`, `figma_get_styles`, `figma_check_design_parity`) ham veri sağlar; drift analizi, raporlama ve düzeltme önerileri AI'ın çıkarımlarıdır.
|
|
29
|
+
|
|
30
|
+
## Prerequisites
|
|
31
|
+
|
|
32
|
+
- F-MCP Bridge plugin bağlı olmalı
|
|
33
|
+
- Tercihen `.figma-mappings.json` mevcut olmalı (code-design-mapper skill'i ile oluşturulur)
|
|
34
|
+
- Token dosyaları mevcut olmalı (design-token-pipeline skill'i ile oluşturulur)
|
|
35
|
+
|
|
36
|
+
## F-MCP skill koordinasyonu
|
|
37
|
+
|
|
38
|
+
**Bu skill’in yeri:** Kod ve Figma **parity** doğrulaması — tipik olarak **implement-design** veya mevcut kod tabanı üzerinde **sonra** çalıştırılır; handoff/implement **öncesi** “mutlaka drift” diye zorunlu değildir (henüz kod yoksa anlamsız olur).
|
|
39
|
+
|
|
40
|
+
**Tipik sıra (kod hattı):** **design-token-pipeline** → isteğe bağlı **code-design-mapper** → **ai-handoff-export** → **implement-design** → **design-drift-detector** (parity). Tuvalde DS tutarsızlığı şüpheliyse önce **audit-figma-design-system** ve gerekirse **fix-figma-design-system-finding** / **apply-figma-design-system**; aksi halde drift raporu **yanlış pozitif** üretebilir.
|
|
41
|
+
|
|
42
|
+
**Drift sonrası yönlendirme:**
|
|
43
|
+
- Sapma **kodda** → kodu düzelt, ardından bu skill’i **yeniden** çalıştır.
|
|
44
|
+
- Değişiklik etkisini ölçmek istiyorsan → **ds-impact-analysis**
|
|
45
|
+
- PO/PM'e teknik olmayan özet sunmak istiyorsan → **figma-screen-analyzer**
|
|
46
|
+
- Sapma **Figma tuvalinde** (instance/token) → **audit-figma-design-system** / **fix** / **apply**, sonra gerekirse tekrar drift veya implement.
|
|
47
|
+
|
|
48
|
+
**Performans:** Aynı oturumda `figma_get_variables` + `figma_get_design_context` tekrarını azalt; önceki tool çıktısı geçerliyse yeniden çağırma. Zincir notları: **audit-figma-design-system** içindeki “Zincir performansı”.
|
|
49
|
+
|
|
50
|
+
## Required Workflow
|
|
51
|
+
|
|
52
|
+
### Step 1: Plugin Bağlantısını Doğrula
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
figma_get_status()
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Step 2: Kontrol Kapsamını Belirle
|
|
59
|
+
|
|
60
|
+
3 kontrol modu var:
|
|
61
|
+
|
|
62
|
+
**A) Hızlı Token Drift** — Sadece token değerlerini karşılaştır (en hızlı)
|
|
63
|
+
**B) Platform Component Drift** — Belirli platformda component'leri kontrol et
|
|
64
|
+
**C) Tam Cross-Platform Tarama** — Tüm platformlarda token + component drift (en kapsamlı)
|
|
65
|
+
|
|
66
|
+
### Step 3: Veri Kaynaklarını Topla
|
|
67
|
+
|
|
68
|
+
#### Figma tarafı:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
figma_get_variables(verbosity="full")
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
figma_get_styles(verbosity="full")
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Component mapping varsa:
|
|
79
|
+
|
|
80
|
+
`.figma-mappings.json` dosyasını oku → component listesini ve platform implementasyonlarını al
|
|
81
|
+
|
|
82
|
+
Her component için:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
figma_get_design_context(
|
|
86
|
+
nodeId="<NODE_ID>",
|
|
87
|
+
depth=2,
|
|
88
|
+
verbosity="full",
|
|
89
|
+
includeLayout=true,
|
|
90
|
+
includeVisual=true,
|
|
91
|
+
includeTypography=true
|
|
92
|
+
)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
#### Kod tarafı (her platform için):
|
|
96
|
+
|
|
97
|
+
**iOS:**
|
|
98
|
+
- `Colors.swift` veya Asset Catalog'dan renk değerlerini oku
|
|
99
|
+
- `Typography.swift`'ten font değerlerini oku
|
|
100
|
+
- `Spacing.swift`'ten spacing değerlerini oku
|
|
101
|
+
- Component dosyalarındaki hardcoded değerleri ara
|
|
102
|
+
|
|
103
|
+
**Android:**
|
|
104
|
+
- `res/values/colors.xml` ve `res/values-night/colors.xml`'den renkleri oku
|
|
105
|
+
- `res/values/dimens.xml`'den spacing/radius/font size'ları oku
|
|
106
|
+
- `AppColors.kt`, `AppTypography.kt`, `AppSpacing.kt`'den Compose değerlerini oku
|
|
107
|
+
- Component dosyalarındaki hardcoded değerleri ara
|
|
108
|
+
|
|
109
|
+
**Web:**
|
|
110
|
+
- `tokens.css` veya `_tokens.scss`'den CSS variable/Sass variable değerlerini oku
|
|
111
|
+
- `tailwind.config.js`'den Tailwind token'larını oku
|
|
112
|
+
- `tokens.ts`'den TypeScript constant'ları oku
|
|
113
|
+
- Component dosyalarındaki hardcoded değerleri ara
|
|
114
|
+
|
|
115
|
+
### Step 4: Token Drift Kontrolü
|
|
116
|
+
|
|
117
|
+
Figma token'larını her platformdaki token dosyasıyla karşılaştır.
|
|
118
|
+
|
|
119
|
+
**KRİTİK — Token Name Eşleşme Sorunu:**
|
|
120
|
+
|
|
121
|
+
`figma_check_design_parity` token isimlerini **tam string eşleşme** ile karşılaştırır. Ancak platformlar arası isimlendirme farklıdır:
|
|
122
|
+
|
|
123
|
+
| Figma Variable Adı | iOS | Android | Web |
|
|
124
|
+
|---------------------|-----|---------|-----|
|
|
125
|
+
| `color/primary/500` | `primary500` | `primary_500` | `--color-primary-500` |
|
|
126
|
+
| `spacing/md` | `md` | `space_md` | `--space-md` |
|
|
127
|
+
|
|
128
|
+
Bu yüzden **`codeTokens` içinde Figma'daki variable adını aynen kullanmalısın** — platform naming convention'ını değil:
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
figma_check_design_parity(
|
|
132
|
+
codeTokens='{"color/primary/500": "#3b82f6", "spacing/md": "16"}'
|
|
133
|
+
)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
`figma_check_design_parity` sadece token DEĞER karşılaştırması yapar. Platform kodundaki isimlendirmeyi kontrol etmez. Bu yüzden ek olarak platform dosyalarından değerleri kendin çıkarıp Figma ile karşılaştır:
|
|
137
|
+
|
|
138
|
+
**Platform-spesifik token çıkarma (AI tarafından yapılır):**
|
|
139
|
+
|
|
140
|
+
| Platform | Token Dosyası | Değer Çıkarma |
|
|
141
|
+
|----------|--------------|---------------|
|
|
142
|
+
| iOS | `Colors.swift` | `Color(hex: "#3B82F6")` → `#3B82F6` |
|
|
143
|
+
| iOS | `Spacing.swift` | `static let md: CGFloat = 16` → `16` |
|
|
144
|
+
| Android | `colors.xml` | `<color name="primary">#FF3B82F6</color>` → `#3B82F6` |
|
|
145
|
+
| Android | `dimens.xml` | `<dimen name="space_md">16dp</dimen>` → `16` |
|
|
146
|
+
| Android | `AppColors.kt` | `Color(0xFF3B82F6)` → `#3B82F6` |
|
|
147
|
+
| Web | `tokens.css` | `--color-primary: #3b82f6` → `#3b82f6` |
|
|
148
|
+
| Web | `tailwind.config.js` | `primary: '#3b82f6'` → `#3b82f6` |
|
|
149
|
+
|
|
150
|
+
### Step 5: Component Drift Kontrolü
|
|
151
|
+
|
|
152
|
+
**Önemli:** `figma_check_design_parity` component-level karşılaştırma yapmaz. Component drift kontrolünü AI agent olarak kendin yapmalısın:
|
|
153
|
+
|
|
154
|
+
Her mapping'deki component için, her platformda:
|
|
155
|
+
|
|
156
|
+
1. `figma_get_design_context(nodeId=..., includeLayout=true, includeVisual=true, includeTypography=true)` ile Figma'daki güncel component verisini al
|
|
157
|
+
2. Platform kodunu oku (ör. `ButtonComponent.swift`, `ButtonComponent.kt`, `Button.tsx`)
|
|
158
|
+
3. Aşağıdaki özellikleri karşılaştır:
|
|
159
|
+
- Renkler (background, text, border)
|
|
160
|
+
- Spacing (padding, margin, gap)
|
|
161
|
+
- Typography (font, size, weight, line-height)
|
|
162
|
+
- Border radius
|
|
163
|
+
- Boyutlar (width, height)
|
|
164
|
+
- Variant/prop tanımları
|
|
165
|
+
|
|
166
|
+
Bu karşılaştırma tamamen AI tarafından yapılır — otomatik bir MCP aracı yoktur.
|
|
167
|
+
|
|
168
|
+
### Step 5.5: Motion Token Drift Kontrolü
|
|
169
|
+
|
|
170
|
+
Renk, tipografi ve spacing'e ek olarak **motion token'larını** da kontrol et:
|
|
171
|
+
|
|
172
|
+
| Motion Token | Figma Değer | iOS | Android | Web |
|
|
173
|
+
|-------------|-------------|-----|---------|-----|
|
|
174
|
+
| `duration/fast` | 150 | withAnimation(.easeInOut(duration: 0.15)) | animateFloatAsState(150ms) | transition: 150ms |
|
|
175
|
+
| `duration/normal` | 250 | 0.25 | 250ms | 250ms |
|
|
176
|
+
| `duration/slow` | 400 | 0.4 | 400ms | 400ms |
|
|
177
|
+
| `easing/standard` | ease-in-out | .easeInOut | FastOutSlowInInterpolator | ease-in-out |
|
|
178
|
+
| `easing/decelerate` | ease-out | .easeOut | DecelerateInterpolator | ease-out |
|
|
179
|
+
|
|
180
|
+
**Motion token drift kaynakları:**
|
|
181
|
+
- Figma'da motion token tanımlı ama kodda hardcoded süre/easing
|
|
182
|
+
- Platform bazında farklı easing curve'ler (Figma: ease-in-out, kod: linear)
|
|
183
|
+
- Yeni eklenen motion token'ların koda yansıtılmamış olması
|
|
184
|
+
|
|
185
|
+
> Motion token'ları Figma'da STRING variable olarak veya dokümantasyon sayfasında bulunabilir. `figma_get_variables(verbosity="full")` ile STRING type variable'ları kontrol et.
|
|
186
|
+
|
|
187
|
+
### Step 6: Cross-Platform Tutarlılık Kontrolü
|
|
188
|
+
|
|
189
|
+
Aynı token'ın 3 platformdaki değerini karşılaştır:
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
Cross-Platform Token Kontrolü:
|
|
193
|
+
┌─────────────────┬───────────┬───────────┬───────────┬──────────┐
|
|
194
|
+
│ Token │ Figma │ iOS │ Android │ Web │
|
|
195
|
+
├─────────────────┼───────────┼───────────┼───────────┼──────────┤
|
|
196
|
+
│ primary │ #2563EB │ #3B82F6 │ #2563EB │ #3b82f6 │
|
|
197
|
+
│ │ │ DRIFT! │ OK │ DRIFT! │
|
|
198
|
+
├─────────────────┼───────────┼───────────┼───────────┼──────────┤
|
|
199
|
+
│ spacing-md │ 16 │ 16 pt │ 16 dp │ 12 px │
|
|
200
|
+
│ │ │ OK │ OK │ DRIFT! │
|
|
201
|
+
├─────────────────┼───────────┼───────────┼───────────┼──────────┤
|
|
202
|
+
│ radius-md │ 8 │ 8 pt │ 8 dp │ 8 px │
|
|
203
|
+
│ │ │ OK │ OK │ OK │
|
|
204
|
+
└─────────────────┴───────────┴───────────┴───────────┴──────────┘
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Step 7: Drift Raporu Oluştur
|
|
208
|
+
|
|
209
|
+
```markdown
|
|
210
|
+
# Multi-Platform Design Drift Raporu
|
|
211
|
+
**Tarih:** 2026-03-12
|
|
212
|
+
**Figma Dosya:** Design System
|
|
213
|
+
|
|
214
|
+
## Özet
|
|
215
|
+
|
|
216
|
+
| Platform | Token Drift | Component Drift | Toplam |
|
|
217
|
+
|----------|-------------|-----------------|--------|
|
|
218
|
+
| iOS | 3 divergent | 2 component | 5 |
|
|
219
|
+
| Android | 1 divergent | 1 component | 2 |
|
|
220
|
+
| Web | 5 divergent | 3 component | 8 |
|
|
221
|
+
| **Cross-platform** | **2 inconsistency** | — | **2** |
|
|
222
|
+
|
|
223
|
+
**Kritik Seviye:** 5 (acil düzeltme gerekir)
|
|
224
|
+
**Orta Seviye:** 8 (sprint içinde düzeltilmeli)
|
|
225
|
+
**Düşük Seviye:** 4 (takip edilmeli)
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Token Drift — Platform Detayları
|
|
230
|
+
|
|
231
|
+
### iOS (3 drift)
|
|
232
|
+
|
|
233
|
+
| Token | Figma | iOS Kodu | Dosya | Önem |
|
|
234
|
+
|-------|-------|----------|-------|------|
|
|
235
|
+
| primary | #2563EB | #3B82F6 | Colors.swift:12 | KRİTİK |
|
|
236
|
+
| spacing-lg | 24 | 20 | Spacing.swift:8 | YÜKSEK |
|
|
237
|
+
| text-weight-bold | 700 | 600 | Typography.swift:5 | ORTA |
|
|
238
|
+
|
|
239
|
+
**Önerilen düzeltme:** `Colors.swift`'te `primary` değerini `#2563EB` olarak güncelle.
|
|
240
|
+
|
|
241
|
+
### Android (1 drift)
|
|
242
|
+
|
|
243
|
+
| Token | Figma | Android Kodu | Dosya | Önem |
|
|
244
|
+
|-------|-------|-------------|-------|------|
|
|
245
|
+
| spacing-lg | 24 | 20 | dimens.xml:8, AppSpacing.kt:6 | YÜKSEK |
|
|
246
|
+
|
|
247
|
+
### Web (5 drift)
|
|
248
|
+
|
|
249
|
+
| Token | Figma | Web Kodu | Dosya | Önem |
|
|
250
|
+
|-------|-------|---------|-------|------|
|
|
251
|
+
| primary | #2563EB | #3b82f6 | tokens.css:5 | KRİTİK |
|
|
252
|
+
| spacing-md | 16 | 12 | tokens.css:15 | YÜKSEK |
|
|
253
|
+
| spacing-lg | 24 | 20 | tokens.css:16 | YÜKSEK |
|
|
254
|
+
| radius-lg | 12 | 16 | tokens.css:22 | ORTA |
|
|
255
|
+
| text-size-lg | 16 | 18 | tokens.css:28 | ORTA |
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## Cross-Platform Inconsistency
|
|
260
|
+
|
|
261
|
+
Aynı token'ın platformlar arasında farklı olduğu durumlar (Figma'dan bağımsız):
|
|
262
|
+
|
|
263
|
+
| Token | iOS | Android | Web | Notlar |
|
|
264
|
+
|-------|-----|---------|-----|--------|
|
|
265
|
+
| primary | #3B82F6 | #2563EB | #3b82f6 | iOS ≠ Android (ikisi de eski) |
|
|
266
|
+
| spacing-lg | 20 pt | 20 dp | 20 px | Hepsi eski ama tutarlı |
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Component Drift
|
|
271
|
+
|
|
272
|
+
### Button (42:15)
|
|
273
|
+
|
|
274
|
+
| Platform | Durum | Detay |
|
|
275
|
+
|----------|-------|-------|
|
|
276
|
+
| iOS | DRIFT | padding 12→16, font-weight 400→600 |
|
|
277
|
+
| Android | OK | — |
|
|
278
|
+
| Web | DRIFT | padding 12→16, border-radius 4→8 |
|
|
279
|
+
|
|
280
|
+
### Card (42:20)
|
|
281
|
+
|
|
282
|
+
| Platform | Durum | Detay |
|
|
283
|
+
|----------|-------|-------|
|
|
284
|
+
| iOS | OK | — |
|
|
285
|
+
| Android | DRIFT | yeni variant "outlined" Figma'da var, kodda yok |
|
|
286
|
+
| Web | OK | — |
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## Önerilen Aksiyon Planı
|
|
291
|
+
|
|
292
|
+
### Acil (Bu Sprint)
|
|
293
|
+
1. `primary` rengini tüm platformlarda `#2563EB` olarak güncelle
|
|
294
|
+
2. `spacing-md` ve `spacing-lg` değerlerini Web'de düzelt
|
|
295
|
+
|
|
296
|
+
### Yüksek Öncelik
|
|
297
|
+
3. Button component'ini iOS ve Web'de güncelle
|
|
298
|
+
4. Card'a Android'de `outlined` variant'ı ekle
|
|
299
|
+
|
|
300
|
+
### Orta Öncelik
|
|
301
|
+
5. Typography font-weight değerlerini iOS'ta düzelt
|
|
302
|
+
6. Border radius değerlerini Web'de düzelt
|
|
303
|
+
|
|
304
|
+
### Otomasyon Önerisi
|
|
305
|
+
- Token drift'leri için: `design-token-pipeline` skill'ini çalıştırarak tüm platformların token dosyalarını yeniden üret
|
|
306
|
+
- Component drift'leri için: her drifted component'i `implement-design` skill'iyle yeniden implement et
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### Step 8: Otomatik Düzeltme Seçenekleri
|
|
310
|
+
|
|
311
|
+
Kullanıcıya düzeltme yollarını sun:
|
|
312
|
+
|
|
313
|
+
**A) Token dosyalarını yeniden üret (tüm platformlar)**
|
|
314
|
+
→ `design-token-pipeline` skill'ini çalıştır
|
|
315
|
+
|
|
316
|
+
**B) Belirli platformun token'larını güncelle**
|
|
317
|
+
→ `design-token-pipeline` skill'ini sadece o platform için çalıştır
|
|
318
|
+
|
|
319
|
+
**C) Drifted component'leri yeniden implement et**
|
|
320
|
+
→ `implement-design` skill'ini hedef platform + nodeId ile çalıştır
|
|
321
|
+
|
|
322
|
+
**D) Sadece raporla**
|
|
323
|
+
→ Raporu kaydet, takıma paylaş
|
|
324
|
+
|
|
325
|
+
### Step 9: Mapping Durumlarını Güncelle
|
|
326
|
+
|
|
327
|
+
Drift kontrolü sonrası `.figma-mappings.json`'daki durumları güncelle:
|
|
328
|
+
|
|
329
|
+
- Drift yok → `status: "synced"`
|
|
330
|
+
- Drift var → `status: "outdated"`
|
|
331
|
+
- Düzeltme yapıldı → `status: "synced"`, `lastSync` güncelle
|
|
332
|
+
- Coverage summary'yi güncelle
|
|
333
|
+
|
|
334
|
+
## Periyodik Kontrol Önerileri
|
|
335
|
+
|
|
336
|
+
- **Sprint sonu:** Tüm platformlarda tam tarama
|
|
337
|
+
- **Design token güncellemesi sonrası:** Token drift kontrolü
|
|
338
|
+
- **Platform release öncesi:** İlgili platformda component drift kontrolü
|
|
339
|
+
- **Büyük Figma güncellemesi sonrası:** Cross-platform tarama
|
|
340
|
+
|
|
341
|
+
## Examples
|
|
342
|
+
|
|
343
|
+
### Örnek 1: Hızlı Token Kontrolü — Tüm Platformlar
|
|
344
|
+
|
|
345
|
+
Kullanıcı: "Token'lar güncel mi kontrol et, tüm platformlarda"
|
|
346
|
+
|
|
347
|
+
**Akış:**
|
|
348
|
+
|
|
349
|
+
1. `figma_get_variables(verbosity="full")` → Figma'daki 48 token
|
|
350
|
+
2. iOS'tan `Colors.swift` + `Spacing.swift` oku → 45 token
|
|
351
|
+
3. Android'den `colors.xml` + `dimens.xml` oku → 43 token
|
|
352
|
+
4. Web'den `tokens.css` oku → 48 token
|
|
353
|
+
5. Her platform için `figma_check_design_parity(...)` çağır
|
|
354
|
+
6. Cross-platform karşılaştırma tablosu oluştur
|
|
355
|
+
7. Rapor: "iOS'ta 3, Android'de 1, Web'de 5 drift tespit edildi"
|
|
356
|
+
|
|
357
|
+
### Örnek 2: Tek Platform Component Kontrolü
|
|
358
|
+
|
|
359
|
+
Kullanıcı: "Android component'leri Figma ile uyumlu mu?"
|
|
360
|
+
|
|
361
|
+
**Akış:**
|
|
362
|
+
|
|
363
|
+
1. `.figma-mappings.json`'dan Android mapping'lerini oku → 18 component
|
|
364
|
+
2. Her component için Figma design context çek
|
|
365
|
+
3. Android koduyla karşılaştır
|
|
366
|
+
4. Rapor: "1 component drifted (Card — yeni variant eksik)"
|
|
367
|
+
|
|
368
|
+
### Örnek 3: Belirli Component — Tüm Platformlar
|
|
369
|
+
|
|
370
|
+
Kullanıcı: "Button tüm platformlarda güncel mi?"
|
|
371
|
+
|
|
372
|
+
**Akış:**
|
|
373
|
+
|
|
374
|
+
1. `.figma-mappings.json`'dan Button mapping'ini oku → 3 platform implementasyonu
|
|
375
|
+
2. `figma_get_design_context(nodeId="42:15", ...)` → Figma'daki güncel Button
|
|
376
|
+
3. iOS `ButtonComponent.swift` oku → karşılaştır
|
|
377
|
+
4. Android `ButtonComponent.kt` oku → karşılaştır
|
|
378
|
+
5. Web `Button.tsx` oku → karşılaştır
|
|
379
|
+
6. Rapor: "iOS ve Web'de padding drift var, Android güncel"
|
|
380
|
+
|
|
381
|
+
## Common Issues and Solutions
|
|
382
|
+
|
|
383
|
+
### Sorun: Token dosyası bulunamıyor (platform hiç export etmemiş)
|
|
384
|
+
|
|
385
|
+
**Çözüm:** Önce `design-token-pipeline` skill'ini çalıştırarak token dosyalarını oluştur. Drift kontrolü token dosyası yoksa o platformu "not initialized" olarak raporlar.
|
|
386
|
+
|
|
387
|
+
### Sorun: Renk formatları farklı (hex case, alpha prefix)
|
|
388
|
+
|
|
389
|
+
**Çözüm:** Karşılaştırma öncesi normalize et: `#3B82F6`, `#3b82f6`, `#FF3B82F6`, `Color(0xFF3B82F6)` hepsi aynı renktir. Alpha prefix'i (FF) kaldır, lowercase'e çevir.
|
|
390
|
+
|
|
391
|
+
### Sorun: Platform projeleri farklı repo'da
|
|
392
|
+
|
|
393
|
+
**Çözüm:** `.figma-mappings.json`'daki `platforms.*.rootDir` alanından her platformun yolunu al. Dosya okumaları bu path'e göre yapılır.
|
|
394
|
+
|
|
395
|
+
### Sorun: False positive çok fazla
|
|
396
|
+
|
|
397
|
+
**Çözüm:** Tolerans eşiği uygula:
|
|
398
|
+
- Renk: Delta E < 3 ise "low priority"
|
|
399
|
+
- Spacing: 1px fark ise "low priority"
|
|
400
|
+
- Font size: tam eşleşme bekle (fark yok)
|
|
401
|
+
|
|
402
|
+
## Evolution Triggers
|
|
403
|
+
|
|
404
|
+
- Bridge'e yeni parity aracı eklenirse (ör. token karşılaştırma aracı) ilgili adımlar basitleştirilmeli
|
|
405
|
+
- Yeni platform desteği (Flutter, .NET MAUI) eklenirse platform drift profilleri genişletilmeli
|
|
406
|
+
- `figma_check_design_parity` parametreleri değişirse Step güncellemesi yapılmalı
|
|
407
|
+
- Cross-platform drift raporunda CI entegrasyonu eklenirse JSON çıktı formatı standardize edilmeli
|