figma-to-weaverse — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited figma-to-weaverse (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Turn a Figma design into maintainable Weaverse pages. This is the Figma input adapter — the sibling of cloning-websites-to-weaverse, but the source is a Figma file instead of a live URL. Both adapters converge on the same downstream skill, generating-weaverse-project-json.
Figma file / frame ─→ figma-to-weaverse ─→ generating-weaverse-project-json ─→ import / content API
(Figma MCP) (tokens + manifest + preview) (project JSON)The two adapters share the same downstream rules. Section matching, deep schema verification, the content manifest, the clone preview route, and the brand-guideline conflict rule are identical to cloning-websites-to-weaverse — read that skill for the full matching logic. This skill only replaces the extraction layer (Figma MCP instead of Firecrawl) and adds Figma-specific gotchas.
Do not use it for live-website cloning (use cloning-websites-to-weaverse) or tiny copy edits.
.guides/brand-guideline.mdsections.mdapp/weaverse/components.tsSame three deliverables as the website cloning skill:
app/routes/clone-preview.$page.tsx rendering the full design as React + Tailwind, section-marked, brand-adjusted. User must approve this before section decomposition.Use the Figma MCP tools. They return structured design data — more precise than scraped HTML for tokens and layout, but weaker on real interaction (a static design has no runtime behavior).
Before anyuse_figmawrite call, load thefigma-useskill. For reads below, no write is needed.
get_metadata on the file/frame to get the node tree. Top-level frames/sections become your section-splitting boundaries (the Figma equivalent of HTML section markers).get_variable_defs for colors, typography, spacing, radius. These map directly into project.config.theme in the JSON generator (colors → colorPrimary/colorText/…, type scale → bodyBaseSize/h1BaseSize/…). This is the biggest advantage over web scraping — tokens are explicit, not inferred.get_design_context on each section frame for layout structure, auto-layout direction, text content, and component usage. Auto-layout (horizontal/vertical, wrap, spacing) tells you composition (side-by-side vs stacked vs grid).download_assets (or get_screenshot of leaf image nodes) to get real image/icon URLs. These populate the content manifest's image columns. There is no "video src" to extract like in HTML — flag motion/video intent from frame names or prototype notes instead.get_screenshot of each frame for the approval checkpoint and for verifying the clone preview matches.search_design_system / get_libraries when the file uses a component library, to understand reusable component intent.If the MCP can't reach the file or can't export a specific asset (e.g. a flattened group, an unusual export setting), fall back to a Figma agent plugin export and read its output file. MCP is the primary path; use the plugin only to fill a concrete gap, and note in the manifest which assets came from the fallback.
.guides/brand-guideline.md first. Brand guideline beats the design on visual conflicts.sections.md exists and is current before section matching..figma/<file>-<frame>.json (mirrors the cloning skill's .firecrawl/).get_variable_defs output into a theme token table for project.config.theme.download_assets, not from guessing.app/routes/clone-preview.$page.tsx — React + Tailwind, real assets, brand-adjusted tokens, {/* === BLOCK NAME === */} markers per frame.sections.md using the layout matching priority and deep structural verification defined in cloning-websites-to-weaverse (composition → layout → interaction → content model; then read the candidate section's source to verify aspect ratios, responsive images, split ratios, child types, animation, overlays). Classify as REUSE_EXISTING, ADAPT_EXISTING, or CREATE_NEW_REUSABLE_SECTION.app/styles/app.css; sitewide controls → app/weaverse/schema.server.ts; section-local → section schema. Register new sections in app/weaverse/components.ts.generating-weaverse-project-json.| Aspect | Website (Firecrawl) | Figma (MCP) |
|---|---|---|
| Design tokens | inferred from CSS/computed styles | explicit via get_variable_defs — map directly to theme |
| Section boundaries | HTML section markers, slider/grid classes | top-level frames / auto-layout containers from get_metadata |
| Composition | read from HTML positioning | read from auto-layout direction/wrap/spacing |
| Assets | image/video URLs in HTML | download_assets exports; no real video src |
| Interaction | real runtime behavior in HTML | none at runtime — infer from frame names, prototype links, designer notes; do not invent interactions the design doesn't imply |
| Responsive variants | <picture> / breakpoint classes | separate desktop/mobile frames if the designer made them; otherwise one frame |
get_variable_defs is the cleanest token source you'll ever get. Hardcoding colors/sizes when variables exist throws away the main Figma advantage.download_assets; mark MISSING — [describe] in the manifest when an export fails, don't substitute a placeholder.cloning-websites-to-weaverse. Follow them; don't reinvent a looser version.imageMobile/imageDesktop or breakpoint logic, not separate pages.cloning-websites-to-weaverse — the website input adapter; owns the shared section-matching, manifest, and preview rules this skill reuses.generating-weaverse-project-json — downstream; turns this skill's spec + manifest + token table into import-ready JSON.weaverse-content-api — push or update content into the live project after import.figma-use / figma-generate-design — Figma MCP plugin skills; load figma-use before any use_figma write call.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.