From cascade-mcp
Interactively walks through frame-specific design behavior questions, collects user answers one-by-one, and posts Q&A pairs as pinned Figma comments with vertical spacing.
npx claudepluginhub bitovi/cascade-mcp --plugin cascade-mcpThis skill uses the workspace's default tool permissions.
Walk through design behavior questions one at a time, collecting answers from the user and posting Q&A pairs as Figma comments pinned to the correct frame.
Posts generated design behavior questions as pinned comments on Figma frames using node IDs, file keys, and positioning from manifest.json. Used after generate-behavior-questions when user confirms posting.
Mandatory prerequisite skill for `use_figma` tool calls to execute JS in Figma files. Enables node create/edit/delete, variables/tokens setup, component building, auto-layout changes, property binding, and programmatic file inspection.
Loads mandatory prerequisite context before every use_figma tool call for Figma writes or JS-executed reads like node edits, variable setup, component building, or file inspection.
Share bugs, ideas, or general feedback.
Walk through design behavior questions one at a time, collecting answers from the user and posting Q&A pairs as Figma comments pinned to the correct frame.
Use after generate-behavior-questions has produced frame-specific questions and the user chooses to answer questions here and post Q&A to Figma.
generate-behavior-questions)manifest.json (needed for comment positioning)Read manifest.json from .temp/cascade/figma/{fileKey}/ to get width and height for each frame.
From the frame-organized questions, build a flat list preserving frame context:
Frame: Login Screen (nodeId: 1:234, fileKey: abc123, height: 1200)
Q1: Should the "Remember me" checkbox be checked by default?
Q2: What error message appears for invalid credentials?
Frame: Dashboard (nodeId: 5:678, fileKey: abc123, height: 1800)
Q3: Is the widget layout user-configurable?
Count total questions per frame — this is needed for comment spacing.
For each question, use the structured question UI (askQuestions in Copilot, AskUserQuestion in Claude Code) with suggested answer options.
Generate 2-4 suggested answers based on context from:
analysis.md and context.md (Figma annotations, designer notes)Always include a "Skip" option.
Example:
header: "Question 1 of 5 — Frame: Case Details"
question: "The designer note says 'show 4 voters before +X others,' but the Text-Listing component only has 3 entry slots. Should the tooltip show a max of 3 or 4 voter names before truncating?"
options:
- label: "Show 4 names (match designer note)"
description: "Add a 4th entry slot to the component"
- label: "Show 3 names (match current component)"
description: "Update the designer note to match the XML structure"
- label: "Skip"
allowFreeformInput: true
Ask one question at a time. Wait for the user's response before proceeding.
The user can select a suggested answer, type a custom response, or skip. All are valid.
Post a Q&A comment pinned to the correct frame using figma-post-comment:
fileKey: from the frame contextmessage: Cascade🤖 💬 {question}\n\n→ {answer}nodeId: from the frame contextnodeOffset: Calculate position for even spacing along the left edge of the frame:
x: -50 (left edge, slightly outside the frame)y: Distribute between y=50 and y=(frameHeight - 50). For question index i out of n questions on this frame:
n = 1: y = frameHeight / 2n > 1: y = 50 + i * ((frameHeight - 100) / (n - 1))i is 0-indexed within that frame's questions, and frameHeight comes from manifest.jsonframeHeight is not available, omit nodeOffset (defaults to top-left)For skipped questions, post: Cascade🤖 ❓ {question}\n\n→ Skipped
After all questions are answered (or skipped), report:
figma-post-comment has Figma API rate limits. The agent posts one comment per answer (human typing speed), so rate limits are unlikely to be hit.💬 for answered questions, ❓ for skipped/unanswered. Always prefix with Cascade🤖 so comments are identifiable as bot-generated