Developers

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 both
packages/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 Community
packages/cli

CLI

inspect, build, verify, refresh and bench. Repo scanning, brief compiler, Chrome DevTools, adb and idb drivers, and the PNG diff.

npm

What is in a f2f package

  • DESIGN.mdTokens, Figma → code rules, the verify loop
  • manifest.jsonSource, scope, status, features, SHA-256 of every file
  • screens/<screen>.mdCompact outline, one line per layer (agents read this)
  • screens/<screen>.jsonFull node tree: source, calculated, inferred, unsupported
  • components/components.jsonShared definitions once; instances reference them
  • tokens/tokens.jsonVariables with modes and aliases, styles
  • assets/Content-hashed SVG/PNG/JPG and reference screenshots
  • briefs/<feature>.mdWritten by build
  • verification/<screen>.*Written by verify

Build and test

Requires Node 22 or newer.

  • npm installInstall dev dependencies
  • npm run checkType-check, run all tests, build plugin and CLI
  • npm 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.