skills/crearize/figma-to-tailwind/SKILL.md
Figma MCPで取得したデザイン変数をTailwind CSS標準クラスに変換する。Figma MCPのコード生成後やデザイン実装時に自動起動。
npx skillsauth add aiskillstore/marketplace figma-to-tailwindInstall 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.
このスキルは、Figma MCPで取得したデザイン変数(Variables)を、Tailwind CSS標準クラスに自動変換するためのガイドです。
以下の状況で、このスキルを自動的に適用してください:
Figma MCPでデザインを取得した後
mcp__figma-mcp__get_design_contextやmcp__figma-mcp__get_variable_defsを実行した直後var(--spacing-*)やvar(--width-*)などの変数が含まれている場合デザイン実装中
コードレビュー時
px-[var(--spacing-4)]のようなFigma変数の直接使用を発見した場合style={{ fontSize: 'var(--h4-font-size)' }}のような記述を発見した場合frontend/lib/figma-tailwind-map.tsを参照して、Figma変数がTailwind標準クラスに変換可能か確認します。
import {
spacingMap,
widthMap,
heightMap,
borderRadiusMap,
typographyMap,
figmaVarToTailwindClass,
isStandardTailwindClass
} from '@/lib/figma-tailwind-map'
// ❌ Figma MCPが生成したコード
<div className="px-[var(--spacing-4,16px)] py-[var(--spacing-2,8px)] gap-[var(--spacing-3,12px)]">
// ✅ Tailwind標準クラスに変換
<div className="px-4 py-2 gap-3">
変換マッピング:
spacing/1 → 1 (4px)spacing/2 → 2 (8px)spacing/3 → 3 (12px)spacing/4 → 4 (16px)spacing/1-5 → 1.5 (6px) ※カスタムspacing/2-5 → 2.5 (10px) ※カスタム// ❌ Figma MCPが生成したコード
<div className="w-[var(--width-w-4,16px)] h-[var(--height-h-5,20px)]">
// ✅ Tailwind標準クラスに変換
<div className="w-4 h-5">
// ❌ Figma MCPが生成したコード
<div className="rounded-[var(--border-radius-rounded-md,8px)]">
// ✅ Tailwind標準クラスに変換
<div className="rounded-md">
// ❌ Figma MCPが生成したコード(インラインスタイル)
<h1 style={{
fontFamily: 'var(--h4-font-family)',
fontSize: 'var(--h4-font-size)',
fontWeight: 'var(--h4-font-weight)',
lineHeight: 'var(--h4-line-height)',
}}>
// ✅ Tailwind標準クラスに変換
<h1 className="text-h4">
// または Tailwind標準で代用可能な場合
<p className="text-sm"> // body2と同等 (14px/20px)
<p className="text-base"> // body1と同等 (16px/24px)
実装済みのカスタムクラス:(tailwind.config.tsで定義済み)
text-h4: 24px/32px/boldtext-h5: 20px/28px/boldtext-title: 18px/28px/boldtext-body1: 16px/24px/normaltext-body2: 14px/20px/normaltext-body3: 12px/16px/normal注意: 新規デザイン変換時は必ずFigma MCPのHEX/px値を確認し、既存クラスと比較すること。名前の類似性だけで判断しない。
カラーはFigma MCPから届くHEX値を確認して、適切に変換します。
// ❌ Figma独自変数の直接使用は禁止
<div className="bg-[var(--base-primary)]">
<div className="text-[var(--base-foreground)]">
// ✅ 正しい実装
// 1. まずFigmaのHEX値と既存のshadcn/ui変数を比較
// --base-primary: #00a0e9 = --primary: #00a0e9 → 同じ色!
<div className="bg-primary text-primary-foreground">
// 2. shadcn/uiにない独自色の場合はtailwind.config.tsに追加
// --base-dark-primary: #006cab → shadcn/uiにない
// → tailwind.config.tsに 'dark-primary': '#006cab' を追加
<div className="text-dark-primary">
重要な原則:
bg-primary)マッピングにない値を発見した場合:
tailwind.config.tsに追加
theme: {
extend: {
spacing: {
'13': '52px', // 新しいカスタム値
}
}
}
figma-tailwind-map.tsに追加
export const spacingMap: Record<string, number | string> = {
// ... 既存のマッピング
'spacing/13': 13, // 新しいマッピング
}
実装で使用
<div className="px-13">
// 禁止
<div className="px-[var(--spacing-4)]">
<div className="gap-[var(--spacing-2,8px)]">
<div style={{ width: 'var(--width-w-4)' }}>
/* globals.cssに以下を追加するのは禁止 */
.w-spacing-2 {
width: var(--spacing-2);
}
.header-base {
height: var(--height-h-16);
}
// 特別な理由がない限り禁止
<div style={{
fontSize: 'var(--h4-font-size)',
padding: 'var(--spacing-4)'
}}>
export default function Main() {
return (
<div className="bg-[var(--base/background-gray,#f6f8f9)] border-[var(--base/border,#edeef1)] border-b-0 border-l-[var(--border-width/border,1px)]">
<div className="bg-[var(--base/background,#ffffff)] h-[64px] px-[var(--spacing/4,16px)] py-0">
<div className="gap-[var(--spacing/2,8px)]">
<div className="rounded-[var(--border-radius/rounded-md,8px)] size-[28px]">
<Icon className="size-[16px]" />
</div>
<div className="gap-[var(--spacing/3,12px)]">
<div style={{
fontFamily: 'var(--h5-font-family)',
fontSize: 'var(--h5-font-size)',
fontWeight: 'var(--h5-font-weight)',
lineHeight: 'var(--h5-line-height)',
}}>
サポート
</div>
</div>
</div>
</div>
</div>
)
}
export default function Main() {
return (
<div className="bg-muted border border-l border-b-0">
<div className="bg-background h-16 px-4 py-0">
<div className="gap-2">
<div className="rounded-md size-7">
<Icon className="size-4" />
</div>
<div className="gap-3">
<div className="text-h5">
サポート
</div>
</div>
</div>
</div>
</div>
)
}
変換時に以下を確認してください:
var(--spacing-*)をpx-*, py-*, gap-*等に変換var(--width-*)をw-*に変換var(--height-*)をh-*に変換var(--border-radius-*)をrounded-*に変換text-*クラスに変換tailwind.config.tsに追加frontend/lib/figma-tailwind-map.tsfrontend/tailwind.config.tsdocuments/development/coding-rules/frontend-rules.md セクション12figma-tailwind-map.tsを参照してくださいdevelopment
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.