@truix-dev/kayim-site-cloner 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 KOUAKOU ATSE YATCHITCHEBE ISMAEL MONDESIRE
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,126 @@
1
+ # site-cloner
2
+
3
+ Un [Agent Skill](https://agentskills.io) pour Claude et d'autres agents IA codeurs qui clone un site web à partir d'une URL : récupération du HTML, capture visuelle, extraction du design system (couleurs, typographie, breakpoints, spacing), puis reconstruction propre en composants **Next.js / TypeScript / Tailwind** — jamais un copier-coller du code source.
4
+
5
+ Compatible avec **Claude Code**, **Claude.ai** (skills personnalisés) et tout outil qui suit le standard [Agent Skills](https://agentskills.io).
6
+
7
+ ## Ce que fait ce skill
8
+
9
+ 1. **Fetch** — récupère la structure et le contenu de la page cible
10
+ 2. **Capture visuelle** — inspecte le rendu réel (desktop + mobile) quand un outil de screenshot est disponible ; sinon demande une capture à l'utilisateur si nécessaire
11
+ 3. **Extraction du design system** — couleurs, typographie, breakpoints, échelle d'espacement, style des composants (voir [references/design-system-extraction.md](site-cloner/references/design-system-extraction.md) pour la méthodologie complète)
12
+ 4. **Reconstruction** — génère des composants `.tsx` réutilisables en Tailwind, alignés sur les conventions du projet cible
13
+ 5. **Passe de cohérence visuelle** — s'appuie sur un skill de design frontend si disponible, pour éviter l'effet "clone mécanique"
14
+
15
+ Le skill rappelle aussi de vérifier la légitimité du clonage (site concurrent, contenu propriétaire) avant de se lancer, sans bloquer le travail pour un usage légitime (inspiration, prototypage, landing pages génériques).
16
+
17
+ ## Installation
18
+
19
+ ### ⚡ Installation ultra-rapide (Recommandée)
20
+
21
+ Ouvre ton terminal dans le dossier de ton projet, choisis l'une des commandes ci-dessous et appuie sur **Entrée** :
22
+
23
+ #### 🚀 Option 1 — Via NPX (Node.js) :
24
+ ```bash
25
+ npx @truix-dev/kayim-site-cloner
26
+ ```
27
+
28
+ #### 💻 Option 2 — Sans Node.js (Directement dans le terminal) :
29
+
30
+ **Sur Windows (PowerShell) :**
31
+ ```powershell
32
+ irm https://raw.githubusercontent.com/Kouakou-web-ai/site-cloner/main/install.ps1 | iex
33
+ ```
34
+
35
+ **Sur macOS / Linux / WSL / Git Bash :**
36
+ ```bash
37
+ curl -fsSL https://raw.githubusercontent.com/Kouakou-web-ai/site-cloner/main/install.sh | bash
38
+ ```
39
+
40
+ > **Note :** Ces commandes installent automatiquement le skill à la fois dans ton projet actuel (`./.claude/skills/site-cloner`) et dans tes skills globaux (`~/.claude/skills/site-cloner`).
41
+
42
+ ---
43
+
44
+ #### 🎬 Résultat animé qui s'affiche dans ton terminal :
45
+
46
+ ```text
47
+ _ __ _ __ _____ __ __
48
+ | |/ / / \ \ / /_ _| \/ |
49
+ | ' / / _ \ \ / / | || |\/| |
50
+ | . \ / ___ \ Y / | || | | |
51
+ |_|\_\ /_/ \_\_/ |___|_| |_|
52
+ ===========================================
53
+ ⚡ TRUIX DEV — SITE CLONER INSTALLER ⚡
54
+ ===========================================
55
+
56
+ ✔ Détection de l'environnement Claude Code... [OK]
57
+ ✔ Téléchargement du skill site-cloner... [████████████████████] 100%
58
+ ✔ Installé dans le projet actuel : ./.claude/skills/site-cloner
59
+ ✔ Installé au niveau global : ~/.claude/skills/site-cloner
60
+
61
+ ┌────────────────────────────────────────────────────────┐
62
+ │ 🎉 Installation réussie avec succès ! │
63
+ │ │
64
+ │ Auteur : KAYIM (TRUIX DEV) │
65
+ │ Skill : site-cloner v1.0.0 │
66
+ │ Usage : Tapez /skills dans Claude Code pour tester │
67
+ └────────────────────────────────────────────────────────┘
68
+ ```
69
+
70
+ Une fois installé, vérifie avec `/skills` dans Claude Code — `site-cloner` apparaîtra dans la liste.
71
+
72
+ ### Installation manuelle
73
+
74
+ Si tu préfères cloner manuellement :
75
+
76
+ **Option A — dans tes skills personnels (tous tes projets) :**
77
+ ```bash
78
+ git clone https://github.com/Kouakou-web-ai/site-cloner.git /tmp/site-cloner
79
+ mkdir -p ~/.claude/skills
80
+ cp -r /tmp/site-cloner/site-cloner ~/.claude/skills/
81
+ rm -rf /tmp/site-cloner
82
+ ```
83
+
84
+ **Option B — dans un seul projet :**
85
+ ```bash
86
+ git clone https://github.com/Kouakou-web-ai/site-cloner.git /tmp/site-cloner
87
+ mkdir -p .claude/skills
88
+ cp -r /tmp/site-cloner/site-cloner .claude/skills/
89
+ rm -rf /tmp/site-cloner
90
+ ```
91
+
92
+ ### Claude.ai (skill personnalisé)
93
+
94
+ Télécharge ce repo en `.zip` (bouton vert **Code → Download ZIP** sur GitHub), ne garde que le dossier `site-cloner/` à l'intérieur, zippe-le seul, puis importe-le dans **Réglages → Capacités → Skills** sur claude.ai.
95
+
96
+ ## Utilisation
97
+
98
+ Donne simplement une URL à Claude avec une intention de clonage/inspiration :
99
+
100
+ > Clone ce site pour moi en Next.js/Tailwind : https://exemple.com
101
+
102
+ > Reconstruis cette landing page en gardant mon design system actuel : https://exemple.com
103
+
104
+ Le skill se déclenche automatiquement dès qu'une URL est fournie avec ce type d'intention — pas besoin de l'invoquer par nom.
105
+
106
+ ## Structure
107
+
108
+ ```
109
+ site-cloner/
110
+ ├── SKILL.md # Instructions principales (chargées à l'activation)
111
+ └── references/
112
+ └── design-system-extraction.md # Méthodologie détaillée d'extraction (chargée à la demande)
113
+ ```
114
+
115
+ ## Limites connues
116
+
117
+ - La capture d'écran automatique dépend des outils disponibles dans l'environnement d'exécution (navigateur headless, MCP de browsing). Sans ça, le skill travaille à partir du HTML/CSS et demande une capture manuelle si une fidélité visuelle précise est nécessaire.
118
+ - Le skill ne copie jamais de contenu texte propriétaire verbatim (voir la section légitimité dans `SKILL.md`).
119
+
120
+ ## Licence
121
+
122
+ MIT — voir [LICENSE](LICENSE). Utilise, modifie et redistribue librement.
123
+
124
+ ## Contribuer
125
+
126
+ Les PR sont bienvenues — en particulier pour étendre le support à d'autres stacks (Vue, Svelte...) ou affiner la méthodologie d'extraction du design system.
package/bin/index.js ADDED
@@ -0,0 +1,96 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const os = require('os');
6
+
7
+ // --- Couleurs ANSI (Thème Violet KAYIM & TRUIX DEV) ---
8
+ const VIOLET_LIGHT = '\x1b[38;5;141m';
9
+ const VIOLET_MID = '\x1b[38;5;135m';
10
+ const VIOLET_DEEP = '\x1b[38;5;129m';
11
+ const VIOLET_SOFT = '\x1b[38;5;147m';
12
+ const BOLD_VIOLET = '\x1b[1;38;5;135m';
13
+ const BOLD_WHITE = '\x1b[1;37m';
14
+ const GREEN = '\x1b[1;32m';
15
+ const CYAN = '\x1b[38;5;117m';
16
+ const RESET = '\x1b[0m';
17
+
18
+ // Nettoyer l'écran
19
+ console.clear();
20
+ console.log('');
21
+
22
+ // --- Banner KAYIM & TRUIX DEV ---
23
+ console.log(`${VIOLET_LIGHT} _ __ _ __ _____ __ __ ${RESET}`);
24
+ console.log(`${VIOLET_MID} | |/ / / \\ \\ / /_ _| \\/ |${RESET}`);
25
+ console.log(`${VIOLET_MID} | ' / / _ \\ \\ / / | || |\\/| |${RESET}`);
26
+ console.log(`${VIOLET_DEEP} | . \\ / ___ \\ Y / | || | | |${RESET}`);
27
+ console.log(`${VIOLET_DEEP} |_|\\_\\ /_/ \\_\\_/ |___|_| |_|${RESET}`);
28
+ console.log(`${VIOLET_SOFT} ===========================================${RESET}`);
29
+ console.log(`${BOLD_VIOLET} ⚡ TRUIX DEV — SITE CLONER INSTALLER ⚡${RESET}`);
30
+ console.log(`${VIOLET_SOFT} ===========================================${RESET}`);
31
+ console.log('');
32
+
33
+ // Helper pour attendre (sleep)
34
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
35
+
36
+ async function run() {
37
+ // 1. Spinner animé de détection
38
+ const spinChars = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
39
+ const msg1 = "Détection de l'environnement Claude Code...";
40
+ for (let i = 0; i < 12; i++) {
41
+ const c = spinChars[i % spinChars.length];
42
+ process.stdout.write(`\r ${VIOLET_LIGHT}${c}${RESET} ${msg1}`);
43
+ await sleep(60);
44
+ }
45
+ process.stdout.write(`\r ${GREEN}✔${RESET} ${msg1} ${GREEN}[OK]${RESET}\n`);
46
+
47
+ // 2. Barre de progression animée
48
+ const msg2 = 'Téléchargement du skill site-cloner';
49
+ const total = 20;
50
+ for (let i = 1; i <= total; i++) {
51
+ await sleep(35);
52
+ const filled = '█'.repeat(i);
53
+ const empty = ' '.repeat(total - i);
54
+ const percent = Math.round((i / total) * 100);
55
+ process.stdout.write(`\r ${VIOLET_LIGHT}⠙${RESET} ${msg2}... [${VIOLET_MID}${filled}${RESET}${empty}] ${percent}%`);
56
+ }
57
+ process.stdout.write(`\r ${GREEN}✔${RESET} ${msg2}... [${VIOLET_LIGHT}${'█'.repeat(total)}${RESET}] 100%\n`);
58
+
59
+ // 3. Déploiement des fichiers
60
+ const sourceDir = path.resolve(__dirname, '..', 'site-cloner');
61
+
62
+ if (!fs.existsSync(sourceDir)) {
63
+ console.error(`\n ❌ Erreur: Dossier source ${sourceDir} introuvable.`);
64
+ process.exit(1);
65
+ }
66
+
67
+ // Cible 1 : Projet courant
68
+ const localTarget = path.resolve(process.cwd(), '.claude', 'skills', 'site-cloner');
69
+ fs.mkdirSync(path.dirname(localTarget), { recursive: true });
70
+ fs.cpSync(sourceDir, localTarget, { recursive: true, force: true });
71
+
72
+ // Cible 2 : Global (~/.claude/skills)
73
+ const homeDir = os.homedir();
74
+ const globalTarget = path.resolve(homeDir, '.claude', 'skills', 'site-cloner');
75
+ fs.mkdirSync(path.dirname(globalTarget), { recursive: true });
76
+ fs.cpSync(sourceDir, globalTarget, { recursive: true, force: true });
77
+
78
+ console.log(` ${GREEN}✔${RESET} Installé dans le projet actuel : ${CYAN}./.claude/skills/site-cloner${RESET}`);
79
+ console.log(` ${GREEN}✔${RESET} Installé au niveau global : ${CYAN}~/.claude/skills/site-cloner${RESET}`);
80
+ console.log('');
81
+
82
+ // 4. Encadré final de succès
83
+ console.log(`${VIOLET_MID} ┌────────────────────────────────────────────────────────┐${RESET}`);
84
+ console.log(`${VIOLET_MID} │${RESET} ${BOLD_WHITE}🎉 Installation réussie avec succès !${RESET} ${VIOLET_MID}│${RESET}`);
85
+ console.log(`${VIOLET_MID} │${RESET} ${VIOLET_MID}│${RESET}`);
86
+ console.log(`${VIOLET_MID} │${RESET} ${BOLD_VIOLET}Auteur :${RESET} ${BOLD_WHITE}KAYIM (TRUIX DEV)${RESET} ${VIOLET_MID}│${RESET}`);
87
+ console.log(`${VIOLET_MID} │${RESET} ${BOLD_VIOLET}Skill :${RESET} site-cloner v1.0.0 ${VIOLET_MID}│${RESET}`);
88
+ console.log(`${VIOLET_MID} │${RESET} ${BOLD_VIOLET}Usage :${RESET} Tapez ${CYAN}/skills${RESET} dans Claude Code pour tester ${VIOLET_MID}│${RESET}`);
89
+ console.log(`${VIOLET_MID} └────────────────────────────────────────────────────────┘${RESET}`);
90
+ console.log('');
91
+ }
92
+
93
+ run().catch((err) => {
94
+ console.error('\n❌ Une erreur est survenue :', err.message);
95
+ process.exit(1);
96
+ });
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@truix-dev/kayim-site-cloner",
3
+ "version": "1.0.0",
4
+ "description": "Agent Skill for Claude Code to clone web apps cleanly into Next.js & Tailwind. By KAYIM (TRUIX DEV).",
5
+ "main": "bin/index.js",
6
+ "bin": {
7
+ "kayim-site-cloner": "./bin/index.js"
8
+ },
9
+ "files": [
10
+ "bin",
11
+ "site-cloner"
12
+ ],
13
+ "publishConfig": {
14
+ "access": "public"
15
+ },
16
+ "keywords": [
17
+ "agent-skills",
18
+ "claude-code",
19
+ "site-cloner",
20
+ "kayim",
21
+ "truix-dev",
22
+ "ai-agent",
23
+ "nextjs",
24
+ "tailwind"
25
+ ],
26
+ "author": "KAYIM (TRUIX DEV)",
27
+ "license": "MIT",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/Kouakou-web-ai/site-cloner.git"
31
+ },
32
+ "bugs": {
33
+ "url": "https://github.com/Kouakou-web-ai/site-cloner/issues"
34
+ },
35
+ "homepage": "https://github.com/Kouakou-web-ai/site-cloner#readme"
36
+ }
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: site-cloner
3
+ description: Clone un site web à partir d'un lien fourni par l'utilisateur — récupère le HTML/CSS, tente une capture visuelle, extrait le design system (couleurs, typographie, breakpoints, espacements), puis reconstruit le résultat en composants Next.js/TypeScript/Tailwind propres et cohérents (jamais un copier-coller du code source). Utilise systématiquement ce skill dès que l'utilisateur donne une URL et demande de "cloner", "reproduire", "s'inspirer de", "recréer le design de", "reconstruire" ou "faire un site/une page qui ressemble à" un site existant — même si le mot "cloner" n'est pas utilisé explicitement.
4
+ license: MIT
5
+ ---
6
+
7
+ # Site Cloner
8
+
9
+ Reconstruit un site web existant (à partir d'une URL) sous forme de composants Next.js/TypeScript/Tailwind propres, fidèles visuellement mais jamais copiés bruts. Le but n'est pas de dupliquer le code source (souvent minifié, illisible, non conventionnel) mais de comprendre le design et de le reconstruire proprement.
10
+
11
+ ## Avant de commencer : vérifier la légitimité
12
+
13
+ Si l'URL correspond à un concurrent direct de l'utilisateur, à un site avec une identité de marque forte (logo, charte, contenu propriétaire), ou si l'utilisateur veut une reproduction pixel-perfect destinée à la mise en prod publique, fais une remarque brève (une phrase) avant de continuer — pas besoin de bloquer, juste s'assurer que c'est bien de l'inspiration/prototypage et pas une duplication problématique. Pour un site de référence générique (landing page, portfolio, SaaS non concurrent), continue directement sans poser de question.
14
+
15
+ Ne copie jamais de contenu texte propriétaire (textes marketing, témoignages clients, articles) verbatim — reformule ou utilise un contenu placeholder, sauf si l'utilisateur possède le site ou a explicitement les droits dessus.
16
+
17
+ ## Workflow
18
+
19
+ ### Étape 1 — Fetch de la page
20
+
21
+ Récupère le contenu rendu de l'URL fournie (structure, texte, liens, images référencées) avec l'outil de fetch web disponible dans l'environnement.
22
+
23
+ Si tu as besoin du HTML/CSS brut (classes, structure DOM exacte, variables CSS) plutôt que du texte extrait, et que l'environnement le permet, complète avec une requête brute (ex: `curl`) sur le domaine cible. Dans la plupart des cas, un fetch avec extraction texte/markdown suffit pour comprendre la structure ; pour les détails fins de CSS (couleurs exactes, media queries), privilégie l'inspection visuelle (étape 2) plutôt que de parser du CSS minifié.
24
+
25
+ Note ce que tu identifies :
26
+ - Structure de la page (header, hero, sections, footer, nav)
27
+ - Composants récurrents (cards, boutons, formulaires)
28
+ - Contenu texte (à reformuler, voir section précédente)
29
+
30
+ ### Étape 2 — Capture visuelle
31
+
32
+ Le rendu réel (mise en page, espacements, responsive) est ce qui compte le plus pour un clonage fidèle — le HTML seul ne suffit pas à percevoir l'agencement visuel.
33
+
34
+ - Si un outil de capture d'écran / navigateur headless est disponible (MCP de browsing, Chrome, Playwright avec accès réseau au domaine), utilise-le pour obtenir un screenshot desktop et un screenshot mobile.
35
+ - **Si aucun outil de ce type n'est disponible** : base-toi sur le HTML/texte extrait à l'étape 1 pour déduire la structure, et **demande à l'utilisateur une capture d'écran** (desktop + mobile si pertinent) s'il a besoin d'une fidélité visuelle précise — notamment pour les espacements, les proportions, ou un design complexe. Ne bloque pas le travail en attendant : propose une première reconstruction basée sur le HTML, et affine si l'utilisateur fournit des captures.
36
+
37
+ ### Étape 3 — Extraction du design system
38
+
39
+ À partir du HTML/CSS récupéré et/ou des captures d'écran, identifie couleurs, typographie, breakpoints, spacing scale et style des composants.
40
+
41
+ Pour la méthodologie détaillée d'extraction (où chercher chaque token, comment déduire une palette à partir d'un screenshot, comment identifier une échelle d'espacement cohérente), consulte [references/design-system-extraction.md](references/design-system-extraction.md).
42
+
43
+ Présente le design system extrait sous forme de résumé structuré (pas juste dans le code) avant de passer à la reconstruction, pour que l'utilisateur puisse valider ou ajuster.
44
+
45
+ ### Étape 4 — Reconstruction en Next.js/TypeScript/Tailwind
46
+
47
+ Ne copie jamais le code source brut. Reconstruis :
48
+
49
+ - **Composants réutilisables** (`.tsx`), typés, découpés logiquement (ex: `Hero.tsx`, `PricingCard.tsx`, `Navbar.tsx`) — livrés comme fichiers prêts à être intégrés dans un projet existant, pas comme un projet Next.js complet avec sa propre structure de dossiers, sauf si l'utilisateur demande explicitement un projet autonome.
50
+ - **Tailwind** : traduis le design system extrait en classes Tailwind ; si des couleurs/tailles reviennent souvent, propose les entrées correspondantes pour `tailwind.config` plutôt que des valeurs arbitraires répétées partout.
51
+ - **Conventions du projet cible** : si l'utilisateur a un projet ouvert avec ses propres conventions (gestion d'état, structure de dossiers `app/`, etc.), aligne-toi dessus plutôt que d'imposer une structure générique.
52
+ - **Responsive** : reproduis le comportement observé aux breakpoints identifiés, pas juste le rendu desktop.
53
+
54
+ ### Étape 5 — Passage par un skill de design (si disponible)
55
+
56
+ Avant de livrer le résultat final, si un skill de design frontend (ex: `frontend-design`) est disponible dans l'environnement, consulte-le et applique ses principes pour :
57
+
58
+ - Vérifier que la hiérarchie typographique est intentionnelle et pas juste calquée mécaniquement
59
+ - Éviter les défauts génériques si le site source lui-même avait des tics de template
60
+ - S'assurer que l'ensemble a une cohérence visuelle réelle, pas un assemblage de composants clonés indépendamment
61
+
62
+ C'est cette étape qui évite l'effet "clone mécanique moche" : le but final est un résultat qui a l'air pensé, pas recopié.
63
+
64
+ ## Livraison
65
+
66
+ - Résume en quelques lignes ce qui a été extrait (design system) et ce qui a été reconstruit.
67
+ - Si le résultat dépasse ~20 lignes de code ou plusieurs composants, livre-le comme fichier(s) plutôt qu'inline dans la conversation.
68
+ - Signale explicitement tout ce que tu n'as pas pu vérifier faute de capture d'écran (ex: "espacements approximatifs, à ajuster avec un visuel").
@@ -0,0 +1,53 @@
1
+ # Extraction du design system — méthodologie
2
+
3
+ Guide de référence pour l'étape 3 du workflow `site-cloner`. Consulte ce fichier quand tu as le HTML/CSS et/ou les captures d'écran en main et que tu dois en extraire un design system exploitable.
4
+
5
+ ## Couleurs
6
+
7
+ Ordre de priorité pour trouver la palette :
8
+
9
+ 1. **Variables CSS** (`:root { --primary: ... }`) si présentes dans le `<style>` ou les fichiers CSS liés — c'est la source la plus fiable.
10
+ 2. **Classes utilitaires répétées** (ex: classes Tailwind déjà présentes sur le site source, `bg-[#1a2b3c]`) — indiquent directement les valeurs hex.
11
+ 3. **Inspection visuelle du screenshot** — repère : couleur de fond principale, couleur du texte principal, couleur d'accent (boutons CTA, liens), couleur secondaire (souvent dans les badges/tags), couleurs d'état (succès/erreur si visibles).
12
+
13
+ Restitue une palette de 5 à 8 couleurs maximum (fond, texte, primaire, secondaire, accent, + variantes clair/foncé si le site a un mode sombre). Ne complique pas avec 20 nuances si le site n'en utilise réellement que 5-6.
14
+
15
+ ## Typographie
16
+
17
+ - Cherche les imports Google Fonts dans le `<head>` (`<link href="fonts.googleapis.com/...">`) ou les `@import` CSS — c'est la source la plus directe.
18
+ - Si aucun import trouvé, identifie la famille par son style visuel dans le screenshot (serif vs sans-serif, géométrique vs humaniste) et propose une police proche disponible sur Google Fonts.
19
+ - Relève la hiérarchie : taille du H1, du H2, du corps de texte, et les graisses utilisées (regular/medium/bold). Un site pro utilise rarement plus de 4-5 paliers de taille.
20
+ - Note si une police différente est utilisée pour les titres vs le corps de texte (pattern courant : une police display pour les titres, une police neutre pour le corps).
21
+
22
+ ## Breakpoints
23
+
24
+ - Cherche les `@media` queries dans le CSS pour les valeurs exactes.
25
+ - À défaut, déduis du comportement observé : la plupart des sites modernes suivent des paliers standards proches de ceux de Tailwind (640px, 768px, 1024px, 1280px). Sauf signal contraire, aligne-toi sur ces valeurs plutôt que d'inventer des breakpoints personnalisés — ça simplifie l'intégration dans un projet Tailwind existant.
26
+
27
+ ## Spacing scale
28
+
29
+ - Repère l'unité de base récurrente dans les marges/paddings (souvent 4px ou 8px comme incrément).
30
+ - Une échelle cohérente suit généralement une progression régulière (4, 8, 12, 16, 24, 32, 48, 64...). Si les valeurs observées sont irrégulières, c'est probablement dû à l'imprécision de l'extraction plutôt qu'à un vrai choix de design — arrondis à l'échelle standard la plus proche plutôt que de reproduire des valeurs bizarres comme `13px` ou `27px`.
31
+
32
+ ## Style des composants
33
+
34
+ À noter séparément pour chaque type de composant récurrent (boutons, cards, inputs, nav) :
35
+
36
+ - **Rayon de bordure** : anguleux (0-2px), légèrement arrondi (4-8px), très arrondi (12px+), ou pill (9999px)
37
+ - **Ombres** : absentes, subtiles (élévation légère), marquées (effet "flottant")
38
+ - **Transitions/animations visibles** : hover states, transitions de couleur, micro-interactions
39
+ - **Bordures** : présence de bordures fines vs séparation uniquement par l'espace/l'ombre
40
+
41
+ ## Présentation du résumé à l'utilisateur
42
+
43
+ Structure recommandée avant de passer à la reconstruction :
44
+
45
+ ```
46
+ Couleurs : fond #FFF, texte #1A1A1A, primaire #2563EB, accent #F59E0B
47
+ Typographie : Inter (corps), Poppins (titres) — H1 40px/bold, H2 28px/semibold, body 16px/regular
48
+ Breakpoints : standards Tailwind (sm/md/lg/xl)
49
+ Spacing : échelle 4px, incréments principaux 8/16/24/32/48
50
+ Composants : boutons pill avec ombre légère au hover, cards à coins arrondis 12px sans bordure
51
+ ```
52
+
53
+ Ce résumé sert de base de validation avant de générer le code — il coûte peu de temps et évite de reconstruire deux fois si l'utilisateur veut ajuster une couleur ou une police avant que le code ne soit généré.