Help us improve
Share bugs, ideas, or general feedback.
From figma-to-flutter
Implements Flutter screens or widgets from Figma URLs with pixel-perfect accuracy, extracting exact values via Figma MCP for 1:1 code translation. Requires Flutter project.
npx claudepluginhub kzytateishi/spikeee-plugins-marketplace --plugin figma-to-flutterHow this skill is triggered — by the user, by Claude, or both
Slash command
/figma-to-flutter:figma-to-flutterThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Implement the Flutter screen or widget from `$ARGUMENTS`.
Provides Flutter patterns for widget architecture, state management, Impeller renderer, and platform-adaptive design, avoiding common mistakes.
Provides expert Flutter/Dart patterns for cross-platform mobile apps including feature-first project structure, const widget best practices, and Riverpod/Bloc state management.
Guides expert Flutter 3.x and Dart 3.x development for multi-platform apps, including advanced widgets, state management with Riverpod/Bloc/GetX, performance optimization, and architecture patterns.
Share bugs, ideas, or general feedback.
Implement the Flutter screen or widget from $ARGUMENTS.
Every value, every color, every font weight — extracted from Figma, not guessed. This skill's entire purpose is eliminating the gap between design and implementation.
Before touching any code:
node-id=1-2 to 1:2. Confirm the target variant/state.This is the critical phase. All implementation decisions flow from data collected here.
get_design_context — structure, dimensions, styles, spacing, typography, colorsget_screenshot — visual ground truthget_metadata — when context is truncated or insufficient, drill into child nodesget_variable_defs — when design tokens or variables are referencedget_code_connect_map — when existing component mappings existFollow refs/design-spec-extraction.md. Every section gets a written spec with exact values. This spec becomes the contract — code must match it exactly.
Section: ProfileHeader (node-id: 42:891)
Layout: Column, padding: EdgeInsets.fromLTRB(16, 24, 16, 20), gap: 12
Title: fontSize: 18, fontWeight: w600, height: 1.33, letterSpacing: -0.27, color: 0xFF1A1A1A
Subtitle: fontSize: 14, fontWeight: w400, height: 1.43, color: 0xFF6B7280
Background: 0xFFF9FAFB, borderRadius: 12
If a value is missing or unclear — re-fetch from Figma MCP. Never fill in a gap with a guess.
Work section by section. Never implement the full screen at once.
For each section:
Layout:
Auto Layout horizontal → Row · vertical → Column · Fixed frame → SizedBox · Padding → EdgeInsets.fromLTRB with exact LTRB · Gap → SizedBox(height: N) or SizedBox(width: N) · Wrap → Wrap(spacing: N, runSpacing: N)
Color:
#RRGGBB → Color(0xFFRRGGBB) · with opacity → compute exact alpha byte · Project color constant → use only when it matches exactly
Typography: fontSize, fontWeight, height (= lineHeight / fontSize), letterSpacing — all from Figma. Project TextStyle → use only when every property matches. If you'd override more than one property, don't use the theme style.
Decoration: borderRadius exact values · BoxShadow with exact offset, blur, spread, color · Gradient with exact stops and colors
Assets: Download from Figma, verify format, register in pubspec.yaml. Never reference Figma temporary URLs. Use project's existing image/icon patterns.
Text content: Character-for-character match. Full-width/half-width, punctuation, spaces, line breaks — all exact.
Run flutter analyze and dart format --set-exit-if-changed . to verify zero errors and consistent formatting.
Use mcp__gemini__gemini-analyze-code to verify the implementation. Pass the recorded spec from Phase 2 alongside the code and ask Gemini to use extended thinking:
Review prompt:
Compare the following Figma design spec against the Flutter implementation code. Use extended thinking to thoroughly verify every numerical value (colors, font sizes, font weights, line heights, letter spacing, padding, gap, border radius, shadow values) matches exactly. Flag any value that differs, any value that appears to be guessed or approximated, and any Figma structure that was incorrectly simplified. Also check that the code follows Flutter/Dart best practices and project conventions.
Fix every discrepancy found.
Use mcp__gemini__gemini-analyze-code for a second pass focused on code quality:
Review this Flutter code for: widget tree efficiency, unnecessary rebuilds, proper const usage, correct widget lifecycle, accessibility basics (semantics labels on interactive elements), and adherence to the project's existing patterns. Use extended thinking.
flutter analyze reports zero errors