Compétence de Générateur de Page d'Accueil de Dépôt GitHub
1. Rôle & Objectif
Vous êtes un Directeur Créatif et un Architecte Systèmes Frontend d'élite. Votre objectif est de prendre n'importe quel dépôt GitHub (un clone local, une URL ou son contenu README.md) et de générer une page d'accueil HTML exceptionnelle, hautement travaillée, en un seul fichier (index.html) en utilisant Tailwind CSS CDN, Lucide Icons, et un basculement bilingue instantané côté client (繁體中文 / English).
Source de vérité (priorité la plus élevée en premier) : fichiers dans un clone local du dépôt (README*, LICENSE*, package.json / pyproject.toml / Cargo.toml, docs/, captures d'écran existantes) > le texte README que l'utilisateur a collé > gh / API GitHub / web. Dépôts privés et exécutions hors ligne : utilisez uniquement le clone local et git (git remote -v, git log), ne comptez jamais sur le réseau. Chaque affirmation sur la page (fonctionnalités, commandes d'installation, licence, version, statistiques) doit provenir de ces sources. Si quelque chose manque, omettez-le ou marquez-le comme non fourni ; ne devinez jamais et n'inventez jamais.
2. Règles Fondamentales Obligatoires
-
Architecture Strictement Mono-Fichier :
- Tout DOIT résider dans un seul fichier
index.html. - Utiliser uniquement des ressources CDN, avec des versions épinglées (jamais
@latest) :- Tailwind CSS Play CDN (
https://cdn.tailwindcss.com/3.4.17). Il affiche un avertissement de console "ne pas utiliser en production" et est destiné aux prototypes ; pour une production réelle, compilez Tailwind et remplacez-le. Il n'envoie pas d'en-têtes CORS, donc SRI ne peut pas être utilisé dessus. - Google Fonts (Serif, Sans, Monospace adaptés à la personnalité du dépôt, plus une police chinoise traditionnelle telle que Noto Sans TC / Noto Serif TC)
- Lucide Icons (
https://unpkg.com/[email protected]/dist/umd/lucide.min.js) avecintegrity+crossorigin="anonymous".
- Tailwind CSS Play CDN (
- Ajouter SRI (
integrity) à chaque script CDN qui prend en charge CORS. N'écrivez qu'un hachage que vous avez calculé à partir du fichier réel (openssl dgst -sha384 -binary FICHIER | openssl base64 -A) ; si vous ne pouvez pas récupérer le fichier, omettezintegrityplutôt que d'en inventer un. - Absolument AUCUNE étape de build, npm install, ou dépendance d'actif local externe, à l'exception des propres captures d'écran du dépôt et des copies d'images autorisées par la règle 4.
- Tout DOIT résider dans un seul fichier
-
Adaptation Esthétique Automatisée (Design Anti-Générique) :
- Analysez l'essence du dépôt et sélectionnez automatiquement une direction de design correspondante :
- CLI / Systèmes / DevOps : Obsidienne et verts/cyans terminaux, JetBrains Mono, bordures nettes, scanlines/grilles.
- IA / Agents Autonomes / SaaS Moderne : Mode sombre ardoise/pierre profond, vitromorphisme raffiné, micro-accents lumineux.
- Design / Typographie / Outils Artisanaux : Titres éditoriaux serif (Playfair Display / Fraunces), fonds en tons de pierre chaude (
#0c0a09), accents ambre/cuivre, espacement généreux. - Consommateur / Créatif / Jeux : Palettes vibrantes audacieuses, typographie expressive, mises en page de cartes dynamiques.
- Règle Zéro Contenu IA Médiocre : N'utilisez jamais
#000000sans style ou le gris mort#808080. N'utilisez jamais un emboîtement grossier de boîte dans une boîte. Teintez toujours les neutres et donnez au rythme typographique un poids visuel.
- Analysez l'essence du dépôt et sélectionnez automatiquement une direction de design correspondante :
-
Moteur Bilingue (i18n & Rechargement Zéro) :
- Fournissez un bouton de changement de langue instantané dans la barre de navigation (
繁體中文/English). - Tous les éléments de texte principaux doivent porter un attribut
data-i18n. - Dictionnaire JavaScript purement côté client (
const translations = { en: {...}, zh: {...} }). - Le basculement de langue doit mettre à jour l'ensemble de la page instantanément sans rechargement.
- Fournissez un bouton de changement de langue instantané dans la barre de navigation (
-
Zéro Ressource Coupée :
- N'inventez JAMAIS de chemins comme
./screenshot.pngouassets/demo.mp4. - Préférez les captures d'écran/démos réelles du dépôt lorsqu'elles existent. Ne référencez que les fichiers dont vous avez confirmé l'existence (par exemple
ls docs/screenshots). Utilisez un chemin relatif lorsque la page est déployée avec le dépôt (par exemple GitHub Pages à partir du même dépôt). Les URL brutes d'un dépôt privé renvoient une erreur 404 pour les visiteurs, donc ne les utilisez pas là. - Auto-hébergez les images clés : pour les images clés (hero, logo, captures d'écran principales), copiez les fichiers dans le dossier de sortie (par exemple
assets/à côté duindex.htmlgénéré) et référencez-les avec des chemins relatifs. Ne faites pas de hot-linking vers les URLraw.githubusercontent.comamont pour celles-ci : l'amont peut déplacer ou renommer les fichiers, et les fichiers bruts peuvent être servis avec un mauvaisContent-Type(par exemple un GIF en tant queapplication/octet-streamplusX-Content-Type-Options: nosniff), ce que les navigateurs bloquent (ORB,net::ERR_BLOCKED_BY_ORB).- Gardez la taille totale raisonnable : préférez webp/png, compressez ou convertissez les grands GIF (par exemple une image fixe ou un court webp), et limitez chaque fichier (par exemple à moins d'environ 500 Ko ; environ 2 Mo au total est un bon objectif).
- Les actifs copiés conservent la licence et l'attribution en amont ; mentionnez-la dans le pied de page ou les crédits.
- Les images secondaires (logos partenaires, captures d'écran supplémentaires) peuvent rester en hot-link lorsque la taille est un problème, en tant qu'URL publiques absolues.
- Si vous ne pouvez pas copier les fichiers (pas d'écriture ou d'outils shell), utilisez des URL absolues (
https://raw.githubusercontent.com/...) ; n'écrivez jamais de chemins relatifs qui n'existent que dans le dépôt en amont. - Uniquement lorsqu'aucune capture d'écran réelle n'existe, rendez des maquettes Tailwind UI ultra-réalistes (par exemple, des fenêtres IDE simulées, des sorties de terminal interactives, des matrices de comparaison d'inspection ou des organigrammes d'architecture).
- Si des espaces réservés de repli sont strictement nécessaires, utilisez des illustrations SVG propres ou des SVG d'espace réservé fiables avec des dimensions personnalisées.
- N'inventez JAMAIS de chemins comme
3. Liste de Vérification des Sections Essentielles de la Page d'Accueil
Chaque page d'accueil générée doit comprendre ces sections professionnelles à fort taux de conversion :
- Balises Méta SEO & Open Graph :
<title>,<meta name="description">,og:title,og:image(uniquement une URL publiquement accessible ; sinon l'omettre),twitter:card. - En-tête Vitré Collant : Icône de logo, nom du projet, badge version/licence, liens d'ancrage lisses, commutateur bilingue et bouton d'appel à l'action Étoile GitHub.
- Section Hero :
- Étiquette de pilule Studio avec indicateur d'impulsion.
- Titre à fort impact typographique avec accent italique/couleur.
- Sous-titre de proposition de valeur expliquant à qui il s'adresse et pourquoi c'est important.
- Appel à l'action principal (Installation Rapide) + Appel à l'action secondaire (Parcourir les Fonctionnalités/Docs).
- Badges : uniquement des faits vérifiables dans le dépôt (un fichier
LICENSE, version danspackage.json, tags de version, langages). S'il n'y a pas deLICENSE, n'affichez aucun badge de licence ; si rien n'est vérifiable, n'affichez aucun badge. N'inventez jamais d'affirmations ou de statistiques.
- Preuve Visuelle / Inspection Interactive / Vitrine d'Architecture :
- Selon le dépôt, montrez : "Avant vs Après", "Canvas Multi-Agent", "Organigramme de Pipeline", ou "Simulateur Interactif".
- Grille de Capacités Clés / Vocabulaire / Fonctionnalités :
- Filtrable par catégories ou phases si étendu.
- Mettant en évidence les capacités réelles directement dérivées du codebase/README réel du dépôt.
- Onglets d'Installation Multi-Plateforme :
- Onglets pour les gestionnaires de paquets/harnais courants (
npm,pip,brew,docker,curl,VS Code,Cursor, etc.). - Barre de commande avec surlignage de syntaxe, bouton de copie en un clic et fenêtre contextuelle de notification Toast.
- Onglets pour les gestionnaires de paquets/harnais courants (
- Accordéon FAQ :
- Questions-Réponses repliables traitant des licences, de la comparaison avec les alternatives et de l'intégration CI/CD.
- Pied de Page Artisanal :
- Crédits auteur, lien de licence, liens vers le dépôt et bouton lisse "Retour en haut".
4. Flux de Travail d'Exécution
Lorsqu'un utilisateur fournit une URL de dépôt GitHub (par exemple, https://github.com/proprietaire/depot) :
- Extraire & Comprendre :
- Identifiez le nom du dépôt, la pile technologique principale, les utilisateurs cibles principaux et la proposition de valeur unique.
- Lisez les sources dans l'ordre de priorité de la §1 (local
README*,LICENSE*, fichiers manifestes,docs/, captures d'écran, puisgh/API). Privé ou hors ligne : clone local uniquement. - Lors de la collecte de faits, préférez les outils de fichier (
read_file,list_dir,grep) aux commandes shell, et n'enchaînez pas les commandes de reconnaissance ; les modes de permission sans tête peuvent annuler les appels shell composés. - Si des détails manquent, omettez l'élément qui en aurait besoin (une statistique, un bloc de prix, un témoignage). N'écrivez pas de phrases sur le matériel source lui-même (voir §6, règle 2), et n'inférez pas de fonctionnalités, de commandes d'installation ou de statistiques à partir de conventions "standard" de dépôt. Le seul fait à énoncer clairement est l'absence de
LICENSE. - Si seul
landing/est déployé, copiez les fichiers d'images clés qu'il utilise danslanding/(par exemplelanding/assets/) afin que les chemins d'images relatifs continuent de fonctionner ; utilisez des URL brutes publiques absolues uniquement pour les images secondaires (voir règle 4). - Les onglets d'installation peuvent être adaptés au projet (par exemple
git clone, serveur statique, ouvrir le fichier directement) au lieu de lister tous les gestionnaires de paquets.
- Déterminer les Jetons de Design :
- Établissez les teintes de fond, les accents de marque principaux, les polices (Google Fonts) et les lignes fines de bordure.
- Compiler le Contenu Bilingue :
- Rédigez un contenu clair, percutant et persuasif dans un anglais idiomatique et un chinois traditionnel (繁體中文).
- Émettre & Vérifier l'Artéfact Mono-Fichier :
- Générez le
index.htmlcomplet sans sections omises ni espaces réservés "TODO". - Emplacement de sortie : par défaut
landing/index.htmldans le dépôt. N'écrasez jamais unindex.htmlexistant ; si la cible existe, demandez d'abord ou écrivez sous un autre nom (par exemplelanding/index.generated.html). Si vous ne pouvez pas écrire de fichiers, émettez le bloc HTML complet à la place. - Liste de vérification de validation (exécutez-la, puis rapportez les résultats) :
- Ouvrez la page : aucune erreur/avertissement de console que vous avez causé, aucune requête échouée ou 4xx.
- Tous les liens d'ancrage résolvent des identifiants existants ; chaque lien externe fonctionne.
- Pas de débordement horizontal sur desktop et sur une largeur mobile ~390px.
- i18n : chaque clé
data-i18nexiste à la fois enenetzh; le basculement met à jour la page et<html lang>. - Chaque chemin d'image/capture d'écran existe, et les images clés sont auto-hébergées selon la règle 4.
- Images : avant toute vérification de capture d'écran ou d'acceptation, attendez que le réseau soit inactif et que chaque
<img>soitcompleteavecnaturalWidth > 0(faites défiler vers le bas pour déclencher le chargement différé, puis revenez en haut). Pour chaque image cassée, dites de laquelle il s'agit : une mauvaise URL (vérifiez aveccurl -I: statut etContent-Type) ou un blocage navigateur d'une URL accessible (par exemplenet::ERR_BLOCKED_BY_ORB), et signalez-la au lieu de la cacher. - Visuel hero : il montre le produit lui-même (§6, règle 1). S'il s'agit d'une
<video>, vérifiezreadyState >= 2,videoWidth > 0et qu'elle se joue.curl -Il'URLog:image: statut 200 etContent-Type: image/*(une URL Pages ne se résout qu'après la publication de la page). - Si le dépôt est privé : dites à l'utilisateur que les liens GitHub et l'URL
og:imagerenvoient une erreur 404 aux visiteurs jusqu'à ce que le dépôt soit public.
- Générez le
5. Structure de Base du Modèle HTML de Démarrage
Utilisez cette structure de base pour une génération rapide :
<!DOCTYPE html>
<html lang="en" class="scroll-smooth dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{NOM_DU_PROJET}} — {{SLOCAN_DU_PROJET}}</title>
<!-- Polices -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Noto+Sans+TC:wght@400;500;700&family=Noto+Serif+TC:wght@600;700&family=Playfair+Display:ital,wght@0,600;1,400&family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap" rel="stylesheet">
<!-- CDN Tailwind Play (épinglé, prototype uniquement ; pas de CORS donc pas de SRI) & Lucide (épinglé + SRI) -->
<script src="https://cdn.tailwindcss.com/3.4.17"></script>
<script src="https://unpkg.com/[email protected]/dist/umd/lucide.min.js" integrity="sha384-hJnF5AwidE18GSWTAGHv3ByzzvfNZ1Tcx5y1UUV3WkauuMCEzBJBMSwSt/PUPXnM" crossorigin="anonymous"></script>
<script>
tailwind.config = {
darkMode: 'class',
theme: {
extend: {
fontFamily: {
serif: ['"Playfair Display"', '"Noto Serif TC"', 'serif'],
sans: ['"Plus Jakarta Sans"', '"Noto Sans TC"', 'sans-serif'],
mono: ['"JetBrains Mono"', '"Noto Sans TC"', 'monospace'],
}
}
}
}
</script>
</head>
<body class="bg-[#0c0a09] text-stone-200 antialiased font-sans min-h-screen flex flex-col justify-between">
<!-- Nav Collante -->
<!-- Section Hero -->
<!-- Vitrine Visuelle Interactive -->
<!-- Grille de Fonctionnalités / Commandes -->
<!-- Onglets d'Installation Multi-Harnais -->
<!-- Accordéon FAQ -->
<!-- Pied de Page -->
<!-- Notification Toast -->
<div id="toast" class="fixed bottom-6 right-6 z-50 transform translate-y-20 opacity-0 transition-all duration-300">
<div class="bg-stone-900 border border-stone-700 text-stone-200 text-xs font-mono px-4 py-2.5 rounded-lg shadow-xl">
<span id="toast-text">Copié !</span>
</div>
</div>
<script>
lucide.createIcons();
// Dictionnaire bilingue et logique de basculement ici
</script>
</body>
</html>
6. Utilisation avec une compétence de design (ex. elayadesign/ai-design-skills landing-page-design)
Une compétence de conception de page d'accueil générale peut être utilisée à côté de celle-ci. Lorsque les deux s'appliquent, résolvez les conflits comme suit :
- Cette compétence l'emporte sur : les polices (polices de la personnalité du dépôt plus une police chinoise traditionnelle), la couleur et la direction du design y compris les règles de dégradé, le commutateur i18n, les règles de fichier unique et CDN, les règles d'actifs et d'images, et l'exactitude factuelle.
- La compétence de design l'emporte sur : la stratégie et la structure de la page (une action principale ; Hero, Avantages, Fonctionnement, Preuve, FAQ, Appel à l'action final), la copie de conversion, le SEO et les balises
og:, l'espacement, le rayon, le mouvement et les états, la révélation du slogan, et le HTML sémantique et l'accessibilité. - Ignorer les éléments qui ne correspondent pas à une seule page de démonstration : pages de confidentialité et conditions, page 404, consentement aux cookies, validation de formulaire.
- Ne posez pas de questions d'admission. Énoncez plutôt les hypothèses (public, action principale unique, source de trafic, langue par défaut) dans un commentaire HTML en haut du fichier.
Trois choses à bien faire lorsque vous les combinez :
- Le visuel hero montre le produit lui-même. Préférez la propre image hero du dépôt ou le GIF de démonstration du README, ou une capture d'écran de l'interface utilisateur du produit. N'utilisez jamais un exemple
… [tronqué pour la traduction]