Synthèse automatique
Cette compétence réalise un audit complet de l'UI/UX des codebases frontend, en analysant la structure des composants, l'accessibilité, la réactivité, la cohérence visuelle et les schémas UX.
Points forts
- Automatise les vérifications au niveau du code pour les problèmes d'interface courants, comme les images sans attribut alt ou les couleurs codées en dur.
- Prend en charge les revues basées sur des personas pour des retours adaptés.
- Produit des résultats avec des niveaux de sévérité et des suggestions de correction.
Limites
- Repose sur une analyse statique du code ; ne peut pas évaluer pleinement les aspects visuels ou interactifs.
- Limité aux codebases utilisant les frameworks pris en charge (React, Vue, Svelte, etc.).
- Peut générer des faux positifs ou manquer des décisions de conception dépendantes du contexte.
À utiliser lorsque vous avez besoin d'une évaluation rapide et systématique de la qualité d'une UI et de son adhésion aux bonnes pratiques.
À éviter pour les revues purement visuelles où le code n'est pas disponible, ou pour les audits d'accessibilité finaux nécessitant des tests manuels.
Analyse de sécurité
SûrThe skill only executes read-only file analysis commands (grep, find) on user-specified codebases; no destructive actions, data exfiltration, or obfuscation are present. Commands are transparent and limited to diagnostic purposes.
Aucun point d'attention détecté
Comment cette analyse est faiteExemples
/ui-review --target ./src/components --mode quick/ui-review --target . --mode standardname: ui-review description: "UI/UX audit skill for reviewing existing interfaces. Invoke when user asks to review UI, audit the frontend, check design quality, or review UX. Analyzes code structure, accessibility, visual consistency, responsiveness, and UX patterns. Outputs structured findings with severity and fix suggestions. Supports optional persona (e.g., 'as a senior designer')." allowed-tools:
- Bash
- Read
- Grep
- Glob metadata: token-cost-tier: instruction token-cost-estimate: 3000
/ui-review — UI/UX Audit
Usage
/ui-review [--target <path|url>] [--as <persona>] [--mode quick|standard|deep]
--target— directory, file, or URL to review (default: current working directory)--as <persona>— load reviewer persona from.claude/personas/<persona>.mdquick— layout + accessibility + obvious issues onlystandard— full audit across all 7 categories (default)deep— standard + component-level analysis + refactor suggestions
Step 0 — Preflight
Identify the UI stack:
# Check package.json for frameworks
grep -l "react\|vue\|svelte\|angular\|next\|nuxt" "${TARGET:-.}/package.json" 2>/dev/null | head -5
# Count UI files
find "${TARGET:-.}" -type f \( -name "*.tsx" -o -name "*.jsx" -o -name "*.vue" -o -name "*.svelte" -o -name "*.html" \) 2>/dev/null | wc -l
Load persona if --as specified:
- Read
.claude/personas/<persona>.md - Apply that reviewer's lens to all findings below
Step 1 — Component Structure Analysis
find "${TARGET:-.}" -type f \( -name "*.tsx" -o -name "*.jsx" -o -name "*.vue" \) 2>/dev/null | head -30
Check for:
- Component files > 200 lines (split concern smell)
- Missing prop validation / TypeScript types on UI components
- Inline styles (> 3 occurrences is a smell)
- God components (single file doing layout + state + data fetch)
grep -rn "style={{" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | wc -l
grep -rn "useState\|useEffect\|fetch\|axios" "${TARGET:-.}/src" --include="*.tsx" --include="*.jsx" 2>/dev/null | head -10
Step 2 — Accessibility Audit (a11y)
grep -rn "<img " "${TARGET:-.}" --include="*.tsx" --include="*.jsx" --include="*.vue" --include="*.html" 2>/dev/null | grep -v 'alt=' | head -20
grep -rn "<button\|<a " "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | grep -v "aria-label\|aria-describedby\|title=" | head -20
grep -rn "onClick.*div\|onClick.*span" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | head -10
grep -rn "tabIndex\|role=" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | head -10
Flags:
<img>withoutalt→ HIGH (WCAG 1.1.1)- Click handlers on
div/span→ MEDIUM (keyboard inaccessible) - Missing
aria-labelon icon buttons → MEDIUM tabIndex="-1"on focusable elements → check intent
Step 3 — Responsiveness & Layout
grep -rn "px-\|width:\|height:" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" --include="*.css" 2>/dev/null | grep -v "min-\|max-\|%" | head -20
grep -rn "overflow:\s*hidden\|overflow-hidden\|truncate" "${TARGET:-.}" 2>/dev/null | head -10
grep -rn "@media\|sm:\|md:\|lg:\|xl:" "${TARGET:-.}" 2>/dev/null | wc -l
Flags:
- Fixed pixel widths on containers (not max-width) → MEDIUM
- No responsive breakpoints in layout components → MEDIUM
- Content overflow hidden without visible affordance → LOW
Step 4 — Visual Consistency
# Check for color/spacing values hardcoded outside design tokens
grep -rn "#[0-9a-fA-F]\{3,6\}\|rgb(\|rgba(" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" --include="*.css" 2>/dev/null | grep -v "theme\|token\|var(--\|tailwind" | head -20
# Check for magic spacing numbers
grep -rn "margin:\s*[0-9]\|padding:\s*[0-9]\|gap:\s*[0-9]" "${TARGET:-.}" --include="*.css" 2>/dev/null | head -20
Flags:
- Hardcoded color values outside design tokens → MEDIUM (consistency drift risk)
- Magic spacing numbers outside scale → LOW
- Multiple font sizes not from a defined scale → MEDIUM
Step 5 — UX Pattern Check
grep -rn "loading\|isLoading\|skeleton\|spinner" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | head -10
grep -rn "error\|catch\|onError\|fallback" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | head -10
grep -rn "empty\|isEmpty\|noData\|no.*result" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | head -10
grep -rn "toast\|notification\|alert\|feedback" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | head -10
Check coverage of UI states:
- [ ] Loading state
- [ ] Error state
- [ ] Empty state
- [ ] Success feedback
Missing states → MEDIUM (user confusion in edge cases).
Step 6 — Performance Red Flags
# Re-renders: anonymous functions in JSX
grep -rn "onClick={() =>" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | wc -l
# Missing keys in lists
grep -rn "\.map(" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | grep -v "key=" | head -20
# Large image without lazy loading
grep -rn "<img " "${TARGET:-.}" --include="*.tsx" --include="*.jsx" --include="*.html" 2>/dev/null | grep -v "loading=\|lazy" | head -10
Flags:
.map()withoutkeyprop → HIGH (React reconciliation issues)- Anonymous arrow functions in render at scale (> 20 occurrences) → LOW
- Images without
loading="lazy"in long lists → LOW
Step 7 — Security in UI
grep -rn "dangerouslySetInnerHTML\|innerHTML\|document\.write\|v-html" "${TARGET:-.}" --include="*.tsx" --include="*.jsx" --include="*.vue" 2>/dev/null | head -10
grep -rn "localStorage\.\|sessionStorage\." "${TARGET:-.}" --include="*.tsx" --include="*.jsx" 2>/dev/null | grep -v "test\|spec" | head -10
dangerouslySetInnerHTMLwithout sanitization → CRITICAL (XSS)- Sensitive data (tokens, keys) in localStorage → HIGH
Report Format
UI REVIEW REPORT
================
Target : <path>
Stack : <detected framework>
Files : <N scanned>
Persona : <name if --as used>
## Findings (severity-ordered)
[FINDING] <CATEGORY>/<ID>: <issue name>
Location : <file>:<line or component>
Severity : CRITICAL | HIGH | MEDIUM | LOW
Issue : <what's wrong>
Impact : <user or dev impact>
Fix : <concrete suggestion>
## State Coverage
Loading : ✓ / ✗
Error : ✓ / ✗
Empty : ✓ / ✗
Success : ✓ / ✗
## Verdict
PASS | PASS_WITH_WARNINGS | NEEDS_WORK | CRITICAL_ISSUES
## Fix Plan (top 3 priority fixes)
1. [CRITICAL/HIGH finding] — specific change needed
2. ...
3. ...
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/ui-ux-audit-mrx3y044/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/ui-ux-audit-mrx3y044' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/ui-ux-audit-mrx3y044/download' --output '.skill-downloads/ui-ux-audit-mrx3y044/SKILL.md.part' && mv '.skill-downloads/ui-ux-audit-mrx3y044/SKILL.md.part' '.skill-downloads/ui-ux-audit-mrx3y044/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/ui-ux-audit-mrx3y044/SKILL.md' && test -s '.skill-downloads/ui-ux-audit-mrx3y044/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/ui-review' && cp -R '.skill-downloads/ui-ux-audit-mrx3y044' '.claude/skills/ui-review'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/ui-ux-audit-mrx3y044'openskills read 'ui-ux-audit-mrx3y044'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/ui-ux-audit-mrx3y044/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Bonnes pratiques React Hook Form
Developpement
Maîtrisez React Hook Form : évitez les anti-patterns, gérez les abonnements, et traitez correctement reset, dirty state et entrées contrôlées.
Migration Emotion vers Mantine
Developpement
Migrer les styled-components Emotion vers des composants Mantine avec style props et modules CSS. Pour convertir .styled.tsx ou supprimer les imports @emotion.
Détecteur de dérive de périmètre
Developpement
Analyse les diffs git par rapport à une intention pour détecter la dérive de périmètre, fichiers non liés et PR trop larges, puis suggère de garder, diviser ou justifier.