skills/figma-implement-design/SKILL.md
Use when translating Figma designs into production code with pixel-perfect visual parity, implementing specific Figma frames or components from a URL, or validating implemented UI against Figma screenshots. Also use when the user provides a Figma URL with a node ID and asks to build or implement it. NEVER use for designing in Figma, modifying Figma files, general UI development without a Figma source, or Figma MCP setup troubleshooting (use figma skill).
npx skillsauth add sharkitect-solutions/sharkitect-claude-toolkit figma-implement-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Translates Figma nodes into production code with 1:1 visual fidelity. Focuses on the code translation and validation -- for MCP tool usage, token mapping, and asset handling patterns, see the figma skill.
| File | Purpose | When to Load | |---|---|---| | SKILL.md | Implementation procedure, framework translation basics, responsive adaptation, visual parity validation | Always (auto-loaded) | | framework-translation-patterns.md | Detailed React-to-Vue/Svelte/Angular/vanilla conversion tables, CSS system translation (Tailwind to CSS Modules/Sass/styled-components), component library mapping (shadcn, MUI, Vuetify, Angular Material) | Load when the target project uses ANY framework other than React + Tailwind. Also load when the project uses a component library that needs mapping from MCP primitives. Do NOT load for React + Tailwind projects unless a component library mapping is needed. | | responsive-implementation-gotchas.md | Figma auto-layout to CSS flexbox gaps, breakpoint mapping from Figma frame widths, typography responsiveness, image asset responsiveness, grid system translation, common responsive failures | Load when converting fixed-width Figma frames to responsive layouts. Also load when debugging layout breakage at specific viewport widths or handling mobile/tablet adaptation. Do NOT load for desktop-only implementations or simple single-component translations. | | design-token-extraction.md | Figma variables to code tokens via get_variable_defs, token naming translation, light/dark theme implementation, dark mode gotchas, token file formats by stack, contrast verification | Load when extracting design tokens from Figma, implementing theme switching, or mapping Figma variables to a project's existing token system. Do NOT load for one-off color or spacing lookups (use SKILL.md Framework Translation Table). |
| This Skill (figma-implement-design) | The figma Skill |
|---|---|
| Code translation: Figma output to project-stack code | MCP tool workflow: which tools to call, in what order |
| Visual parity validation against screenshots | Token mapping: get_variable_defs and project token alignment |
| Framework adaptation (React/Vue/Angular/plain HTML) | Asset handling: localhost sources, icon packages, Code Connect |
| Responsive behavior and accessibility compliance | MCP troubleshooting: connection issues, OAuth, truncation |
When both apply: Start with figma skill to fetch design context and assets via MCP, then switch to this skill for the code translation and validation steps.
fileKey (segment after /design/) and nodeId (value of node-id param, convert - to :). For branch URLs, use branchKey as fileKey.get_design_context(fileKey, nodeId). If response is truncated, call get_metadata first to map the layer tree, then re-fetch specific child nodes.get_screenshot(fileKey, nodeId). Keep this visible throughout implementation as the visual source of truth.The MCP returns React + Tailwind by default. Adapt every output to the project's actual stack.
| MCP Output | Translation Rule |
|---|---|
| Tailwind utility classes | Replace with project's CSS system (CSS modules, styled-components, design tokens, Sass, plain CSS) |
| Inline hex/rgb color values | Map to project color tokens; verify via get_variable_defs output |
| Generated <button>, <input>, <div> primitives | Replace with project's component library equivalents (shadcn/ui, MUI, Vuetify, custom) |
| Hardcoded px spacing values | Map to project spacing scale tokens where a match exists within 2px |
| React JSX | Convert to project framework: Vue SFC, Angular template, Svelte, plain HTML |
| Inline event handlers | Conform to project's state management and event handling patterns |
| Absolute positioning from Figma | Convert to flex/grid layout; Figma absolute positioning does not produce responsive code |
Figma frames are fixed-width snapshots. The project's responsive system must be applied manually.
| Figma Signal | Responsive Implementation |
|---|---|
| Auto Layout (horizontal) | display: flex; flex-direction: row with flex-wrap at breakpoints |
| Auto Layout (vertical) | display: flex; flex-direction: column; stack order may change at breakpoints |
| Fixed-width frame (e.g., 1440px) | Max-width container with fluid behavior below the frame width |
| Absolute-positioned layer | Convert to relative positioning within a flex/grid parent |
| Multiple Figma frames at different widths | Map each to the project's closest breakpoint; implement responsive transitions between them |
Rule: If the Figma file only shows one frame width, implement it as the desktop view and apply the project's existing responsive patterns for tablet and mobile. If no responsive patterns exist, ask the user.
| Error | Cause | Prevention |
|---|---|---|
| Colors don't match despite using token names | Figma variable names rarely match project token names | Always run get_variable_defs and manually map variable names before writing styles |
| Generated code includes hidden layers | get_design_context returns all layers including hidden ones | Review the MCP output for invisible/hidden layers and exclude them from code |
| Component is too deeply nested | Figma component nesting creates deeply nested markup | Flatten by replacing nested primitives with existing project components from get_code_connect_map |
| Implementing the wrong variant | URL points to a component set (parent) not a specific variant | Verify the node ID points to the exact variant, not the component set |
| Spacing is inconsistent at different viewports | Figma uses fixed spacing; CSS needs responsive spacing | Use relative units (rem, %) or spacing tokens that scale, not hardcoded px values |
| Icons render as broken images | Used CDN or icon package instead of MCP-provided assets | Always use localhost asset URLs from MCP payload; never substitute external sources |
Compare the implemented UI against the Figma screenshot before marking complete:
| Rationalization | Why It Fails |
|---|---|
| "The MCP output looks like working code, I'll use it directly" | MCP output is React + Tailwind regardless of project stack; using it directly creates framework inconsistency and ignores existing components |
| "Close enough is fine for spacing" | 4px spacing discrepancies compound across a layout; users perceive misalignment subconsciously even if they can't articulate it |
| "I'll skip the screenshot comparison" | Code that compiles correctly can still look visually wrong; the screenshot is the source of truth, not the design context JSON |
| "Absolute positioning from Figma is fine" | Figma auto-layout translates to flex/grid, but manually positioned Figma layers produce fixed-position CSS that breaks on any viewport other than the original frame width |
| "I'll handle responsive later" | Without responsive consideration during initial translation, the layout structure often needs rearchitecting; build responsiveness into the first implementation |
| "The project doesn't have a component for this, so I'll create one from scratch" | Check get_code_connect_map first; creating duplicates of existing components causes divergence and maintenance debt |
get_design_context and get_screenshotget_code_connect_map returns a matching existing componentget_screenshot outputdevelopment
When the user wants help with paid advertising campaigns on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X, or other ad platforms. Also use when the user mentions 'PPC,' 'paid media,' 'ad copy,' 'ad creative,' 'ROAS,' 'CPA,' 'ad campaign,' 'retargeting,' or 'audience targeting.' This skill covers campaign strategy, ad creation, audience targeting, and optimization.
testing
--- name: using-sharkitect-methodology description: Use when starting any conversation in a Sharkitect workspace OR before any task involving NEW pricing, positioning, proposal, strategy, plan-execution, or schema-design work — mandates invocation of Sharkitect-specific methodology skills (pricing-strategy, marketing-strategy-pmm, smb-cfo, hq-revenue-ops, executing-plans, brainstorming) under the same anti-rationalization discipline as using-superpowers. Documentation has failed 4 times across H
testing
Use when user says 'end session', 'wrap up', 'stop for the day', 'done for today', 'close out', 'save session', 'wrapping up', or invokes /end-session. Runs the full 9-step end-of-session protocol: resource audit, MEMORY.md update, lessons capture, plan status, pending items, workspace checklist, .tmp/ audit, git commit+push, Supabase brain sync, session brief, summary. Final step schedules a detached self-kill of the current session ONLY (3s delay) so the window closes cleanly. Other claude.exe processes (active workspaces) are NOT touched -- orphan cleanup is handled separately by Claude-Orphan-Cleanup-Hourly with proper age safeguards. Do NOT use for: mid-session quick saves (use session-checkpoint), skill syncing (use sync-skills.py), brain memory queries (use supabase-sync.py pull), document freshness reviews (use document-lifecycle), resource gap detection (use resource-auditor).
testing
Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, passive voice, negative parallelisms, and filler phrases.