Beta Scope & Limitations
CalibrateDS CLI is in public beta. This page is the honest map of what works today, so nothing surprises you mid-project.
Supported today
- Framework: React + TypeScript with CSS Modules for code generation. Scan, diff, status, and governance work for Vue, Svelte, and React Native projects too — but component generation is React-only for now (Vue and Svelte generators are in progress).
- Tokens: bring-your-own — import a plugin token export, or scan Figma Variables directly (requires a Figma Enterprise/Organization plan for the Variables REST API).
- Platforms: macOS, Linux, and Windows.
- Privacy: your design system never leaves your machine. PTB talks only to Figma, with your own token; the model is written locally and sent nowhere else.
Known limitations
- Long component names on Windows — names longer than ~200 characters can exceed Windows' 260-character
MAX_PATHlimit. Keep component names reasonably short; a slug-length cap is planned. (Windows-reserved device names likeCON/AUX/NULare already handled — they generate ascon-cmpetc.) ptb verifyneeds a running Storybook and a browser — verification renders your real component and pixel-diffs it; there is no headless-only shortcut.- Proprietary / self-hosted fonts must be provided by you — Figma's API exposes font names, not font files. Google Fonts and system fonts load automatically in the playground and verify runs.
Name collisions in Figma
If two components in your Figma file collide on any derived key (folder slug, lock slug, thumbnail name, or exported symbol — including two same-named components in different categories), PTB hard-fails loudly naming both components, rather than letting one silently overwrite the other.
If you can't fix the names in Figma right away, use the escape hatch:
ptb scan --ignore-collisions
ptb generate-components --ignore-collisions
ptb export context --ignore-collisions
Colliding components are excluded — never written, never bridged — and named loudly in the output; everything else completes normally. Without the flag, behavior is unchanged: collisions block the run.
Figma rate limits
PTB is built to survive Figma's API rate limiting rather than fall over:
- 429 responses are retried with backoff, honoring Figma's
Retry-Afterheader — bounded (capped at 30s per wait, max 5 attempts), never unbounded. - If retries are exhausted mid-scan, PTB tells you that your last successful snapshot on disk is still usable instead of just printing the raw API error.
- A rate-limited thumbnail export never silently destroys a previously-good reference — the last-known-good thumbnail is preserved and verification keeps working.
Telemetry
PTB collects anonymous usage telemetry to guide development. It is controlled entirely from the CLI:
ptb telemetry status # see current state (default subcommand)
ptb telemetry off # opt out
ptb telemetry on # opt back in
See the Privacy Policy for what is and isn't collected.
Found a bug?
This is a beta, and reports directly shape it. Email deep@deepadalja.com — the link pre-fills a short template (version, OS, what happened) so the report lands actionable.
Next Steps
Back to the Quickstart, or connect your AI IDE in MCP Setup.