All skills
figma avatar

/generate-project-plan

@76c729b official
by figmafigma/mcp-server-guide2k stars
194

Generate a FigJam project plan board from a PRD plus codebase context. Interactive flow: research → propose sections → per-section deep research → per-section content + block-shape proposal → create FigJam → skeleton → fill → diagrams → wrap. Each content block (section, nested section, intro callout, table, multi-column text, sticky column, diagram section, metadata strip) has its own subskill reference file. Use when the user asks for 'project plan in FigJam', 'interactive project plan', '/generate-project-plan', or provides a PRD and wants per-section confirmation on content + rendering.

Use this Skill: https://skilld.dev/gh/figma/mcp-server-guide/generate-project-plan

This session only. Nothing lands on disk.

referencesfoundationlayout.md

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

Layout

Canvas geometry, sizing, positioning.

Constants

const LEFT_COL_X = 0;
const LEFT_COL_W = 800;
const GUTTER_X   = 32;
const RIGHT_COL_X = LEFT_COL_X + LEFT_COL_W + GUTTER_X; // 832
const RIGHT_COL_W_MIN = 1200;
const GUTTER_Y   = 32;
const SECTION_PAD = 32; // inner padding, all four sides
const METADATA_STRIP_H = 120;
const SECTION_TOP_Y = METADATA_STRIP_H + GUTTER_Y; // 152

Canvas map

+--------------------------------------------------------+
|  (0, 0)                                                |
|  [ Board metadata strip — full width, ~120px tall ]    |
|                                                        |
|  x=0             x=832                                 |
|  +-----------+   +---------------------------+         |
|  | LEFT COL  |   | RIGHT COL                 |         |
|  | 800 wide  |   | width driven by diagrams  |         |
|  |  [sec 1]  |   |  [Current State]          |         |
|  |    ↓32    |   |        ↓32                |         |
|  |  [sec 2]  |   |  [Target State]           |         |
|  |    ↓32    |   |        ↓32                |         |
|  |   ...     |   |  [Key Flow 1]             |         |
|  +-----------+   +---------------------------+         |
+--------------------------------------------------------+

Left column stacking

curY_left = SECTION_TOP_Y;
for (const section of leftSectionsInOrder) {
  section.x = LEFT_COL_X;
  section.y = curY_left;
  // After fill, section.resizeWithoutConstraints(LEFT_COL_W, section_h).
  curY_left += section.height + GUTTER_Y;
}

Right column stacking

curY_right = SECTION_TOP_Y;
for (const section of rightSectionsInOrder) {
  section.x = RIGHT_COL_X;
  section.y = curY_right;
  // After fill, section.resizeWithoutConstraints(max(RIGHT_COL_W_MIN, diag.width + 64), h).
  curY_right += section.height + GUTTER_Y;
}

Right column x is fixed at 832 regardless of section width. Wider sections extend further right.

Inner padding rule

Every top-level section: first child's x = 32, y = 32. Last child's bottom edge + 32 = section height.

Sub-column positioning (for 3- or 4-column layouts inside a section)

For a 3-column layout inside an 800-wide section:

  • Inner width = 800 - 2 * 32 = 736
  • With 2 gutters of 32: each column = (736 - 64) / 3 = 224 wide
  • Column x positions: 32, 288, 544

For a 4-column layout:

  • With 3 gutters of 32: each column = (736 - 96) / 4 = 160 wide
  • Column x positions: 32, 224, 416, 608

See blocks/multi-column-text.md for formulas at runtime.

Section hug sizing

After appending children, compute:

const maxChildBottom = Math.max(...section.children.map(c => c.y + c.height));
section.resizeWithoutConstraints(LEFT_COL_W, maxChildBottom + SECTION_PAD);

Sections do NOT auto-grow — always explicit resizeWithoutConstraints.

Placeholder lifecycle

  • Skeleton pass: section.placeholder = true.
  • End of fill pass for that section: section.placeholder = false.
  • NEVER leave a section with placeholder = true at end-of-run.

Re-stack pass

After all left-column fills, a re-stack pass fixes cumulative Y based on actual post-resize heights:

let y = SECTION_TOP_Y;
for (const id of leftColumnSectionIdsInOrder) {
  const sec = await figma.getNodeByIdAsync(id);
  sec.y = y;
  sec.x = 0;
  y += sec.height + GUTTER_Y;
}

Run this once between the left-column fill pass and the diagram pass.

Source: SKILL.md on GitHub

1 warning15d3 checks · Risk SAFE
  • Gen Agent Trust Hub15d

    The skill generates FigJam project plan boards from user-provided PRDs and codebase files. It uses an interactive process where the user reviews and confirms the content at multiple stages. It follows strict visual guidelines and uses standard Figma MCP tools. Data access is bounded to a maximum of 20 files within the local repository. No malicious patterns detected.

  • Socket15d

    No alerts

  • Snyk15d

    Risk: MEDIUM · 1 issue

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

Last checked against GitHub 19 hours ago.

Activeupdated 5 months ago
disable-model-invocation
false
  • figjam
  • project-planning
  • prd
  • figma
  • diagramming
  • content-generation
  • interactive-workflow

README badge

README badge for figma/mcp-server-guide/generate-project-plan

Converts a product requirements document into an interactive FigJam board with sections—research, section selection, content proposal per section, then automated board creation with skeleton and fill passes. Uses FigJam's section and sticky primitives, coordinates with separate block-shape subskills for tables, diagrams, multi-column layouts, and metadata strips.

Generated from the current SKILL.md.

Do I need to load other skills before using this one?
Yes. Load `figma-use` once per session, then reload `figma-use-figjam` before every `use_figma` call. Also load `figma-generate-diagram` before any `generate_diagram` call. All three are in the figma/mcp-server-guide collection.
Can I pick which sections appear on the board?
Yes. The skill proposes candidate sections from the PRD research, and you confirm which ones to include. The section set is not fixed.
Does this work with a PRD alone, or do I need codebase context?
The skill accepts a PRD plus optional codebase grounding. Codebase context is optional and expands the research step; the PRD alone is sufficient to generate a plan.
Can I customize colors and typography?
No. The skill enforces strict visual conventions — two-tone section palettes, fixed font sizes (40 for H2, 32 for nested headers, 24 for column titles), and a precise spacing grid (24px between blocks, 64px between sections, 32px inner padding). These are derived from a canonical reference board and must not be deviated from.
What content blocks are available?
Nine block types: section headers, nested sections, intro callouts, text primitives (paragraphs, lists), tables, multi-column text, sticky-note columns, diagram sections, and a metadata strip. Each has its own subskill reference file.

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