Frontend UI Foundry
jiushiwon/wg-skills
A skill your agent uses when generating UI for a specific scenario (mobile/PC/官网/管理端/营销页/文档/金融/原生/3D), when refactoring an existing HTML/Vue/React project to a unified design system, when extracting…
Generate framework-aware code from a Figma design. An agent skill from awdr74100/figwright.
$ npx skills add awdr74100/figwright --skill figma-codegen -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install awdr74100/figwright figma-codegen --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/awdr74100/figwright.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/figma-codegen .claude/skills/figma-codegen && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "figma-codegen" agent skill from https://github.com/awdr74100/figwright/tree/main/skills/figma-codegen into .claude/skills/figma-codegen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "figma-codegen", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/awdr74100/figwright/tree/main/skills/figma-codegenType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add awdr74100/figwright --skill figma-codegen -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install awdr74100/figwright figma-codegen --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/awdr74100/figwright.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/figma-codegen .agents/skills/figma-codegen && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "figma-codegen" agent skill from https://github.com/awdr74100/figwright/tree/main/skills/figma-codegen into .agents/skills/figma-codegen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "figma-codegen", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add awdr74100/figwright --skill figma-codegen -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install awdr74100/figwright figma-codegen --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/awdr74100/figwright.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/figma-codegen .cursor/skills/figma-codegen && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "figma-codegen" agent skill from https://github.com/awdr74100/figwright/tree/main/skills/figma-codegen into .cursor/skills/figma-codegen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "figma-codegen", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/awdr74100/figwright.git --path skills/figma-codegen--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add awdr74100/figwright --skill figma-codegen -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install awdr74100/figwright figma-codegen --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/awdr74100/figwright.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/figma-codegen .gemini/skills/figma-codegen && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "figma-codegen" agent skill from https://github.com/awdr74100/figwright/tree/main/skills/figma-codegen into .gemini/skills/figma-codegen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "figma-codegen", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install awdr74100/figwright figma-codegenInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add awdr74100/figwright --skill figma-codegen -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/awdr74100/figwright.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/figma-codegen .github/skills/figma-codegen && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "figma-codegen" agent skill from https://github.com/awdr74100/figwright/tree/main/skills/figma-codegen into .github/skills/figma-codegen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "figma-codegen", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add awdr74100/figwright --skill figma-codegen -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install awdr74100/figwright figma-codegen --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/awdr74100/figwright.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/figma-codegen .opencode/skills/figma-codegen && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "figma-codegen" agent skill from https://github.com/awdr74100/figwright/tree/main/skills/figma-codegen into .opencode/skills/figma-codegen/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "figma-codegen", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
figma-codegenGenerate framework-aware code from a Figma design. An agent skill from awdr74100/figwright.
Figma Codegen is an agent skill from awdr74100/figwright. Generate framework-aware code from a Figma design. Reads the project's stack profile and emits code matching the existing framework (React/Vue/Svelte/Next/etc.) and styling (Tailwind/CSS/CSS-in-JS), reusing existing components and design tokens instead of regenerating from scratch. Triggers whenever the user wants a Figma design turned into code — e.g. 'code this design', 'implement this frame', 'build this screen/component', 'turn this Figma into React/Vue', 'convert this design to code' — or whenever a Figma…
Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including reference files (for example `references/assets-and-icons.md`, `references/grounding.md` and `references/motion.md`).
It sits in Frontend & Design, covering Project scaffolding, Design to code and Design tokens. It works with Figma, React, Vue.js and Svelte. The repository describes itself as: 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. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit a92d602. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Figma Codegen loads about 4.2k tokens when it runs, and up to ~18k if it reads all its reference files. Until then it costs about 165 tokens; SKILL.md has 2,237 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from awdr74100/figwright at commit a92d602, republished under its MIT licence (© awdr74100). 2,237 words, ~4,238 tokens.
.claude/skills/figma-codegen/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Turn a Figma selection into code that looks like the rest of the project: reuse the components and
tokens that already exist, only build what's genuinely missing. The grounded tools do the heavy
lifting so you are not guessing from a screenshot. This file is the router; deep detail lives in
references/ — load a reference when its step is in play.
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.
Run the grounded tools against the selection, then generate — trust them over the rendered image.
get_design_context (detail full, dedupeComponents: true) → the structural tree with
tokens resolved to names (Primary/500, spacing/4), styles deduped into globalVars, and each
instance's mainComponent / componentProperties. This is the layout + binding source of truth.
Keep dedupeComponents: true and don't depth-limit a subtree you'll build from.
→ How to read the tree, the per-node fidelity catalog (effects, per-side borders, stroke align,
per-corner radius, blend, masks, gradients, image-fit, auto-layout/grid, aspect-ratio,
scroll/sticky, stack & stroke-space), Dev Mode annotations as ground truth, and grounding a page
too big for one call: references/grounding.md.
component_map → every Figma component grouped to a local code component with a status
(high / medium / low / unmapped), candidate.filePath, and matchedProps.
high / medium: reuse that component (import from candidate.filePath), don't regenerate.
Never invent a component name component_map didn't report.candidate.ambiguousWith (a capped list of { name, filePath }): the Figma name matched two or
more code components nearly equally and the join couldn't confidently pick — a verify-me pick,
not a confident reuse (the analogue of token_map's ambiguousWith). Check which of the winning
candidate + these runner-ups is the right component for this context before importing (a wrong
reuse is a silent visual bug), then record the confirmed one in the map file so the next run is
certain. Absent when the pick was unambiguous.instances[].props (resolved variant / boolean / text values) onto the reused
component — one element per instance, with its own props.candidate.unmatchedProps: Figma axes the component has no prop for (a leading icon, a required
flag, an active state) → surface as component-extension TODOs, never fake them with ad-hoc markup.unmapped: build it new in the project's style. For a repeated unmapped component
(instanceCount > 1), build from its first instance's subtree; if that came back
deduped/truncated, drill get_design_context on instances[0].nodeId once — don't rebuild a
repeated component by eye.get_component_api on the component/instance returns the full property API — every VARIANT option
and each BOOLEAN/TEXT/INSTANCE_SWAP prop with its default — so the prop space is grounded, not
inferred from the instances you happened to see.componentPropertyReferences
({ characters | visible | mainComponent: "PropName#1:2" }). Wire that layer to the prop, not to
what it happens to render: characters: "Label#1:2" is {props.label}, not the literal string in
the design, and visible: "Show Badge#3:4" renders conditionally. Without it you emit the right
markup with no props at all — every instance frozen to whatever the one you looked at said.token_map → every Figma variable joined to a project token with status + ref + matchedBy.
A document's shared paint styles (single solid color styles — the token mechanism of
pre-variables files) join the same way, marked source: 'style'.
candidate.ref (bg-primary-500, var(--color-primary-500)) — never the raw
hex/px get_design_context resolved. matchedBy: ['name'] on a colour (value drifted): use it
but flag the mismatch.candidate.ambiguousWith (several project tokens share that exact value and the name couldn't
split them): a capped, verify-me pick — choose the semantically right sibling for the context
(or keep the value and flag the gap), never treat it as a confirmed reuse.get_design_context's own
projectTokens map is the fallback: any raw color in the payload that exactly equals a project
token's value is annotated there ({ "#6266F0": { ref, name, matchedBy: ["value"] } }). Before
hardcoding a hex, look it up and emit the ref when it fits the context semantically.
matchedBy: ["value"] marks the entry as name-blind value-equality evidence — a hypothesis to
verify, not a resolved binding: an entry with candidates lists same-value tokens to choose
between by meaning, a semantically wrong token is worse than the raw value (keep the raw
value and note the gap instead), and a bound Figma variable always outranks a raw-value match.framework-builtin (a built-in scale step of the project's utility framework — Tailwind or
UnoCSS — e.g. spacing/4, line-height/7, weight/Bold): carries builtin: { scale, step }
— compose the utility (p-4/gap-4, leading-7, font-bold), not an arbitrary
p-[16px]. This is not a gap.from (a SCSS variable): the ref does not resolve on its own. The file you write must
import the declaring file, and from is repo-relative while Sass resolves @use against
the importing file — so re-resolve it from where you are writing: from
src/components/card.scss, from: src/styles/_tokens.scss becomes
@use '../styles/tokens' as *, never the repo-relative path verbatim. as * keeps the ref as
given; the project's own @use style may namespace it instead (@use '../styles/tokens' makes
$color-primary-500 into tokens.$color-primary-500). Emitting the ref without the import is
a compile error, not a style nit.unmapped: use the value but call out the gap (offer to add it to the token source); don't
hardcode silently.figmaModes ({ Light: …, Dark: … }, with the file's theme axes on themedCollections): the
token is theme-dependent — figmaValue is only the default mode, never the whole story.
Mapped: emit candidate.ref and confirm the project token itself switches per theme (.dark /
[data-theme] / prefers-color-scheme / a dark: story); if the project defines only one
value, wire the other mode's value into that mechanism or surface a theme gap. Unmapped: the
default mode is the base, other modes ride the project's dark-mode mechanism (dark: variants /
prefers-color-scheme). Themes encoded without native modes — paired collections or name
groups (Color/Light/* + Color/Dark/*, a plan-limited workaround) — get the same treatment.Export the assets grounding can't carry — logos, photos, icons have no pixels and otherwise
render as grey blocks. save_image_fills for IMAGE-fill nodes (the original asset, not a
clipped re-render), icon_map first for icons (reuse curated .svgs), get_screenshot only for
the composited look.
→ Full asset/icon/svg/colour-contract workflow:
references/assets-and-icons.md.
Then emit code in the detected stack (the profile comes back on component_map / token_map; you do
not call analyze_project yourself): compose the reused components, wrap unmapped pieces, and apply
token references for colour/spacing/radius/typography.
Codegen is rarely one-shot — the design keeps moving. To make the second pass an incremental edit instead of a regeneration:
design_diff on the section/component nodeId saves a baseline (its
get_design_context) under .figwright/snapshots/. Committing that file lets teammates share the
baseline; the tool never touches git.design_diff the same
nodeId again: it returns the per-node, per-property delta — added / removed / changed nodes
with resolved values (a fill, a padding, a text string, a token rebind), each with a readable path
(Card / Header / Title). Edit only the code those nodes map to; don't regenerate the screen.
Ground each changed value the usual way (it's a get_design_context slice), then design_diff with
update: true to accept the new design as the baseline.nodeId unit you coded from. no-changes means the design is untouched since
the baseline — nothing to do.get_design_context, which carries only a
Motion summary (preset names, animated field names, timeline length) — so a changed keyframe time,
value or easing, or a preset's config or props, can come back no-changes, and instance children
the dedupe collapses carry no summary at all. To re-sync animation, re-run get_motion_context on
the root and compare it with what the code implements.The joins re-derive from scratch every run. A mapping you confirmed — reused a component and it rendered right, resolved an ambiguous colour to the semantically correct token — is worth recording so the next run treats it as ground truth instead of re-guessing. Two append-only map files, each read back by its join as highest authority:
docs/figma-component-map.md — rows | FigmaName | code/path | (or FigmaName -> path).
component_map then returns that component as source: 'map-file', confidence 1.
docs/figma-token-map.md — rows | FigmaName | ref |. token_map returns it as
matchedBy: ['map-file'], confidence 1. The ref is what you'd emit — a utility (bg-primary-500),
a var(--color-primary-500), or the bare token name.
A recorded row OVERRIDES the fuzzy join on every future run — so record proof, not a pick. The gate is your own verify step (§ Responsive & verify): only after you rendered the result and it matched the Figma node do you record the mapping you proved. A wrong row doesn't fail loudly — it silently mis-maps that component/token in every future generation until a human notices, which is worse than no record at all. If you're not certain, don't record it; a re-guess next run is recoverable, a confidently-wrong recorded row is not.
Record only the mappings the join was unsure of — a low/medium component match you
confirmed, an unmapped component you built (record its new file), or a token that came back
ambiguousWith / matchedBy: ['value'] / unmapped and you resolved by meaning. Skip the
already-high deterministic matches; they re-derive correctly and a row for them is just noise.
These files are committed project docs — treat a row like a line of code you're asserting is correct, not a scratch note. One figma name → one target per row; keep them reviewable.
Keep the files healthy. When component_map / token_map report staleOverrides (a recorded
target that no longer resolves — the file/token was renamed or deleted), the join has already
degraded to the fuzzy result; fix that row to the new target or delete it.
w-full, never the artboard's fixed width; ground breakpoints
from the file's other-width frames. → references/responsive.md.references/verify.md.Call get_motion_context once on every root you implement: it inventories every Motion source in
the subtree (instance children included) and says what it could not read. Only coverage.status: "complete" with no nodes means nothing animates — the motion summary in get_design_context is a
hint that dedupe and budget can drop. Implement what it returns with the project's own animation
mechanism, read it with the measured rules in the reference, treat anything neither states (how
tracks combine, loop, trigger) as your assumption and say so, and verify the result against the
source. Dropping a frame's
animation is a fidelity miss, the same class as dropping a shadow.
→ references/motion.md.
get_design_context, for every section. The screenshot
is visual intent only; guessing "the easy sections" is the cardinal miss. On a page too big to ground
at once, scope by section nodeId — never depth-cap the whole page, never retry an oversized call.high/medium component_map candidate must be imported and used.ref; reserve raw values for unmapped
gaps, and surface those gaps rather than burying them.strokeAlign,
per-corner radius, blend mode, masks, gradients, image scaleMode, and auto-layout/grid spacing are
all in the context — translate each (the catalog is in references/grounding.md). Dropping any is a
grounding miss, not a simplification.&. In a language whose & concatenates
(SCSS / Sass / Less / Stylus / postcss-nested) .card { &__title {} } compiles to
.card__title — a name that exists only after
compilation, so the class the markup carries appears nowhere in the source and adjusting one rule
means searching a fragment like __title and reading every hit. Declare it flat at the top level
instead. profile.styling.classNaming (on component_map / token_map) reports the project's own
habit and the project wins: ampersand → write &__title; flat or absent → write flat.
→ references/stylesheets.md for the descendant-selector trap that
looks like the fix and isn't, and what & is still the right tool for.references/verify.md.)© awdr74100, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (references) in skills/figma-codegen of awdr74100/figwright.
Open the folder on GitHubat commit a92d602
Figma Codegen next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Figma Codegen this skillawdr74100/figwright | 977 | — | ~4.2k | Automated safety check: Pass | MIT | |
| Frontend UI Foundryjiushiwon/wg-skills | 110 | — | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| Design Code for Any Frameworkplugin87/ux-ui-agent-skills | 1.5k | — | ~1.7k | Automated safety check: Pass | MIT | |
| Cm Frontend Engineerkingxiaozhe/cm-workflow | 104 | — | ~829 | Automated safety check: Pass | MIT | |
| Figma use_figma Plugin API Ruleswarpdotdev/warp | 65k | 4 repos | ~4.4k | Automated safety check: Pass | AGPL-3.0 | |
| Figma Design to Codewarpdotdev/warp | 65k | 4 repos | ~2.9k | Automated safety check: Pass | AGPL-3.0 |
jiushiwon/wg-skills
A skill your agent uses when generating UI for a specific scenario (mobile/PC/官网/管理端/营销页/文档/金融/原生/3D), when refactoring an existing HTML/Vue/React project to a unified design system, when extracting…
plugin87/ux-ui-agent-skills
Generates complete, accessible, token-driven UI component code for a chosen framework such as React with Tailwind, SwiftUI, Vue, Flutter or Jetpack Compose.
kingxiaozhe/cm-workflow
前端工程师 Skill,执行前端开发任务,自动适配项目技术栈(React/Vue/Svelte/Next.js 等),支持 Figma/Stitch 设计稿还原
warpdotdev/warp
Required groundwork before any use_figma call: the rules and reference files for running JavaScript in a Figma file through the Plugin API without common failures.
warpdotdev/warp
Turns a Figma frame or component into production code that matches the design, using the Figma MCP server and the project's own design system.
yetone/kill-ai-slop
Find and remove AI slop — the generic, machine-default visual and copy tics of vibe-coded products — from a web project.
awdr74100/figwright
Upgrade @figma/plugin-typings and absorb what the new version exposes.
awdr74100/figwright
Upgrade @modelcontextprotocol/server (the MCP TypeScript SDK v2) and prove the wire contract survived.
awdr74100/figwright
Build a Figma design from code or a description — the reverse of figma-codegen.
Categories
Generate framework-aware code from a Figma design. An agent skill from awdr74100/figwright. Figma Codegen is an agent skill from awdr74100/figwright. Generate framework-aware code from a Figma design.
Figma Codegen fits situations like: ever the user wants a Figma design turned into code — e.g; tasks that involve Project scaffolding; tasks that involve Design to code.
Run `npx skills add awdr74100/figwright --skill figma-codegen -a claude-code`. Or copy the skill folder (skills/figma-codegen in awdr74100/figwright) into .claude/skills/figma-codegen in your project. Claude Code loads it when a task matches its description.
Run `npx skills add awdr74100/figwright --skill figma-codegen -a codex`. Or copy the skill folder (skills/figma-codegen in awdr74100/figwright) into .agents/skills/figma-codegen in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add awdr74100/figwright --skill figma-codegen -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/figma-codegen, .gemini/skills/figma-codegen, .github/skills/figma-codegen and .opencode/skills/figma-codegen in your project.
SKILL.md names no scripts, command-line tools or credentials: Figma Codegen is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Figma Codegen is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 14k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Figma Codegen: Frontend UI Foundry (jiushiwon/wg-skills, 110 stars), Design Code for Any Framework (plugin87/ux-ui-agent-skills, 1.5k stars), Cm Frontend Engineer (kingxiaozhe/cm-workflow, 104 stars) and Figma use_figma Plugin API Rules (warpdotdev/warp, 65k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
awdr74100 (a GitHub user) maintains it in awdr74100/figwright, which has 977 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 7, 2026.
Source: awdr74100/figwright on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.