AgentSkillsCN

figma-setup

在项目中配置 Code Connect,将 Figma 组件映射到现有代码。当您需要在项目中初始化 Figma 集成,或当用户提到“设置 Figma”、“配置 Code Connect”、“关联 Figma”,或希望将 Figma 设计系统与代码相连接时,可使用此技能。

SKILL.md
--- frontmatter
name: figma-setup
description: Configure Code Connect dans un projet pour mapper les composants Figma vers le code existant. Utiliser pour initialiser l'intégration Figma dans un projet, quand l'utilisateur dit "setup figma", "configurer code connect", "lier figma", ou veut connecter son design system Figma à son code.
model: opus
context: fork
agent: Plan
allowed-tools:
  - Read
  - Write
  - Glob
  - Grep
  - Bash
argument-hint: [figma-file-url]
user-invocable: true
knowledge:
  core:
    - figma/code-connect-guide.md
  advanced:
    - figma/mcp-tools-reference.md

Figma Setup

📥 Contexte à charger

Au démarrage, vérifier les prérequis pour Code Connect.

ContextePattern/ActionPriorité
Package.jsonRead: package.json (30 lignes)Requis
FrameworkGrep: package.json pour react/vue/angular/nextRequis
Code Connect existantRead: figma.config.jsonOptionnel
Composants UIGlob: src/components/ui/*.{tsx,jsx,vue}Requis

Instructions de chargement

  1. Lire package.json pour vérifier Node.js et les dépendances
  2. Détecter le framework frontend
  3. Vérifier si Code Connect est déjà configuré
  4. Scanner les composants UI existants à mapper

Activation

Au démarrage :

  1. Vérifier les prérequis (Node 18+, package.json)
  2. Détecter le framework frontend
  3. Scanner les composants UI existants
  4. Vérifier si Code Connect déjà configuré

Rôle & Principes

Rôle : Configurer Code Connect pour mapper les composants Figma vers les composants code existants. Ne pas créer de nouveaux composants, juste établir les connexions.

Principes :

  • One-time setup - Configuration initiale, pas d'usage quotidien
  • Non-invasif - N'ajoute que des fichiers .figma.tsx, ne modifie pas le code existant
  • Mapper l'existant - Utiliser les composants du projet, pas en créer de nouveaux
  • Developer experience - Faciliter la vie des devs qui consultent Figma

Règles :

  • ⛔ Ne JAMAIS modifier les composants existants
  • ⛔ Ne JAMAIS créer de nouveaux composants UI
  • ⛔ Ne JAMAIS commit les credentials Figma
  • ✅ Toujours vérifier les prérequis avant installation
  • ✅ Toujours scanner les composants existants
  • ✅ Toujours valider les mappings avant publication

Process

1. Vérification des prérequis

markdown
🔧 **Figma Code Connect Setup**

**Prérequis :**
| Check | Status |
|-------|--------|
| Node.js 18+ | [✅/❌] (version: X.Y.Z) |
| package.json | [✅/❌] |
| Framework détecté | [React/Vue/HTML/❌] |
| Composants UI | [X fichiers trouvés/❌] |

**Code Connect existant :** [Oui/Non]

[Si prérequis manquants]
❌ Prérequis manquants. Actions requises :
- [Action 1]
- [Action 2]

[Si OK]
✅ Prérequis validés. On continue l'installation ?

⏸️ STOP - Validation prérequis


2. Installation de Code Connect

bash
# Installation du package
npm install -D @figma/code-connect

Vérifier le succès de l'installation.


3. Configuration figma.config.json

markdown
📝 **Configuration Code Connect**

Je vais créer `figma.config.json` :

```json
{
  "$schema": "https://figma.com/code-connect/schema",
  "codeConnect": {
    "parser": "[react|html|vue]",
    "include": ["src/components/**/*.figma.tsx"],
    "exclude": ["**/*.test.tsx", "**/*.stories.tsx"]
  }
}

Parser détecté : [parser] (basé sur package.json)

Cette configuration te convient ?

code

**⏸️ STOP** - Validation configuration

Créer le fichier après validation.

---

### 4. Scan des composants existants

```markdown
🔍 **Composants détectés**

| Composant | Chemin | Type |
|-----------|--------|------|
| Button | `src/components/ui/button.tsx` | Component |
| Input | `src/components/ui/input.tsx` | Component |
| Card | `src/components/ui/card.tsx` | Component |
| Dialog | `src/components/ui/dialog.tsx` | Component |
| ... | ... | ... |

**Total** : X composants candidats au mapping

Ces composants correspondent à ton design system Figma ?

⏸️ STOP - Validation liste composants


5. Authentification Figma

markdown
🔐 **Authentification Figma**

Pour connecter ton compte Figma, exécute :

```bash
npx figma connect

Cette commande va :

  1. Ouvrir ton navigateur
  2. Te demander de te connecter à Figma
  3. Autoriser Claude Code à accéder à tes fichiers
  4. Sauvegarder les credentials localement (~/.figma/)

⚠️ Note : Les credentials sont stockés localement et ne sont PAS commités.

Exécute la commande et confirme quand c'est fait.

code

**⏸️ STOP** - Attendre confirmation auth

---

### 6. Création des mappings

Pour chaque composant identifié, si l'utilisateur fournit une URL Figma :

```markdown
🔗 **Mapping : [ComponentName]**

**Composant code** : `src/components/ui/[name].tsx`
**URL Figma** : [URL fournie ou à renseigner]

Je vais créer `src/components/ui/[name].figma.tsx` :

```tsx
import figma from "@figma/code-connect";
import { [ComponentName] } from "./[name]";

figma.connect([ComponentName], "[FIGMA_URL]", {
  props: {
    // Props détectées depuis le composant
    [propName]: figma.[type]("[Figma Prop Name]"),
  },
  example: (props) => (
    <[ComponentName] {...props}>
      {props.children}
    </[ComponentName]>
  ),
});

Ce mapping te convient ? (Tu peux aussi fournir l'URL Figma si pas encore fait)

code

**⏸️ STOP** - Validation mapping

Répéter pour chaque composant.

---

### 7. Publication des mappings

```markdown
📤 **Publication Code Connect**

**Fichiers créés** :
- `figma.config.json`
- `src/components/ui/button.figma.tsx`
- `src/components/ui/input.figma.tsx`
- ...

**Prêt à publier ?**

```bash
npx figma connect publish

Cela va :

  1. Valider tous les fichiers .figma.tsx
  2. Uploader les mappings vers Figma
  3. Rendre les connexions visibles dans l'inspecteur Figma

Confirme pour publier.

code

**⏸️ STOP** - Validation publication

---

### 8. Validation & Résumé

```markdown
## ✅ Figma Code Connect Configuré

**Fichiers créés** :
| Fichier | Description |
|---------|-------------|
| `figma.config.json` | Configuration Code Connect |
| `*.figma.tsx` | [N] fichiers de mapping |

**Composants mappés** : [N] / [Total]

**Workflow quotidien** :
1. Designer modifie dans Figma
2. Dev inspecte le composant dans Figma
3. Figma affiche le code du composant mappé
4. Dev copie/utilise le code

**Commandes utiles** :
```bash
npx figma connect create "URL"  # Créer un nouveau mapping
npx figma connect publish       # Publier les changements
npx figma connect verify        # Vérifier les mappings

Prochaine étape ?

  • [A] Ajouter d'autres mappings (/figma-setup [url])
  • [F] Générer du code depuis Figma (/figma-to-code)
  • [U] Importer les tokens dans UI Designer (/ui-designer --from-figma)
code

**⏸️ STOP** - Fin du setup

---

## Output Validation

Avant de terminer, valider :

```markdown
### ✅ Checklist Output Figma Setup

| Critère | Status |
|---------|--------|
| @figma/code-connect installé | ✅/❌ |
| figma.config.json créé | ✅/❌ |
| Auth Figma configurée | ✅/❌ |
| Au moins 1 mapping créé | ✅/❌ |
| Mappings publiés | ✅/❌ |

**Score : X/5** → Si < 4, compléter avant de terminer

Templates

figma.config.json (React)

json
{
  "$schema": "https://figma.com/code-connect/schema",
  "codeConnect": {
    "parser": "react",
    "include": ["src/components/**/*.figma.tsx"],
    "exclude": ["**/*.test.tsx", "**/*.stories.tsx", "**/node_modules/**"]
  }
}

figma.config.json (Vue)

json
{
  "$schema": "https://figma.com/code-connect/schema",
  "codeConnect": {
    "parser": "html",
    "include": ["src/components/**/*.figma.ts"],
    "exclude": ["**/*.test.ts", "**/node_modules/**"]
  }
}

Template .figma.tsx

tsx
import figma from "@figma/code-connect";
import { ComponentName } from "./component-name";

figma.connect(ComponentName, "FIGMA_URL", {
  props: {
    // String prop
    label: figma.string("Label"),

    // Boolean prop
    disabled: figma.boolean("Disabled"),

    // Enum prop
    variant: figma.enum("Variant", {
      "Primary": "primary",
      "Secondary": "secondary",
    }),

    // Size prop
    size: figma.enum("Size", {
      "Small": "sm",
      "Medium": "md",
      "Large": "lg",
    }),

    // Instance prop (icon, slot)
    icon: figma.instance("Icon"),

    // Children
    children: figma.children("Content"),
  },
  example: (props) => (
    <ComponentName
      variant={props.variant}
      size={props.size}
      disabled={props.disabled}
    >
      {props.label}
    </ComponentName>
  ),
});

Auto-Chain

Après le setup, proposer :

markdown
## 🔗 Prochaine étape

✅ Figma Code Connect configuré avec [N] mappings.

**Suggestions :**

→ 🖼️ **`/figma-to-code [url]`** - Générer du code depuis une sélection Figma
→ 🎨 **`/ui-designer --from-figma`** - Importer les tokens Figma dans le design system

---

**[F] Figma to Code** | **[U] UI Designer** | **[X] Terminé**

⏸️ STOP - Attendre choix


Transitions

  • Vers figma-to-code : "On génère du code depuis un design Figma ?"
  • Vers ui-designer : "On importe les tokens Figma dans le design system ?"