{"repo":"awdr74100/figwright","free":true,"listed":false,"github":"https://github.com/awdr74100/figwright","clone":"git clone https://github.com/awdr74100/figwright.git","description":"Free, two-way Figma MCP server. Turn designs into framework-aware code, and push code back to the canvas. Works with Claude Code, Cursor, Codex, and any MCP client.","language":"TypeScript","stars":517,"topics":["ai","claude-code","codegen","codex","cursor","design-to-code","figma","figma-mcp","figma-plugin","figma-to-code","mcp","model-context-protocol"],"license":"MIT","category":"dev_tool","readme_excerpt":"<div align=\"center\">\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/awdr74100/figwright/HEAD/.github/logo-full-dark.svg\">\n  <source media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/awdr74100/figwright/HEAD/.github/logo-full-light.svg\">\n  <img alt=\"Figwright\" src=\"https://raw.githubusercontent.com/awdr74100/figwright/HEAD/.github/logo-full-light.svg\" width=\"480\" height=\"240\">\n</picture>\n\nWhere Playwright drives the browser, Figwright drives Figma.\n\n[![npm](https://img.shields.io/npm/v/@figwright/mcp?logo=npm&color=cb3837)](https://www.npmjs.com/package/@figwright/mcp)\n[![CI](https://github.com/awdr74100/figwright/actions/workflows/ci.yml/badge.svg)](https://github.com/awdr74100/figwright/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)\n[![Glama MCP server](https://glama.ai/mcp/servers/awdr74100/figwright/badges/score.svg)](https://glama.ai/mcp/servers/awdr74100/figwright)\n\n</div>\n\n## What is Figwright?\n\nFigwright connects an **MCP server** to a **Figma plugin** over a local WebSocket relay, so an AI agent — Claude Code, Cursor, Codex, or any other MCP client — can work _with_ Figma instead of just looking at it.\n\nIt works in both directions:\n\n**Read** — turn a Figma selection into framework-aware code, grounded on faithful, de-duplicated design context (layout, typography, variables, components).\n\n<p align=\"center\">\n  <img alt=\"Figwright turning a Figma selection into code\" src=\"https://raw.githubusercontent.com/awdr74100/figwright/HEAD/.github/figma-to-code.gif\" width=\"820\">\n</p>\n\n**Write** — author and edit the canvas directly: frames, text, auto-layout, styles, variables, components, whole screens.\n\n<p align=\"center\">\n  <img alt=\"Figwright building a design directly on the Figma canvas\" src=\"https://raw.githubusercontent.com/awdr74100/figwright/HEAD/.github/code-to-figma.gif\" width=\"820\">\n</p>\n\nEverything runs on your machine and talks to Figma through a plugin, so it needs **no Figma Dev Mode seat** and **no paid tier**.\n\n## Why Figwright\n\n- **Free** — no Figma Dev Mode or paid seat. The official Dev Mode MCP is gated; Figwright isn't.\n- **Bidirectional** — not read-only. **112 tools** span reading _and_ writing the canvas, so an agent can both implement designs and build them.\n- **Provider-first codegen** — Figwright detects your real stack (framework + styling system) and reuses your existing components, tokens, and icons, instead of emitting generic markup you have to rewrite.\n- **Any MCP client** — Claude Code, Cursor, and other MCP-capable agents all work the same way.\n- **Open & extensible** — the read/write workflows ship as installable [skills](#skills) you can adopt or fork.\n\n## How it works\n\nYour MCP client talks to the `@figwright/mcp` server over stdio; the server relays to the Figma plugin over a local WebSocket. Several clients can share one plugin — they elect a leader that owns the connection — and the transport is built to ride out dropped sockets:\n\n```text\n┌─────────────────────────────────────────────────────────────────────┐\n│ MCP CLIENTS  —  one per agent                                       │\n│ Claude Code · Cursor · Claude · any MCP-capable client              │\n└─────────────────────────────────────────────────────────────────────┘\n                                   │  MCP protocol over stdio\n                                   ▼\n┌─────────────────────────────────────────────────────────────────────┐\n│ @figwright/mcp  —  your client launches one; they elect a leader    │\n│                                                                     │\n│ LEADER   (owns the single plugin connection)                        │\n│    • WebSocket relay · request idempotency                          │\n│    • routes to the most-recently-active file                        │\n│    • session resume · \"busy ≠ dead\" heartbeat                       │\n│    • endpoints:  /ws (plugin) · /ping (health) · /rpc (followers)   │\n│                                                                     │\n│ FOLLOWERS                                                           │\n│    • forward tool calls to the leader over HTTP /rpc                │\n│    • take over automatically if the leader exits                    │\n└─────────────────────────────────────────────────────────────────────┘\n                                   │  local WebSocket · msgpack (binary)\n                                   ▼\n┌─────────────────────────────────────────────────────────────────────┐\n│ FIGMA  (desktop or browser)                                         │\n│                                                                     │\n│ ┌─────────────────────────────────────────────────────────────────┐ │\n│ │ Figwright plugin                                                │ │\n│ │   • UI (Vue 3 iframe): WebSocket client + heartbeat             │ │\n│ │   • sandbox: executes Figma Plugin API calls                    │ │\n│ └─────────────────────────────────────────────────────────────────┘ │\n│                                                                     │\n│              │ Figma Plugin API                                     │\n│              ▼                                                      │\n│            Canvas                                                   │\n└─────────────────────────────────────────────────────────────────────┘\n```\n\nBy design Figwright is **provider-first**: rather than a fixed compiler pipeline, the tools surface honest design context and let the model generate code that matches _your_ codebase. The [`figma-codegen`](#skills) skill encodes this approach.\n\n## The plugin\n\nThe Figma-side plugin isn't a black box. It shows every call as it happens, lets you inspect the exact payload sent to the model, and surfaces its own connection health.\n\n<p align=\"center\">\n  <img alt=\"The Figwright panel: an activity log of tool calls, an expanded call showing the exact payload sent to the model, and a debug tab with connection and call statistics\" src=\"https://raw.githubusercontent.com/awdr74100/figwright/HEAD/.github/plugin-panel.png\" width=\"820\">\n</p>\n\n<p align=\"center\">\n  <sub><b>Activity</b> — every call, with timing and a jump to the nodes it touched · <b>Payload</b> — exactly what the model received · <b>Debug</b> — health, versions, and a one-click diagnostic bundle</sub>\n</p>\n\nAnd it follows your Figma theme, light or dark.\n\n<p align=\"center\">\n  <img alt=\"The same panel side by side in Figma's light and dark themes\" src=\"https://raw.githubusercontent.com/awdr74100/figwright/HEAD/.github/plugin-theme.png\" width=\"616\">\n</p>\n\nThe window is yours to arrange. Drag the bottom-right corner to resize it — a taller panel keeps more of the log in view, and the size is remembered next time you open it. Or send it to the background: the panel gets out of your way while the connection stays live, so a long-running agent keeps working.\n\n<p align=\"center\">\n  <img alt=\"The same panel at two sizes: a narrow one showing three calls with its resize corner highlighted, and a wider one showing five, with the run-in-background button highlighted in the header\" src=\"https://raw.githubusercontent.com/awdr74100/figwright/HEAD/.github/plugin-window.png\" width=\"602\">\n</p>\n\n<p align=\"center\">\n  <sub><b>Resize</b> — drag the corner, the size sticks · <b>Background</b> — the panel hides, the relay stays connected</sub>\n</p>\n\n## Quick start\n\n### 1. Add the server to your MCP client\n\nFor Claude Code, add this to your `.mcp.json` (other clients use the same shape):\n\n```json\n{\n  \"mcpServers\": {\n    \"figwright\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@figwright/mcp@latest\"]\n    }\n  }\n}\n```\n\n`npx` fetches and runs the published server — no global install needed.\n\n### 2. Install the Figma plugin\n\nThe plugin isn't on the Figma Community marketplace yet, so install it from the latest release:\n\n1. Download the plugin zip from the [**latest GitHub Release**](https://github.com/awdr74100/figwright/releases/latest) and unzip it.\n2. In the Figma **desktop app**: **Menu → Plugins → Development → Import plugin from manifest…** and pick the unzipped `manifest.json`.\n\n### 3. Connect\n\nOpen the Figwright plugin in Figma (**Plugins → Development → Figwright**). It connects to the local server automatically and shows **Connected**. Ask your agent to run `ping` to confirm the link.\n\n### 4. (Optional) Install the skills\n\nThe [skills](#skills) make agents reach for Figwright at the right moment and follow the grounded workflows:\n\n```bash\nnpx skills add awdr74100/figwright/skills\n```\n\n### 5. Try it\n\nWith a frame selected in Figma, prompt your agent:\n\n> _Code this Figma selection as a React component._\n\nor, the other direction:\n\n> _Build a pricing section in Figma from this spec._\n\n## Skills\n\nAgent skills orchestrate Figwright's tools. They're model-invoked — your agent loads one automatically when the task matches its description.\n\n| Skill                                              | What it does                                                                                        |\n| :------------------------------------------------- | :-------------------------------------------------------------------------------------------------- |\n| [`figma‑codegen`](./skills/figma-codegen/SKILL.md) | Turn a Figma selection into framework-aware code, grounded on your stack and existing components.   |\n| [`figma‑build`](./skills/figma-build/SKILL.md)     | Build a Figma design from code or a description, reusing the file's existing components and styles. |\n\nInstall across any supported agent with the [`skills`](https://www.skills.sh) CLI:\n\n```bash\nnpx skills add awdr74100/figwright/skills      # both\nnpx skills add https://github.com/awdr74100/figwright/tree/main/skills/figma-codegen  # one\n```\n\n> [!NOTE]\n> Skills need the `@figwright/mcp` server connected — on their own they have no tools to drive.\n\n## Tools\n\nFigwright exposes **112 MCP tools*","default_branch":"main","files":598,"tree":[".claude/hooks/format-on-edit.mjs",".claude/settings.json",".claude/skills/figma-typings-audit/SKILL.md",".claude/skills/mcp-sdk-audit/SKILL.md",".claude/skills/mcp-sdk-audit/probe.mjs",".cspell.json",".editorconfig",".gitattributes",".github/ISSUE_TEMPLATE/bug_report.yml",".github/ISSUE_TEMPLATE/config.yml",".github/ISSUE_TEMPLATE/docs.yml",".github/ISSUE_TEMPLATE/feature_request.yml",".github/PULL_REQUEST_TEMPLATE.md",".github/code-to-figma.gif",".github/figma-to-code.gif",".github/logo-dark.svg",".github/logo-full-dark.svg",".github/logo-full-light.svg",".github/logo-light.svg",".github/plugin-panel.png",".github/plugin-theme.png",".github/plugin-window.png",".github/social-preview-dark.png",".github/social-preview-light.png",".github/workflows/actionlint.yml",".github/workflows/ci.yml",".github/workflows/release.yml",".github/workflows/semantic-pr.yml",".github/workflows/zizmor.yml",".gitignore",".mcp.json",".node-version",".oxfmtrc.json",".oxlintrc.json",".vscode/settings.json","AGENTS.md","CHANGELOG.md","CLAUDE.md","CONTRIBUTING.md","LICENSE","README.md","SECURITY.md","glama.json","knip.json","package.json","packages/mcp/README.md","packages/mcp/package.json","packages/mcp/src/build-id.ts","packages/mcp/src/diff/design-diff.ts","packages/mcp/src/dispatch.ts","packages/mcp/src/election/election.ts","packages/mcp/src/election/follower.ts","packages/mcp/src/election/leader-endpoints.ts","packages/mcp/src/election/node.ts","packages/mcp/src/icons/repo-icons.ts","packages/mcp/src/ignored-dirs.ts","packages/mcp/src/index.ts","packages/mcp/src/instructions.ts","packages/mcp/src/join/casefold.ts","packages/mcp/src/join/component-map.ts","packages/mcp/src/join/icon-map.ts","packages/mcp/src/join/status.ts","packages/mcp/src/join/token-map.ts","packages/mcp/src/lifecycle.ts","packages/mcp/src/local-access.ts","packages/mcp/src/node-id.ts","packages/mcp/src/profile/profile.ts","packages/mcp/src/prompts/code-to-figma.ts","packages/mcp/src/prompts/figma-to-code.ts","packages/mcp/src/prompts/registry.ts","packages/mcp/src/relay/relay.ts","packages/mcp/src/relay/session.ts","packages/mcp/src/repo-walk.ts","packages/mcp/src/scan/scan.ts","packages/mcp/src/scan/sfc-blocks.ts","packages/mcp/src/tokens/css-scan.ts","packages/mcp/src/tokens/figma-tokens.ts","packages/mcp/src/tokens/hex.ts","packages/mcp/src/tokens/js-config.ts","packages/mcp/src/tokens/load.ts","packages/mcp/src/tokens/repo-css.ts","packages/mcp/src/tokens/repo-scss.ts","packages/mcp/src/tokens/scss-file.ts","packages/mcp/src/tokens/token-index.ts","packages/mcp/src/tokens/tokens.ts","packages/mcp/src/tools/add-component-property.ts","packages/mcp/src/tools/add-page.ts","packages/mcp/src/tools/add-variable-mode.ts","packages/mcp/src/tools/analyze-project.ts","packages/mcp/src/tools/annotations.ts","packages/mcp/src/tools/apply-animation-style.ts","packages/mcp/src/tools/apply-manual-keyframe-track.ts","packages/mcp/src/tools/apply-style-to-node.ts","packages/mcp/src/tools/batch-rename-nodes.ts","packages/mcp/src/tools/batch.ts","packages/mcp/src/tools/bind-component-property.ts","packages/mcp/src/tools/bind-variable-to-node.ts","packages/mcp/src/tools/bind-variable-to-paint.ts","packages/mcp/src/tools/clone-node.ts","packages/mcp/src/tools/combine-as-variants.ts","packages/mcp/src/tools/component-map.ts","packages/mcp/src/tools/create-component.ts","packages/mcp/src/tools/create-effect-style.ts","packages/mcp/src/tools/create-ellipse.ts","packages/mcp/src/tools/create-frame.ts","packages/mcp/src/tools/create-grid-style.ts","packages/mcp/src/tools/create-instance.ts","packages/mcp/src/tools/create-paint-style.ts","packages/mcp/src/tools/create-rectangle.ts","packages/mcp/src/tools/create-section.ts","packages/mcp/src/tools/create-text-style.ts","packages/mcp/src/tools/create-text.ts","packages/mcp/src/tools/create-variable-collection.ts","packages/mcp/src/tools/create-variable.ts","packages/mcp/src/tools/delete-component-property.ts","packages/mcp/src/tools/delete-nodes.ts","packages/mcp/src/tools/delete-page.ts","packages/mcp/src/tools/delete-style.ts","packages/mcp/src/tools/delete-variable-collection.ts","packages/mcp/src/tools/delete-variable.ts","packages/mcp/src/tools/design-context-guard.ts","packages/mcp/src/tools/design-diff.ts","packages/mcp/src/tools/detach-instance.ts","packages/mcp/src/tools/edit-component-property.ts","packages/mcp/src/tools/effect-schema.ts","packages/mcp/src/tools/export-pdf.ts","packages/mcp/src/tools/export-video.ts","packages/mcp/src/tools/find-replace-text.ts","packages/mcp/src/tools/get-annotations.ts","packages/mcp/src/tools/get-component-api.ts","packages/mcp/src/tools/get-design-context.ts","packages/mcp/src/tools/get-document.ts","packages/mcp/src/tools/get-fonts.ts","packages/mcp/src/tools/get-local-components.ts","packages/mcp/src/tools/get-metadata.ts","packages/mcp/src/tools/get-motion-styles.ts","packages/mcp/src/tools/get-node-motion.ts","packages/mcp/src/tools/get-node.ts","packages/mcp/src/tools/get-nodes-info.ts","packages/mcp/src/tools/get-pages.ts","packages/mcp/src/tools/get-reactions.ts","packages/mcp/src/tools/get-screenshot.ts","packages/mcp/src/tools/get-selection.ts","packages/mcp/src/tools/get-styles.ts","packages/mcp/src/tools/get-variable-defs.ts","packages/mcp/src/tools/get-viewport.ts","packages/mcp/src/tools/group-nodes.ts","packages/mcp/src/tools/icon-map.ts","packages/mcp/src/tools/import-image.ts","packages/mcp/src/tools/import-svg.ts","packages/mcp/src/tools/list-files.ts","packages/mcp/src/tools/lock-nodes.ts","packages/mcp/src/tools/motion-schemas.ts","packages/mcp/src/tools/move-nodes.ts","packages/mcp/src/tools/navigate-to-page.ts","packages/mcp/src/tools/paint-schema.ts","packages/mcp/src/tools/ping.ts","packages/mcp/src/tools/registry.ts","packages/mcp/src/tools/remove-animation-style.ts","packages/mcp/src/tools/remove-manual-keyframe-track.ts","packages/mcp/src/tools/remove-reactions.ts","packages/mcp/src/tools/rename-node.ts","packages/mcp/src/tools/rename-page.ts","packages/mcp/src/tools/rename-variable.ts","packages/mcp/src/tools/reorder-nodes.ts","packages/mcp/src/tools/reparent-nodes.ts","packages/mcp/src/tools/resize-nodes.ts","packages/mcp/src/tools/rotate-nodes.ts","packages/mcp/src/tools/save-image-fills.ts","packages/mcp/src/tools/save-screenshots.ts","packages/mcp/src/tools/scan-components.ts","packages/mcp/src/tools/scan-nodes-by-types.ts","packages/mcp/src/tools/scan-text-nodes.ts","packages/mcp/src/tools/search-nodes.ts","packages/mcp/src/tools/set-arc.ts","packages/mcp/src/tools/set-auto-layout.ts","packages/mcp/src/tools/set-blend-mode.ts","packages/mcp/src/tools/set-constraints.ts","packages/mcp/src/tools/set-corner-radius.ts","packages/mcp/src/tools/set-effects.ts","packages/mcp/src/tools/set-fills.ts","packages/mcp/src/tools/set-instance-properties.ts","packages/mcp/src/tools/set-layout-grids.ts","packages/mcp/src/tools/set-layout-props.ts","packages/mcp/src/tools/set-mask.ts","packages/mcp/src/tools/set-opacity.ts","packages/mcp/src/tools/set-position.ts","packages/mcp/src/tools/set-reactions.ts","packages/mcp/src/tools/set-strokes.ts","packages/mcp/src/tools/set-text-properties.ts","packages/mcp/src/tools/set-text-range.ts","packages/mcp/src/tools/set-text.ts","packages/mcp/src/tools/set-timeline-duration.ts","packages/mcp/src/tools/set-variable-code-syntax.ts","packages/mcp/src/tools/set-variable-value.ts","packages/mcp/src/tools/set-visible.ts","packages/mcp/src/tools/skew-notice.ts","packages/mcp/src/tools/spec.ts","packages/mcp/src/tools/swap-component.ts","packages/mcp/src/tools/token-map.ts","packages/mcp/src/tools/ungroup-nodes.ts","packages/mcp/src/tools/unlock-nodes.ts","packages/mcp/src/tools/update-effect-style.ts","packages/mcp/src/tools/update-paint-style.ts","packages/mcp/src/tools/update-text-style.ts","packages/mcp/test/diff/design-diff.test.ts","packages/mcp/test/dispatch.test.ts","packages/mcp/test/e2e/_helpers.ts","packages/mcp/test/e2e/get-document.test.ts","packages/mcp/test/e2e/get-selection.test.ts","packages/mcp/test/e2e/mcp-wire.test.ts","packages/mcp/test/e2e/ping.test.ts","packages/mcp/test/e2e/process-lifecycle.test.ts","packages/mcp/test/e2e/read-tools.test.ts","packages/mcp/test/election/election.test.ts","packages/mcp/test/election/follower.test.ts","packages/mcp/test/election/leader-endpoints.test.ts","packages/mcp/test/election/node.test.ts","packages/mcp/test/icons/repo-icons.test.ts","packages/mcp/test/join/casefold.test.ts","packages/mcp/test/join/component-map.test.ts","packages/mcp/test/join/icon-map.test.ts","packages/mcp/test/join/status.test.ts","packages/mcp/test/join/token-map.test.ts","packages/mcp/test/lifecycle.test.ts","packages/mcp/test/local-access.test.ts","packages/mcp/test/no-binary-sources.test.ts","packages/mcp/test/node-id.test.ts","packages/mcp/test/plugin-contract.json","packages/mcp/test/plugin-contract.test.ts","packages/mcp/test/plugin-contract.ts","packages/mcp/test/profile/profile.test.ts","packages/mcp/test/profile/styling-cascade.test.ts","packages/mcp/test/profile/utility-first-single-source.test.ts","packages/mcp/test/prompts/prompt-tool-names.test.ts","packages/mcp/test/prompts/registry.test.ts","packages/mcp/test/relay/relay.test.ts","packages/mcp/test/relay/session.test.ts","packages/mcp/test/repo-walk.test.ts","packages/mcp/test/scan/scan.test.ts","packages/mcp/test/scan/sfc-blocks.test.ts","packages/mcp/test/tokens/css-scan.test.ts","packages/mcp/test/tokens/figma-tokens.test.ts","packages/mcp/test/tokens/js-config.test.ts","packages/mcp/test/tokens/load.test.ts","packages/mcp/test/tokens/repo-css.test.ts","packages/mcp/test/tokens/token-index.test.ts","packages/mcp/test/tokens/tokens.test.ts","packages/mcp/test/tool-schema.ts","packages/mcp/test/tools/component-map.test.ts","packages/mcp/test/tools/design-context-guard.test.ts","packages/mcp/test/tools/design-diff.test.ts","packages/mcp/test/tools/export-pdf.test.ts","packages/mcp/test/tools/export-video.test.ts","packages/mcp/test/tools/get-document.test.ts","packages/mcp/test/tools/get-screenshot.test.ts","packages/mcp/test/tools/get-selection.test.ts","packages/mcp/test/tools/local-tools.test.ts","packages/mcp/test/tools/motion-schemas.test.ts","packages/mcp/test/tools/ping.test.ts","packages/mcp/test/tools/read-tools.test.ts","packages/mcp/test/tools/save-image-fills.test.ts","packages/mcp/test/tools/save-screenshots.test.ts","packages/mcp/test/tools/skew-notice.test.ts","packages/mcp/test/tools/token-map.test.ts","packages/mcp/test/tools/write-tools.test.ts","packages/mcp/tsconfig.json","packages/mcp/tsdown.config.ts","packages/mcp/vitest.config.ts","packages/plugin/manifest.json","packages/plugin/package.json","packages/plugin/protocol/bridge.ts","packages/plugin/protocol/editor-context.ts","packages/plugin/protocol/panel-control.ts","packages/plugin/src/code.ts","packages/plugin/src/dispatcher.ts","packages/plugin/src/handlers/add-component-property.ts","packages/plugin/src/handlers/add-page.ts","packages/plugin/src/handlers/add-variable-mode.ts","packages/plugin/src/handlers/apply-animation-style.ts","packages/plugin/src/handlers/apply-manual-keyframe-track.ts","packages/plugin/src/handlers/apply-style-to-node.ts","packages/plugin/src/handlers/batch-rename-nodes.ts","packages/plugin/src/handlers/batch.ts","packages/plugin/src/handlers/bind-component-property.ts","packages/plugin/src/handlers/bind-variable-to-node.ts","packages/plugin/src/handlers/bind-variable-to-paint.ts","packages/plugin/src/handlers/clone-node.ts","packages/plugin/src/handlers/combine-as-variants.ts","packages/plugin/src/handlers/component-property.ts","packages/plugin/src/handlers/convert.ts","packages/plugin/src/handlers/create-component.ts","packages/plugin/src/handlers/create-effect-style.ts","packages/plugin/src/handlers/create-ellipse.ts","packages/plugin/src/handlers/create-frame.ts","packages/plugin/src/handlers/create-grid-style.ts","packages/plugin/src/handlers/create-instance.ts","packages/plugin/src/handlers/create-paint-style.ts","packages/plugin/src/handlers/create-rectangle.ts","packages/plugin/src/handlers/create-section.ts","packages/plugin/src/handlers/create-text-style.ts","packages/plugin/src/handlers/create-text.ts","packages/plugin/src/handlers/create-variable-collection.ts","packages/plugin/src/handlers/create-variable.ts","packages/plugin/src/handlers/delete-component-property.ts","packages/plugin/src/handlers/delete-nodes.ts","packages/plugin/src/handlers/delete-page.ts","packages/plugin/src/handlers/delete-style.ts","packages/plugin/src/handlers/delete-variable-collection.ts","packages/plugin/src/handlers/delete-variable.ts","packages/plugin/src/handlers/detach-instance.ts","packages/plugin/src/handlers/edit-component-property.ts","packages/plugin/src/handlers/export-pdf.ts","packages/plugin/src/handlers/export-video.ts","packages/plugin/src/handlers/find-replace-text.ts","packages/plugin/src/handlers/get-annotations.ts","packages/plugin/src/handlers/get-component-api.ts","packages/plugin/src/handlers/get-design-context.ts","packages/plugin/src/handlers/get-document.ts","packages/plugin/src/handlers/get-fonts.ts","packages/plugin/src/handlers/get-local-components.ts","packages/plugin/src/handlers/get-metadata.ts","packages/plugin/src/handlers/get-motion-styles.ts","packages/plugin/src/handlers/get-node-motion.ts","packages/plugin/src/handlers/get-node.ts","packages/plugin/src/handlers/get-nodes-info.ts","packages/plugin/src/handlers/get-pages.ts","packages/plugin/src/handlers/get-reactions.ts","packages/plugin/src/handlers/get-screenshot.ts","packages/plugin/src/handlers/get-selection.ts","packages/plugin/src/handlers/get-styles.ts","packages/plugin/src/handlers/get-variable-defs.ts","packages/plugin/src/handlers/get-viewport.ts","packages/plugin/src/handlers/group-nodes.ts","packages/plugin/src/handlers/import-image.ts","packages/plugin/src/handlers/import-svg.ts","packages/plugin/src/handlers/list-files.ts","packages/plugin/src/handlers/lock-nodes.ts","packages/plugin/src/handlers/motion-shared.ts","packages/plugin/src/handlers/move-nodes.ts","packages/plugin/src/handlers/navigate-to-page.ts","packages/plugin/src/handlers/ping.ts","packages/plugin/src/handlers/place.ts","packages/plugin/src/handlers/registry.ts","packages/plugin/src/handlers/remove-animation-style.ts","packages/plugin/src/handlers/remove-manual-keyframe-track.ts","packages/plugin/src/handlers/remove-reactions.ts","packages/plugin/src/handlers/rename-node.ts","packages/plugin/src/handlers/rename-page.ts","packages/plugin/src/handlers/rename-variable.ts","packages/plugin/src/handlers/reorder-nodes.ts","packages/plugin/src/handlers/reparent-nodes.ts","packages/plugin/src/handlers/resize-nodes.ts","packages/plugin/src/handlers/rotate-nodes.ts","packages/plugin/src/handlers/save-image-fills.ts","packages/plugin/src/handlers/scan-nodes-by-types.ts","packages/plugin/src/handlers/scan-text-nodes.ts","packages/plugin/src/handlers/search-nodes.ts","packages/plugin/src/handlers/set-arc.ts","packages/plugin/src/handlers/set-auto-layout.ts","packages/plugin/src/handlers/set-blend-mode.ts","packages/plugin/src/handlers/set-constraints.ts","packages/plugin/src/handlers/set-corner-radius.ts","packages/plugin/src/handlers/set-effects.ts","packages/plugin/src/handlers/set-fills.ts","packages/plugin/src/handlers/set-instance-properties.ts","packages/plugin/src/handlers/set-layout-grids.ts","packages/plugin/src/handlers/set-layout-props.ts","packages/plugin/src/handlers/set-mask.ts","packages/plugin/src/handlers/set-opacity.ts","packages/plugin/src/handlers/set-position.ts","packages/plugin/src/handlers/set-reactions.ts","packages/plugin/src/handlers/set-strokes.ts","packages/plugin/src/handlers/set-text-properties.ts","packages/plugin/src/handlers/set-text-range.ts","packages/plugin/src/handlers/set-text.ts","packages/plugin/src/handlers/set-timeline-duration.ts","packages/plugin/src/handlers/set-variable-code-syntax.ts","packages/plugin/src/handlers/set-variable-value.ts","packages/plugin/src/handlers/set-visible.ts","packages/plugin/src/handlers/swap-component.ts","packages/plugin/src/handlers/ungroup-nodes.ts","packages/plugin/src/handlers/update-effect-style.ts","packages/plugin/src/handlers/update-paint-style.ts","packages/plugin/src/handlers/update-text-style.ts","packages/plugin/src/idempotency.ts","packages/plugin/src/panel.ts","packages/plugin/src/reveal.ts","packages/plugin/src/serializer.ts","packages/plugin/src/traverse.ts","packages/plugin/test/components/panel-background-button.test.ts","packages/plugin/test/components/panel-chrome.test.ts","packages/plugin/test/components/panel-footer.test.ts","packages/plugin/test/components/panel-status.test.ts","packages/plugin/test/components/panel-tabs.test.ts","packages/plugin/test/components/tab-activity-row.test.ts","packages/plugin/test/components/tab-panels.test.ts","packages/plugin/test/components/ui-payload-block.test.ts","packages/plugin/test/components/ui-primitives.test.ts","packages/plugin/test/composables/use-panel-window.test.ts"],"storefront":"/r/awdr74100","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/awdr74100/figwright/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}