Przejdź do głównej zawartości

Design-to-code: Figma i systemy projektowe

Poprosiłeś AI o zbudowanie karty z ramki Figma i dostałeś czysto wyglądający kod — z zupełnie nowym przyciskiem #4F86F7, jednorazowym rounded-[10px] i ręcznie sklejonym avatarem, który ignoruje <Avatar />, który już utrzymujesz. Pomnóż to przez cały sprint, a Twój “system projektowy” po cichu rozgałęzi się na czterdzieści lekko różniących się odcieni niebieskiego. Wygenerowanie komponentu ze screenshota to łatwe 80%. Trudne 20% — ta część, która naprawdę utrzymuje bazę kodu w dobrym stanie — to zmuszenie AI, by za każdym razem używało Twoich tokenów i Twoich komponentów.

To jest pogłębiona analiza tych 20%. Jeśli potrzebujesz tylko zainstalować serwer Figma MCP i mieć pierwszy komponent na ekranie, zacznij od Figma i Design System MCP i wróć tutaj.

  • Powtarzalny przepływ synchronizowania zmiennych Figmy do typowanego pliku tokenów, który importuje Twój kod
  • Prompty, które zmuszają generowane UI do korzystania z istniejących tokenów i komponentów Code Connect, zamiast wymyślać nowe
  • Pipeline tokenów (zmienne Figmy do Style Dictionary do CSS/TS), który przetrwa więcej niż jeden komponent
  • Test “zgodności z projektem”, dzięki któremu recenzent w kilka sekund stwierdzi, czy kod faktycznie odpowiada projektowi
  • Tryby awarii, które po cichu pogarszają wierność, i jak je naprawić

Krok 1: zsynchronizuj tokeny projektowe, zanim cokolwiek wygenerujesz

Dział zatytułowany „Krok 1: zsynchronizuj tokeny projektowe, zanim cokolwiek wygenerujesz”

Najbardziej dźwigniowym ruchem jest wyekstrahowanie zmiennych Figmy raz, do pliku, który importuje Twój kod, zanim poprosisz o jakiekolwiek komponenty. Wtedy każdej późniejszej generacji można powiedzieć “użyj tokenów” zamiast zgadywać wartości hex.

get_variable_defs zwraca kolekcje zmiennych projektu — kolory, odstępy, promienie, typografię — wraz z ich semantycznymi nazwami. Zapisz je w typowanym źródle prawdy.

Na tym polega różnica między demem a przepływem pracy: plik tokenów jest ponownie wykorzystywany przez każdy kolejny prompt, więc AI nigdy więcej nie musi szacować koloru na oko.

Krok 2: zamień tokeny w prawdziwy pipeline ze Style Dictionary

Dział zatytułowany „Krok 2: zamień tokeny w prawdziwy pipeline ze Style Dictionary”

Pojedynczy tokens.ts wystarcza w małej aplikacji. Dla czegokolwiek współdzielonego między platformami (web, native, email) chcesz mieć krok transformacji, aby jedno źródło tokenów emitowało niestandardowe właściwości CSS, obiekt JS/TS i cokolwiek jeszcze potrzebujesz. Style Dictionary to standardowe narzędzie do tego, a AI może je podłączyć na podstawie Twoich wyeksportowanych tokenów.

  1. Wyeksportuj tokeny w formacie Style Dictionary. Poproś AI o konwersję zmiennych Figmy do tokens.json używającego kształtu design-tokens W3C ({ "$value": ..., "$type": ... }) zamiast doraźnego obiektu.

  2. Wygeneruj konfigurację i zbuduj. Niech AI zeskafolduje config.json z platformami css/variables i javascript/es6, a następnie uruchom build, aby wyemitować niestandardowe właściwości :root oraz importowalny moduł.

  3. Wskaż komponentom wygenerowane zmienne CSS. Od tego momentu generowane komponenty odwołują się do var(--color-primary) — co prowadzi z powrotem do zmiennej Figmy — więc zmiana tokenu projektowego propaguje się po jednym przebudowaniu.

Krok 3: podłącz Code Connect, aby AI ponownie wykorzystywało Twoje komponenty

Dział zatytułowany „Krok 3: podłącz Code Connect, aby AI ponownie wykorzystywało Twoje komponenty”

Tokeny zatrzymują jednorazowe kolory. Code Connect zatrzymuje jednorazowe komponenty. Mapuje komponent Figmy na prawdziwy komponent w Twojej bazie kodu, więc gdy AI widzi ten komponent w projekcie, get_code_connect_map mówi mu, by zaimportowało Twój zamiast generować świeży.

Korzyść: prompty mogą mówić “użyj naszych komponentów tam, gdzie istnieją mapowania Code Connect”, a wygenerowane drzewo jest złożone z Twoich sprawdzonych w boju <Button /> i <Avatar />, zamiast z divów wystylizowanych tak, by je przypominały.

Trzymaj Figmę otwartą z zaznaczoną ramką, otwórz plik, w którym chcesz mieć komponent, i użyj trybu Agent, aby mógł odczytać mapę Code Connect i edytować wiele plików:

“Implement the selected Figma frame as a React component in src/components/ProfileCard.tsx. First call get_code_connect_map; for any node with a mapping, import and use that existing component instead of generating new markup. For everything else, use the CSS variables from src/styles/tokens.css. Do not introduce raw hex values or one-off pixel radii.”

Krok 4: zweryfikuj zgodność z projektem, nie szacuj na oko

Dział zatytułowany „Krok 4: zweryfikuj zgodność z projektem, nie szacuj na oko”

Cały sens ponownego wykorzystywania tokenów i komponentów polega na tym, że recenzent powinien móc szybko potwierdzić wierność. Połącz serwer Figma MCP z serwerem MCP przeglądarki (takim jak @playwright/mcp), aby wyrenderować rezultat i porównać go z projektem.

Przeglądanie diffa z dołączonymi nazwami tokenów jest dużo szybsze niż wpatrywanie się w piksele i mówi Ci, czy niezgodność to błąd w kodzie, czy brakująca zmienna Figmy.

get_design_context zwraca rozległy, niestylizowany markup. Zaznaczenie jest za duże lub za głębokie. Wywołaj najpierw get_metadata, aby zobaczyć drzewo warstw, a następnie wskaż AI konkretną ramkę potomną zamiast całej strony.

AI nadal emituje surowe hex pomimo pliku tokenów. Miesza dane z Figmy ze swoimi domyślnymi wartościami treningowymi (zwłaszcza paletą Tailwind). Bądź wyraźny: “Use only var(--*) tokens from tokens.css. Any literal hex or px value is a bug — flag it instead of writing it.”

get_variable_defs zwraca prawie nic. Designer zastosował surowe style, a nie zmienne. Tokeny eksportują się tylko wtedy, gdy są prawdziwymi zmiennymi Figmy. Poproś designera o konwersję stylów na zmienne lub użyj get_screenshot plus ręcznych wartości dla tego jednego komponentu.

get_code_connect_map jest puste. Żadne mapowania Code Connect nie są jeszcze opublikowane. Generowanie przebiega bez ponownego wykorzystania komponentów; skonfiguruj Code Connect najpierw dla komponentów o największym ruchu (przyciski, inputy, karty), aby uzyskać największy zysk na wierności.

Figma MCP jest niedostępne na Linuksie. Serwer desktopowy wymaga aplikacji Figma, która działa tylko na macOS i Windows. Użyj zamiast tego zdalnego serwera pod https://mcp.figma.com/mcp z tokenem OAuth — jest oparty na linkach, więc działa wszędzie.

Connection refused. W przypadku serwera lokalnego upewnij się, że Figma desktop jest otwarta i przełącznik Dev Mode MCP Server jest nadal włączony. Pełną instalację dla każdego narzędzia znajdziesz w przewodniku konfiguracji.