All skills
figma avatar

/figma-use-slides

@a5e7e04 official
by figmafigma/mcp-server-guide2k stars
194

This skill helps agents use Figma's use_figma MCP tool in the Slides context. Can be used alongside figma-use which has foundational context for using the use_figma tool.

Use this Skill: https://skilld.dev/gh/figma/mcp-server-guide/figma-use-slides

This session only. Nothing lands on disk.

referencesslide-properties.md

≈951 tokens on demand. Your agent reads this file only when SKILL.md points to it.

Slide-Specific Properties

isSkippedSlide

Read and set whether a slide is skipped during presentation playback.

const slide = figma.getNodeById("SLIDE_ID");

// Read
const isSkipped = slide.isSkippedSlide;

// Set — skip a slide
slide.isSkippedSlide = true;

// Unskip
slide.isSkippedSlide = false;

focusedSlide (Page property)

Get or set the currently focused slide on a page. This is a property of PageNode, not SlideNode.

// Get the focused slide
const focused = figma.currentPage.focusedSlide;
if (focused) {
  return { focusedSlideId: focused.id, name: focused.name };
}

// Set the focused slide
const slide = figma.getNodeById("SLIDE_ID");
figma.currentPage.focusedSlide = slide;

focusedNode (Page property)

Get or set the currently focused node on a page. Works with any focusable node.

const focused = figma.currentPage.focusedNode;
if (focused) {
  return { id: focused.id, type: focused.type, name: focused.name };
}

speakerNotes

Read and set the presenter/speaker notes for a slide. The value is a markdown string.

const slide = figma.getNodeById("SLIDE_ID");

// Read speaker notes
const notes = slide.speakerNotes;
// Returns "" if no notes are set

// Set speaker notes (plain text)
slide.speakerNotes = "Remember to mention the Q4 goals.";

// Set speaker notes with list formatting
slide.speakerNotes = "Key points:\n- Revenue grew 20%\n- User base doubled\n- NPS at all-time high";

// Set speaker notes with numbered list
slide.speakerNotes = "Agenda:\n1. Introduction\n2. Demo\n3. Q&A";

// Clear speaker notes
slide.speakerNotes = "";

Supported formatting

The speaker notes editor in Figma Slides supports a subset of markdown formatting:

  • Unordered lists: - item or * item
  • Ordered lists: 1. item, 2. item
  • Bold: **text**
  • Italic: *text*
  • Bold + italic: ***text***
  • Strikethrough: ~~text~~

The following markdown is not supported and will be stored as raw text (the markdown syntax characters will appear literally in the notes):

  • Headings (# text, ## text)
  • Code blocks (`code` or ```)
  • Links ([text](url))
  • Underline

InteractiveSlideElementNode

Interactive elements embedded in slides (polls, embeds, etc.). These are read-only — you cannot create them via the Plugin API, but you can detect and inspect them.

const slide = figma.getNodeById("SLIDE_ID");
const interactive = slide.findAllWithCriteria({ types: ["INTERACTIVE_SLIDE_ELEMENT"] });
return interactive.map(n => ({
  id: n.id,
  type: n.interactiveSlideElementType,
}));

Possible interactiveSlideElementType values: 'POLL', 'EMBED', 'FACEPILE', 'ALIGNMENT', 'YOUTUBE'.

Known Limitations

  • getSlideTransition() / setSlideTransition(): These methods are declared in the type definitions but throw "not implemented" at runtime. Do not use them.
  • SlideGridNode.clone(): Throws at runtime — you cannot copy the slide grid.
  • Slide themes: slideThemeId is available as a read-only property on slide nodes for identifying which theme is applied, but theme manipulation APIs are limited.
  • figma.createTable() and figma.createGif(): These FigJam node types (TABLE, MEDIA) are currently blocked in Slides mode by the Plugin API, even though the Slides editor supports tables and media. To work with tables and media in Slides, use the editor UI directly. This is a pre-existing Plugin API limitation, not specific to use_figma.
<!-- TODO(dschwartz): Before production launch, fix NODE_TYPES_BLOCKED_IN_SLIDES in share/plugin-api/src/api/constants.ts to unblock TABLE and MEDIA for Slides (same pattern as the SYMBOL unblock for MCP/assistant). Remove this limitation note once fixed. -->

Source: SKILL.md on GitHub

No alerts17d3 checks · Risk SAFE
  • Gen Agent Trust Hub17d

    The skill provides technical guidance for automating Figma Slides. It is categorized as low risk because its core functionality—generating scripts based on user-provided briefs—creates a surface area for indirect prompt injection and involves dynamic execution of code.

  • Socket17d

    No alerts

  • Snyk17d

    Risk: LOW · No issues

Signed by skilld at a5e7e04. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 20 hours ago.

Activeupdated 3 months ago
disable-model-invocation
false
  • MCP
  • Design
  • figma
  • slides
  • plugin-api
  • presentation
  • deck-building

README badge

README badge for figma/mcp-server-guide/figma-use-slides

This skill provides Slides-specific context for the use_figma MCP tool, covering critical positioning rules, theme management, and the slide grid structure that differ from Figma's Design API. It includes a two-phase deck-building workflow with design thinking guidance and batch validation patterns for building multi-slide presentations via the Plugin API.

Generated from the current SKILL.md.

Do I need to load figma-use as well as figma-use-slides?
Yes. figma-use-slides provides Slides-specific context, but figma-use contains foundational context for the use_figma MCP tool and advanced plugin API use cases not covered here.
Can I use figma.createPage() in Slides files?
No. createPage() is Design-file only and will throw a TypeError in Slides. Use the slide grid (SLIDE_GRID / SLIDE_ROW / SLIDE) to organize deck structure instead.
What's the critical rule about setting x and y coordinates on new nodes?
Always call appendChild before setting x/y. Setting coordinates before appending causes nodes to land 240 pixels off their intended position. Use the helper pattern in slide-gotchas.md to make the order impossible to get wrong.
Does get_metadata work on Slides files?
No. Use read-only use_figma scripts for validation instead, and return created node positions in closePlugin() output to verify no overlapping bounding boxes.
When modifying an existing deck, should I delete and rebuild slides or edit in place?
Always modify slides in place unless the user explicitly asks to start over or redo from scratch. Inspect the existing deck to match its color palette, typography, and spatial habits.

Generated from the current SKILL.md. These answers refresh after source changes.