Softwarové týmy strávily desetiletí budováním determinismu do svých nástrojových řetězců. Lockfiles pro správce balíčků. Připnuté základní obrazy pro kontejnery. Reprodukovatelná sestavení pro zkompilované artefakty. Princip je dobře pochopen: stejné vstupy by měly vždy produkovat stejné výstupy, na jakémkoli počítači, kdykoli.

Předávání návrhů tento princip nikdy neaplikovalo. Byl to ze své podstaty lidský, a tedy nedeterministický proces. Designér vysvětluje návrh vývojáři. Vývojář ho interpretuje. Interpretace se liší podle osoby, dne a toho, jak jasně byl komentář v Zeplinu napsán. Nelze to přehrát. Nelze to testovat. Nelze to diffovat.

Ve světě AI coding agentů je nedeterministický handoff nyní prvotřídním inženýrským problémem. figmascope ho řeší zmrazeným, přenosným kontextovým balíčkem.

Proč jsou současné nástroje nedeterministické pro agenty

Zeplin a Avocode vám dávají čísla extrahovaná z Figma — rozměry vrstev, hodnoty barev, velikosti písma. Ale servírují je jako prohlížitelné UI, ne jako strojově čitelný artefakt. Agent namířený na Zeplin musí navigovat UI, aby hodnoty našel, což je křehké, omezené rychlostí a závisí na tom, jak byly anotace napsány.

Figma Dev Mode jde dál: dává vám úryvky kódu generované inline z návrhu. Ale úryvky jsou bezstavové — generovány na vyžádání, ne verzovány. Není žádný balíček, který byste mohli commitovat. Není žádný soubor, který byste mohli diffovat. Pokud designér aktualizuje návrh, zobrazení Dev Mode se tiše aktualizuje. Nevíte, kdy se základní návrh změnil vzhledem k tomu, co jste naposledy exportovali.

Screenshoty jsou nejhorší případ: čistá pixelová data, plně nedeterministická k parsování, pokaždé produkující různou inferenci struktury.

Živá MCP připojení — nástroje, které dávají agentům přístup k Figma souboru přes API v reálném čase — jsou ze své definice nedeterministická. Soubor se mění, zatímco ho agent čte. Běh agenta v 9 ráno a jeho běh ve 2 odpoledne vidí různé vstupy. Nemůžete reprodukovat ranní běh, protože zdroj se změnil.

Agenti jsou pravděpodobnostní systémy. Dávání nedeterministických vstupů jim neprodukuje jen odchylku — činí systém netestovatelným. Nemůžete říct, zda špatný výstup byl způsoben modelem, promptem nebo tím, že někdo přesunul vrstvu mezi běhy.

Balíček jako kompilační jednotka

Správný mentální model pro export figmascope je kompilační artefakt. Stejně jako kompilátor vezme zdrojový kód a vytvoří deterministický binární soubor — stejný zdroj, stejné příznaky, stejný binár — figmascope vezme stav Figma souboru a vytvoří deterministický balíček: stejný stav souboru, stejný balíček, pokaždé.

Balíček je zmrazený snapshot. Zachycuje konkrétní verzi návrhu a serializuje každou relevantní vlastnost: prostorové rozvržení, identitu komponent, vazby tokenů, obsah řetězců, hierarchii. Po exportu je balíček neměnný. Figma soubor se může změnit; balíček se nemění. Pokud chcete tyto změny zahrnout, re-exportujete a dostanete nový balíček.

Toto je model kompilační jednotky. Soubor návrhu je zdroj. Balíček je artefakt. Agenti konzumují artefakty, ne zdroje.

Čtyři vlastnosti deterministického handoff

Snapshotovatenlný. Handoff artefakt musí reprezentovat konkrétní bod v čase. Ne "aktuální stav Figma souboru" — pojmenovaný, verzovaný export. Balíčky figmascope nesou _meta.json s časovým razítkem exportu a otiskem toho, co bylo zahrnuto. Balíček je snapshot, ne živý pohled.

Přenosný. Artefakt musí být soběstačný. Žádné závislosti na externích službách, živých API nebo přihlášených sezeních. Balíček figmascope je ZIP prostých souborů — JSON, Markdown, PNG. Můžete ho zkopírovat, poslat emailem, commitovat do gitu, připojit k PR, předat junior vývojáři nebo coding agentovi bez jakéhokoli nastavení.

Inspektovatenlný. Deterministický artefakt je k ničemu, pokud nemůžete ověřit, co je v něm. Každý soubor v balíčku je čitelný člověkem. CONTEXT.md je Markdown. tokens.json je struktura podobná W3C. IR pro každou obrazovku je JSON s jasnými názvy polí. Inženýr může otevřít balíček a přesně zkontrolovat, co bylo agentovi řečeno. To je kvalitativně jiné než "vložil jsem screenshot a dostal nějaký kód."

Reprodukovatelný. Dané stejnému stavu Figma souboru by dva samostatné exporty měly produkovat funkčně ekvivalentní balíčky. Ne bytově identické (časová razítka se liší), ale sémanticky identické: stejné struktury uzlů, stejné hodnoty tokenů, stejný inventář komponent. Pokud exportujete dvakrát z nezměněného souboru a balíčky se sémanticky liší, něco je špatně. Tato vlastnost vám umožňuje ověřit exportovací pipeline a zachytit regrese v samotném extraktoru.

Jak to funguje v praxi

Designér dokončí obrazovky jednoho sprintu. Exportuje balíček. Balíček se commituje do repozitáře spolu s ticketem — nebo se připojí k Jira issue, nebo se hodí do sdíleného úložiště, v závislosti na vašem workflow. V tomto bodě je handoff artefakt pevně stanoven. Agent (nebo vývojář) pracuje z balíčku, ne z živého Figma souboru.

Uprostřed implementace designér aktualizuje tři obrazovky. Žádný problém: pracovní balíček vývojáře je nezměněn. Nové obrazovky dostanou nový export. Nyní máte dva balíčky a můžete je diffovat: co se změnilo mezi návrhem, se kterým vývojář začal, a aktuálním návrhem. Toto je přesně ten druh viditelnosti změn, který je nemožný s workflow na základě screenshotů nebo živých připojení.

V workflow s více agenty — jeden agent sestavuje knihovnu komponent, další sestavuje rozvržení obrazovek, třetí píše testy — každý agent dostane stejný balíček jako svůj zdroj pravdy. Všichni pracují ze stejného zmrazeného stavu návrhu. Jejich výstupy jsou kompozitabilní, protože jejich vstupy jsou sdílené a pevné. To je předpoklad pro generování UI s více agenty, které je skutečně spolehlivé.

Diffování balíčků

Protože balíček jsou prosté soubory, diffuje se jako kód. Dva exporty stejného souboru přes dvě verze Figma vám dávají JSON diff, který říká přesně, co se změnilo:

Toto je viditelnost změn návrhu, která v žádném současném handoff nástroji neexistuje. Figma má vlastní historii verzí, ale ta je vizuální a určena pro designéry. Diff balíčku je strukturovaný a určený pro vývojáře: strojově čitelná data o změnách, která mohou řídit automatizované testy, aktualizovat changelogy nebo spouštět CI workflow.

CI/CD pro předávání návrhu

Jakmile je handoff deterministický, CI/CD přirozeně následuje. Můžete psát testy, které běží proti balíčku: "tato obrazovka musí obsahovat komponentu Button/Primary," "tento token musí být svázán a ne hardkódovaná hodnota," "tento řetězec musí mít klíč stringRef." Jsou to statické analytické kontroly proti strukturovaným datům. Běží v milisekundách. Běží v pipeline.

Také můžete validovat výstup agenta codegen proti balíčku, který dostal. Použil agent tokeny nebo hardkódoval literály? Vygeneroval správný počet instancí opakované komponenty? Použil správné hodnoty mezer? Na tyto otázky lze odpovědět, když zdrojem pravdy je strukturovaný soubor, ne PNG.

Srovnání s MCP

Živá MCP připojení k Figma získávají na popularitě. Přitažlivost je zřejmá: agent vždy vidí nejnovější návrh, žádný krok exportu, žádná ruční správa balíčků. Ale živá připojení obchodují determinismus za pohodlí — a pro AI agenty je tento obchod špatný.

Živá připojení znamenají: kontext agenta závisí na tom, kdy běží. Běh v 9 ráno a běh ve 2 odpoledne vidí různá data, pokud designér pracoval přes den. Nelze reprodukovat dřívější běh. Nelze testovat proti pevnému vstupu. Nelze auditovat, co bylo agentovi řečeno. Pokud je generovaný kód špatný, nemůžete rozlišit "model udělal špatnou inferenci" od "návrh se změnil pod agentem."

Správný model je: živá připojení pro průzkum návrhu a iteraci (kde záleží na aktuálnosti), deterministické balíčky pro handoff a generování (kde záleží na reprodukovatelnosti). Nesoupeří — fungují v různých bodech workflow.

Předání junior vývojáři

Stejné vlastnosti, které dělají balíčky dobrými pro AI agenty, je dělají dobrými pro lidské vývojáře, kteří jsou v kódové základně noví. Junior vývojář, kterému je předán balíček, má: kompletní specifikaci v CONTEXT.md, všechny hodnoty tokenů v tokens.json, každou komponentu uvedenou s jejími vlastnostmi, každý řetězec s jeho identitou. Nemusí být v Figma souboru. Nepotřebuje účet Figma. Nemusí vědět, která obrazovka je autoritativní.

Balíček je kompletní, soběstačná pracovní objednávka. Stejná jako ta, kterou by dostal agent. Jediný rozdíl je, že člověk ho čte a agent ho zpracovává programaticky — ale artefakt je identický.

Tato sjednocenost — stejný artefakt, lidský nebo agentový konzument — je podstatou věci. Balíček je jednotka handoff. Vše ostatní je detail implementace.

Deterministický handoff v praxi viz Claude Code, Cursor nebo Aider. Všechny začínají ze stejného exportu figmascope.