figma-generate-changelog
Generate a human-readable markdown changelog between two Figma file versions — pages added/removed/renamed plus per-component changes, enriched with author handles and timestamps, ready to paste into release notes, PRs, or Storybook MDX. Use when the user wants prose history — triggers: 'generate a Figma changelog', 'write release notes from Figma', 'what changed between these versions in markdown', 'summarize Figma changes for the PR', 'changelog between version A and B', 'design changelog since last release'. Uses the Figma REST API + a personal access token because version history is NOT reachable via the Plugin API / use_figma / the native Figma MCP. For raw structured diff JSON use figma-version-history; to find which version introduced a specific change use figma-blame-node.
Works with
---
name: figma-generate-changelog
description: Generate a human-readable markdown changelog between two Figma file versions — pages added/removed/renamed plus per-component changes, enriched with author handles and timestamps, ready to paste into release notes, PRs, or Storybook MDX. Use when the user wants prose history — triggers: 'generate a Figma changelog', 'write release notes from Figma', 'what changed between these versions in markdown', 'summarize Figma changes for the PR', 'changelog between version A and B', 'design changelog since last release'. Uses the Figma REST API + a personal access token because version history is NOT reachable via the Plugin API / use_figma / the native Figma MCP. For raw structured diff JSON use figma-version-history; to find which version introduced a specific change use figma-blame-node.
license: MIT
---
# figma-generate-changelog — markdown changelog between two versions
Builds on the same version diff as `figma-version-history`, then formats it as release-notes-style
**markdown** and enriches each version reference with the author handle, label, 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.
## Setup & skill boundaries
- All requests use `X-Figma-Token: $FIGMA_TOKEN` against `https://api.figma.com`.
- Related: [figma-version-history](../figma-version-history/SKILL.md) for the structured diff and the
endpoint reference.
## Derive the file key
```bash
FILE_KEY=$(echo "$FILE_URL" | sed -E 's#.*/(design|file)/([A-Za-z0-9]+).*#\2#')
```
## Workflow
1. **Pick the two versions.** List them first if you don't have the IDs:
```bash
../figma-version-history/scripts/list-versions.sh ABC123def456
```
2. **Generate the changelog** with [`scripts/generate-changelog.mjs`](scripts/generate-changelog.mjs):
```bash
# Page-level changelog against HEAD
node scripts/generate-changelog.mjs --file ABC123def456 --from 4096761871 --to current
# Include per-component changes, detailed bullets
node scripts/generate-changelog.mjs --file ABC123def456 --from 4096761871 --to 4096800000 \
--components 695:313,420:88 --mode detailed
```
By default it prints **markdown** to stdout. Pass `--json` to get `{ markdown, data }` (the
structured diff alongside the rendered text). Redirect to a file for release notes:
```bash
node scripts/generate-changelog.mjs --file ABC123def456 --from 4096761871 --to current \
> CHANGELOG-figma.md
```
3. **Modes** mirror the diff: `summary` (one punchy line of counts), `standard` (sectioned with
counts, default), `detailed` (full per-property and per-binding bullets).
## What it captures
- A header with **From / To** version refs — label (or `(unlabeled)`), date, and author handle —
plus the span in days. Author/label come from one extra cheap call to the versions list.
- A **Page Structure** section: pages added / removed / renamed.
- A **Components** section (when `--components` is passed): per-component change counts and bullets
for renames, description changes, children added/removed, `componentPropertyDefinitions` changes,
and variable-binding changes.
- A **Notes** section listing the diff's known blind spots (instances on the canvas, raw
layout/visual props, variable VALUE changes, style content — none of which Figma REST exposes for
historical versions).
## Notes
- Author enrichment is **best-effort**: it pages the versions list up to ~200 entries back to find
each version's metadata. If a version is older than that lookback (or `Figma` system-attributed),
the ref degrades gracefully to the version id.
- `current`/HEAD references render as "Current state (last modified …)".More API Design skills
lark-event
larksuite/cli
Lark/Feishu real-time event listening / subscribing / consuming: stream events as NDJSON via `lark-cli event consume <EventKey>` (covers IM messages/reactions/chat changes, Approval status changes, Task updates, VC meeting started/joined/ended, Minutes generated, Whiteboard updated, etc.). Use for Lark bots, real-time message processing, long-running subscribers, streaming webhook/push handlers. Supports `--max-events` / `--timeout` bounded runs and a stderr ready-marker contract — designed for AI agents running as subprocesses.
lark-contact
larksuite/cli
飞书 / Lark 通讯录:按姓名 / 邮箱解析成 open_id,或按 open_id 反查姓名 / 部门 / 邮箱 / 联系方式 / 个人状态 / 签名,以及按关键词搜索当前用户可见的机器人 / 智能体(agent)。当用户提到一个名字要下一步发消息 / 排日程,或拿到 open_id 想查具体信息时使用。不负责部门树遍历、按部门列员工、组织架构图,这类需求走原生 OpenAPI。
lark-openapi-explorer
larksuite/cli
飞书/Lark 原生 OpenAPI 探索:从官方文档库中挖掘未经 CLI 封装的原生 OpenAPI 接口。当用户的需求无法被现有 lark-* skill 或 lark-cli 已注册命令满足,需要查找并调用原生飞书 OpenAPI 时使用。

