Maîtriser Claude Code — De zéro à 10x — 10. Clone un design que tu aimes — avec les bons garde-fous

21 min read min de lecture
Chapitre 10

Clone un design que tu aimes — avec les bons garde-fous

Chapitre 10 sur 10 · 100%

Objectifs de ce chapitre

  • Reproduire la structure d’un design admiré : analyse, design tokens, reconstruction, itération
  • Connaître la frontière éthique et légale entre s’inspirer et copier
  • Verrouiller le projet avec des permissions allow/deny et comprendre leur lien avec les hooks

Le nouveau chantier de Léa : un site qui en jette

Le système de contenu de Léa tourne tout seul — et son trafic monte. Problème : sa page d'accueil, bricolée il y a deux ans, ne suit plus. Elle a repéré le site d'une marque de thé japonaise dont le design l'émerveille : une mise en page aérée, une palette douce, une typographie élégante. Elle aimerait ce niveau de finition pour sa propre marque. La bonne nouvelle : Claude Code lit les images. La méthode de ce chapitre lui permet d'analyser ce design, d'en extraire les principes, et de reconstruire sa version — pas une copie.

Retiens cette distinction dès maintenant, car tout le chapitre repose dessus : on ne clone pas un site, on clone ce qui le rend bon — sa grille, ses proportions, son rythme, sa hiérarchie visuelle. Le contenu, les couleurs de marque et les images seront ceux de Léa. C'est la différence entre apprendre d'un maître et plagier son tableau.

Étape 1 : capturer et faire analyser

Commence par des captures d'écran du site admiré : la page entière, puis des zooms sur les zones clés (header, section héros, grille de produits, footer). Glisse-les directement dans Claude Code — il lit les images nativement, dans l'extension comme dans le terminal. Mais ne demande pas « fais-moi le même site » : tu obtiendrais une imitation approximative. Demande d'abord une analyse structurée, car c'est elle qui transforme une impression visuelle en spécifications exploitables :

PROMPT
analyse cette capture d'écran de site web comme un designer senior.
donne-moi une analyse structurée :

1. LAYOUT : structure de la page, grille (nombre de colonnes, gouttières), largeur max du contenu
2. PALETTE : chaque couleur en hex, son rôle (fond, texte, accent, bordures), les ratios d'usage
3. TYPOGRAPHIE : familles probables, tailles (titre/sous-titre/corps), graisses, interlignage, casse
4. ESPACEMENTS : le rythme vertical entre sections, les paddings internes des cartes/boutons
5. HIÉRARCHIE : dans quel ordre l'œil circule, et quels procédés créent cet ordre (taille, contraste, espace)
6. SIGNATURE : les 3 choix qui donnent sa personnalité à ce design

ne génère AUCUN code pour l'instant.

Le « ne génère aucun code pour l'instant » est volontaire : c'est le Plan Mode du chapitre 2 appliqué au design. Tu veux d'abord valider que l'analyse capte ce que tu aimes dans ce site. Lis le point 6 en particulier — la « signature » — et corrige si besoin : « non, ce qui me plaît surtout, c'est le contraste entre les grandes photos et le texte minuscule ». Cette conversation cadre tout ce qui suit.

Étape 2 : extraire les design tokens

L'analyse validée, on la convertit en design tokens : des variables CSS qui codifient chaque décision visuelle (couleurs, tailles, espacements). C'est l'étape qui change tout par rapport à un clonage naïf : les tokens séparent le système de design (réutilisable) des valeurs (que Léa remplacera par les siennes). Voici le prompt complet :

PROMPT
à partir de ton analyse, génère un fichier tokens.css contenant les design tokens en variables CSS :

:root {
  /* couleurs : fond, surface, texte, texte-secondaire, accent, accent-hover, bordure */
  /* typo : familles, tailles (échelle modulaire), graisses, interlignages */
  /* espacements : échelle (xs, sm, md, lg, xl, 2xl) cohérente avec le rythme observé */
  /* divers : radius, ombres, largeur max du contenu */
}

contraintes :
- chaque variable est commentée avec son rôle
- l'échelle d'espacement doit être une vraie échelle (ratio constant), pas des valeurs au hasard
- propose ensuite une SECONDE palette : même logique de contrastes, mais avec les couleurs de ma marque (vert sauge #87A96B, crème #F5F0E8, brun #5C4033)

Regarde bien la dernière contrainte : on demande la transposition vers la palette de Léa dès cette étape. Le design admiré fournit la logique des contrastes (fond clair, accent saturé utilisé avec parcimonie, texte presque noir mais pas tout à fait) ; les valeurs deviennent celles de la marque. C'est le moment précis où le projet cesse d'être une copie pour devenir une création informée.

Étape 3 : reconstruire TA version

Maintenant seulement, on construit — avec les contenus de Léa : ses produits, ses photos, ses textes (que ton skill /post sait déjà rédiger dans sa voix). Demande une page qui consomme exclusivement les tokens : aucune couleur ni taille en dur dans le HTML. Cette discipline paie doublement : changer un token met à jour tout le site, et tu peux faire évoluer la palette sans toucher à la structure.

text
construis ma page d'accueil en HTML/CSS en utilisant exclusivement
les variables de tokens.css (aucune valeur en dur).

structure : header épuré, section héros avec ma photo de la gamme solaire,
grille de 3 produits, bandeau « engagements », footer.
contenus : utilise les textes de content/accueil.md.
images : uniquement celles du dossier assets/ (mes photos).

respecte le layout et le rythme analysés, PAS les contenus du site d'origine.
Si le site original utilise une police commerciale (payante), ne la copie pas : demande à Claude « propose 3 alternatives libres (Google Fonts) qui partagent les mêmes caractéristiques : même contraste, même largeur, même personnalité ». Tu gardes l'esprit typographique sans la licence d'autrui.

Étape 4 : itérer par écarts

La première version sera proche mais pas juste — c'est normal, et la pire réaction serait de tout redemander en vrac (« c'est pas encore ça, recommence »). La bonne méthode est l'itération par écarts : on compare systématiquement, on liste, on corrige point par point. C'est la même boucle d'affinage qu'au chapitre 4 pour la voix de marque, appliquée au pixel :

PROMPT
voici une capture de MA page actuelle et la capture du site de référence.
compare les deux comme un directeur artistique et liste les 10 différences
les plus visibles, classées par impact visuel décroissant.

pour chaque différence : ce que fait la référence, ce que fait ma version,
et la correction précise (quel token ou quelle règle CSS modifier).

ensuite corrige-les UNE PAR UNE en me montrant le résultat à chaque étape.

Le « une par une » a la même fonction que dans le cadrage du chapitre 3 : il rend chaque changement observable. Si une correction dégrade l'ensemble (ça arrive — l'espacement parfait de la référence peut étouffer tes contenus plus denses), tu la refuses isolément au lieu de jeter tout le lot. Deux ou trois passes de cette boucle suffisent généralement à passer de « ressemblant » à « finition professionnelle ».

Aller plus loin : analyser la structure réelle d'une page publique

Les captures montrent le rendu, pas la mécanique. Pour comprendre comment un effet est obtenu (cette grille qui se réorganise élégamment sur mobile, ce header qui se condense au scroll), tu peux demander à Claude de récupérer une URL publique et d'analyser le HTML/CSS réel — c'est l'outil WebFetch, que tu as autorisé au chapitre 2 :

text
récupère https://exemple-de-marque.com et analyse la structure :
- comment la grille des produits est construite (grid ? flex ? breakpoints ?)
- comment le header gère le scroll et le mobile
- quelles variables CSS ou conventions de nommage ils utilisent

objectif : comprendre la TECHNIQUE pour appliquer la même logique
à ma page, avec mes tokens. ne copie aucun contenu ni aucun asset.
flowchart LR
  A["Capture d'écran du site admiré"] --> B["Analyse structurée (designer senior)"]
  B --> C["Design tokens : tokens.css"]
  C --> D["Reconstruction avec TES contenus et TA palette"]
  D --> E["Comparaison côte à côte : 10 écarts"]
  E -->|"Corrections une par une"| D
  E -->|"Finition atteinte"| F["Page de Léa en ligne"]
Le pipeline complet : on clone la logique du design, jamais ses contenus.

La frontière éthique et légale : s'inspirer, pas copier

Parlons franchement de la ligne à ne pas franchir, parce qu'elle est plus nette que ce qu'on croit. Les idées de design — une grille, des proportions, un rythme d'espacements, le principe d'une palette douce — ne s'approprient pas : tout le web s'inspire de tout le web, et c'est ainsi que les standards progressent. En revanche, les assets sont des œuvres protégées : logos, illustrations, photos, icônes dessinées sur mesure, textes. Les copier n'est pas de l'inspiration, c'est de la contrefaçon — peu importe que ce soit « juste pour s'inspirer » ou que Claude l'ait fait pour toi.

S’inspirer (OK)Reprendre la logique : grille, hiérarchie, rythme des espacements, principe de palette, type de typographie. Remplacer tous les contenus par les tiens.
Copier (NON)Réutiliser des assets : logos, photos, illustrations, icônes custom, textes. Reproduire pixel-perfect un site identifiable — surtout celui d’un concurrent direct.
Cas particulier à fuir : le concurrent direct. Reproduire de près le site d'un concurrent t'expose au-delà du droit d'auteur — concurrence déloyale et parasitisme sont des terrains juridiques bien réels, et la ressemblance « d'ensemble » peut suffire. La méthode de ce chapitre te protège naturellement (tokens transposés, contenus à toi), mais choisis de préférence tes références hors de ton secteur : Léa s'inspire d'une marque de thé, pas d'une autre marque de cosmétiques.

Garde-fous techniques : verrouiller le projet avec allow/deny

Un chantier de refonte implique beaucoup de commandes : installation de dépendances, serveurs locaux, manipulations de fichiers. C'est le bon moment pour approfondir les permissions du chapitre 2 avec une vraie politique allow/deny écrite dans .claude/settings.json — donc commitée et partagée avec quiconque rejoindra le projet :

json
{
  "permissions": {
    "allow": [
      "Bash(npm run:*)",
      "Bash(npm install:*)",
      "Bash(git add:*)",
      "Bash(git commit:*)",
      "WebFetch(domain:fonts.google.com)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(git push --force:*)",
      "Read(./.env)",
      "Read(./.env.*)"
    ]
  }
}

Lis la liste deny ligne par ligne, car chaque règle raconte un accident évité : rm -rf (la suppression récursive qui emporte un dossier entier sur un chemin mal construit), git push --force (qui peut écraser l'historique partagé), et la lecture de .env — oui, on peut interdire à Claude de lire un fichier : tes clés API n'apparaîtront jamais dans le contexte, donc jamais dans une réponse. Et souviens-toi du chapitre 2 : deny l'emporte toujours sur allow, même si une règle d'autorisation large l'englobe.

Complète avec CLAUDE.local.md pour tes préférences personnelles de chantier : « le serveur de prévisualisation tourne sur le port 4321 », « mes captures de référence sont dans ~/Bureau/refs/ ». Ces détails t'appartiennent ; ils n'ont rien à faire dans la mémoire commune du projet.

Permission ou hook : deux serrures complémentaires

Tu disposes maintenant de deux mécanismes de protection, et il est utile de voir précisément comment ils s'articulent :

Permission (a priori)Bloque AVANT toute tentative : la commande interdite n’est même pas proposée. Statique, déclarée dans settings.json, idéale pour les interdits absolus (rm -rf, lecture de .env).
Hook (a posteriori du déclenchement)Inspecte l’action au moment où elle se déclenche, avec sa logique à toi (le quality gate du chapitre 5). Dynamique : peut examiner le CONTENU et rendre une décision au cas par cas, puis guider la correction.

La règle de répartition : ce qui est interdit toujours et partout relève des permissions — c'est binaire, autant le déclarer une fois. Ce qui dépend du contenu (« ce post dépasse-t-il la limite ? respecte-t-il la voix ? ») relève d'un hook, car il faut examiner pour décider. Les deux couches ensemble, plus la validation humaine au point de levier (chapitre 7), forment la défense en profondeur de ton système : Léa peut laisser Claude travailler vite précisément parce que les garde-fous, eux, ne dorment jamais.

🛠️ À toi de jouer

Contexte

Léa a trouvé sa référence : le site d'une marque de thé japonaise, épuré et chaleureux — et hors de son secteur, comme recommandé. Elle veut une nouvelle page d'accueil qui respire la même qualité, avec ses produits, ses photos et sa palette vert sauge. Avant de lancer le chantier, elle veut aussi verrouiller le projet : pas question qu'une commande malheureuse efface un dossier ou expose ses clés API.

Consignes

  1. Mets en place la politique allow/deny du chapitre dans .claude/settings.json, puis vérifie le verrou : demande à Claude de lire .env et constate le refus.
  2. Capture la page d’accueil du site de référence (vue entière + 2 zooms) et glisse les images dans Claude Code.
  3. Lance le prompt d’analyse structurée et corrige le point « signature » si l’analyse rate ce que tu aimes vraiment.
  4. Génère tokens.css avec le prompt d’extraction, en transposant vers la palette de Léa (vert sauge, crème, brun).
  5. Fais construire la page avec les contenus et photos de Léa, en consommant exclusivement les tokens.
  6. Capture ta page, lance le prompt de comparaison « 10 différences » et applique les corrections une par une — refuse celles qui dégradent tes contenus.
  7. Termine par une passe éthique : vérifie qu’aucun asset (photo, logo, texte, icône) ne provient du site de référence, puis demande à Claude de mettre à jour CLAUDE.md avec les conventions de design établies.
Indice — Si la comparaison te semble fade, donne les deux captures dans le MÊME message et exige un classement par impact visuel : Claude priorise alors les écarts qui comptent, pas les détails.

En résumé

  • Claude Code lit les images : capture le site admiré et demande une analyse structurée (layout, palette, typo, espacements, hiérarchie) avant tout code.
  • Les design tokens (variables CSS) séparent le système de design des valeurs : tu gardes la logique, tu remplaces les couleurs et contenus par les tiens.
  • Reconstruis avec TES contenus en consommant exclusivement les tokens — aucune valeur en dur.
  • Itère par écarts : « liste les 10 différences les plus visibles, corrige-les une par une » — la boucle d’affinage du chapitre 4, appliquée au pixel.
  • WebFetch sur une URL publique révèle la technique (grille, responsive) — pour comprendre, jamais pour copier des assets.
  • S’inspirer d’un layout = OK ; copier logos, photos, textes, illustrations = contrefaçon ; cloner un concurrent direct = danger juridique réel.
  • La politique allow/deny de settings.json bloque a priori les interdits absolus (rm -rf, push --force, lecture de .env) ; deny l’emporte toujours.
  • Permissions (a priori, binaires) et hooks (au déclenchement, selon le contenu) forment ensemble la défense en profondeur du projet.

Quiz — vérifie ta compréhension

1. Quelle est la première étape de la méthode pour reproduire un design admiré ?

L'analyse structurée transforme une impression visuelle en spécifications exploitables — et le « ne génère aucun code » te laisse valider avant de construire.

2. À quoi servent les design tokens dans cette méthode ?

Les tokens codifient la logique (contrastes, échelles, rythme) en variables CSS : c'est le moment où la copie devient une création informée, aux couleurs de Léa.

3. Lequel de ces éléments peux-tu légitimement reprendre d’un site que tu admires ?

Les idées de design (grille, proportions, hiérarchie) ne s'approprient pas. Les assets — photos, logos, illustrations, textes — sont des œuvres protégées : les copier est de la contrefaçon.

4. Pourquoi éviter de reproduire de près le site d’un concurrent direct ?

Le risque juridique dépasse les assets : imiter l'identité visuelle d'un concurrent identifiable expose à des terrains comme le parasitisme. Choisis tes références hors de ton secteur.

5. Que permet la règle "Read(./.env)" dans la liste deny ?

On peut interdire la lecture d'un fichier : les secrets ne peuvent alors ni apparaître dans une réponse ni fuiter dans le contexte. Et deny l'emporte toujours sur allow.

6. Permission ou hook : comment répartir les protections ?

Ce qui est interdit toujours et partout se déclare une fois dans settings.json ; ce qui demande d'examiner le contenu (limites, voix de marque) relève d'un hook comme le quality gate.

Auteur(s)

R

REHOUMA Haythem

Haythem Rehouma est un ingénieur et architecte IA et cloud, formateur et enseignant technique, avec un profil orienté IA médicale, AWS, MLOps, LLM/RAG et vision par ordinateur.