Synthèse automatique
Cette skill pilote la conception, la refonte, l'audit et le polissage d'interfaces frontend en s'appuyant sur les fichiers de contexte du projet (PRODUCT.md, DESIGN.md) et sur un registre « marque » ou « produit ».
Points forts
- Couvre tout le cycle de vie d'une UI : cadrage, audit critique, mise en page, typographie, couleur, animation, durcissement des états d'erreur et états vides
- Impose la lecture du contexte projet (PRODUCT.md requis, DESIGN.md recommandé) pour éviter les rendus génériques hors charte
- Distingue explicitement les surfaces marketing (registre brand) des interfaces applicatives (registre product), avec des références dédiées
- Propose des sous-commandes nommées (craft, audit, polish, harden, live…) et une itération en navigateur sur des éléments réels
Limites
- Nécessite la présence d'un PRODUCT.md ; s'il est absent ou trop court, la skill déclenche d'abord une étape de cadrage (teach) avant de reprendre la tâche
- Suppose des scripts Node et l'accès aux fichiers sous .claude/skills/impeccable, donc un environnement Claude Code configuré
- Ne traite ni le backend ni les tâches sans interface ; le vocabulaire de sous-commandes demande un temps d'appropriation
À utiliser dès qu'il faut concevoir, auditer ou améliorer une interface web existante ou à venir, du cadrage initial au polissage final.
À éviter pour du travail purement backend, des API ou des tâches sans composant visuel à évaluer.
Analyse de sécurité
PrudenceNo destructive, exfiltrating, or obfuscated instructions are present. The skill uses Bash to run a specific npx package and local Node scripts for legitimate frontend design context loading and iteration, but the npx dependency introduces network/supply-chain risk.
- •Declares Bash(npx impeccable *) allowing execution of the 'impeccable' npm package via npx, which downloads and runs third-party code from the npm registry. Supply-chain risk if the package is compromised.
- •Skill instructs running node scripts (load-context.mjs, live.mjs) that read and output project context; these are local but could be manipulated if the skill files are modified.
Exemples
/impeccable audit the admin dashboard at app/dashboard/page.tsx — focus on visual hierarchy, clutter, and the empty states./impeccable bolder our marketing landing page; it feels bland. Keep the copy but push typography, color, and motion./impeccable polish the account settings form: alignment, spacing, error states, and accessible labels.name: impeccable description: Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks. version: 3.1.1 user-invocable: true argument-hint: "[craft|shape · audit|critique · animate|bolder|colorize|delight|layout|overdrive|quieter|typeset · adapt|clarify|distill · harden|onboard|optimize|polish · teach|document|extract|live] [target]" license: Apache 2.0. Based on Anthropic's frontend-design skill. See NOTICE.md for attribution. allowed-tools:
- Bash(npx impeccable *)
Designs and iterates production-grade frontend interfaces. Real working code, committed design choices, exceptional craft.
Setup
Before any design work or file edits:
- Load context (PRODUCT.md / DESIGN.md) via the loader script.
- Identify the register and load the matching register reference (brand.md or product.md).
- If the user invoked a sub-command (e.g.
craft,shape,audit), load its reference file too. This is non-negotiable:craftwithoutcraft.mdloaded means you'll skip the shape-and-confirm step the user expects.
Skipping these produces generic output that ignores the project.
1. Context gathering
Two files, case-insensitive. The loader looks at the project root by default and falls back to .agents/context/ and docs/ if the root is clean. Override with IMPECCABLE_CONTEXT_DIR=path/to/dir (absolute or relative to cwd).
- PRODUCT.md: required. Users, brand, tone, anti-references, strategic principles.
- DESIGN.md: optional, strongly recommended. Colors, typography, elevation, components.
Load both in one call:
node .claude/skills/impeccable/scripts/load-context.mjs
Consume the full JSON output. Never pipe through head, tail, grep, or jq. The output's contextDir field tells you where the files were resolved from.
If the output is already in this session's conversation history, don't re-run. Exceptions requiring a fresh load: you just ran /impeccable teach or /impeccable document (they rewrite the files), or the user manually edited one.
/impeccable live already warms context via live.mjs. If you've run live.mjs, don't also run load-context.mjs this session.
If PRODUCT.md is missing, empty, or placeholder ([TODO] markers, <200 chars): run /impeccable teach, then resume the user's original task with the fresh context. If the original task was /impeccable craft, resume into /impeccable shape before any implementation work.
If DESIGN.md is missing: nudge once per session ("Run /impeccable document for more on-brand output"), then proceed.
2. Register
Every design task is brand (marketing, landing, campaign, long-form content, portfolio: design IS the product) or product (app UI, admin, dashboard, tool: design SERVES the product).
Identify before designing. Priority: (1) cue in the task itself ("landing page" vs "dashboard"); (2) the surface in focus (the page, file, or route being worked on); (3) register field in PRODUCT.md. First match wins.
If PRODUCT.md lacks the register field (legacy), infer it once from its "Users" and "Product Purpose" sections, then cache the inferred value for the session. Suggest the user run /impeccable teach to add the field explicitly.
Load the matching reference: reference/brand.md or reference/product.md. The shared design laws below apply to both.
Shared design laws
Apply to every design, both registers. Match implementation complexity to the aesthetic vision: maximalism needs elaborate code, minimalism needs precision. Interpret creatively. Vary across projects; never converge on the same choices. Claude is capable of extraordinary work. Don't hold back.
Color
- Use OKLCH. Reduce chroma as lightness approaches 0 or 100; high chroma at extremes looks garish.
- Never use
#000or#fff. Tint every neutral toward the brand hue (chroma 0.005–0.01 is enough). - Pick a color strategy before picking colors. Four steps on the commitment axis:
- Restrained: tinted neutrals + one accent ≤10%. Product default; brand minimalism.
- Committed: one saturated color carries 30–60% of the surface. Brand default for identity-driven pages.
- Full palette: 3–4 named roles, each used deliberately. Brand campaigns; product data viz.
- Drenched: the surface IS the color. Brand heroes, campaign pages.
- The "one accent ≤10%" rule is Restrained only. Committed / Full palette / Drenched exceed it on purpose. Don't collapse every design to Restrained by reflex.
Theme
Dark vs. light is never a default. Not dark "because tools look cool dark." Not light "to be safe."
Before choosing, write one sentence of physical scene: who uses this, where, under what ambient light, in what mood. If the sentence doesn't force the answer, it's not concrete enough. Add detail until it does.
"Observability dashboard" does not force an answer. "SRE glancing at incident severity on a 27-inch monitor at 2am in a dim room" does. Run the sentence, not the category.
Typography
- Cap body line length at 65–75ch.
- Hierarchy through scale + weight contrast (≥1.25 ratio between steps). Avoid flat scales.
Layout
- Vary spacing for rhythm. Same padding everywhere is monotony.
- Cards are the lazy answer. Use them only when they're truly the best affordance. Nested cards are always wrong.
- Don't wrap everything in a container. Most things don't need one.
Motion
- Don't animate CSS layout properties.
- Ease out with exponential curves (ease-out-quart / quint / expo). No bounce, no elastic.
Absolute bans
Match-and-refuse. If you're about to write any of these, rewrite the element with different structure.
- Side-stripe borders.
border-leftorborder-rightgreater than 1px as a colored accent on cards, list items, callouts, or alerts. Never intentional. Rewrite with full borders, background tints, leading numbers/icons, or nothing. - Gradient text.
background-clip: textcombined with a gradient background. Decorative, never meaningful. Use a single solid color. Emphasis via weight or size. - Glassmorphism as default. Blurs and glass cards used decoratively. Rare and purposeful, or nothing.
- The hero-metric template. Big number, small label, supporting stats, gradient accent. SaaS cliché.
- Identical card grids. Same-sized cards with icon + heading + text, repeated endlessly.
- Modal as first thought. Modals are usually laziness. Exhaust inline / progressive alternatives first.
Copy
- Every word earns its place. No restated headings, no intros that repeat the title.
- No em dashes. Use commas, colons, semicolons, periods, or parentheses. Also not
--.
The AI slop test
If someone could look at this interface and say "AI made that" without doubt, it's failed. Cross-register failures are the absolute bans above. Register-specific failures live in each reference.
Category-reflex check. Run at two altitudes; the second one catches what the first one misses.
- First-order: if someone could guess the theme + palette from the category alone ("observability → dark blue", "healthcare → white + teal", "finance → navy + gold", "crypto → neon on black"), it's the first training-data reflex. Rework the scene sentence and color strategy until the answer isn't obvious from the domain.
- Second-order: if someone could guess the aesthetic family from category-plus-anti-references ("AI workflow tool that's not SaaS-cream → editorial-typographic", "fintech that's not navy-and-gold → terminal-native dark mode"), it's the trap one tier deeper. The first reflex was avoided; the second wasn't. Rework until both answers are not obvious. The brand register's reflex-reject aesthetic lanes list catches the currently-saturated families.
Commands
| Command | Category | Description | Reference |
| -------------------- | -------- | ------------------------------------------------------------------------ | ------------------------------------------------ |
| craft [feature] | Build | Shape, then build a feature end-to-end | reference/craft.md |
| shape [feature] | Build | Plan UX/UI before writing code | reference/shape.md |
| teach | Build | Set up PRODUCT.md and DESIGN.md context | reference/teach.md |
| document | Build | Generate DESIGN.md from existing project code | reference/document.md |
| extract [target] | Build | Pull reusable tokens and components into design system | reference/extract.md |
| critique [target] | Evaluate | UX design review with heuristic scoring | reference/critique.md |
| audit [target] | Evaluate | Technical quality checks (a11y, perf, responsive) | reference/audit.md |
| polish [target] | Refine | Final quality pass before shipping | reference/polish.md |
| bolder [target] | Refine | Amplify safe or bland designs | reference/bolder.md |
| quieter [target] | Refine | Tone down aggressive or overstimulating designs | reference/quieter.md |
| distill [target] | Refine | Strip to essence, remove complexity | reference/distill.md |
| harden [target] | Refine | Production-ready: errors, i18n, edge cases | reference/harden.md |
| onboard [target] | Refine | Design first-run flows, empty states, activation | reference/onboard.md |
| animate [target] | Enhance | Add purposeful animations and motion | reference/animate.md |
| colorize [target] | Enhance | Add strategic color to monochromatic UIs | reference/colorize.md |
| typeset [target] | Enhance | Improve typography hierarchy and fonts | reference/typeset.md |
| layout [target] | Enhance | Fix spacing, rhythm, and visual hierarchy | reference/layout.md |
| delight [target] | Enhance | Add personality and memorable touches | reference/delight.md |
| overdrive [target] | Enhance | Push past conventional limits | reference/overdrive.md |
| clarify [target] | Fix | Improve UX copy, labels, and error messages | reference/clarify.md |
| adapt [target] | Fix | Adapt for different devices and screen sizes | reference/adapt.md |
| optimize [target] | Fix | Diagnose and fix UI performance | reference/optimize.md |
| live | Iterate | Visual variant mode: pick elements in the browser, generate alternatives | reference/live.md |
Plus two management commands: pin <command> and unpin <command>, detailed below.
Routing rules
- No argument: render the table above as the user-facing command menu, grouped by category. Ask what they'd like to do.
- First word matches a command: load its reference file and follow its instructions. Everything after the command name is the target.
- First word doesn't match: general design invocation. Apply the setup steps, shared design laws, and the loaded register reference, using the full argument as context.
Setup (context gathering, register) is already loaded by then; sub-commands don't re-invoke /impeccable.
If the first word is craft, setup still runs first, but reference/craft.md owns the rest of the flow. If setup invokes teach as a blocker, finish teach, refresh context, then resume the original command and target.
Pin / Unpin
Pin creates a standalone shortcut so /<command> invokes /impeccable <command> directly. Unpin removes it. The script writes to every harness directory present in the project.
node .claude/skills/impeccable/scripts/pin.mjs <pin|unpin> <command>
Valid <command> is any command from the table above. Report the script's result concisely. Confirm the new shortcut on success, relay stderr verbatim on error.
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/impeccable-frontend-design-msh3usu6/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/impeccable-frontend-design-msh3usu6' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/impeccable-frontend-design-msh3usu6/download' --output '.skill-downloads/impeccable-frontend-design-msh3usu6/SKILL.md.part' && mv '.skill-downloads/impeccable-frontend-design-msh3usu6/SKILL.md.part' '.skill-downloads/impeccable-frontend-design-msh3usu6/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.
Extrait original : Setup
Before any design work or file edits:
- Load context (PRODUCT.md / DESIGN.md) via the loader script.
- Identify the register and load the matching register reference (brand.md or product.md).
- If the user invoked a sub-command (e.g.
craft,shape,audit), load its reference file too. This is non-negotiable:craftwithoutcraft.mdloaded means you'll skip the shape-and-confirm step the user expects.
Skipping these produces generic output that ignores the project.
1. Context gathering
Two files, case-insensitive. The loader looks at the project root by default and falls back to .agents/context/ and docs/ if the root is clean. Override with IMPECCABLE_CONTEXT_DIR=path/to/dir (absolute or relative to cwd).
- PRODUCT.md: required. Users, brand, tone, anti-references, strategic principles.
- DESIGN.md: optional, strongly recommended. Colors, typography, elevation, components.
Load both in one call:
node .claude/skills/impeccable/scripts/load-context.mjs
Consume the full JSON output. Never pipe through head, tail, grep, or jq. The output's contextDir field tells you where the files were resolved from.
If the output is already in this session's conversation history, don't re-run. Exceptions requiring a fresh load: you just ran /impeccable teach or /impeccable document (they rewrite the files), or the user manually edited one.
/impeccable live already warms context via live.mjs. If you've run live.mjs, don't also run load-context.mjs this session.
If PRODUCT.md is missing, empty, or placeholder ([TODO] markers, <200 chars): run /impeccable teach, then resume the user's original task with the fresh context. If the original task was /impeccable craft, resume into /impeccable shape before any implementation work.
If DESIGN.md is missing: nudge once per session ("Run /impeccable document for more on-brand output"), then proceed.
2. Register
Every design task is brand (marketing, landing, campaign, long-form content, portfolio: design IS the product) or product (app UI, admin, dashboard, tool: design SERVES the product).
Identify before designing. Priority: (1) cue in the task itself ("landing page" vs "dashboard"); (2) the surface in focus (the page, file, or route being worked on); (3) register field in PRODUCT.md. First match wins.
If PRODUCT.md lacks the register field (legacy), infer it once from its "Users" and "Product Purpose" sections, then cache the inferred value for the session. Suggest the user run /impeccable teach to add the field explicitly.
Load the matching reference: reference/brand.md or reference/product.md. The shared design laws below apply to both.
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/impeccable-frontend-design-msh3usu6/SKILL.md' && test -s '.skill-downloads/impeccable-frontend-design-msh3usu6/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/impeccable' && cp -R '.skill-downloads/impeccable-frontend-design-msh3usu6' '.claude/skills/impeccable'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/impeccable-frontend-design-msh3usu6'openskills read 'impeccable-frontend-design-msh3usu6'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/impeccable-frontend-design-msh3usu6/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.