A zot extension that lets the agent inspect and edit the file currently open in Figma Design or FigJam.
Figma does not expose a public canvas-write REST API. This project therefore has two cooperating parts:
- A Go zot extension, launched directly with
go run .(no prebuilt binary). - A development Figma plugin that executes canvas operations in the open file.
-
Install the extension from GitHub:
zot ext install https://github.com/patriceckhart/zot-figma
zot ext installclones the repository into zot's extension directory. A Git URL cannot be passed directly tozot --ext, which only accepts local paths. -
In the Figma desktop app, choose Plugins > Development > Import plugin from manifest.... On macOS, press Cmd+Shift+G in the file picker, paste this path, and press Return:
~/Library/Application Support/zot/extensions/figma/figma-plugin/manifest.jsonIf
XDG_STATE_HOMEis configured, the manifest is instead at:$XDG_STATE_HOME/zot/extensions/figma/figma-plugin/manifest.json -
Start zot normally:
zot
-
Run zot bridge from Figma's development plugins menu and leave its small window open.
-
Ask zot to inspect the selection, create a design, make components, move or resize nodes, or create FigJam stickies and connectors.
For development, clone the repository and load it directly:
git clone https://github.com/patriceckhart/zot-figma ~/Developer/zot-figma
zot --ext ~/Developer/zot-figmaThen import this manifest in Figma:
~/Developer/zot-figma/figma-plugin/manifest.json
The bridge listens only on 127.0.0.1:38451. Only the currently open file is accessible, and Figma displays the plugin while it is active.
figma_status: checks whether the Figma plugin is connected.figma_read: reads the current selection, page, or document tree.figma_create: creates nested Design nodes, components, instances, FigJam stickies, and connectors.figma_update: changes node geometry, appearance, text, layout, or component properties.figma_delete: removes nodes.figma_select: selects nodes and optionally brings them into view.figma_export: exports a node as PNG, JPG, SVG, or PDF and returns it to the model.
- The plugin must remain open in the target Figma tab.
- This manipulates canvas objects through Figma's Plugin API. It does not simulate pointer input or control Figma's application UI.
- Team-library components can be instantiated only when their component key is known and Figma permits importing it.
- A Figma plugin can edit only the file in which it is currently running. Creating a new Figma file itself still happens in Figma's UI.
MIT