figma-blame-nodelisted
Install: claude install-skill whiskfernlowdensitylipoprotein154/figma-console-mcp-skills
# figma-blame-node — binary-search which version introduced a change
Like `git blame`, but for Figma. Given a node and a target (a `componentPropertyDefinitions` key or
a descendant child node id), this localizes the **version that first introduced** the target and
returns that version's label, author handle, and timestamp.
> **Setup — terminal + token required.** This skill runs shell commands, so it works in **Claude Code** (including the "Code" tab inside Claude Desktop), Cursor, Codex, or Gemini CLI — it does **not** run in plain Claude Desktop or claude.ai chat (no shell). The Figma connector's OAuth login does **not** authorize these REST calls, so you must supply your own **Figma personal access token**: in Figma go to **Settings → Security → Personal access tokens**, generate one with scope *File content: read* (plus *File versions: read*), then set it in your shell: `export FIGMA_TOKEN="figd_…"`. The script reads it from the environment at runtime — never put the token in a skill file.
## Why binary search
A naive walk would fetch the node at every version — `N` API calls for `N` versions. Existence of a
target is **monotonic** (added once, then present in every newer version up to HEAD), so we binary
search: probe the midpoint, check whether the target exists there, then narrow to the older or newer
half. That's **~log2(N)** calls — e.g. ~8 probes across 200 versions instead of 200. This is the
rate-limit-friendly approach: Figma REST is throttled per token, and