Figma Explore
bitovi/ai-enablement-prompts
Explore a Figma file to discover all pages, components, and component sets using the Figma REST API.
Guides work on the Figma I/O package (@grida/io-figma, packages/grida-canvas-io-figma/).
$ npx skills add gridaco/grida --skill io-figma -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install gridaco/grida io-figma --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/gridaco/grida.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/io-figma .claude/skills/io-figma && 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 "io-figma" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/io-figma into .claude/skills/io-figma/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "io-figma", 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/gridaco/grida/tree/main/.agents/skills/io-figmaType 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 gridaco/grida --skill io-figma -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install gridaco/grida io-figma --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/io-figma .agents/skills/io-figma && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "io-figma" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/io-figma into .agents/skills/io-figma/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "io-figma", 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 gridaco/grida --skill io-figma -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install gridaco/grida io-figma --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/io-figma .cursor/skills/io-figma && 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 "io-figma" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/io-figma into .cursor/skills/io-figma/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "io-figma", 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/gridaco/grida.git --path .agents/skills/io-figma--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 gridaco/grida --skill io-figma -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install gridaco/grida io-figma --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/io-figma .gemini/skills/io-figma && 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 "io-figma" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/io-figma into .gemini/skills/io-figma/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "io-figma", 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 gridaco/grida io-figmaInstalls 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 gridaco/grida --skill io-figma -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/io-figma .github/skills/io-figma && 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 "io-figma" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/io-figma into .github/skills/io-figma/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "io-figma", 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 gridaco/grida --skill io-figma -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install gridaco/grida io-figma --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/io-figma .opencode/skills/io-figma && 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 "io-figma" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/io-figma into .opencode/skills/io-figma/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "io-figma", 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.
io-figmaGuides work on the Figma I/O package (@grida/io-figma, packages/grida-canvas-io-figma/).
Io Figma is an agent skill from gridaco/grida. Guides work on the Figma I/O package (@grida/io-figma, packages/grida-canvas-io-figma/). Covers the fig-kiwi binary parser, Kiwi→REST→Grida conversion pipeline, fig2grida CLI, REST API JSON conversion, and testing with clipboard/fig/REST fixtures. Use when adding node type support, fixing conversion bugs, extending fig2grida, working on the fig-kiwi parser, writing tests for Figma import, or debugging clipboard paste failures after a Figma update.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/figma_archive.py`).
It sits in Backend & APIs, covering REST APIs. It works with Figma. The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 165496f. 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.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pnpmnpxpythonFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
FIGMA_TOKENX_FIGMA_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Io Figma loads about 2.2k tokens when it runs. Until then it costs about 115 tokens; SKILL.md has 636 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 noted patterns worth knowing about, such as sudo or a known installer.
The root `.env` file is **not** a standard part of this project — it mayot exist on every machine. **Never read `.env` directly** (for securityAutomated 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); the scripts in this folder are not scanned.
The full file from gridaco/grida at commit 165496f, republished under its Apache-2.0 licence (© gridaco). 636 words, ~2,244 tokens.
.claude/skills/io-figma/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.@grida/io-figmaPackage: packages/grida-canvas-io-figma/
.fig bytes / HTML clipboard
→ fig-kiwi parser (fig-kiwi/) low-level, zero-opinion
→ NodeChange[] (Kiwi schema types)
→ iofigma.fromKiwi*() (lib.ts) Kiwi → Grida node
Figma REST API JSON
→ iofigma.fromRest*() (lib.ts) REST → Grida node
Orchestration:
fig2grida-core.ts — browser-safe: input detection, page loop, pack
fig2grida.ts — CLI wrapper (Node.js only, uses fs + process.argv)Key invariant: The Kiwi path converts to REST format first (Kiwi → REST → Grida). lib.ts is the single source of truth for node conversion; it does not know the input origin.
Output: Grida format (.grida ZIP — FlatBuffers + images). See io-grida skill for format details, Rust loading, and round-trip testing.
fig2grida(input) in fig2grida-core.ts auto-detects the input:
| Input | Detection | Path |
|---|---|---|
.fig bytes | ZIP without document.json, or raw Kiwi | fig-kiwi parser |
| REST archive ZIP | ZIP containing document.json (+ optional images/) | REST JSON path |
| REST JSON bytes | Starts with { | REST JSON path |
| REST JSON object | Non-Uint8Array object | REST JSON path |
The REST JSON path (extractCanvases) accepts multiple response shapes:
{ document: { type: "DOCUMENT", children: [CANVAS, …] } } — full GET /v1/files/:key{ document: { type: "CANVAS", children: […] } } — single-page node fetch{ nodes: { "id": { document: … }, … } } — GET /v1/files/:key/nodes?ids=…{ type: "DOCUMENT", children: … } — document node directly{ type: "CANVAS", children: … } — single CANVAS node{ children: […] } — bare object with childrenPublic APIs (both in fig2grida-core.ts):
fig2grida(input, options?) → .grida ZIP bytes (Fig2GridaResult)restJsonToGridaDocument(json, options?) → in-memory Document + assets (no ZIP packing)| File | Role |
|---|---|
lib.ts | All iofigma.from* converters (Kiwi→REST and REST→Grida) |
fig2grida-core.ts | Orchestrator (.fig, REST JSON, REST ZIP) |
fig2grida.ts | CLI entry point (Node.js only) |
fig-kiwi/index.ts | Low-level parser public API |
fig-kiwi/blob-parser.ts | Vector network + commands blob decoding |
fig-kiwi/schema.ts | Kiwi type definitions (NodeChange, Message, …) |
| Path | What |
|---|---|
.ref/figma/ | Kiwi schema (fig.kiwi, fig.kiwi.d.ts), extraction tool (fig2kiwi.ts), Figma REST & Plugin API typings |
docs/wg/feat-fig/glossary/fig.kiwi.md | Deep-dive: node types, vector blob format, GROUP/FRAME detection, text/font mapping |
packages/grida-canvas-io-figma/README.md | Feature matrix, limitations, usage |
fig-kiwi/schema.ts (Kiwi) or REST JSON in fixtures/test-figma/.lib.ts under the relevant iofigma.from* converter.__tests__/ against an existing fixture.Clipboard issues = Figma changed their Kiwi schema.
readHTMLMessage(html) → inspect raw Message.NodeChange[] against fig-kiwi/schema.ts.schema.ts (field changes) or blob-parser.ts (blob layout changes).pnpm --filter @grida/io-figma fig2grida input.fig
npx tsx packages/grida-canvas-io-figma/fig2grida.ts input.fig --pages 0,2
npx tsx packages/grida-canvas-io-figma/fig2grida.ts input.fig --infofigma_archive.py requires a Figma Personal Access Token. The script
checks FIGMA_TOKEN then X_FIGMA_TOKEN env vars, or accepts
--x-figma-token on the CLI. It fails fast with a clear error if none
is set.
The root .env file is not a standard part of this project — it may
not exist on every machine. Never read .env directly (for security
reasons). Instead, if a token is needed and not already in the
environment, ask the user to provide one and have them export it:
export FIGMA_TOKEN=figd_...Use scripts/figma_archive.py. See the script header for full documentation, output layout, and --export behaviour.
python .agents/skills/io-figma/scripts/figma_archive.py \
--filekey <KEY> --archive-dir fixtures/test-figma/community/<name>
# With oracle PNGs (nodes must have export presets in Figma)
python .agents/skills/io-figma/scripts/figma_archive.py \
--filekey <KEY> --archive-dir fixtures/test-figma/rest-api/local/<name> --exportFor end-to-end correctness of the Figma import pipeline (does our Grida
render of a Figma file match Figma's own render?), use the refig
flow: oracle PNGs from Figma's Images API + @grida/reftest (developed in
the engine repo: https://github.com/gridaco/nothing/tree/main/packages/grida-reftest)
for the diff/score/report. Suites live in the engine repo's gitignored local
corpus (fixtures/local/refig/<name>.<filekey>/ — local-only, machine-local
by definition). See the engine repo's render-reftest skill, section
"Figma — the refig reftest pipeline":
https://github.com/gridaco/nothing/blob/main/.agents/skills/render-reftest/SKILL.md.
When debugging a conversion bug with a visible visual symptom, run the
refig suite to locate the diverging nodes, then drill into lib.ts for
the specific node type or property.
pnpm --filter @grida/io-figma test # all
pnpm --filter @grida/io-figma test -- __tests__/iofigma.kiwi.test.ts # specific| Test file | Covers |
|---|---|
iofigma.kiwi.test.ts | Kiwi clipboard → Grida |
iofigma.kiwi.fig.test.ts | .fig file parsing |
iofigma.kiwi.vector-network.test.ts | Vector network blob decoding |
iofigma.kiwi.clipboard-overrides.test.ts | Component instance overrides |
iofigma.kiwi.clipboard-components.test.ts | Component / instance clipboard |
iofigma.kiwi.clipboard-text-overrides.test.ts | Text style overrides |
iofigma.rest-api.no-geometry.test.ts | REST API (no geometry) |
iofigma.rest-api.vector.test.ts | REST API vector paths |
fig2grida.test.ts | End-to-end pipeline |
fig-kiwi/__tests__/ | Low-level parser units |
Fixtures: fixtures/test-figma/rest-api/ (committed REST JSON), fixtures/test-figma/community/ (archived files), fixtures/local/ (gitignored, manual testing).
characterStyleOverrides / styleOverrideTable partially mapped from KiwiCheck the README's limitations section before writing new code. If lifting a limitation, update the README.
pnpm turbo typecheck --filter='./packages/grida-canvas-io-figma'
pnpm turbo test --filter='./packages/grida-canvas-io-figma'© gridaco, Apache-2.0. 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 1 other file (scripts) in .agents/skills/io-figma of gridaco/grida.
Open the folder on GitHubat commit 165496f
Io Figma 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 |
|---|---|---|---|---|---|---|
| Io Figma this skillgridaco/grida | 2.7k | — | ~2.2k | Automated safety check: Notes | Apache-2.0 | |
| Figma Explorebitovi/ai-enablement-prompts | 121 | — | ~1.1k | Automated safety check: Notes | MIT | |
| Figma Comment Fix Loophashgraph-online/awesome-codex-plugins | 1.2k | — | ~4.8k | Automated safety check: Pass | MIT | |
| Figma To StaticLeoYeAI/openclaw-master-skills | 2.2k | — | ~7.1k | Automated safety check: Pass | MIT | |
| RuView CLI, API and WASMruvnet/RuView | 97k | — | ~1.2k | Automated safety check: Notes | MIT | |
| REST API Contract Reviewdecebals/claude-code-java | 750 | 1 repos | ~2.8k | Automated safety check: Pass | MIT |
bitovi/ai-enablement-prompts
Explore a Figma file to discover all pages, components, and component sets using the Figma REST API.
hashgraph-online/awesome-codex-plugins
Comment-to-fix pipeline for Figma. An agent skill from hashgraph-online/awesome-codex-plugins.
LeoYeAI/openclaw-master-skills
Convert Figma design files to pixel-level mobile-first static HTML/CSS pages.
ruvnet/RuView
Covers the RuView `wifi-densepose` command line binary, its Axum REST API and the WebAssembly builds for browsers and ESP32, for embedding or scripting RuView.
decebals/claude-code-java
Reviews REST API design for correct HTTP verbs, versioning, DTO use, consistent responses and backward compatibility before an API change ships.
sleekdotdesign/agent-skills
Design mobile app screens with Sleek, edit Sleek projects, and implement their designs in React Native or HTML.
gridaco/grida
Grida Desktop Electron shell and release-impact work: BrowserWindow, preload, window.grida, menus, protocol/deep links, file associations, Forge, path-scoped bridge security, Electron-only UI bugs…
gridaco/grida
Set up, download, verify, and seed the optional Grida Library developer corpus into local Supabase.
gridaco/grida
Query images with a local Ollama vision model without loading the image into the main agent context.
gridaco/grida
Research, compare, and update shared AI model JSON for TypeScript, web, and Rust consumers.
gridaco/grida
Grida AI agent system work: @grida/daemon (DaemonServer, loopback HTTP perimeter, files/workspaces, secrets store, daemon discovery) and @grida/agent (the agent tenant: sessions, providers/BYOK…
gridaco/grida
Use BEFORE editing any file in supabase/migrations/ or supabase/schemas/, OR when the user runs a /database subcommand (compact local migration, rls scenarios, align).
Works with
Categories
Guides work on the Figma I/O package (@grida/io-figma, packages/grida-canvas-io-figma/). Io Figma is an agent skill from gridaco/grida. Guides work on the Figma I/O package (@grida/io-figma, packages/grida-canvas-io-figma/).
Io Figma fits situations like: adding node type support; fixing conversion bugs; extending fig2grida; working on the fig-kiwi parser.
Run `npx skills add gridaco/grida --skill io-figma -a claude-code`. Or copy the skill folder (.agents/skills/io-figma in gridaco/grida) into .claude/skills/io-figma in your project. Claude Code loads it when a task matches its description.
Run `npx skills add gridaco/grida --skill io-figma -a codex`. Or copy the skill folder (.agents/skills/io-figma in gridaco/grida) into .agents/skills/io-figma 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 gridaco/grida --skill io-figma -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/io-figma, .gemini/skills/io-figma, .github/skills/io-figma and .opencode/skills/io-figma in your project.
Going by SKILL.md and its folder, Io Figma needs Python for the scripts in its folder, the command-line tools its instructions call (pnpm, npx and python) and credentials named FIGMA_TOKEN and X_FIGMA_TOKEN. Our summary lists: Python 3; Node.js; A credential in FIGMA_TOKEN; A credential in X_FIGMA_TOKEN.
SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Io Figma is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Io Figma: Figma Explore (bitovi/ai-enablement-prompts, 121 stars), Figma Comment Fix Loop (hashgraph-online/awesome-codex-plugins, 1.2k stars), Figma To Static (LeoYeAI/openclaw-master-skills, 2.2k stars) and RuView CLI, API and WASM (ruvnet/RuView, 97k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
gridaco (a GitHub organization) maintains it in gridaco/grida, which has 2,657 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on October 6, 2026.
Source: gridaco/grida on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.