figma-prototype-flow
Skill10 starsChanged 29 days agoMITView on GitHub
Üretilen Figma ekranları arasında otomatik prototip bağlantıları, animasyonlar ve flow starting point oluşturur. Screen envanteri → navigasyon haritası → reactions → validate → dokümantasyon. "prototip bağla", "ekranları bağla", "prototype connections", "flow oluştur", "navigasyon kur", "animasyon ekle", "interaction ekle" ifadeleriyle tetiklenir. F-MCP Bridge ve figma_create_prototype_connection gerektirir.
In this repository28 other files it gives its agents.
- ai-handoff-exportSkill
- apply-figma-design-systemSkill
- audit-figma-design-systemSkill
- code-design-mapperSkill
- component-documentationSkill
- design-drift-detectorSkill
- design-system-rulesSkill
- design-token-pipelineSkill
- ds-change-trackerSkill
- ds-impact-analysisSkill
- extract-contractSkill
- figjam-diagram-builderSkill
- figma-a11y-auditSkill
- figma-canvas-opsSkill
- figma-screen-analyzerSkill
- fix-figma-design-system-findingSkill
- fmcp-ds-audit-orchestratorSkill
- fmcp-intent-routerSkill
- fmcp-project-rulesSkill
- fmcp-screen-orchestratorSkill
- fmcp-screen-recipesSkill
- fmcp-token-sync-orchestratorSkill
- generate-figma-librarySkill
- generate-figma-screenSkill
- implement-designSkill
- inspiration-intakeSkill
- ux-copy-guidanceSkill
- visual-qa-compareSkill
The file
Files
Figma Prototype Flow — Ekranlar Arası Navigasyon ve Animasyon
Otonom çalışma ilkesi (v1.9.9+): Bu skill varsayılan olarak otonom çalışır. Screen envanteri, button text heuristic'i, animasyon eşleme ve bağlantı oluşturma kullanıcı onayı gerektirmeden yürütülür. Kullanıcıya yalnızca kritik dallanma noktalarında sorulur: (1) heuristic hedef çözümleyemediğinde, (2) 50+ bağlantı tespit edildiğinde, (3) orphan/circular overlay bulunduğunda, (4)
autonomy_mode=Onaylıseçildiğinde her adımda.
Overview
Bu skill, Figma sayfasındaki ekranlar (FRAME'ler) arasında prototip bağlantıları, animasyonlar ve flow starting point'i otomatik oluşturur. Figma Prototype panel'inin tüm özellikleri (9 trigger, 8 action, 9 transition tipi × 4 yön, 11 easing, scroll behavior, overlay ayarları) desteklenir.
Temel ilke: Kullanıcının ekranlarını tarar, button/link text'lerinden niyeti çıkarır, navigasyon haritasını üretir ve setReactionsAsync ile Figma reactions API'sini çağırır. Her şey plugin context'inde çalışır, REST API gerekmez.
Skill Boundaries
- Bu skill: prototip bağlantı + animasyon + flow starting point + scroll behavior
- Ekran üretimi → generate-figma-screen
- Code Connect eşlemesi → code-design-mapper
- A11y focus order → figma-a11y-audit
- Handoff diagram → ai-handoff-export
Prerequisites
- F-MCP Bridge plugin bağlı (
figma_get_statusyeşil dönmeli) - Hedef sayfada en az 2 FRAME
- Ekranlar içinde Button/Link instance'ları isimlendirilmiş olmalı (navigasyon haritası için — isimlendirilmemiş jenerik Rectangle'lar yakalanmaz)
F-MCP skill koordinasyonu
- Önce:
generate-figma-screenveyafmcp-screen-recipesile ekranlar üretilmiş olmalı - Birlikte:
figma-canvas-ops(herfigma_executeöncesi zorunlu) - Sonra:
figma-a11y-audit(focus sırası cross-check),ai-handoff-export(flow diagram)
Required Workflow
Bu adımları sırayla uygula. Adım atlama.
Step 0: Ön koşullar ve Otonom Mod Ayarı
1. figma_get_status() → plugin bağlı mı?
2. .claude/design-systems/active-ds.md kontrolü (DS context bilgisi için)
3. autonomy_mode girdisini oku:
- "Otonom" → varsayılan, kritik dallanmalarda sor
- "Onaylı" → her Step sonunda kullanıcıya özet + AskUserQuestionStep 1: Screen Envanteri
// Plan A: figma_get_file_data(depth=1) ile üst seviye FRAME listesi
const data = await figma_get_file_data({ depth: 1, verbosity: "standard" });
// Plan B (daha zengin): figma_execute ile page.children filtrele
// return figma.currentPage.children.filter(c => c.type === "FRAME").map(f => ({ id: f.id, name: f.name, width: f.width, height: f.height }));Çıktı tablosu:
| # | Frame ID | Frame Adı | Rol Tahmini | Boyut |
| 1 | 1:2 | "Login / Mobile" | Login | 402×874 |
| 2 | 1:3 | "Home / Mobile" | Home | 402×874 |
| 3 | 1:4 | "Register" | Register | 402×874 |
Rol tahmini regex'leri (case-insensitive):
- Login:
/^(login|giriş|sign ?in)/i - Home / Dashboard:
/^(home|anasayfa|dashboard|main)/i - Register:
/^(register|kayıt|sign ?up)/i - ForgotPassword:
/^(forgot|şifre)/i - Check Email:
/^(check email|e-posta kontrol|onay)/i - Settings / Profile:
/^(settings|ayarlar|profile|profil)/i - Onboarding:
/^(onboard|welcome|hoşgeldin)/i
Eşleşme yoksa rol = Generic; heuristic'te kullanıcıya sorulur.
Step 2: Navigasyon Haritası (Heuristic-Based)
2a. Etkileşimli eleman tespiti
Her frame içinde:
frame.findAll(n =>
(n.type === "INSTANCE" && /button|btn|cta|link|action/i.test((n.mainComponent?.name || n.name))) ||
(n.type === "TEXT" && n.parent?.type !== "TEXT" && /^(Giriş|Kayıt|Şifre|Devam|Geri|İptal|Tamam|Login|Sign|Back|Cancel|Submit|Continue)/i.test(n.characters || "")) ||
(n.type === "FRAME" && /clickable|hotspot|tappable/i.test(n.name))
)Button text'i: button.findOne(t => t.type === "TEXT")?.characters ile okunur.
2b. Button text → hedef heuristic tablosu (TR + EN)
| Button text pattern (regex, case-insensitive) | Muhtemel hedef rol | Action | Transition |
^(giriş yap|giriş|login|sign ?in) | Home | Dashboard | Main | NAVIGATE | SLIDE_IN / RIGHT |
^(kayıt ol|kayıt|sign ?up|register) | Register | SignUp | NAVIGATE | SLIDE_IN / RIGHT |
^(şifremi unuttum|forgot) | ForgotPassword | NAVIGATE | SLIDE_IN / RIGHT |
^(gönder|submit|send) | Success | Confirmation | CheckEmail | NAVIGATE | SLIDE_IN / RIGHT |
^(geri|back|<) | — (navigation history) | BACK | SLIDE_IN / LEFT |
^(iptal|cancel|×|✕|kapat|close) | — (overlay ise CLOSE, aksi BACK) | CLOSE / BACK | DISSOLVE |
^(devam|continue|ileri|next) | Sayfa sıralamasında sonraki frame | NAVIGATE | SLIDE_IN / RIGHT |
^(google ile|facebook ile|apple ile|sign in with) | Auth overlay | OVERLAY | DISSOLVE |
^(kaydet|save|onayla|confirm) | Success | Confirmation | NAVIGATE | SLIDE_IN / RIGHT |
^(çıkış|logout|sign ?out) | Login | Landing | NAVIGATE | SLIDE_IN / LEFT |
| Hedef eşleşmiyor | — | Kullanıcıya sor (AskUserQuestion — kritik dallanma) | — |
2c. Frame adı çözümleme
Heuristic'teki "Muhtemel hedef rol" → sayfadaki frame adıyla eşle:
- Regex:
home→/home|dashboard|anasayfa|main/i - TR↔EN yaklaşıklığı:
home ≈ anasayfa,register ≈ kayıt,success ≈ onay
Eşleşme yoksa → destination: "?" → kullanıcıya sor (kritik dallanma).
2d. Otonom mod davranışı
autonomy_mode=Otonom(varsayılan): Heuristic %100 eşleşen bağlantılar otomatik uygulanır. Sadecedestination: "?"olan satırlar için AskUserQuestion.autonomy_mode=Onaylı: Tüm harita markdown tablo olarakAskUserQuestionile sunulur, kullanıcı satır-bazlı onaylar.
Çıktı formatı (her iki modda gösterilir):
| # | Kaynak | Button | → Hedef | Action | Transition | Mod |
|---|--------|--------|---------|--------|------------|-----|
| 1 | Login | "Giriş Yap" | Home | NAVIGATE | SLIDE_IN/RIGHT | auto |
| 2 | Login | "Kayıt Ol" | Register | NAVIGATE | SLIDE_IN/RIGHT | auto |
| 3 | Login | "Devam" | ? | ? | ? | ask |Step 3: Reactions Oluştur (Chunking Kuralı)
3a. Ölçek tespiti
| Bağlantı sayısı | Strateji |
| ≤ 20 | Tek seferde hepsi, her 5 bağlantıda 1 micro-report |
| 21-50 | 10'lu chunk'lara böl, her chunk sonrası figma_capture_screenshot + progress |
| > 50 | Kritik dallanma — kullanıcıya sor: "Önce kritik flow'ları mı (Auth/Onboarding/Ana akış)?" |
| > 100 | HARD STOP — "Bu ölçekte batch modu gelecekte. Şimdi en kritik 50 bağlantıyı seç." |
3b. Animasyon standartları (FUTURE.md:232-241)
| Geçiş | transitionType | direction | duration | easing | matchLayers |
| İleri navigasyon | SLIDE_IN | RIGHT | 300 | EASE_OUT | — |
| Geri navigasyon | SLIDE_IN | LEFT | 300 | EASE_OUT | — |
| Push ileri | PUSH | RIGHT | 300 | EASE_OUT | — |
| Modal açma | DISSOLVE | — | 200 | EASE_IN | — |
| Modal kapama | DISSOLVE | — | 150 | EASE_OUT | — |
| Smart variant | SMART_ANIMATE | — | 300 | EASE_IN_AND_OUT | true |
| Hover state | SMART_ANIMATE | — | 150 | EASE_IN | true |
| Press state | SMART_ANIMATE | — | 100 | EASE_OUT | true |
| Anlık | INSTANT | — | — | — | — |
3c. Her bağlantı için tool çağrısı
await figma_create_prototype_connection({
sourceNodeId: button.id,
destinationNodeId: homeFrame.id,
trigger: "ON_CLICK",
action: "NAVIGATE",
transitionType: "SLIDE_IN",
direction: "RIGHT",
duration: 300,
easing: "EASE_OUT"
});Çoklu trigger: Aynı node'a birden fazla reaction gerekiyorsa (hover + click aynı button'da), default replace: false sayesinde append edilir.
Step 4: Flow Starting Point
// autonomy_mode=Otonom: starting_screen="auto" ise ilk Login/Onboarding/Home tipi frame seçilir
const start = startingScreen === "auto"
? screens.find(s => ["Login","Onboarding","Home"].includes(s.role)) || screens[0]
: screens.find(s => s.id === startingScreen);
await figma_set_flow_starting_point({
nodeId: start.id,
name: flowName,
description: `Auto-generated by figma-prototype-flow skill on ${new Date().toISOString()}`
});Step 5: Scroll Behavior (Opsiyonel)
Sayfada scroll gereken ekranlar varsa (uzun content, header'ı sticky yapılacak element):
// Ana frame vertical scroll
await figma_set_scroll_behavior({ nodeId: frame.id, overflowDirection: "VERTICAL" });
// Header sticky
await figma_set_scroll_behavior({ nodeId: header.id, scrollBehavior: "FIXED" });Otonom modda: frame height > viewport height ise otomatik overflowDirection: "VERTICAL" öner.
Step 6: Validasyon
const audit = await figma_get_prototype_connections({ pageScope: true });Kontroller:
- Haritadaki her kaynağın
audit.connections[]içinde en az 1 reaction'ı var mı? - Tüm
destinationId'ler hâlâ çözülüyor mu? (silinen frame → orphan) audit.flowStartingPointsdoldu mu?- Circular overlay var mı? — OVERLAY graph DFS, A→B→A kontrolü
Orphan veya circular bulunursa → kritik dallanma, kullanıcıya rapor.
Step 7: Dokümantasyon
figma_capture_screenshot({ nodeId: pageRoot, scale: 1 })ile flow overview- JSON özet →
ai-handoff-exportile uyumlu şekildeprototypeFlowanahtarı altında - Mermaid
graph TDdiagram (handoff entegrasyonu için)
Final Türkçe rapor:
✅ Flow "Login Akışı" oluşturuldu
- 12 bağlantı (11 auto, 1 manual)
- Flow starting point: Login / Mobile
- Orphan reaction: 0
- Circular overlay: 0
- Screenshot: ~/.fmcp/screenshots/<timestamp>-<nodeId>.pngTürkçe Karakter Kuralı (ZORUNLU)
Tüm çıktılarda Türkçe karakterler (ş, ç, ğ, ö, ü, ı, İ) doğru kullanılmalı. Her Write sonrası bozuk encoding kontrolü:
grep -P "[ÃÄ]" <dosya>Hata Yonetimi
| Err prefix | Neden | Ne yap |
SOURCE_NOT_FOUND | sourceNodeId geçersiz | Node ID'yi doğrula, sayfa değişmiş olabilir |
DESTINATION_NOT_FOUND | destinationNodeId geçersiz | Hedef frame silinmiş olabilir — haritayı yeniden oluştur |
DESTINATION_REQUIRED | NAVIGATE/OVERLAY vb. için hedef verilmemiş | BACK/CLOSE/URL dışında destinationNodeId zorunlu |
NAVIGATE_REQUIRES_FRAME | NAVIGATE hedefi FRAME değil | Hedef node'u FRAME'e çevir |
UNSUPPORTED_NODE_TYPE | Source reactions desteklemiyor (SLICE/CONNECTOR) | FRAME/INSTANCE/COMPONENT/GROUP/SECTION kullan |
KEYCODES_REQUIRED | ON_KEY_DOWN trigger için keyCodes eksik | En az 1 tuş kodu (örn. [13]=Enter) ver |
DIRECTION_REQUIRED | DirectionalTransition için direction eksik | LEFT/RIGHT/TOP/BOTTOM ver |
NO_COMPONENT_SET | Variant değişimi için COMPONENT_SET context yok | Instance'ın main component'i COMPONENT_SET içinde olmalı |
VARIANT_NOT_FOUND | targetVariantName set içinde yok | figma_get_component_for_development ile variant adlarını doğrula |
FLOW_REQUIRES_FRAME | Flow starting point FRAME olmalı | nodeId'yi FRAME olarak seç |
MISSING_SCOPE | figma_get_prototype_connections'a ne nodeId ne pageScope verilmiş | En az birini belirt |
OVERFLOW_REQUIRES_FRAME_LIKE | overflowDirection FRAME benzeri node gerektirir | FRAME/COMPONENT/COMPONENT_SET/INSTANCE kullan |
SCROLL_BEHAVIOR_UNSUPPORTED | scrollBehavior node tipi desteklemiyor | SceneNode subtype kullan |
MISSING_PARAM | figma_set_scroll_behavior — en az bir param gerekli | overflowDirection veya scrollBehavior ver |
Çıktı Formatı
Her oturum sonunda kullanıcıya:
- Toplam bağlantı sayısı (auto + manual ayrımı)
- Flow starting point: ad + node id
- Validasyon raporu: orphan reactions, circular overlays, eksik bağlantılar
- Screenshot path: flow overview
- Animasyon kullanım özeti: kaç SLIDE_IN, kaç DISSOLVE, kaç SMART_ANIMATE
Evolution Triggers
- Figma Plugin API yeni Transition tipi eklerse →
transitionTypeenum'a ekle - SET_VARIABLE / CONDITIONAL action v2'de desteklenecek → ayrı tool adı önerisi: figma_create_prototype_variable_action (gelecek sürüm, henüz YOK)
- ON_KEY_DOWN gamepad desteği gerekirse →
deviceenum zaten mevcut (XBOX_ONE/PS4/SWITCH_PRO) batchmodu eklenirse → 100+ bağlantı için performans iyileşir (şu an her çağrı tek reaction = N roundtrip)- Smart Animate için otomatik child matching heuristics → kullanıcı matchLayers seçmek zorunda kalmaz
- Overlay preset konumlar (centered/top/bottom) — şu an sadece manual
overlayRelativePosition
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

