Design tokens sync pipeline
Getting tokens out of Figma usually means typing values by hand, or paying for a plugin like Tokens Studio to do the export. This is a personal proof of concept for a pipeline that gets the same result without either, tested against a real, production-scale token library, and the four wrong turns it took to get there.
Every token, re-typed by hand
This started as a personal question, not a client request: could a Figma-to-codebase token pipeline run without an Enterprise Figma plan and without paying for a plugin subscription, and would it hold up against a real, sizeable token library rather than a toy example. Without one of those two paid routes, colour, spacing, and type values move from Figma into code the plain way: someone reads the value in Figma and types it into CSS. That's how drift happens. The file says one hex, the code says another, and nobody notices until a screenshot comparison catches it.
The brief was simple to state: when a token changes in Figma, engineering should see it without anyone copying a value by hand.
What was actually available
Three options got evaluated properly, not just discussed. One had already been running, unreliably, before this started.
Before trusting Supernova's token export enough to build on it, a parallel check: Figma's Dev Mode MCP reaches Variables directly from the desktop app, the same data the Enterprise-gated REST API would return, without needing that plan. A handful of already-synced values, Primary/Base, space-5, radius-button, Shadow/Lrg, checked against that source, matched exactly.
That match is what justified building on Supernova's token data rather than hand-assembling values from scattered Dev Mode queries, or trusting an export that had just lost 13% of components mid-session. The pipeline itself never touches MCP; it's a build-time verification step, not a runtime one. But it's the reason the rest of this exists at all rather than a different, slower approach.
The REST path closing off was the turning point. It forced a second look at a Supernova feature already sitting unused: Export Pipelines.
Two manual checkpoints, by design
What actually went wrong
Checked against a real run
Every step above was tested against an actual pipeline execution, including the runs that did nothing, since those were what confirmed the publish requirement.