pp-figma
Every Figma endpoint, plus codegen-ready frame extracts, comments audit, orphans finder, tokens diff Trigger phrases: `extract a figma frame for codegen`, `compact figma file context for AI`, `find unresolved figma comments`, `figma stale components`, `diff figma design tokens`, `figma file fingerpr
By mvanhorn · 593 installs
npx skills add mvanhorn/printing-press-library --skill pp-figma
Source repository · Upstream listing
<! GENERATED FILE — DO NOT EDIT.
This file is a verbatim mirror of library/productivity/figma/SKILL.md,
regenerated post merge by tools/generate skills/. Hand edits here are
silently overwritten on the next regen. Edit the library/ source instead.
See the repository agent guide, section "Generated artifacts: registry.json, cli skills/".
Figma — Printing Press CLI
Prerequisites: Install the CLI
This skill drives the figma pp cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
1. Install via the Printing Press installer. It defaults binaries to $HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows:
2. Verify: figma pp cli version
3. Ensure the reported install directory is on $PATH for the agent/runtime that will invoke this skill.
If the npx install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.6 or newer). This installs into $GOPATH/bin (default $HOME/go/bin ), so add that directory to $PATH instead:
If version reports "command not found" after install, the runtime cannot see the binary directory on $PATH . Do not proceed with skill commands until verification succeeds.
This CLI is the offline first, agent native Figma operator. It absorbs every REST endpoint as one Cobra command, ports GLips's compaction pipeline so frame extracts fit in an LLM context window, and adds the analytical primitives no other tool unifies: cross file comments audit, stale component orphans finder, semantic tokens diff between file versions, deterministic file fingerprint for CI, and webhook delivery replay.
When to Use This CLI
Use figma pp cli when an agent or engineer needs to reason about a Figma file as data — not pixels. It shines for codegen prompt context ( frame extract , dev mode dump ), design system ops ( orphans , tokens diff , fingerprint ), comment hygiene ( comments audit ), and webhook iteration ( webhooks test ). For interactive design work, the Figma desktop app is fine — figma pp cli covers everything Figma's REST API exposes and adds the cross file analytical commands the dashboard hides.
Unique Capabilities
These capabilities aren't available in any other tool for this API.
Agent native plumbing
frame extract — Extract a single frame as a compact codegen ready payload that fuses simplified node tree, in scope variables, dev resources, and Code Connect mappings.
First call when an AI agent needs Figma frame context for code generation — returns a compact payload that fits in the context window instead of the raw 10MB file response.
dev mode dump — Emit a portable Markdown bundle that fuses dev resource links, variables in scope, render permalink, and Code Connect mapping for one node.
Use when an agent or engineer needs the full Dev Mode context for one frame as a single Markdown blob — no Desktop pairing required.
webhooks test — Pull Figma's webhook request log and replay stored payloads (with original headers and HMAC) against an arbitrary target URL.
Use when iterating on a new webhook handler — replay yesterday's failed deliveries against your local server without re triggering upstream events.
Local state that compounds
comments audit — Aggregate unresolved comments across every synced team file with age and group by filters.
Run this on Monday morning before design review — surfaces every stale unresolved thread across the team.
orphans — Find published library entities (components, styles, variables) with zero usage over a window by joining team library publish list with library analytics usage data.
First command for the quarterly design system cleanup — returns the list of entities safe to deprecate.
tokens diff — Diff Figma variables across two file versions with mode awareness; emits a Markdown or JSON change set.
Run before merging a design tokens PR to see what actually changed in Figma since the last release.
fingerprint — Stable hash of a Figma file's token + component + style surface; exits non zero if expect doesn't match.
Wire this into CI to fail builds when the upstream Figma file's design system surface drifts from the committed snapshot.
variables explain — Flat list of every node and component that references a given variable across a file.
First call when planning a variable rename or deprecation — shows the blast radius before you touch anything.
Command Reference
activity logs — Get activity logs as an organization admin.
figma pp cli activity logs — Returns a list of activity log events
component sets — Get information about published component sets.
figma pp cli component sets <key — Get metadata on a published component set by key.
components — Get information about published components.
figma pp cli components <key — Get metadata on a component by key.
dev resources — Interact with dev resources in Figma Dev Mode.
figma pp cli dev resources post — Bulk create dev resources across multiple files.
figma pp cli dev resources put — Bulk update dev resources across multiple files.
developer logs — Get developer logs for REST API and MCP server requests in an organization.
figma pp cli developer logs — Returns a list of developer log entries for REST API and MCP server requests made within the organization.
figma analytics — Manage figma analytics
figma pp cli figma analytics get library component actions — Returns a list of library analytics component actions data broken down by the requested dimension.
figma pp cli figma analytics get library component usages — Returns a list of library analytics component usage data broken down by the requested dimension.
figma pp cli figma analytics get library style actions — Returns a list of library analytics style actions data broken down by the requested dimension.
figma pp cli figma analytics get library style usages — Returns a list of library analytics style usage data broken down by the requested dimension.
figma pp cli figma analytics get library variable actions — Returns a list of library analytics variable actions data broken down by the requested dimension.
figma pp cli figma analytics get library variable usages — Returns a list of library analytics variable usage data broken down by the requested dimension.
files — Get file JSON, images, and other file related content.
figma pp cli files <file key — Returns the document identified by file key as a JSON object.
images — Manage images
figma pp cli images <file key — Renders images from a file.
me — Manage me
figma pp cli me — Returns the user information for the currently authenticated user.
oembed — Get oEmbed data for Figma files and published Makes.
figma pp cli oembed — Returns oEmbed data for a Figma file or published Make site URL, following the [oEmbed specification](https://oembed.
payments — Get purchase information for your Community resources.
figma pp cli payments — There are two methods to query for a user's payment information on a plugin, widget, or Community file.
projects — Get information about projects and files in teams.
styles — Get information about published styles.
figma pp cli styles <key — Get metadata on a style by key.
teams — Manage teams
webhooks — Interact with team webhooks as a team admin.
figma pp cli webhooks delete — Deletes the specified webhook. This operation cannot be reversed.
figma pp cli webhooks get — Returns a list of webhooks corresponding to the context or plan provided, if they exist.
figma pp cli webhooks get webhookid — Get a webhook by ID.
figma pp cli webhooks post — Create a new webhook which will call the specified endpoint when the event triggers.
figma pp cli webhooks put — Update a webhook by ID.
Finding the right command
When you know what you want to do but not which command does it, ask the CLI directly:
which resolves a natural language capability query to the best matching command from this CLI's curated feature index. Exit code 0 means at least one match; exit code 2 means no confident match — fall back to help or use a narrower query.
Recipes
Extract a frame for an AI codegen prompt
The killer command. Returns a compact JSON with the simplified node tree, every variable in scope, every dev resource link, and a node count showing the compression ratio — paste it directly into Claude or Cursor.
Find unresolved comments older than two weeks
After sync, walks the comments table and aggregates by file and author. Pipe through jq for Slack ready Markdown.
Cleanup orphans across a team library
Joins team library publish list with 30 day usage analytics; emits the list of entities published but with zero usages — your deprecation candidates. Enterprise tier required.
Diff design tokens between two file versions
Resolves the version ids, snapshots variables at each, and emits a Markdown change set listing added/removed/renamed/value changed tokens. Run before merging a design tokens PR.
Replay failed webhook deliveries against a local server
Fetches the request log via /v2/webhooks/{id}/requests, filters status = 400, and replays each delivery against your local URL with the captured payload and original headers. (HMAC re signing is not yet wired — your handler must accept unsigned replays for testing.)
Auth Setup
Figma supports two auth modes: Personal Access Token (header X Figma Token, prefix figd ) for personal/automation use, and OAuth 2.0 (Authorization: Bearer) for /v1/me, /v1/activity logs, and /v1/developer logs. Set FIGMA API TOKEN (PAT) or FIGMA OAUTH2 (OAuth Bearer); the CLI auto routes to the right header. Run figma pp cli auth login for OAuth, or save a PAT to the config file via figma pp cli auth set token . Doctor surfaces X Figma Plan Tier and X Figma Rate Limit Type from response headers.
Run figma pp cli doctor to verify setup.
Agent Mode
Add agent to any command. Expands to: json compact no input no color yes .
Pipeable — JSON on stdout, errors on stderr
Filterable — select keeps a subset of fields. Dotted paths descend into nested structures; arrays traverse element wise. Critical for keeping context small on verbose APIs:
Previewable — dry run shows the request without sending
Offline friendly — sync/search commands can use the local SQLite store when available
Non interactive — never prompts, every input is a flag
Explicit retries — use idempotent only when an already existing create should count as success, and ignore missing only when a missing delete target should count as success
Response envelope
Commands that read from the local store or the API wrap output in a provenance envelope:
Parse .results for data and .meta.source to know whether it's live or local. A human readable N results (live) summary is printed to stderr only when stdout is a terminal AND no machine format flag ( json , csv , compact , quiet , plain , select ) is set — piped/agent consumers and explicit format runs get pure JSON on stdout.
Agent Feedback
When you (or the agent) notice something off about this CLI, record it:
Entries are stored locally at ~/.local/share/figma pp cli/feedback.jsonl . They are never POSTed unless FIGMA FEEDBACK ENDPOINT is set AND either send is passed or FIGMA FEEDBACK AUTO SEND=true . Default behavior is local only.
Write what surprised you, not a bug report. Short, specific, one line: that is the part that compounds.
Output Delivery
Every command accepts deliver <sink . The output goes to the named sink in addition to (or instead of) stdout, so agents can route command results without hand piping. Three sinks are suppor