figma-bridge
Figma Bridge
Read and edit live Figma files through the figma-bridge MCP (plugin + local server, no Figma REST API, no rate limits). This skill exists because in real sessions 20% of bridge calls failed, and almost every failure was one of six avoidable mistakes listed under Troubleshooting.
Not the same as Framelink (figma-context-mcp skill, REST API, 6 req/month on free plans). Use the bridge whenever the plugin can be opened in the file. Fall back to Framelink only for files you cannot open in Figma.
Instructions
Step 1: Handshake — list_files first, then pass fileKey everywhere
- Call
list_filesbefore anything else. It never fails and returns[{fileKey, fileName}]for every file where the plugin is open. - If it returns nothing, stop and ask the user to run the plugin in the target file (Figma → Plugins → Development → Figma MCP Bridge). Do not retry other tools in a loop.
- If more than one file is connected, pick the one whose
fileNamematches the task and passfileKeyon every subsequent call. Omitting it is the error "Multiple files connected. Specify a fileKey". fileKeyfor cloud files is the id in the URL:figma.com/design/<fileKey>/<name>. Locally unsaved files get keys likeunsaved-ms7tl1kp-…that change when the file is reopened. When you see "No plugin connected for fileKey", rerunlist_filesand use the key it prints.
Step 2: Read with the ladder, never with the firehose
Responses over the context limit are not returned; Claude Code dumps them to a file and you get an error. Server builds from 2026-09-07 on default get_document and get_selection to depth 2 and genuinely honor depth on get_node (it was accepted and ignored before, which is why these calls used to overflow). Truncated levels come back as {id,name,type} stubs with childCount and truncated: true. On an older build, assume every read is unbounded and lean harder on find_nodes.