figma-designer — скилл для Claude Code: спецификации из макетов Figma
Разбирает макет Figma на токены, спецификации компонентов и состояния взаимодействия, чтобы передать их в планирование или разработку.
npx skills add zhaono1/agent-playbook --skill figma-designer -a claude-codeЧто делает figma-designer
Скилл подключается, когда вы даёте ссылку на файл Figma, присылаете скриншот с упоминанием Figma или просите разобрать дизайн и вытащить спецификации. Дальше он вытягивает ключ файла из URL, читает метаданные и узлы через доступный инструмент Figma, разбирает фреймы, компоненты и текстовые слои.
На выходе — инвентарь токенов (цвета, типографика, отступы, радиусы, тени), иерархия компонентов с пропсами и раскладкой, а также таблицы состояний и поведения при изменении ширины. Оформляется это либо в документ docs/{feature}-design-spec.md, либо в набор доказательств для prd-planner: намерение экрана, токены, состояния компонентов, наблюдения по доступности и открытые вопросы. Придумывать бизнес-требования из картинки скилл не станет — это оставлено prd-planner.
Перед запуском нужен Figma MCP-сервер или плагин в вашей среде. Имена инструментов у разных хостов и версий плагинов отличаются, поэтому скилл ищет доступные инструменты в текущей сессии, а не полагается на фиксированные названия. Нет MCP-сервера — разбирать макет нечем.
Какие задачи решает
- вытащить цвета, шрифты и отступы из макета в структурированный список
- описать пропсы и состояния кнопки, поля или карточки для разработчика
- зафиксировать, как элементы ведут себя при сужении экрана
- собрать доказательную базу по дизайну перед написанием PRD
- найти нерешённые вопросы по макету до начала вёрстки
Примеры запросов агенту
- Разбери макет https://www.figma.com/file/... и выпиши все дизайн-токены
- Сделай спецификацию компонента Primary Button со всеми состояниями
- Собери доказательства по этому экрану для
prd-planner
Как установить figma-designer
1Через Skills CLI (Vercel)
npx skills add zhaono1/agent-playbook --skill figma-designer -a claude-code2Вручную: положить файлы
~/.claude/skills/figma-designer/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/figma-designer/
1Через Skills CLI (Vercel)
npx skills add zhaono1/agent-playbook --skill figma-designer -a codex2Вручную: положить файлы
.agents/skills/figma-designer/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add zhaono1/agent-playbook --skill figma-designer -a cursor2Вручную: положить файлы
.cursor/skills/figma-designer/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install zhaono1/agent-playbook figma-designer2Вручную: положить файлы
.github/skills/figma-designer/SKILL.md1Через Skills CLI (Vercel)
npx skills add zhaono1/agent-playbook --skill figma-designer -a gemini-cli2Командой платформы
gemini skills install https://github.com/zhaono1/agent-playbook --path skills/figma-designerВручную: положить файлы
.devin/skills/figma-designer/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add zhaono1/agent-playbook --skill figma-designer -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о figma-designer
Как установить figma-designer в Claude Code?
Выполните npx skills add zhaono1/agent-playbook --skill figma-designer -a claude-code. Файл скилла окажется по пути ~/.claude/skills/figma-designer/SKILL.md.
Что делает figma-designer?
Читает файл Figma через MCP-сервер и превращает его в токены, спецификации компонентов и таблицы состояний. Результат идёт в разработку или в prd-planner.
Что нужно, чтобы скилл заработал?
Figma MCP-сервер или плагин в вашей среде с доступом к метаданным файла, узлам и информации о компонентах и стилях. Названия инструментов зависят от хоста и версии плагина.
Исходный текст
SKILL.md · MIT
---
name: figma-designer
description: Analyzes Figma designs into implementation-ready visual evidence, tokens, component specifications, and interaction states for handoff to planning or development.
allowed-tools: Read, Write, Edit, Bash, Grep, Glob, WebFetch, WebSearch, AskUserQuestion
metadata:
hooks:
after_complete:
- trigger: prd-planner
mode: ask_first
condition: product_requirements_requested
reason: "Turn design evidence into product and technical requirements"
- trigger: self-improving-agent
mode: background
reason: "Learn design patterns for future reference"
- trigger: session-logger
mode: auto
reason: "Save design analysis session"
---
# Figma Designer
> "Transform Figma designs into implementation-ready specifications with pixel-perfect accuracy"
## Overview
This skill analyzes Figma designs through the available Figma integration and
produces design evidence. `prd-planner` owns product requirements and technical
PRD methodology; this skill supplies visual facts and unresolved design gaps.
## Prerequisites
### Figma MCP Server
Ensure the host exposes a Figma MCP server or plugin before using this skill.
Tool names vary by host and plugin version, so inspect the available Figma tools
in the current session instead of assuming fixed names. The required capability
set is:
- Read file or page metadata
- Read selected nodes or node details
- Read component and style information when available
## When This Skill Activates
Activates when you:
- Provide a Figma link (`https://www.figma.com/file/...`)
- Upload a design screenshot and mention "Figma"
- Say "analyze this design" or "extract design specs"
- Ask to "create PRD from Figma"
## Design Analysis Workflow
### Phase 1: Fetch Design Data
```yaml
Input: Figma URL or File Key
↓
Extract File Key from URL
↓
Call the available Figma metadata tool
↓
Call the available Figma node/detail tool
↓
Parse frame, component, and text nodes
```
### Phase 2: Extract Design Tokens
Create a comprehensive design token inventory:
```typescript
// Design Token Structure
interface DesignTokens {
colors: {
primary: string[];
secondary: string[];
neutral: string[];
semantic: {
success: string;
warning: string;
error: string;
info: string;
};
};
typography: {
fontFamilies: Record<string, string>;
fontSizes: Record<string, number>;
fontWeights: Record<string, number>;
lineHeights: Record<string, number>;
letterSpacing: Record<string, number>;
};
spacing: {
scale: number; // 4, 8, 12, 16, etc.
values: Record<string, number>;
};
borders: {
radii: Record<string, number>;
widths: Record<string, number>;
};
shadows: Array<{
name: string;
values: string[];
}>;
}
```
### Phase 3: Analyze Component Hierarchy
```
File
├── Frames (Pages/Screens)
│ ├── Component Instances
│ │ ├── Primary Button
│ │ ├── Input Field
│ │ └── Card
│ └── Text Layers
│ ├── Headings
│ ├── Body
│ └── Labels
```
For each component, extract:
- **Props**: Size, variant, state
- **Layout**: Flex direction, alignment, gap, padding
- **Styles**: Fill, stroke, effects
- **Content**: Text content, icons, images
- **Constraints**: Responsive behavior
### Phase 4: Generate Visual Specifications
Use this template for each screen:
```markdown
## Screen: [Screen Name]
### Layout Structure
```
┌─────────────────────────────────────────┐
│ [Header/Nav] │
├─────────────────────────────────────────┤
│ │
│ [Main Content] │
│ ┌───────────┐ ┌───────────┐ │
│ │ Card 1 │ │ Card 2 │ │
│ └───────────┘ └───────────┘ │
│ │
├─────────────────────────────────────────┤
│ [Footer] │
└─────────────────────────────────────────┘
```
### Design Specifications
#### Colors
| Token | Value | Usage |
|-------|-------|-------|
| Primary | `#007AFF` | Primary buttons, links |
| Background | `#FFFFFF` | Screen background |
| Surface | `#F5F5F7` | Cards, sections |
| Text Primary | `#1C1C1E` | Headings, body |
| Text Secondary | `#8E8E93` | Captions, labels |
#### Typography
| Style | Font | Size | Weight | Line Height | Letter Spacing |
|-------|------|------|--------|------------|---------------|
| Display Large | SF Pro Display | 28px | Bold (700) | 34px | -0.5px |
| Heading 1 | SF Pro Display | 24px | Bold (700) | 32px | -0.3px |
| Heading 2 | SF Pro Display | 20px | Semibold (600) | 28px | -0.2px |
| Body Large | SF Pro Text | 17px | Regular (400) | 24px | -0.4px |
| Body | SF Pro Text | 15px | Regular (400) | 22px | -0.3px |
| Caption | SF Pro Text | 13px | Regular (400) | 18px | -0.1px |
#### Spacing
| Token | Value | Usage |
|-------|-------|-------|
| xs | 4px | Icon padding |
| sm | 8px | Tight spacing |
| md | 12px | Card padding |
| lg | 16px | Section spacing |
| xl | 24px | Large gaps |
| 2xl | 32px | Page margins |
#### Component: Primary Button
```typescript
interface PrimaryButtonProps {
size?: 'small' | 'medium' | 'large';
variant?: 'primary' | 'secondary' | 'tertiary';
disabled?: boolean;
}
// Sizes
size.small = {
height: 32px,
paddingHorizontal: 12px,
fontSize: 15,
iconSize: 16,
}
size.medium = {
height: 40px,
paddingHorizontal: 16px,
fontSize: 15,
iconSize: 20,
}
size.large = {
height: 48px,
paddingHorizontal: 24px,
fontSize: 17,
iconSize: 24,
}
// Variants
variant.primary = {
backgroundColor: '#007AFF',
color: '#FFFFFF',
}
variant.secondary = {
backgroundColor: '#F5F5F7',
color: '#007AFF',
}
variant.tertiary = {
backgroundColor: 'transparent',
color: '#007AFF',
}
```
#### Constraints & Responsive Behavior
| Element | Constraints | Responsive Behavior |
|---------|-------------|---------------------|
| Header | Left, Right, Top | Sticky on scroll |
| Sidebar | Left, Top, Bottom | Collapses to drawer on mobile |
| Content | Left, Right (16px) | Full width on mobile |
### Interaction States
| Element | Default | Hover | Pressed | Disabled |
|---------|---------|-------|--------|----------|
| Primary Button | opacity: 1 | opacity: 0.8 | opacity: 0.6 | opacity: 0.4 |
| Icon Button | opacity: 1 | background: rgba(0,0,0,0.05) | background: rgba(0,0,0,0.1) | opacity: 0.3 |
| Card | shadow: sm | shadow: md | - | opacity: 0.6 |
```
## Output Formats
### Option 1: Visual Spec Document (Default)
Generates a design specification document:
```
docs/{feature}-design-spec.md
```
### Option 2: PRD Evidence Pack
Provide screen intent, design tokens, component states, responsive rules,
accessibility observations, and open product questions as inputs to
`prd-planner`. Do not invent business requirements from visual design alone.
## Quick Reference: Design Token Categories
### Always Extract These
| Category | What to Extract | Why |
|----------|----------------|-----|
| **Colors** | Hex/RGBA values | Theme consistency |
| **Typography** | Font family, size, weight, spacing | Text hierarchy |
| **Spacing** | Padding, margin, gap values | Layout alignment |
| **Borders** | Radius, width values | Shape consistency |
| **Shadows** | Offset, blur, spread, color | Depth perception |
| **Icons** | Name, size, color | Visual consistency |
| **Images** | URL, dimensions, fit mode | Asset management |
## Design Review Checklist
Before generating design evidence, verify:
- [ ] All screens are accounted for
- [ ] Design tokens are extracted
- [ ] Component variants are documented
- [ ] Responsive behavior is specified
- [ ] Interaction states are defined
- [ ] Accessibility (WCAG) is considered
- [ ] Color contrast ratio ≥ 4.5:1
- [ ] Touch targets ≥ 44x44px
- [ ] Focus indicators visible
## Frame Analysis Template
For each frame/screen in the Figma file:
```markdown
## Frame: {Frame Name}
### Purpose
{What this screen does}
### Elements
| Element | Type | Styles | Props |
|---------|------|--------|-------|
| {Name} | {Component/Text/Vector} | {css} | {props} |
| {Name} | {Component/Text/Vector} | {css} | {props} |
### Layout
- Container: {width, height, fill}
- Position: {absolute/relative}
- Constraints: {left, right, top, bottom}
- Auto Layout: {direction, spacing, padding, alignment}
### Content Hierarchy
1. {Primary element}
2. {Secondary element}
3. {Tertiary element}
### Notes
{Any special considerations}
```
## Integration with Other Skills
### Typical Workflow
```
Figma URL → figma-designer → Visual Specs
↓
prd-planner → PRD
↓
implementation → Code
↓
code-reviewer → Quality Check
```
### Handoff to Development
After generating specifications:
```markdown
## Developer Handoff
### Design Files
- Figma: {url}
- Design Spec: {link}
### Design Tokens
- Generated: `tokens.ts`
- Color palette: `colors.ts`
- Typography: `typography.ts`
### Component Library
- Storybook: {url}
- Component docs: {link}
### Assets
- Icons: {folder}
- Images: {folder}
- Exports: {format}
```
## Best Practices
### DO
✅ Extract exact pixel values for critical dimensions
✅ Document component variants and states
✅ Include responsive breakpoints
✅ Note any platform differences (iOS vs Android)
✅ Include accessibility considerations
✅ Export design tokens as constants
### DON'T
❌ Round spacing values (use exact 4px/8px/12px)
❌ Ignore hover/focus states
❌ Skip constraint behavior
❌ Forget about empty states
❌ Omit loading states
❌ Assume platform defaults without verification
## Examples and Platform Notes
See `references/example-output.md` for a full sample output and platform-specific considerations.
© zhaono1 · MIT · zhaono1/agent-playbook