Access Figma via the Figma API with OAuth authentication. Read files, manage comments, extract design tokens, download images, and create webhooks for file event notifications.
This skill uses ClawLink for hosted connection flows and credentials so you do not need to configure Figma API access yourself.
Step 1: InstallStep 2: Pair AccountStep 3: Connect Figma
_App-specific connection GIF coming soon_Run the install command in OpenClawSign in and approve the deviceOpen the dashboard and connect Figma
text
┌─────────────────┐ ┌──────────────┐ ┌──────────────────┐
│ OpenClaw │────▶│ ClawLink │────▶│ Figma API │
│ (User Chat) │ │ (OAuth) │ │ (REST) │
└─────────────────┘ └──────────────┘ └──────────────────┘
│ │ │
│ 1. Install Plugin │ │
│ 2. Pair Device │ │
│ 3. Connect Figma │ │
│ │ 4. Secure Token │
│ │ 5. Proxy Requests │
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ SKILL │ │ Dashboard│ │ Figma │
│ File │ │ Auth │ │ Files │
└──────────┘ └──────────┘ └──────────┘
Install the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.
bash
openclaw plugins install clawhub:clawlink-plugin
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
Then tell the user: "OpenClaw has been restarted. Send /new as a standalone message to start a fresh chat, then ask for Figma again."
bash
# Get current authenticated Figma user
clawlink_call_tool --tool "figma_get_current_user" --params '{}'
# Discover file key and node IDs from a Figma URL
clawlink_call_tool --tool "figma_discover_figma_resources" --params '{"figma_url": "https://www.figma.com/file/ABC123xyz/MyFile"}'
# Get file JSON for a Figma design file
clawlink_call_tool --tool "figma_get_file_json" --params '{"file_key": "ABC123xyz"}'
All Figma tool calls are authenticated automatically by ClawLink using the user's connected Figma account.
No API key is required in chat. ClawLink stores the OAuth token securely and injects it into every Figma API request on the user's behalf.
clawlink_begin_pairing if it is not configured yet.clawlink_list_integrations to verify the connection is active.bash
clawlink_list_integrations
Response: Returns all connected integrations. Look for figma in the list.
bash
clawlink_list_tools --integration figma
Response: Returns the live tool catalog for Figma.
If Figma tools are missing or the connection shows an error:
clawlink_list_integrations to verifyclawlink_list_tools --integration figmaToolDescriptionModefigma_discover_figma_resourcesExtract file_key, node IDs, team_id, and project_id from any Figma URLReadfigma_get_file_metadataGet file name, creator, last modified, thumbnail, and access infoReadfigma_get_current_userGet authenticated Figma user detailsRead
ToolDescriptionModefigma_get_file_jsonGet full Figma design file JSON with automatic simplificationReadfigma_get_file_nodesFetch JSON for specific node IDs from a fileReadfigma_get_file_stylesList published styles (colors, text, effects, grids) from a main fileReadfigma_get_file_componentsList published components from a library fileReadfigma_get_file_component_setsList published component sets from a main fileRead
ToolDescriptionModefigma_get_comments_in_a_fileGet all comments from a file with author, position, and reactionsReadfigma_add_a_comment_to_a_filePost a new comment or reply to an existing root commentWritefigma_delete_a_commentDelete a comment (must be original author)Writefigma_add_a_reaction_to_a_commentAdd an emoji reaction to an existing commentWritefigma_delete_a_reactionRemove an emoji reaction from a commentWritefigma_get_reactions_for_a_commentGet all reactions for a specific commentRead
ToolDescriptionModefigma_download_figma_imagesDownload images from file nodes (PNG, SVG, JPG, PDF)Readfigma_render_images_of_file_nodesRender nodes as images with format and scale optionsReadfigma_get_image_fillsGet temporary download URLs for all image fills in a fileRead
ToolDescriptionModefigma_extract_design_tokensExtract design tokens (styles, variables) from a Figma fileReadfigma_design_tokens_to_tailwindConvert extracted design tokens to Tailwind CSS configRead
ToolDescriptionModefigma_create_a_webhookCreate a webhook for file, project, or team eventsWritefigma_get_a_webhookGet details for a specific webhookReadfigma_get_team_webhooksList all webhooks for a team, project, or file contextReadfigma_update_a_webhookUpdate webhook endpoint, event type, or statusWritefigma_delete_a_webhookPermanently delete a webhookWritefigma_get_webhook_requestsGet webhook request history (last 7 days)Read
ToolDescriptionModefigma_get_projects_in_a_teamList projects in a Figma teamReadfigma_get_files_in_a_projectList files in a Figma projectReadfigma_get_team_componentsList published components from a team's libraryReadfigma_get_team_stylesList published styles from a team's libraryReadfigma_get_team_component_setsList published component sets from a team's libraryRead
bash
clawlink_call_tool --tool "figma_discover_figma_resources" \
--params '{
"figma_url": "https://www.figma.com/file/ABC123xyz/MyDesign"
}'
bash
clawlink_call_tool --tool "figma_get_file_json" \
--params '{
"file_key": "ABC123xyz"
}'
bash
clawlink_call_tool --tool "figma_download_figma_images" \
--params '{
"file_key": "ABC123xyz",
"images": [
{
"node_id": "1:2",
"file_name": "logo.png",
"format": "png"
}
]
}'
bash
clawlink_call_tool --tool "figma_add_a_comment_to_a_file" \
--params '{
"file_key": "ABC123xyz",
"comment": {
"text": "Please review the updated hero section"
}
}'
bash
# Step 1: Extract tokens
clawlink_call_tool --tool "figma_extract_design_tokens" \
--params '{
"file_key": "ABC123xyz"
}'
# Step 2: Convert to Tailwind config (pass returned tokens)
clawlink_call_tool --tool "figma_design_tokens_to_tailwind" \
--params '{
"tokens": { "$schema": "...", "colors": {...} }
}'
clawlink_list_integrations to confirm Figma is connected.clawlink_list_tools --integration figma to see the live catalog.clawlink_search_tools with a short query and integration figma.text
┌─────────────────────────────────────────────────────────────┐
│ READ OPERATIONS (Safe) │
│ list → get → search → describe → call │
│ │
│ Example: Discover file → Get JSON → Extract nodes │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ WRITE OPERATIONS (Require Confirmation) │
│ list → get → describe → preview → confirm → call │
│ │
│ Example: Describe tool → Preview comment → User approves │
│ → Execute post │
└─────────────────────────────────────────────────────────────┘
clawlink_describe_tool first.whenToUse, askBefore, safeDefaults, examples, and followups to shape the call.clawlink_preview_tool first.clawlink_call_tool. Pass confirmation only after the preview matches the user's intent.figma.com/design/...) are supported by figma_get_file_json. FigJam boards ( figma.com/board/...) and Slides ( figma.com/slides/...) return a 400 error.node-id=, or from the figma_get_file_json response.team_id, project_id, and file_key cannot be discovered via API — extract them from Figma URLs or use figma_discover_figma_resources.figma_extract_design_tokens.Status / ErrorMeaningTool not foundThe tool name does not exist in the current catalog. Verify with clawlink_list_tools --integration figma.Missing connectionFigma is not connected. Direct the user to https://claw-link.dev/dashboard?add=figma.400 File type not supportedFile is a FigJam board or Slides file, not a Design file. Only Design files work with get_file_json.404 Not FoundFile key, node ID, or webhook does not exist or is not accessible to the authenticated user.403 ForbiddenInsufficient permissions for the requested operation (e.g., team admin required for team webhooks).Write rejectedUser did not confirm a write action. Always confirm before executing writes.
Check that the ClawLink plugin is installed: bash
openclaw plugins list
If the plugin is installed but tools are missing, tell the user to send /new as a standalone message to reload the catalog.
If a fresh chat does not help, run: bash
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
After restart, tell the user to send /new again and retry.
figma.clawlink_describe_tool to verify parameter names and types before calling.clawlink_preview_tool first.Powered by ClawLink — an integration hub for OpenClaw
