Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
timescale avatar

Design To Code Bridge

  • 2 installs
  • 9 repo stars
  • Updated June 11, 2026
  • timescale/marketing-skills

Converts Figma designs into React/Next.js code using the Tiger Data website's component library, Tailwind patterns, and Atomic Design conventions.

About

Turns a Figma design into implementation-ready React/Next.js code by fetching the Tiger Data website's design tokens, component APIs, and conventions from GitHub as the source of truth. A developer uses it to implement or build a component from a shared Figma URL.

  • Fetches live colors, breakpoints, and component props from the website repo
  • Pairs with website-content-editor for deploying changes

Design To Code Bridge by the numbers

  • 2 all-time installs (skills.sh)
  • Ranked #1,863 of 2,245 Frontend Development skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/timescale/marketing-skills --skill design-to-code-bridge

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs2
repo stars9
Last updatedJune 11, 2026
Repositorytimescale/marketing-skills

What it does

Converts Figma designs into React/Next.js code using the Tiger Data website's component library, Tailwind patterns, and Atomic Design conventions.

Files

SKILL.mdMarkdownGitHub ↗

Design-to-Code Bridge

Convert Figma designs into implementation-ready code using the Tiger Data website's component library, Tailwind CSS patterns, and Atomic Design conventions.

Source of Truth

The Tiger Data website repo is the source of truth for all design tokens, component APIs, and code conventions. Fetch these files from GitHub when you need current values:

ReferenceGitHub URL
Color palettecolors.js
Breakpointsbreakpoints.ts
Tailwind configtailwind.config.ts
Text component propsText types.ts
Button component propsButton types.ts
CTA text and URLsconstants.ts
Project patterns & conventionsREADME.md

Prerequisites

This skill requires the Figma MCP to be connected. Before starting, verify by attempting to call get_design_context — if it fails or the tool isn't available, stop and tell the user:

"This skill needs the Figma MCP server to be connected. Please add it in your Claude settings under MCP Servers, then restart and try again."

Do not proceed without a working Figma MCP connection.

Tiger Den pre-flight check

Read REFERENCES.md from the plugin root and run the pre-flight check described there. Call list_marketing_references() to verify Tiger Den is reachable. If it fails or the tool is not found, STOP — do not continue. Follow the error handling in REFERENCES.md.

Workflow

Step 1: Extract Design Context

When the user provides a Figma URL:

1. Parse the URL to extract fileKey and nodeId

  • URL format: https://figma.com/design/:fileKey/:fileName?node-id=:nodeId
  • Convert node-id format: URL uses 1-2, API uses 1:2

2. Call `get_design_context` with the extracted fileKey and nodeId

  • Set clientFrameworks to "react"
  • Set clientLanguages to "typescript,css"
  • Do NOT set excludeScreenshot: true — the screenshot is essential for verification

3. Review the response:

  • Screenshot: Visual reference of what the design looks like
  • Code: Reference implementation — a starting point, NOT copy-paste output
  • Metadata: Node structure, dimensions, styles

Step 2: Understand the Component Structure

If the design is complex (multiple components, nested layouts):

1. Call `get_metadata` to see the full node tree 2. Call `get_code_connect_map` to check for existing component mappings 3. Call `get_variable_defs` to extract design tokens and map them to Tailwind classes

Step 3: Map Figma to Existing Components

Before writing any new code, check what already exists. Always prefer reusing existing components.

Layout Components
Figma PatternUse This Component
Page-width containerContainer (max-w-1440px, px-4 md:px-10)
Horizontal stack / auto-layout rowFlex direction="row"
Vertical stack / auto-layout columnFlex direction="col"
Grid of cards or itemsGrid cols={{ base: 1, md: 2, lg: 3 }}
Curved divider between sectionsSeparator (from rebrand/atoms/Separator)
Content Components
Figma PatternUse This Component
Any text (heading, body, label)`Text as="h1\
CTA button`Button color="electricYellow\
Tag / label / chip`Badge color="electricYellow\
Card with borderCard (from rebrand/molecules/Card) — rounded, shadow, href
Collapsible sectionAccordion + AccordionItem
Link with trackingLink (from atoms)
Compound Components
Figma PatternUse This Component
FAQ sectionFAQ molecule
Quote / testimonialQuotes organism
HubSpot form embedHubSpotForm organism

Step 4: Generate Implementation Code

Adapt the Figma design to the project's conventions. Do NOT output Figma reference code verbatim.

Typography Mapping
// Figma: 72px bold heading
<Text as="h1" size={{ base: '5xl', lg: '8xl' }} weight="bold">

// Figma: 44px heading
<Text as="h2" size={{ base: '3xl', lg: '6xl' }}>

// Figma: 16px body text
<Text as="p" size="md">

// Figma: monospace / code text
<Text as="span" monoFont>

Text sizes and props: Fetch Text types for available size and weight values.

Fonts:

  • Geist (font-Geist) — primary font for all text
  • Geist Mono (monoFont prop on Text) — code, technical labels, uppercase badges
  • Cygnito Mono (font-Cygnito-Mono) — decorative/brand accents only
Color Mapping

Map Figma colors to Tailwind classes. Never use hardcoded hex values.

Color palette: Fetch colors.js for the full palette with hex values and Tailwind class names. Key color groups: brand (clearPurple, orange, electricYellow, teal, crispBlue), grayscale (black through black-50, white), and semantic (success, error, warning).

If Figma uses a color not in the palette, flag it and suggest the nearest brand color.

Layout Mapping
// Figma auto-layout horizontal, gap 32, centered
<Flex direction="row" gap={8} alignItems="center">

// Figma auto-layout vertical, gap 16
<Flex direction="col" gap={4}>

// Figma grid, 3 columns, gap 32
<Grid cols={{ base: 1, md: 2, lg: 3 }} gap={8}>

// Always wrap page content in Container
<Container>
  {/* page content */}
</Container>

Always use responsive prop objects — never manual breakpoint classes:

// RIGHT
<Flex direction={{ base: 'col', lg: 'row' }} gap={{ base: 4, md: 8 }}>
<Text size={{ base: '3xl', lg: '5xl' }}>
<Grid cols={{ base: 1, md: 2, lg: 3 }}>

// WRONG
className="flex-col lg:flex-row gap-4 md:gap-8"

Breakpoints: Fetch breakpoints.ts for the full breakpoint definitions.

Spacing and extended config: Fetch tailwind.config.ts for custom spacing, animations, and other extended tokens.

Page Section Structure
<div className="pt-8 lg:pt-20">
  <Container>{/* Main content */}</Container>
  <Separator
    bottomBgColor="black-200"
    bottomBgTexture
    className="hidden md:block"
  />
  <div className="py-20 bg-texture-black-200">
    <Container>{/* Secondary content */}</Container>
  </div>
  <Separator
    topBgColor="black-200"
    topBgTexture
    bottomBgColor="black"
    bottomBgTexture
  />
</div>
Button Patterns

Button props: Fetch Button types for available color, icon, and other props.

// Primary CTA
<Button href="/signup" color="electricYellow">Start a free trial</Button>

// Secondary CTA
<Button href="/contact" color="white">Contact sales</Button>

// With icon
<Button href="/docs" color="black" icon={<ArrowRight />} iconPosition="end">
  Read docs
</Button>

CTA text and URLs: Fetch constants.ts for shared CTA labels (CONSOLE_CTA_TEXT, CONTACT_CTA_TEXT) and URLs (WEBSITE_URL, CONSOLE_URL, DOCS_URL, etc.).

Step 5: Component Placement

TypeLocation
Primitive (button, input, badge)src/components/atoms/ComponentName/index.tsx — rarely needed, check first
Composition of atomssrc/components/molecules/ComponentName/index.tsx
Complex sectionsrc/components/organisms/ComponentName/index.tsx
Page-specific onlyapp/.../[slug]/_components/ComponentName/index.tsx

Component file structure:

ComponentName/
├── index.tsx           # Main component (named export)
├── types.ts            # TypeScript interfaces
└── index.stories.tsx   # Storybook story (optional)

Conventions:

  • Named exports: export const ComponentName = () => {}
  • Server Components by default — only add 'use client' for state/effects/event handlers
  • Use twMerge for class composition, cva for variant-heavy components
  • Accept className prop for external customization
  • Polymorphic as prop for semantic HTML flexibility
  • Direct imports: import { Text } from '@/src/components/atoms/Text'

Step 6: Verify Implementation

## Verification
- [ ] Uses existing components (Text, Flex, Grid, Container, Button, etc.)
- [ ] Colors use Tailwind tokens (no hardcoded hex)
- [ ] Typography uses Text component with correct size/weight props
- [ ] Layout uses responsive prop objects (not manual breakpoint classes)
- [ ] Spacing follows Tailwind scale
- [ ] Server Component by default (no unnecessary 'use client')
- [ ] Semantic HTML (correct heading levels, landmarks)
- [ ] Images use next/image with alt text
- [ ] No inline styles (except dynamic values)
- [ ] No Figma artifacts in output (layer names, auto-layout metadata)

Step 7: Deployment Path (Optional)

If the user wants to deploy to the Tiger Data website:

1. website-content-editor can make the content change, open a PR, and provide a Vercel preview link 2. Claude Code can directly write files, run the dev server, and commit/push

Interaction with Other Skills

  • website-content-editor: Use for deploying generated code to the Tiger Data website
  • creative-brief-generator: May provide the design brief that led to the Figma design
  • pre-publish-quality-gate: Run after deployment to verify the published result

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.