@uimatch/cli
Command-line and programmatic entry point for comparing Figma designs with implemented interfaces. Its reports are machine-readable, so they fit into CI checks, review workflows, and experimental AI-assisted repair loops.
Installation
Install the CLI with Playwright, then install Chromium:
npm install -D @uimatch/cli playwright
npx playwright install chromium
Set FIGMA_ACCESS_TOKEN when using the Figma API:
export FIGMA_ACCESS_TOKEN="figd_..."
Quick start
npx @uimatch/cli compare \
figma=AbCdEf123:456-789 \
story=http://localhost:6006/iframe.html?id=button--primary \
selector="#storybook-root button" \
profile=component/strict \
outDir=./comparison-results
Commands
| Command | Purpose |
|---|---|
compare | Compare one Figma node with one implementation |
suite | Run comparisons defined in a JSON suite |
text-diff | Compare two strings after uiMatch text normalization |
doctor | Diagnose the runtime, browser, and anchors setup |
settings | Inspect or reset the effective project configuration |
version | Print the CLI version |
The CLI Reference defines command arguments, configuration keys, environment variables, output, and exit codes.
Programmatic use
import { uiMatchCompare } from '@uimatch/cli';
const result = await uiMatchCompare({
figma: 'AbCdEf123:456-789',
story: 'http://localhost:6006',
selector: '#button',
profile: 'component/strict',
});
console.log(result.report.metrics.dfs);
console.log(result.summary);
Programmatic callers receive a result object and remain responsible for their own process exit behavior.
Each call starts and closes its own browser. Pass reuseBrowser: true to share
one across calls, then call closeUiMatchBrowsers() once they have all settled
— the shared browser is process-wide.
Failures that carry a stable code are thrown as UiMatchError. The
CLI Reference lists the
codes.
Selector plugins
Set selectorsPlugin and, when required, selectors to use a selector resolver:
npx @uimatch/cli compare \
figma=AbCdEf123:456-789 \
story=http://localhost:6006 \
selector=button-primary \
selectors=.uimatch/anchors.json \
selectorsPlugin=@uimatch/selector-anchors
Plugins execute as trusted code in the uiMatch process. See Plugin Development for the runtime contract and failure model.
Documentation
License
MIT
Namespaces
Interfaces
Type Aliases
- FigmaMcpConfig
- FigmaRootDimensionConstraint
- SkillConfig
- UiMatchError
- UiMatchErrorCategory
- UiMatchErrorCode