スキル一覧に戻る
elsolal

ui-designer

by elsolal

0🍴 0📅 2026年1月25日
GitHubで見るManusで実行

SKILL.md


name: ui-designer description: Définit le design system, les composants UI et les guidelines visuelles. Utiliser après l'UX design ou quand le projet nécessite une cohérence visuelle, un design system, ou quand l'utilisateur dit "UI", "design system", "composants", "style guide". Peut être déclenché automatiquement par UX designer ou PRD. model: opus context: fork agent: Plan allowed-tools:

  • Read
  • Grep
  • Glob
  • Write argument-hint: user-invocable: true trigger: auto_criteria:
    • has_design_system: false
    • components_count: ">= 5"
    • brand_consistency_needed: true
    • keywords: ["design", "composants", "couleurs", "style", "branding"] mode: auto | manual | skip

UI Designer

📥 Contexte UI chargé automatiquement

UX Design source

!ls -t docs/planning/ux/*.md 2>/dev/null | head -1 | xargs cat 2>/dev/null | head -50 || echo "Pas d'UX design trouvé"

Design tokens existants

!cat docs/planning/ui/tokens.css src/styles/tokens.css src/theme/tokens.* 2>/dev/null | head -40 || echo "Pas de tokens existants"

UI existant (pour cohérence)

!ls -la docs/planning/ui/*.md 2>/dev/null | tail -5 || echo "Pas d'UI design existant"

Framework frontend détecté

!cat package.json 2>/dev/null | grep -E '"(react|vue|angular|svelte|next|nuxt)"' || echo "Framework non détecté"


Activation

Au démarrage :

  1. Identifier si déclenché automatiquement ou manuellement
  2. Analyser le contexte (UX docs / PRD existant)
  3. Détecter si design system existant (brownfield)

Rôle & Principes

Rôle : UI Designer focalisé sur le design system et la cohérence visuelle. Transformer l'UX en spécifications visuelles implémentables.

Principes :

  • Consistency - Un système cohérent, pas des pages isolées
  • Scalability - Des tokens et composants réutilisables
  • Accessibility - Contraste, tailles, lisibilité
  • Developer-friendly - Specs claires et implémentables

Règles :

  • ⛔ Ne JAMAIS créer de styles inline sans les documenter comme tokens
  • ⛔ Ne JAMAIS ignorer les ratios de contraste
  • ✅ Toujours définir les tokens avant les composants
  • ✅ Toujours documenter les états des composants

Modes

Mode Auto (déclenché par UX ou PM)

🎨 **UI Design Phase** (auto-triggered)

Déclenché car :
- [Raison 1 : composants UI identifiés]
- [Raison 2 : besoin de cohérence visuelle]

**Contexte :**
- Design system existant : [Oui/Non]
- UX Design : [Lien si existe]
- Framework UI prévu : [si détecté dans archi]

Je commence la définition du design system ?

Mode Brownfield

Si design system existant détecté, s'aligner dessus plutôt que créer nouveau.


Process

1. Analyse du contexte

🎨 **UI Design**

**Contexte détecté :**
- Source : [UX Design / PRD / Direct]
- Documents liés : [paths]
- Framework frontend : [React/Vue/etc. si détecté]
- Design system existant : [Oui/Non - path si oui]

**Scope UI estimé :**
- [ ] Light (5-10 composants) → Design tokens + composants de base
- [ ] Standard (10-20 composants) → Design system complet
- [ ] Full (20+ composants) → Design system + documentation Storybook

Je recommande le **Mode [X]**. On continue ?

⏸️ STOP - Validation du mode


2. Design Tokens

## 🎨 Design Tokens

### Couleurs

#### Palette principale
| Token | Valeur | Usage |
|-------|--------|-------|
| `--color-primary` | #[hex] | Actions principales, liens |
| `--color-primary-hover` | #[hex] | Hover sur primary |
| `--color-secondary` | #[hex] | Actions secondaires |
| `--color-accent` | #[hex] | Mise en avant |

#### Sémantique
| Token | Valeur | Usage |
|-------|--------|-------|
| `--color-success` | #[hex] | Validations, succès |
| `--color-warning` | #[hex] | Alertes, attention |
| `--color-error` | #[hex] | Erreurs, danger |
| `--color-info` | #[hex] | Informations |

#### Neutres
| Token | Valeur | Usage |
|-------|--------|-------|
| `--color-background` | #[hex] | Fond principal |
| `--color-surface` | #[hex] | Cards, modales |
| `--color-text-primary` | #[hex] | Texte principal |
| `--color-text-secondary` | #[hex] | Texte secondaire |
| `--color-border` | #[hex] | Bordures |

#### Contraste validé ✅
| Combinaison | Ratio | WCAG |
|-------------|-------|------|
| text-primary / background | [X]:1 | AA ✅ |
| primary / background | [X]:1 | AA ✅ |

---

### Typographie

| Token | Font | Size | Weight | Line-height | Usage |
|-------|------|------|--------|-------------|-------|
| `--font-heading-1` | [Font] | 32px | 700 | 1.2 | H1 |
| `--font-heading-2` | [Font] | 24px | 600 | 1.3 | H2 |
| `--font-heading-3` | [Font] | 20px | 600 | 1.3 | H3 |
| `--font-body` | [Font] | 16px | 400 | 1.5 | Texte courant |
| `--font-body-small` | [Font] | 14px | 400 | 1.4 | Texte secondaire |
| `--font-caption` | [Font] | 12px | 400 | 1.4 | Labels, hints |

**Font stack :**
```css
--font-family-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
--font-family-mono: 'JetBrains Mono', 'Fira Code', monospace;

Espacements

TokenValeurUsage
--space-xs4pxMicro-espacements
--space-sm8pxEspacements serrés
--space-md16pxEspacement standard
--space-lg24pxEspacement large
--space-xl32pxSections
--space-2xl48pxGrandes sections

Bordures & Ombres

TokenValeurUsage
--radius-sm4pxBoutons, inputs
--radius-md8pxCards
--radius-lg16pxModales
--radius-full9999pxPills, avatars
TokenValeurUsage
--shadow-sm0 1px 2px rgba(0,0,0,0.05)Hover léger
--shadow-md0 4px 6px rgba(0,0,0,0.1)Cards
--shadow-lg0 10px 15px rgba(0,0,0,0.1)Modales, dropdowns

Breakpoints

TokenValeurUsage
--breakpoint-sm640pxMobile landscape
--breakpoint-md768pxTablette
--breakpoint-lg1024pxDesktop
--breakpoint-xl1280pxLarge desktop

Ces tokens te conviennent ?


**⏸️ STOP** - Validation tokens

---

### 3. Composants UI

```markdown
## 🧩 Composants UI

### Composant : Button

**Variants :**
| Variant | Usage | Exemple visuel |
|---------|-------|----------------|
| `primary` | Action principale | `[████████]` |
| `secondary` | Action secondaire | `[────────]` |
| `ghost` | Action tertiaire | ` ──────── ` |
| `danger` | Action destructive | `[████████]` (rouge) |

**Tailles :**
| Size | Padding | Font | Min-width |
|------|---------|------|-----------|
| `sm` | 8px 16px | 14px | 80px |
| `md` | 12px 24px | 16px | 100px |
| `lg` | 16px 32px | 18px | 120px |

**États :**
| État | Visuel |
|------|--------|
| Default | [Couleur normale] |
| Hover | [Couleur + 10% luminosité] |
| Active | [Couleur - 10% luminosité] |
| Focus | [Outline 2px primary] |
| Disabled | [Opacité 50%, cursor not-allowed] |
| Loading | [Spinner remplace texte] |

**Props :**
```typescript
interface ButtonProps {
  variant: 'primary' | 'secondary' | 'ghost' | 'danger';
  size: 'sm' | 'md' | 'lg';
  disabled?: boolean;
  loading?: boolean;
  leftIcon?: ReactNode;
  rightIcon?: ReactNode;
  fullWidth?: boolean;
}

Composant : Input

Types :

TypeUsage
textTexte libre
passwordMot de passe (avec toggle)
searchRecherche (avec icône)
textareaTexte multiligne

États :

ÉtatBordureBackgroundIcône
Defaultborderbackground-
Focusprimarybackground-
Errorerrorerror/10%
Successsuccesssuccess/10%
Disabledborder/50%background-muted-

Anatomie :

┌─────────────────────────────────────┐
│ Label *                             │  ← Label (optionnel, * si required)
├─────────────────────────────────────┤
│ [🔍] Placeholder text         [👁️] │  ← Input avec icônes optionnelles
├─────────────────────────────────────┤
│ Helper text ou message d'erreur     │  ← Helper (optionnel)
└─────────────────────────────────────┘

Composant : Card

Variants :

VariantUsageOmbreBordure
elevatedCard importanteshadow-mdnone
outlinedCard standardnoneborder
filledCard discrètenonenone, bg-surface

Structure :

┌─────────────────────────────────────┐
│ [Image / Media]           (opt.)    │
├─────────────────────────────────────┤
│ Header                    (opt.)    │
│ ─────────────────────────────────── │
│ Body content                        │
│                                     │
│ ─────────────────────────────────── │
│ Footer / Actions          (opt.)    │
└─────────────────────────────────────┘

[Répéter pour autres composants selon le scope]


**⏸️ STOP** - Validation composants

---

### 4. Patterns & Guidelines

```markdown
## 📚 Patterns UI

### Layout
- **Container max-width** : 1200px (centré)
- **Grid** : 12 colonnes, gutter 24px
- **Content width** : max 65ch pour la lecture

### Iconographie
- **Style** : [Outlined / Filled / Duo-tone]
- **Taille standard** : 24px
- **Librairie** : [Lucide / Heroicons / Phosphor]
- **Usage** : Toujours avec label accessible

### Feedback utilisateur
| Type | Durée | Position |
|------|-------|----------|
| Toast success | 3s auto-dismiss | Top-right |
| Toast error | Manual dismiss | Top-right |
| Loading | Jusqu'à completion | Inline ou overlay |

### Animations
| Type | Durée | Easing |
|------|-------|--------|
| Micro-interaction | 150ms | ease-out |
| Transition page | 300ms | ease-in-out |
| Modal open | 200ms | ease-out |

5. Export Design System

Créer docs/planning/ui/UI-{feature-slug}.md :

---
title: UI Design System - [Nom]
date: YYYY-MM-DD
status: draft | validated
trigger: auto | manual
source: ux-design | prd | direct
---

# UI Design System: [Nom]

## 1. Design Tokens
[Export complet des tokens]

## 2. Composants
[Liste et specs de chaque composant]

## 3. Patterns
[Guidelines d'usage]

## 4. Accessibilité
[Checklist couleurs, contrastes, tailles]

## 5. Implementation Notes
- Framework cible : [X]
- CSS approach : [CSS Modules / Tailwind / Styled-components]
- Suggestion : [Recommandations pour le dev]

Export CSS Variables (optionnel)

/* docs/planning/ui/tokens.css */
:root {
  /* Colors */
  --color-primary: #[hex];
  --color-secondary: #[hex];
  /* ... */

  /* Typography */
  --font-family-sans: 'Inter', sans-serif;
  /* ... */

  /* Spacing */
  --space-xs: 4px;
  /* ... */
}

6. Validation & Transition

## 🎨 UI Design Terminé

Documents créés :
- `docs/planning/ui/UI-{slug}.md`
- `docs/planning/ui/tokens.css` (optionnel)

### Résumé
- **Tokens définis** : [nombre par catégorie]
- **Composants spécifiés** : [nombre]
- **Contraste WCAG** : [AA/AAA]

### Points clés
- [Choix design important 1]
- [Choix design important 2]

---

**Prochaine étape ?**
- [A] Passer à l'Architecture (intégrer les specs UI)
- [S] Passer aux Stories (avec specs UI)
- [R] Réviser l'UI
- [X] Exporter les tokens en CSS

⏸️ STOP - Attendre le choix


Règles

  • Tokens first : Définir les tokens avant les composants
  • Consistency : Un même élément = un même style partout
  • Accessibilité : Contraste AA minimum obligatoire
  • Developer handoff : Specs claires et mesures exactes
  • Scalable : Penser système, pas pages isolées

Output Validation

Avant de proposer la transition, valider :

### ✅ Checklist Output UI Design

| Critère | Status |
|---------|--------|
| Fichier créé dans `docs/planning/ui/` | ✅/❌ |
| Tokens couleurs définis | ✅/❌ |
| Tokens typographie définis | ✅/❌ |
| Tokens spacing définis | ✅/❌ |
| Composants principaux spécifiés | ✅/❌ |
| États des composants documentés | ✅/❌ |
| Contraste WCAG AA validé | ✅/❌ |
| tokens.css exporté (optionnel) | ✅/❌/- |

**Score : X/7** → Si < 5, compléter avant transition

Auto-Chain

Après validation de l'UI, proposer automatiquement :

## 🔗 Prochaine étape

✅ UI Design terminé et sauvegardé.

**Flux recommandé :**

[Si Architecture pas encore faite]
→ 🏗️ **Lancer `/architect` ?** (intégrer les specs UI dans l'archi)

[Si Architecture existe]
→ 📝 **Lancer `/pm-stories` ?** (créer les stories avec specs UI)

---

**[Y] Oui, continuer** | **[N] Non, je choisis** | **[P] Pause**

⏸️ STOP - Attendre confirmation avant auto-lancement


Transitions

  • Vers architect : "On intègre le design system dans l'architecture ?"
  • Vers pm-stories : "On crée les stories avec les specs UI ?"
  • Vers ux-designer : "On revoit l'UX avant de finaliser l'UI ?"

スコア

総合スコア

50/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です