Figxel
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BRIDGE_PROCESS | No | Sets how strictly the motion process is enforced: `strict` (the default), `guided` (warnings instead of refusals) or `off`. | strict |
| BRIDGE_TOOLSET | No | Trims the tool list for apps with a tool limit, such as VS Code (128 tools) and Windsurf (100): `core` registers 20 tools. By default all 133 tools are registered. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| figma_statusA | Bridge and plugin connection status: whether this process holds the Figma connection or shares it, every connected Figma file (session id, file, page, user, plugin version), each file's editor (Figma Design, FigJam or Figma Slides) with the tools that do not run there ( |
| figma_get_guideA | Read this before a design, motion or review task. Returns a skill — the playbook for one kind of work — as Markdown. No arguments gives |
| figma_get_metadataA | File name, page list, plugin API version and editor type, plus the current page and selection size. Start here when you know nothing about the file yet. In a FigJam board it adds |
| figma_get_pagesA | Every page in the document (id, name, which one is current). Use a page id with figma_get_local_components to scope a scan. |
| figma_get_nodeA | One node with its children down to |
| figma_get_nodes_infoA | The same as figma_get_node for many ids in one round-trip. Per-id failures are reported per id rather than failing the whole call. |
| figma_get_selectionA | The nodes the user has selected in Figma right now. This is the usual entry point for "make this into code": the user selects what they mean, then this returns it. |
| figma_get_design_contextA | READ THIS BEFORE YOU BUILD OR CODE. The design as a designer sees it: one tree with, per node, size, position, auto-layout (gap, padding, alignment, wrap row gap, grid tracks, hug/fixed/fill, min/max), constraints, fills (gradient angles, image hashes) / strokes / effects / radius, text with its styled runs and links, styles and variables BY NAME, explicit variable modes, and an instance's component with its keys. |
| figma_check_layoutA | After each section and before calling anything done: a designer's last look, in numbers (figma_export_node shows the picture). Per node, with a number and fix: text overflowing, collapsed, overlapping or painted over; content clipped or sticking out; a fill child in a hug parent; stacked frames; placeholder copy ("Lorem ipsum", "Acme"); low contrast (WCAG); zero-size nodes, empty frames, default names; on a slide, content off it, bleeds, cut text. |
| figma_search_nodesA | Find nodes by name substring, by what their text says ( |
| figma_scan_nodes_by_typesA | Every node of the given types in a subtree, at any depth — the "find all frames / all components" tool. Paginated. The result's |
| figma_scan_text_nodesA | Every text in a subtree with its full characters — a copy audit, a translation extract, or the text behind a screen when figma_get_design_context cut it at maxTextChars. TEXT nodes, and on a board the text a sticky, shape or connector holds, code blocks, and one item per non-empty table cell (its |
| figma_get_stylesA | Paint, text, effect and grid styles defined in THIS file, each with its key, a one-line |
| figma_get_variable_defsA | Design tokens with their VALUES. Without |
| figma_get_local_componentsA | Components and component sets defined in this file: page, key and description of each; a variant carries its set's id and name, a set its variant count and variant options. Scope to one page with |
| figma_get_fontsA | Fonts used by text on the current page ( |
| figma_get_annotationsA | Annotations on a node or subtree — the notes designers leave for developers — each with its category (label, colour), plus the subtree's dev resources (links to code, tickets, docs) where Figma provides them. Empty is a normal answer, not an error. The result's |
| figma_get_reactionsA | Prototype reactions: what a layer does on click, drag, hover, and where it navigates. |
| figma_create_from_specA | Build a whole SECTION in one call (one undo step): a header, hero, card, grid of cards or footer — frames with auto-layout, text, shapes (rectangle, ellipse, polygon, star, line, vector path), SVG icons, images by URL, components and instances. To build anything new: a wrapper frame, then one call per section into it by parentId; after each, figma_check_layout and one figma_export_node, then targeted fixes. Not a whole page in one payload: a section at a time keeps every step checkable. The full spec grammar: figma_get_guide { topic: "spec" }. Minimal shape: { "type": "frame", "name": "Card", "layout": "vertical", "gap": 16, "padding": 24, "children": [ { "type": "text", "content": "Title", "fontSize": 20 } ] }. A field a type does not take is refused, never dropped. A mid-way failure does not roll back: |
| figma_create_frameA | A frame — the building block for structure. Build designs step by step: one frame per section, row or card, each with auto-layout ( |
| figma_create_textA | A text node, placed into a frame by |
| figma_create_rectangleC | A rectangle with an optional fill, corner radius and stroke. Editors: Design; unverified: FigJam, Slides. |
| figma_create_ellipseC | An ellipse with an optional fill. Editors: Design; unverified: FigJam, Slides. |
| figma_create_lineA | A straight line: dividers, connectors, arrows, underlines, decorative strokes. |
| figma_create_polygonA | A regular polygon — triangle (pointCount 3), diamond (4, rotated 45 with figma_rotate_nodes), pentagon, hexagon… Badges, play buttons, decorative geometry. Editors: Design; unverified: FigJam, Slides. |
| figma_create_starA | A star or burst: |
| figma_create_vectorA | Draw any shape from SVG path data — a blob, a wave divider, a custom arrow, a logo mark, a chart line. |
| figma_create_sectionA | A section — the container designers use to organise a page by flow, and on a FigJam board the structure itself: a white wrapper, zones inside it, cards inside those ( |
| figma_create_pageB | A new page. Note: a free Starter file is capped at 3 pages and Figma's own error is surfaced as-is when the cap is hit — that is a plan limit, not a bridge limit. Editors: Design; unverified: FigJam, Slides. |
| figma_convert_to_componentA | Turn an existing node (usually a frame) into a reusable COMPONENT, keeping its properties and children — the toolbar's Create component. The result has its own id (returned). A node that is already a component, or sits inside a component or instance, cannot be converted. To place copies afterwards use figma_create_instance. Editors: Design; unverified: Slides. |
| figma_combine_as_variantsA | Combine components into one component set (variants), like Figma's Combine as variants. Name each component "Property=Value, Other=Value" first (figma_rename_node) — Figma derives the variant properties from those names. The components must share a parent; the set is laid out as a wrapping row unless |
| figma_create_instanceA | Place an instance of a component, of a component set's default variant, or of the |
| figma_create_variable_collectionA | A new variable collection (a token group). Its first mode is named after |
| figma_create_variableA | One design token. |
| figma_create_paint_styleA | A local PAINT style: one |
| figma_create_text_styleA | A local TEXT style. |
| figma_create_effect_styleA | A local effect style (shadows, blurs) that nodes can then follow via figma_apply_style_to_node. Same effect entries as figma_set_effects. Change it later in place with figma_update_style. Editors: Design only. |
| figma_set_textA | Replace the content of a TEXT node — or, on a board, of a sticky, shape or connector label, or a code block's code (a table's cells: figma_edit_table). The node's current font is loaded first, so this works on text this project did not create. If the node had more than one style (a bold word, a second font), Figma gives the new text the first character's style and the rest is lost — the result then carries |
| figma_find_replace_textA | Find and replace across text: TEXT nodes and, on a board, stickies, shapes, connector labels and table cells (an item names the node, plus |
| figma_rename_nodeA | Rename one node. The previous name is returned, so a rename can be reported as a change rather than an assertion. Editors: Design; unverified: FigJam, Slides. |
| figma_batch_rename_nodesA | Bulk rename by find/replace over names. Scope, optional type filter, optional regex. Useful for turning |
| figma_move_nodesA | Move nodes to an absolute position, or by a delta with |
| figma_resize_nodesA | Resize nodes, or change how they size (Figma's fixed / hug / fill). Give width and/or height; the other dimension is kept — a text given only a width wraps and grows downwards. |
| figma_rotate_nodesA | Set an absolute rotation in degrees, turning about the centre as the editor does ( |
| figma_reorder_nodesA | Change z-order within each node's current parent. Slides keep their deck order: figma_move_slides reorders them. Returns per-item results: |
| figma_reparent_nodesA | Move nodes to a new parent (frame, group, component, section, slide or page), optionally at a given index. A node keeps its x/y numbers, now relative to the new parent; |
| figma_clone_nodeA | Duplicate a node with its whole subtree, optionally into another parent and at a new position. A slide is duplicated into a slide row — right after itself, or at the end of the row |
| figma_delete_nodesA | Delete nodes by id. This is the correct way to undo agent work: pass the ids the create call returned. One Ctrl+Z reverts the whole original call. In a deck a slide row that still holds slides is refused (delete its slides first); a row its last slide left is reported in |
| figma_group_nodesB | Wrap nodes into a GROUP. All nodes must share one parent — Figma enforces this and the error says so when it applies. Editors: Design; unverified: FigJam, Slides. |
| figma_set_visibleA | Hide or show nodes. Returns per-item results: |
| figma_set_lockedA | Lock or unlock nodes. Returns per-item results: |
| figma_set_opacityA | Set opacity, 0–1. Returns per-item results: |
| figma_set_auto_layoutA | Full auto-layout configuration on one node: mode, gap, padding, alignment, wrap, and axis sizing. |
| figma_set_clips_contentA | Turn "Clip content" on or off on frames, components and instances: on crops a photo or overflow to the frame's (rounded) edge; off stops a frame cutting off a shadow or an overhanging badge — the fix for a check_layout |
| figma_ungroup_nodesA | Unwrap groups: their children move up into the group's parent and the group disappears. Only GROUP nodes — to move children out of a frame use figma_reparent_nodes. Each item reports |
| figma_boolean_nodesA | Combine shapes into one boolean shape, as Figma's toolbar does: union (merge), subtract (cut the upper shapes out of the BOTTOM one), intersect (keep the overlap), exclude (keep what does not overlap). The shapes must share a parent; the result takes the lowest one's place and its id is returned. Builds icons, badges, cut-out shapes and logos. Editors: Design; unverified: FigJam, Slides. |
| figma_flatten_nodesA | Flatten nodes into one editable vector (Ctrl+E) — for a finished icon or a boolean shape that should become a single path. They must share a parent. Cannot be undone except with Ctrl+Z. Editors: Design; unverified: FigJam, Slides. |
| figma_set_maskA | Make a shape a mask (or stop it being one). A mask crops the layers ABOVE it in the same parent — put it below the image or shapes it should crop, then group them (figma_group_nodes) so the mask stays local. maskType: alpha (default), vector (the shape's outline), luminance. Editors: Design; unverified: FigJam, Slides. |
| figma_set_constraintsA | Responsive constraints: how nodes follow their parent frame when it resizes. horizontal: left, right, center, left-right, scale; vertical: top, bottom, center, top-bottom, scale (Figma's MIN/MAX/CENTER/STRETCH/SCALE also accepted). Omit one axis to keep it. Children of an auto-layout frame are positioned by the layout instead. Returns per-item results: |
| figma_swap_componentA | Make an existing instance show a different component (a component set swaps to its default variant, or to the |
| figma_detach_instanceA | Detach instances into plain frames that no longer follow their component. The frame gets a new id, reported per item as |
| figma_add_component_propertyA | Give a component (or component set) a property that instances can change: TEXT (wire it to text layers with |
| figma_set_instance_propertiesA | Change an instance's component properties — its label text, a variant (Size, State), a boolean, a swapped icon — the way the right panel does, keeping it linked to its component. Names may be given without their #id suffix. figma_get_design_context lists an instance's properties; figma_get_component lists every option. A SLOT is not set here: create layers inside it (parentId = the slot). Editors: Design; unverified: FigJam, Slides. |
| figma_add_variable_modeA | Add a mode (e.g. "Dark") to a variable collection; returns its modeId. Modes beyond the first need a paid plan — on a Starter file Figma refuses, and its message is returned. Then set values per mode with figma_set_variable_value. Editors: Design; unverified: FigJam, Slides. |
| figma_set_variable_valueA | Set a variable's value in one mode. |
| figma_delete_variableA | Delete variables (design tokens) by id. Nodes bound to one keep its last resolved value. figma_get_variable_defs lists ids. Returns per-item results: |
| figma_delete_variable_collectionA | Delete a variable collection together with every variable in it. Editors: Design; unverified: FigJam, Slides. |
| figma_delete_styleA | Delete local styles (paint, text, effect, grid) by id. Nodes that used one keep the values it gave them. figma_get_styles lists ids. Returns per-item results: |
| figma_undo_stepA | Trigger Figma's undo. WARNING: it returns to the last checkpoint this plugin committed, so changes the user made BY HAND since the last tool call are lost too. Prefer figma_delete_nodes with the ids a create call returned — that is the safe way to undo agent work. Requires |
| figma_set_fillsA | Replace the fill paints of nodes: solid colours, gradients, images, several stacked fills (bottom first — |
| figma_set_strokesA | Set the outline (stroke) of nodes: exactly one of a solid |
| figma_set_corner_radiusA | Round the corners of nodes: one |
| figma_set_effectsA | Replace the effects of nodes: drop shadow, inner shadow, layer blur, background blur (either blur can ramp with |
| figma_set_blend_modeA | Set how nodes blend with what is beneath them (MULTIPLY, SCREEN, OVERLAY, …). PASS_THROUGH applies to frames and groups. For transparency use figma_set_opacity. Returns per-item results: |
| figma_set_layout_gridsA | Replace the layout grids of frames — the column grid a page is designed on (e.g. 12 columns, 24 gutter, 80 margin), rows, or a square grid. Visible only in the editor, never in exports. An empty |
| figma_apply_style_to_nodeA | Apply a local style (paint, text, effect or grid) by id or by name — the node then follows the style. Give |
| figma_bind_variable_to_nodeA | Bind a variable (design token) to a property of nodes so it follows the variable. |
| figma_set_reactionsA | Replace a node's prototype interactions. |
| figma_remove_reactionsA | Remove every prototype interaction from a node. Editors: Design; unverified: FigJam, Slides. |
| figma_selectA | Select nodes on the canvas so the user sees exactly what you mean or are about to change. |
| figma_navigate_pageA | Switch the editor to another page, by id or exact name. figma_get_pages lists them. Changes no design data. |
| figma_zoom_toA | Scroll and zoom the viewport to show nodes — after building something, so the user sees it. |
| figma_suggest_fontsA | Choose typography the way a designer would: reads the fonts and sizes the design already uses, and the fonts actually available in this Figma, then ranks heading/body pairings for the |
| figma_set_text_propertiesA | Change typography on whole text nodes, like Figma's text panel: font family, weight, size, line height, letter spacing, case, decoration, colour, paragraph spacing and indent, lists, alignment (horizontal and vertical), resizing, truncation, leading trim, wrap style. A new family keeps each run's own weight (a bold word stays bold); a new weight applies to all of it. A weight the family names differently ("SemiBold" vs "Semi Bold") is matched, and anything substituted is reported as |
| figma_set_text_rangeA | Style part of one text node (or a sticky's, shape's or connector's text) — a bold word, a coloured price, an underlined link, a bulleted paragraph. Pick the part with |
| figma_import_svgA | Place SVG markup as editable vectors — icons, logos, illustrations. |
| figma_import_imageA | Place a picture: from a |
| figma_export_nodeA | Render a node so you can see it — the screenshot to compare against. No |
| figma_save_screenshotsA | Render several nodes to image files and return their paths — cheaper for your context than returning image data, and the way to hand a user a set of screenshots. The plugin renders; the bridge writes, so paths follow the same rules as |
| figma_export_frames_to_pdfA | Export frames to one multi-page PDF, one frame per page, in the order of |
| figma_download_assetsA | Write a design's ASSETS to disk for implementing it in code: per node, its export presets as the designer set them (format and suffix each), or one render in |
| figma_get_library_variablesA | Variables from the team libraries enabled in this file — the part of a library a plugin can list (its components and styles it cannot). Without |
| figma_create_variablesA | A token set in ONE call (one undo step): primitives first, then semantic tokens that alias them, each with a value per mode, scopes and code syntax. Values are strings: "#1a2b3c" / "#1a2b3c80", "16", text, "true", or "alias:" — the target must exist already or come EARLIER in this call, with the same type. Everything is checked before the first variable exists, so a refusal creates nothing. |
| figma_create_grid_styleA | A local GRID style — a named layout grid (e.g. 12 columns, 24 gutter, 64 margin) that frames follow via figma_apply_style_to_node { type: "grid" }. Entries as in figma_set_layout_grids, which sets raw grids on frames instead. Editors: Design only. |
| figma_set_variable_propertiesA | Change what a token carries besides its value: |
| figma_update_variable_collectionA | Rename a variable collection, hide it from publishing, rename its modes (e.g. "Mode 1" → "Light"), or remove modes. Removing a mode deletes the value every variable holds for it — the result counts them per mode; the last mode is never removed. Everything is checked before anything changes. To add a mode use figma_add_variable_mode (paid plans). Editors: Design; unverified: FigJam, Slides. |
| figma_set_variable_modeA | Show nodes in a chosen mode of a collection — Dark on this screen, Light on that one: frames, components, sections and pages pin a mode, and everything inside follows. Without it every node uses the collection's default mode, so a Dark mode can be created and valued and still never be seen. |
| figma_update_styleA | Change a local style IN PLACE — every node using it follows; deleting and recreating would detach them all. By |
| figma_get_componentA | One component's API, as code or an instance needs it: its property definitions (key, name, type, default, variant options, preferred swap targets), its variants with their values, the default variant, and which layers each property drives. Pass a component, a component set, a variant (answered from its set, where Figma keeps the definitions) or an instance (answered from its main component — library ones too, read-only). |
| figma_import_library_assetsA | Bring published library assets into this file by key — components, component sets, styles, variables — and get the local ids every other tool takes: figma_create_instance / figma_swap_component |
| figma_edit_component_propertyA | Change a component property that already exists: rename it ( |
| figma_delete_component_propertyA | Delete a TEXT, BOOLEAN, INSTANCE_SWAP or SLOT property from a component or component set: every instance loses it, overrides included. A VARIANT property cannot be deleted — it comes from the variant names, so rename the variants instead. To rename or rewire a property use figma_edit_component_property. Editors: Design; unverified: FigJam, Slides. |
| figma_set_descriptionA | Write the description (plain or markdown) and documentation link that the assets panel and Dev Mode show, on a component, component set, local style or local variable. A set's description is the one people see — put it there rather than on a variant. One https link at most; "" clears it. Variables take plain text only, no link. Library assets are read-only here. To rename: a component or set with figma_rename_node, a style with figma_update_style |
| figma_create_slotA | Add a slot to a component: a frame that each instance fills with its own layers, plus the SLOT property that goes with it. Pass a component or one variant, not a set. |
| figma_reset_slotA | Put slots inside instances back to the component's own slot content, dropping what was added into them. Pass the SLOT layers of the instances (figma_search_nodes with type SLOT finds them). To empty one layer at a time use figma_delete_nodes instead. Returns per-item results: |
| figma_get_motion_contextA | The timeline animation of layers, for implementing it in code: per animated layer its keyframe tracks ({ field, keyframes: [{ t (s), value, easing }] }, the same strings figma_set_keyframes takes), animation styles, its top-level frame and timeline, plus |
| figma_set_keyframesA | Animate a layer on its frame's timeline: each track replaces that field's keyframes; other tracks stay. Every track is read back and re-applied if it did not land: |
| figma_remove_keyframesA | Remove a layer's manual keyframe tracks: the given |
| figma_set_scroll_behaviorA | Prototype scrolling for a frame: |
| figma_set_prototype_flowsA | Replace a page's prototype flow starting points, in order — the first is where the play button starts — and/or its prototype background colour. Each flow starts at a top-level frame on that page; |
| figma_export_videoA | Render the animation of a top-level frame to MP4, GIF or WEBM — the way to SEE motion; figma_export_node renders only the rest state. A layer exports its top-level frame ( |
| figma_set_motion_planA | Record the plan of one animated top-level frame before animating it, as a motion designer does: the brief (audience, message, format, durationS, fps, bpm?) and the beat sheet, beats back to back from 0 to durationS, each with its copy on screen, action and transition. Checked before anything is stored, every problem listed at once: times on the frame grid; no gap or overlap; each beat long enough to read its copy, max(5/6 s, 0.3 s a word), [picture notes] untimed; accents within a frame of the beat grid with bpm; every transition named. Stored on the frame in shared plugin data, so every session sees it; figma_get_motion_context returns it; a new call replaces it. figma_check_motion judges the frame against it: its bpm, holds, brandId, ctaId, and |
| figma_check_motionA | A motion designer's frame-by-frame check of an animated top-level frame from its keyframes, no render: figma_check_layout for motion. Each issue names layer, field, frame and numbers at |
| figma_review_videoA | See a rendered video without rendering again: a contact sheet of the whole piece, every-frame close-ups of a window (the spacing between frames is the speed), frame-exact stills, and per-frame metrics that find freezes, one-frame flickers, flashes, jumps and cuts. Pass the |
| figma_create_stickiesA | FigJam sticky notes, one idea each, 1–200 in one call, laid out as a grid from their REAL sizes: a sticky is 240 wide (416 with |
| figma_create_shapes_with_textA | FigJam shapes with text — flowchart steps, decisions, databases, callouts — 1–200 in one call, each sized to fit its text unless width and height are given ( |
| figma_create_connectorsA | FigJam connector lines between nodes, 1–200 in one call. Each is made IN its final parent — by default the lowest section holding both ends, else the page — and never moved: a reparented connector keeps stale elbows, so build connectors last. Endpoints: One string: "12:34" (attach; magnet auto), "12:34@right" (magnet: auto, top, bottom, left, right, center, none), "12:34@0.5,1" (a point on the node, 0–1 of it — to be confirmed) or "120,340" (a free point). An end may not be another connector. lineType elbowed (default), straight or curved; caps default none at the start and arrow-lines at the end (ERD caps too); |
| figma_create_tableA | A FigJam table — the tool for any row-and-column data, never a grid of shapes. Give |
| figma_create_code_blockA | A FigJam code block with syntax highlighting. |
| figma_create_link_previewA | Paste a web link onto a FigJam board as a card. Figma fetches the https URL and inserts an EMBED (a page that offers oEmbed, such as a video) or a LINK_UNFURL preview (title, description and image from the page's meta tags). The parent is checked before Figma fetches; a link Figma cannot preview is refused in Figma's own words. Returns { id, type, title?, provider? }. Editors: FigJam only, unverified. |
| figma_edit_tableA | Change a FigJam table's structure and cells. Cells have no ids: they are { row, column }, 0-based. Applied in this order, every index checked against the table's size before anything changes: removeRows / removeColumns (their content is lost), then insertRowsAt / insertColumnsAt (positions in the table after removals; each adds one before that index, the count appends), then moveRow / moveColumn { from, to }, then columnWidths / rowHeights [{ index, width | height }], then |
| figma_edit_connectorsA | Change existing FigJam connectors in place, 1–200 per call: re-point |
| figma_set_board_propertiesA | FigJam properties on 1–500 nodes, each applied by node type. |
| figma_fit_sectionsA | Resize sections to hug what they hold plus |
| figma_get_slide_gridA | Read a Figma Slides deck as its grid — start here in a deck. Rows (each row is a section: id, name) of slides in presentation order; per slide its id, name, row, col, index, skipped, child count and speaker notes, and with includeSummary its background, title (its largest text) and interactive elements; includeTransitions adds each slide's transition. Reads the slides only, never the opaque rows or grid. |
| figma_create_slidesA | Add 1–20 empty 1920×1080 slides to a Figma Slides deck, in list order. Then give each its content with one figma_create_from_spec (parentId = the slide id), and check the batch with figma_check_layout — 3–5 slides per call. Per item: name, background (hex; it goes on the slide, since rows and the grid have no fill), skipped, and where: |
| figma_set_slide_gridA | Restate a whole Figma Slides deck's grouping in one step: |
| figma_move_slidesA | Move slides within a Figma Slides deck as one block, in the order given, to exactly one anchor: after or before another slide ( |
| figma_set_slide_propertiesA | Per slide of a Figma Slides deck: |
| figma_set_slide_transitionA | Set the transition into each of these Figma Slides slides: |
| figma_create_storyboardA | Lay out a motion piece's storyboard before animating it: a board of cards in rows, one per panel, each a thumbnail frame at |
| figma_create_animaticA | Play a storyboard back at its planned pace: turn a figma_create_storyboard board into an animatic, a top-level frame |
| figma_batchA | Several edits in ONE call and ONE undo step — a polish pass over what you built: fills, strokes, radius, effects, auto-layout, sizes, text, constraints, names. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| build_in_figma | Design something complete in the open Figma file from a short brief — the agent owns the decisions, builds a section per call and checks each one. |
| design_in_figma | Design a page, screen, poster or campaign piece the way a senior designer does: a brief, two or three directions, styleframes, a system, the build, and measured critique rounds. |
| storyboard_motion | Plan a motion piece (an ad, a reel, a title, an animated end card) before animating it: brief, directions, beat sheet, storyboard, styleframes, animatic and build bible; then build and review it. |
| animate_in_figma | Animate layers on a Figma frame's timeline as a senior motion designer: pick the gear, plan the beats, block the poses, shape the curves, polish, and check every frame before the final render. |
| critique_design | Review a Figma design or motion piece like a panel of senior critics: measured findings lens by lens, fixes as tool calls, and rounds until the sign-off bar. |
| build_board | Build a complete board in the open FigJam file from a short brief — a retro, a brainstorm, a decision board — one zone per call, each one checked. |
| build_deck | Build a complete deck in the open Figma Slides file from a short brief — plan every slide first, then build 3–5 slides per batch and check each batch. |
| design_to_code | Read a design faithfully (layout, text, tokens, components, assets, motion) and implement it in this project's stack. |
| create_design_system_rules | Read the Figma file's tokens and components and this codebase, then write a rules section so later design-to-code runs stay consistent. |
| code_to_design | Recreate a screen or component that exists in code in the open Figma file — its fonts, components, icons and content taken from the source. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| figxel-workflow | The designer's working loop in Figma through Figxel. Orient, place a wrapper, build one section per call, check every section, polish and report. Sections hold a worked build, the spec grammar, the checks, the safety rules and a tool chooser. Read it before building anything. |
| figxel-design | Design a page, screen, poster, slide or styleframe in Figma the way a senior designer does. Brief, real directions, styleframes, a system, the build, then measured critique rounds. State the gear first; a section runs the section gear, a page or more the whole skill. |
| figxel-storyboard | Plan a motion piece (ad, reel, title, animated end card) in Figma before animating it. Brief and directions, a beat sheet on a tempo grid, storyboard panels, styleframes, an animatic that tests timing at speed, and a build bible. Not for turning screen recordings into annotated storyboards. |
| figxel-motion | Animate on a Figma frame's timeline as a senior motion designer. Brief, a beat plan stored with figma_set_motion_plan, styleframes, blocking, splining, polish, a frame-by-frame check, a preview, then the final render. Easing, transitions, kinetic type, formats and Figma Motion's mechanics. |
| figxel-critique | Review a Figma design or motion piece like a panel of senior critics. Run each lens in turn, measure every finding, write the fix as tool calls, merge conflicting fixes, re-check the neighbours of every change, and stop at the sign-off bar or the gear's round budget. |
| figxel-design-system | Reuse or create a Figma file's design system with Figxel. Styles, variables, components and team-library assets, a library built in order (tokens, styles, components), and choosing and applying type. Use when a design must follow or extend a system. |
| figxel-design-to-code | Turn a Figma design into code. Read the design and its render, map layout, tokens, assets, motion and prototype links to the project's stack, verify against the render, and write a codebase's design-system rules. Use whenever Figma is the source and code is the output. |
| figxel-code-to-design | Rebuild in Figma a screen or component that already exists in code. Content, fonts, components, icons and images come from the source, never invented, and the build runs one section per call. Use when the code is the brief. |
| figxel-prototype | Wire prototype behaviour in Figma with Figxel. Interactions and their JSON shape, scrolling and fixed layers, and the page's flows, with what Figma refuses. Use for clicks, overlays, delays and variable changes; not for timeline animation. |
| figxel-figjam | Build a FigJam board with Figxel. One white wrapper section, one zone per call, the right node for each need, connectors last, and a board audit after every zone. Use on any figma.com/board file. |
| figxel-slides | Build or restyle a Figma Slides deck with Figxel. Pick the gear, plan every slide, build three to five slides per batch, check each batch, and leave the deck's grid intact. Use on any figma.com/slides file. |
| figxel-workflow/references/build.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-workflow/references/spec.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-workflow/references/check.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-workflow/references/safety.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-workflow/references/tools.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-design/references/brief.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-design/references/directions.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-design/references/system.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-design/references/tells.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-design/references/finish.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-storyboard/references/beat-sheet.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-storyboard/references/boards.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-storyboard/references/animatic.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-storyboard/references/bible.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-motion/references/easing.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-motion/references/principles.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-motion/references/transitions.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-motion/references/kinetic-type.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-motion/references/formats.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-motion/references/passes.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-motion/references/mechanics.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-critique/references/lenses.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-critique/references/motion-checks.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-critique/references/sampling.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-critique/references/rounds.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-design-system/references/library.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-design-system/references/typography.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-design-to-code/references/rules.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-figjam/references/board-recipes.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
| figxel-slides/references/deck-recipes.md | One section of a skill, as Markdown. The skill's SKILL.md names its sections; figma_get_guide serves the same text. |
TDQS
Scored across 133 tools
Descriptions are exceptionally detailed and often explicitly point to the right sibling tool, but with 133 tools there are many closely related operations (e.g., figma_get_node vs figma_get_nodes_info, figma_set_text vs figma_set_text_range vs figma_set_text_properties, figma_move_nodes vs figma_reparent_nodes vs figma_reorder_nodes, and several export/check tools). An agent can usually disambiguate with effort, but the sheer number and overlapping boundaries will cause occasional misselection.
Every tool uses the same predictable pattern: the `figma_` prefix followed by snake_case verb_noun (e.g., figma_create_variable, figma_get_design_context, figma_set_fills, figma_delete_nodes). There are no camelCase or mixed-style exceptions, making the set highly consistent and readable.
133 tools is an extreme mismatch for an MCP tool surface, far beyond the typical 3–15 range and well past the 50+ threshold for a severe overload. Even accounting for the broad Figma Design/FigJam/Slides/motion domain, the count makes the set unwieldy for an agent to navigate.
The surface covers create, read, update, and delete for nodes, variables/tokens, styles, components, instances, prototypes, FigJam boards, Slides decks, and motion, plus export and review workflows. No obvious lifecycle gaps remain for the stated Figma automation purpose.