figma-typings-audit
Upgrade @figma/plugin-typings and absorb what the new version exposes. Diffs the .d.ts between the installed and the target…
Build a Figma design from code or a description — the reverse of figma-codegen. Reuses the connected file's existing design system (components, variables, styles) instead of drawing primitives with hardcoded values. Triggers whenever the user wants something created or updated
Claude Code
$ npx -y skills add awdr74100/figwright --skill figma-build --agent claude-code
Codex
$ npx skills add awdr74100/figwright --skill figma-build -a codex -y
Cursor
$ npx skills add awdr74100/figwright --skill figma-build -a cursor -y
Gemini CLI
$ npx skills add awdr74100/figwright --skill figma-build -a gemini-cli -y
GitHub Copilot
$ npx skills add awdr74100/figwright --skill figma-build -a github-copilot -y
OpenCode
$ npx skills add awdr74100/figwright --skill figma-build -a opencode -y
Windsurf
$ npx skills add awdr74100/figwright --skill figma-build -a windsurf -y
name: figma-build description: Build a Figma design from code or a description — the reverse of figma-codegen. Reuses the connected file's existing design system (components, variables, styles) instead of drawing primitives with hardcoded values. Triggers whenever the user wants something created or updated IN Figma from code or a spec — e.g. 'build this in Figma', 'create a Figma design for this', 'push this component/screen to Figma', 'turn this React/Vue into a Figma design', 'recreate this UI in Figma', 'make a Figma version of …', 'design a landing page/screen in Figma' — or whenever a coding artifact (a component, page, or spec) appears alongside a request to author in a connected Figma file. Works for full screens, sections, single components, or design-system assets.
Turn code or a description into a Figma design that looks like it belongs in the file: **reuse the components, variables, and styles that already exist, and only build what's genuinely missing.** This is the mirror image of `figma-codegen` — same "reuse beats regenerate / reference tokens not literals" philosophy, pointed at the canvas instead of the codebase. This file is the router; deep detail lives in [`references/`](./references) — load a reference when its step is in play.
You operate on the **connected** Figma file (the plugin's current session). There is no fetch-by-URL; the user must have the target file open. Confirm a plugin is connected (`ping`) before building.
view, modal/dialog/drawer/sidebar/panel, a single component, or a design-system asset.
Every tool result says so when it applies, so you do not have to check up front: with two or more files connected and none claimed, results carry a `MORE THAN ONE FIGMA FILE IS OPEN` block naming them. It matters because calls otherwise follow whichever file the user last touched, which changes when they switch tabs — so a task can read one file and write to another and report success.
When you see it, claim the file before doing anything else: `list_files` names every connected file, `use_file({ fileName })` claims one for this session (`use_file({ sessionId })` when two open files share a name — Figma allows that, and `x (Copy)` is how it happens). Every later call then reaches that file whatever is in front, including while its tab sits in the background. If the user has not said which file, ask — do not guess from the names.
The write-side mirror of codegen's grounding, and the **most important habit**: an off-looking build almost always comes from **invented values** or **assumed conventions**. So **understand this user's actual environment first, then build into it** — never apply a generic template. There's no single "right" stack; there's _their_ stack. Look at **both ends** before creating anything:
1. **`get_variable_defs`** → the file's variables (colour / spacing / radius / typography) with names + values + `hex`. These are the tokens you bind to. 2. **`scan_components`** / **`get_local_components`** → existing components to **instance** rather than rebuild. Match the source UI pattern (a card, a list row, a nav, a button) to a component. 3. **`get_styles`** → shared paint / text / effect styles to apply. 4. **A design system that lives in a published library** — these reads list only the file's _own_ definitions. When they come back empty or sparse but the file is built on a team library (its components are library instances, or the user says so), the tokens are in the library file: read their keys there and import what you bind. Don't conclude "no tokens" and hardcode values. → `references/write-rules.md`, "Tokens from a published library".
Chakra / MUI / CSS modules / vanilla …) and whether it has a config / theme / tokens file. That's where its real values live — read them from there, don't assume a default.
Then build, tracing every value to a source in priority order: **reuse** an existing component / variable / style; else take the **exact value from the source's own code** — provider-first, resolving whatever styling system it uses to real px / hex (CSS literally; Tailwind / Chakra / UnoCSS / … via their config or scale), never eyeballed; only **invent** from a consistent scale when neither exists. Full detail + the value-resolution method in `references/write-rules.md`.
Every build obeys the same cross-cutting rules — ground values (design system → source code → scale), reference tokens (colour via `bind_variable_to_paint`, scalars via `bind_variable_to_node`, shared looks via `apply_style_to_node`), auto-layout for related children (absolute only for top-level placement), HUG/FILL/FIXED sizing via `set_layout_props` (so the layout computes sizes — don't hardcode width/height), and real fonts (a new TEXT node defaults to Inter). → **[`references/write-rules.md`](./references/write-rules.md).**
`create_instance` matching components, bind tokens, build incrementally, screenshot-verify each step. → **[`references/assemble-screens.md`](./references/assemble-screens.md).**
variables/collections, paint/text styles, or components + variant sets, then switch back to the reuse path. → **[`references/author-design-system.md`](./references/author-design-system.md).**
Free, two-way Figma MCP server. Turn designs into framework-aware code, and push code back to the canvas. Works with Claude Code, Cursor, Codex, and any MCP client.
Upgrade @figma/plugin-typings and absorb what the new version exposes. Diffs the .d.ts between the installed and the target…
Upgrade @modelcontextprotocol/server (the MCP TypeScript SDK v2) and prove the wire contract survived. The SDK is a runtime…
Generate framework-aware code from a Figma design. Reads the project's stack profile and emits code matching the existing…
Use when the user needs to run GitNexus CLI commands like analyze/index a repo, check status, clean the index, generate a wiki,…
Query and invoke tools on MCP servers using fastmcp list and fastmcp call. Use when you need to discover what tools a server…
Design n8n AI agents the right way. Use when building or editing any @n8n/n8n-nodes-langchain.* AI node — an AI Agent, LLM chain,…
小红书内容发布技能。支持两种发布模式:(1) 上传图文模式 - 图片+短文;(2) 写长文模式 - 长篇文章+排版模板。 支持两种输入方式:用户提供完整内容和图片/图片URL,直接发布;或提供网页URL,自动提取内容和图片。…