ViraStack
  • Academy
  • About
  • Support
HomeSourcesContribute
ViraStack

A DX-first toolkit for frontend developers: starters, agent rules, form hooks, and a guide.

Products

  • ViraStack Start
  • ViraStack AI
  • ViraStack Mask
  • ViraStack Password
  • ViraStack Guide

Explore

  • Academy
  • About
  • Brand
  • Support

© 2026 ViraStack.

Open source · MIT

Yapay Zeka ile Frontend

07 / 13Project

Tasarımdan Bileşene

Agent, skill ve MCP ile bir Figma kart tasarımını çalışan, test edilmiş bir React bileşenine çevirme.

Bu projede bir profil kartı tasarımını React bileşenine çevireceksiniz. Figma MCP tasarımı okur, skill görünümü yönlendirir, Playwright MCP sonucu tarayıcıda kontrol eder, hazır testler de "bitti" demenizi sağlar.

Dosyalar GitHub'da hazır: design-to-component.

Tip

Proje vite@7, react@19, tailwindcss@4, @playwright/test@1.64 ve @axe-core/playwright@4.14 ile Node 22'de çalıştırıldı. Hazır testler örnek çözümde 10/10 geçti. Başlangıçta üç test kırmızı: kart yok.

Hazırlık

git clone https://github.com/virastack/academy
cd academy/examples/ai/design-to-component/starter
npm install
npx playwright install chromium
npm test

Üç test kırmızı çıkmalı, çünkü sayfada henüz kart yok. Hedef bunları ve diğer yedisini yeşil tutmak.

Tasarım Modern Profile Card UI. Bağlantıyı açıp Open in Figma ile kendi hesabınıza kopyalayın.1 Kartın çerçevesini seçip bağlantısını alın. Uzak Figma MCP sunucusu çerçeve ya da katman bağlantısı ister.2

Tip

Tasarım CC BY 4.0 ile lisanslı. Kullanırken tasarımcıyı anmanız, lisans bağlantısını vermeniz ve değişiklik yaptığınızı belirtmeniz gerekir.3 Hazır atıf satırı design/README.md içinde.

Figma ve Playwright MCP'yi bağlayın:

claude mcp add --transport http figma https://mcp.figma.com/mcp
claude mcp add playwright npx @playwright/mcp@latest

Eklenti yolu da var: claude plugin install figma@claude-plugins-official.4

Warning

Ücretsiz planda Figma MCP çağrıları sınırlı. Figma'nın tablosunda Starter planda View ve Collab koltukları için ayda 20 çağrı yazıyor. Okuma yapan araçlar bu sınıra sayılıyor.5 Bu proje tek çerçeve kullandığı için birkaç çağrı yeter. Limitler değişebilir.

Adım 1: Token'ları çıkarın

Önce renk, yazı tipi ve gölgeyi alın. Böylece bileşen kodunda sabit renk olmaz.

Şu Figma çerçevesindeki değişkenleri ve stilleri (renk, yazı tipi, boşluk, gölge) listele:
<kart çerçevesi bağlantısı>
Bunları src/index.css içindeki @theme bloğuna Tailwind token'ı olarak ekle.

Bu iş için get_variable_defs aracı var. Seçimdeki renk, boşluk ve tipografi değişkenlerini verir.2

Kontrol: src/index.css içindeki @theme dolu mu? Renk adları anlamlı mı (--color-ink, --color-heart gibi)?

Adım 2: Bileşeni kurdurun

Şu Figma çerçevesini src/UserCard.tsx içinde React ve Tailwind ile kur:
<kart çerçevesi bağlantısı>
Bileşen src/data.ts içindeki Profile tipini prop olarak alsın. App.tsx profiles listesini kartlara çevirsin.
Renkleri yalnızca src/index.css token'larından al.
Kart bir <article> olsun. İsim h2, avatar alt metinli img, kalp aria-pressed'li bir button, cta metniyle de bir button olsun.

get_design_context ana araçtır. Varsayılan çıktısı React ve Tailwind'dir.2 Skills rehberindeki frontend-design kuruluysa arayüz kararlarında ajana yön verir.

Başlangıç klasöründeki CLAUDE.md bu kuralları ajana zaten söylüyor. Tasarımdaki fotoğrafları kullanmak zorunda değilsiniz, public/ içindeki yer tutucu görseller yeter.

Tip

Çıktıda bg-[#111111] gibi sabit renkler görürseniz ajana "bunları token'a çevir" deyin. Hazır test bunu da yakalar.

Adım 3: Tarayıcıda karşılaştırın

npm run dev ile sayfayı aç. Playwright ile ilk kartın ekran görüntüsünü al.
Figma çerçevesinin ekran görüntüsüyle karşılaştır ve farkları listele: boşluk, yazı boyutu, köşe yuvarlaklığı, avatarın konumu, renk.
Farkları düzelt.

Playwright MCP sayfayı erişilebilirlik ağacından okur, ekran görüntüsü de alabilir.6 Figma tarafında get_screenshot çerçevenin görüntüsünü verir.2

Kontrol: İki görüntüyü kendiniz de yan yana bakın. Ajanın "aynı" demesi yetmez.

Adım 4: Testleri çalıştırın

npm test

On test şunları denetler:

TestNe kontrol eder
KonsolSayfada konsol hatası yok.
BaşlıkTek h1 var.
KartlarHer profil için bir article; isim h2, avatar, favori butonu, eylem butonu ve tüm metinler görünüyor.
FavoriKalp tıklanınca aria-pressed açılıp kapanıyor, butonun erişilebilir adı var.
Taşma (320 ve 1280)Yatay kaydırma yok, uzun isim dahil hiçbir öğe kartın dışına taşmıyor, butonlar en az 24x24 piksel.
Ekran görüntüsüscreenshots/ klasörüne kart görüntüsü yazar (Adım 3 için).
Alt metinHer görselde alt var.
Erişilebilirlikaxe ile ciddi ya da kritik WCAG ihlali yok.
Sabit renksrc içinde #hex, rgb(), hsl() ya da oklch() yok.

Sabit renk testi, 24 piksel hedef sınırı ve axe etiketleri bu projeye özel seçimler. 24x24 sınırı WCAG 2.2 AA kriteridir (SC 2.5.8).7 axe yalnızca bir kısım sorunu yakalar, geri kalanı elle kontrol ister.8

Test kırılırsa çıktıyı ajana yapıştırın: "Bu test kırıldı, sebebini bul ve düzelt. Testi değiştirme." Son cümle önemli. Ajan testi gevşeterek de geçirebilir.

Bitti sayılır

  1. npm test 10/10 yeşil.

  2. src/index.css @theme içinde tasarımın renkleri var, bileşende sabit renk yok.

  3. screenshots/card-1.png Figma çerçevesine gözle benziyor.

  4. Klavyeyle Tab'a basınca kalp ve eylem butonuna sırayla ulaşıyorsunuz, Enter ya da Boşluk kalbi açıp kapatıyor, odak halkası görünüyor.

Kaynaklar

  • 1DocsFigma Help: Community Licenses

    Ücretsiz Community dosyasını kendi taslaklarınıza kopyalama ve lisans koşullarının dosyaya göre değişmesi.

  • 2DocsFigma: Tools and prompts

    Uzak sunucunun bağlantı isteği, `get_design_context`, `get_screenshot`, `get_variable_defs`, `get_metadata`.

  • 3DocsCreative Commons: CC BY 4.0

    Paylaşma, uyarlama ve ticari kullanım izni; atıf, lisans bağlantısı ve değişiklik belirtme şartı.

  • 4RepoFigma: MCP server guide

    Claude Code için kurulum komutları ve eklenti.

  • 5DocsFigma: Rate limits & access

    Plan ve koltuğa göre çağrı sınırları.

  • 6RepoPlaywright MCP

    Erişilebilirlik anlık görüntüsü ve kurulum.

  • 7DocsW3C: Understanding SC 2.5.8 Target Size (Minimum)

    Hedefler en az 24x24 CSS pikseli, AA düzeyi.

  • 8DocsPlaywright: Accessibility testing

    axe ile otomatik tarama ve sınırları.

Edit this page

Last updated: October 15, 2026

Previous step06. Test, Eval ve Code ReviewNext step08. AI SDK ve Streaming Sohbet