Small, typed, deterministic.
One TypeScript repository with three packages. The plugin and the CLI share one core, so the export and the checks can never disagree.
Repository layout
packages/core Core
Design model, normaliser, outline writer, package writer and validator with its JSON Schema. Pure and deterministic, so it runs inside the plugin and in Node.
Bundled into bothpackages/plugin Figma plugin
Reads an explicit property list through the Plugin API, handles mixed values, catches every failing read and zips the package in the browser. No network access.
Figma Communitypackages/cli CLI
inspect, build, verify, refresh and bench. Repo scanning, brief compiler, Chrome DevTools, adb and idb drivers, and the PNG diff.
npmWhat is in a f2f package
DESIGN.mdTokens, Figma → code rules, the verify loopmanifest.jsonSource, scope, status, features, SHA-256 of every filescreens/<screen>.mdCompact outline, one line per layer (agents read this)screens/<screen>.jsonFull node tree: source, calculated, inferred, unsupportedcomponents/components.jsonShared definitions once; instances reference themtokens/tokens.jsonVariables with modes and aliases, stylesassets/Content-hashed SVG/PNG/JPG and reference screenshotsbriefs/<feature>.mdWritten by buildverification/<screen>.*Written by verify
Build and test
Requires Node 22 or newer.
npm installInstall dev dependenciesnpm run checkType-check, run all tests, build plugin and CLInpm linkMake f2f available in every folder
Design principles
- Facts are never mixed with guesses: each value is source, calculated or inferred.
- Uncertain component matches are marked "confirm", never assumed.
- The repo scan is read-only and never opens env or key files.
- No server, no paid API, no telemetry. Optional tools (Chrome, adb, idb) are never downloaded for you.