set_auto_layout
Configure auto layout properties for Figma nodes using AI-powered natural language commands, enhancing design efficiency and collaboration.
Instructions
Configure auto layout properties for a node in Figma
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- Handler function that forwards the set_auto_layout parameters to Figma via sendCommandToFigma and returns success/error message.async ({ nodeId, layoutMode, paddingTop, paddingBottom, paddingLeft, paddingRight, itemSpacing, primaryAxisAlignItems, counterAxisAlignItems, layoutWrap, strokesIncludedInLayout }) => { try { const result = await sendCommandToFigma("set_auto_layout", { nodeId, layoutMode, paddingTop, paddingBottom, paddingLeft, paddingRight, itemSpacing, primaryAxisAlignItems, counterAxisAlignItems, layoutWrap, strokesIncludedInLayout }); const typedResult = result as { name: string }; return { content: [ { type: "text", text: `Applied auto layout to node "${typedResult.name}" with mode: ${layoutMode}` } ] }; } catch (error) { return { content: [ { type: "text", text: `Error setting auto layout: ${error instanceof Error ? error.message : String(error)}` } ] }; } }
- Zod input schema defining parameters for the set_auto_layout tool.{ nodeId: z.string().describe("The ID of the node to configure auto layout"), layoutMode: z.enum(["HORIZONTAL", "VERTICAL", "NONE"]).describe("Layout direction"), paddingTop: z.number().optional().describe("Top padding in pixels"), paddingBottom: z.number().optional().describe("Bottom padding in pixels"), paddingLeft: z.number().optional().describe("Left padding in pixels"), paddingRight: z.number().optional().describe("Right padding in pixels"), itemSpacing: z.number().optional().describe("Spacing between items in pixels"), primaryAxisAlignItems: z.enum(["MIN", "CENTER", "MAX", "SPACE_BETWEEN"]).optional().describe("Alignment along primary axis"), counterAxisAlignItems: z.enum(["MIN", "CENTER", "MAX"]).optional().describe("Alignment along counter axis"), layoutWrap: z.enum(["WRAP", "NO_WRAP"]).optional().describe("Whether items wrap to new lines"), strokesIncludedInLayout: z.boolean().optional().describe("Whether strokes are included in layout calculations") },
- src/talk_to_figma_mcp/tools/modification-tools.ts:261-313 (registration)Registers the set_auto_layout MCP tool with name, description, input schema, and handler function."set_auto_layout", "Configure auto layout properties for a node in Figma", { nodeId: z.string().describe("The ID of the node to configure auto layout"), layoutMode: z.enum(["HORIZONTAL", "VERTICAL", "NONE"]).describe("Layout direction"), paddingTop: z.number().optional().describe("Top padding in pixels"), paddingBottom: z.number().optional().describe("Bottom padding in pixels"), paddingLeft: z.number().optional().describe("Left padding in pixels"), paddingRight: z.number().optional().describe("Right padding in pixels"), itemSpacing: z.number().optional().describe("Spacing between items in pixels"), primaryAxisAlignItems: z.enum(["MIN", "CENTER", "MAX", "SPACE_BETWEEN"]).optional().describe("Alignment along primary axis"), counterAxisAlignItems: z.enum(["MIN", "CENTER", "MAX"]).optional().describe("Alignment along counter axis"), layoutWrap: z.enum(["WRAP", "NO_WRAP"]).optional().describe("Whether items wrap to new lines"), strokesIncludedInLayout: z.boolean().optional().describe("Whether strokes are included in layout calculations") }, async ({ nodeId, layoutMode, paddingTop, paddingBottom, paddingLeft, paddingRight, itemSpacing, primaryAxisAlignItems, counterAxisAlignItems, layoutWrap, strokesIncludedInLayout }) => { try { const result = await sendCommandToFigma("set_auto_layout", { nodeId, layoutMode, paddingTop, paddingBottom, paddingLeft, paddingRight, itemSpacing, primaryAxisAlignItems, counterAxisAlignItems, layoutWrap, strokesIncludedInLayout }); const typedResult = result as { name: string }; return { content: [ { type: "text", text: `Applied auto layout to node "${typedResult.name}" with mode: ${layoutMode}` } ] }; } catch (error) { return { content: [ { type: "text", text: `Error setting auto layout: ${error instanceof Error ? error.message : String(error)}` } ] }; } } );