📍 Article principal de la série : Vibe coding 2026 : du tweet de Karpathy aux outils dominants
Cet article fait partie de la série « vibe coding ». Pour la vue d’ensemble du concept, des plateformes concurrentes et de la méthodologie disciplinée, lire d’abord le guide principal.
Pourquoi une méthodologie pour ce qui est censé être libre
L’expression « vibe coding » suggère, dans sa version caricaturale, l’absence de méthode. C’est précisément ce qui inquiète Andrew Ng quand il critique la formulation, et c’est aussi ce qui distingue les projets vibe-codés qui tiennent en production de ceux qui s’effondrent au premier vrai utilisateur. Ce tutoriel propose une méthodologie en sept étapes concrètes, applicable quel que soit l’outil — Lovable, Bolt.new, v0, Replit Agent, Cursor, Windsurf — et calibrée sur les contraintes réelles d’un freelance ou d’une PME ouest-africaine. Chaque étape est exécutable en quelques minutes ; ensemble, elles changent l’issue d’un projet.
Prérequis
- Un projet en cours (prototype, MVP, application en cours de développement) sur l’une des plateformes vibe coding
- Un dépôt git accessible (GitHub, GitLab) que vous contrôlez
- Un terminal et la capacité à lancer quelques commandes shell
- Une heure dédiée à appliquer la méthodologie sur le projet existant — ne pas chercher à tout faire en parallèle d’une autre tâche
- Niveau attendu : intermédiaire — la méthodologie suppose que vous comprenez les notions de fichier, dépôt git, variable d’environnement
- Temps estimé : 60 à 90 minutes pour la première mise en place, 10 minutes par projet ensuite
Étape 1 — Identifier les zones critiques du projet
Avant tout autre travail, prenez dix minutes pour cartographier les zones critiques de votre projet. Une zone critique est un endroit où une régression silencieuse peut coûter de l’argent, exposer des données, ou bloquer la production. Listez explicitement, par écrit, les zones suivantes :
- Authentification — qui peut se connecter et comment les sessions sont gérées
- Autorisation — qui a le droit de faire quoi une fois connecté
- Paiement — toutes les routes qui touchent à de la facturation, du remboursement ou des transferts
- Données personnelles — toutes les zones qui collectent, stockent ou exposent des informations nominatives
- Migrations de base de données — chaque modification de schéma qui touche à des données existantes
- Intégrations critiques externes — services tiers dont la défaillance bloque le fonctionnement
Sauvegardez cette liste dans un fichier SECURITE.md à la racine du projet. Ce fichier sert de boussole : à chaque session vibe coding, vous savez quelles zones méritent votre lecture attentive avant validation, et lesquelles peuvent être laissées au flux libre. La discipline tient autant dans la cartographie que dans la lecture.
Étape 2 — Mettre en place le fichier de règles de l’agent
Quel que soit l’outil, créez un fichier de règles que l’agent lit automatiquement à chaque session. Le nom diffère selon la plateforme — CLAUDE.md pour Claude Code, .cursor/rules/ pour Cursor, .windsurfrules pour Windsurf, contexte projet pour Lovable, prompt initial pour Bolt.new ou v0 — mais l’intention est la même : consigner les conventions persistantes.
Un fichier de règles efficace tient sur une page et couvre quatre zones. La pile technologique précise (langages, frameworks, versions, bibliothèques principales). Les conventions de code (style, nommage, structure des fichiers, commentaires). Les règles métier spécifiques au domaine (validation des téléphones sénégalais, format des montants en FCFA, langues à supporter). Les anti-patterns à proscrire (jamais d’any en TypeScript, jamais de mot de passe en clair, jamais d’appel synchrone à un service externe, etc.).
Voici un exemple minimal pour un projet Next.js :
# CLAUDE.md / .cursor/rules/general.mdc
## Stack
Next.js 15 App Router, TypeScript strict, Tailwind, shadcn/ui, Drizzle ORM,
PostgreSQL, Vitest, Playwright.
## Conventions
- Imports nommés uniquement, pas de default exports sauf pages Next.js.
- Composants en PascalCase, fichiers en kebab-case.
- Server Components par défaut, "use client" uniquement quand nécessaire.
## Règles métier
- Tous les montants en FCFA, format "XX XXX FCFA" avec espace fine.
- Validation téléphone : +221 puis 9 chiffres ou 0 puis 9 chiffres.
- E-mails de service signés "[Nom de la marque]".
## Anti-patterns
- Pas de any en TypeScript.
- Pas de secret en dur, toujours via process.env.
- Pas de fetch sans gestion d'erreur explicite.
- Pas de console.log en production.
Mise à jour trimestrielle : relisez ce fichier tous les trois mois et ajoutez les patterns qui ont émergé pendant les sessions, retirez ceux qui sont obsolètes. Sans entretien, le fichier de règles dérive et perd sa valeur.
Étape 3 — Verrouiller la séparation des environnements
L’incident Replit de juillet 2025 a démontré que l’instruction textuelle ne suffit pas : un agent autonome qui dispose d’un accès en écriture à une base de production peut, en interprétant mal une consigne, effacer plusieurs mois de données. La parade structurelle consiste à empêcher physiquement l’agent d’atteindre la production depuis un environnement de développement.
Trois mesures concrètes. Premièrement, credentials distincts : la base de développement et la base de production utilisent des utilisateurs différents avec des mots de passe différents, stockés dans des variables d’environnement séparées. L’environnement de développement n’a tout simplement pas connaissance des credentials de production. Deuxièmement, flags de protection : ajoutez dans le code un middleware qui refuse les opérations destructrices (DROP, TRUNCATE, DELETE FROM sans WHERE) si la variable d’environnement NODE_ENV n’est pas explicitement « production-confirmed ». Troisièmement, sauvegardes automatiques de la production avec rétention d’au moins sept jours, testées au moins une fois par trimestre — une sauvegarde non testée est une fiction.
Cette discipline prend deux heures à mettre en place sur un projet existant et protège contre la totalité des incidents type Replit. Sur un nouveau projet, c’est l’étape à exécuter avant la première vraie session vibe coding.
Étape 4 — Structurer les commits pour pouvoir reculer
La règle vaut pour tout développement, mais devient critique en vibe coding où l’on accepte des modifications volumineuses sans relecture exhaustive. Configurez votre flux pour pouvoir reculer rapidement. Trois habitudes ancrées :
D’abord, un commit par session vibe coding, avec un message qui décrit l’objectif de la session, pas le détail des fichiers. Si une session produit deux fonctionnalités distinctes, séparez en deux commits. Si une session échoue, n’hésitez pas à abandonner le commit (git checkout . ou équivalent) plutôt que d’essayer de récupérer manuellement.
Ensuite, une branche par chantier vibe coding significatif, fusionnée seulement après validation. Cela permet à un coéquipier de reviewer si vous travaillez à plusieurs, et garantit que la branche principale reste dans un état stable.
Enfin, tag git après chaque déploiement réussi en production. En cas de régression, le rollback consiste à redéployer le tag précédent — opération qui prend une à cinq minutes au lieu d’une demi-journée de fouille dans l’historique.
Étape 5 — Imposer des tests sur le cœur métier
Les tests automatisés sont le contrepoison du vibe coding aveugle. Demandez systématiquement à l’agent de générer des tests pour le cœur métier — pas tous les coins du code, mais les zones critiques identifiées à l’étape 1. Pour un système d’inscription, par exemple, les tests à imposer incluent : création d’un utilisateur valide réussit, e-mail dupliqué est refusé, mot de passe trop court est refusé, mot de passe haché en base, session valide après login, session invalide après logout, route admin inaccessible sans connexion.
Ajoutez un hook git ou une étape de CI qui bloque le merge tant que les tests ne passent pas. Sur GitHub, c’est une protection de branche qui exige que les vérifications CI passent avant le merge. Sur GitLab, c’est une règle de pipeline. Sans cette barrière, les tests deviennent décoratifs : ils existent mais ne protègent rien.
Pour un projet vibe-codé typique, comptez vingt à trente tests qui couvrent les zones critiques. C’est un investissement initial d’une à deux heures qui économise des semaines d’incidents en production. Les outils modernes (Vitest, Playwright, Pytest, Jest) rendent l’écriture de tests rapide quand l’agent les génère et qu’on se contente de les lire.
Étape 6 — Auditer les secrets et la surface d’attaque
Avant chaque déploiement, lancez un audit minimal des secrets exposés. Trois vérifications en deux minutes. Premièrement, recherchez dans le dépôt les chaînes qui ressemblent à des secrets : git grep -E "(sk-|eyJ[A-Za-z0-9_-]{10,}|password\s*=\s*['\"]|token\s*=\s*['\"])". Aucun résultat ne doit pointer vers une vraie clef. Si quelque chose apparaît, retirez-le, faites tourner la clef côté service tiers, et nettoyez l’historique git si nécessaire (git filter-repo).
Deuxièmement, vérifiez le fichier .gitignore : il doit exclure .env, .env.local, .env.production, les dossiers de cache, les fichiers de configuration locaux. Un .env committé une seule fois reste accessible dans l’historique même après suppression — d’où l’intérêt du git filter-repo mentionné plus haut.
Troisièmement, auditez la surface d’attaque publique : listez toutes les routes accessibles sans authentification (par exemple via grep -r "router\." app/api/) et confirmez que chacune est légitimement publique. Toute route admin publique est une vulnérabilité critique à corriger immédiatement.
Étape 7 — Déployer progressivement et observer
Le passage en production est l’étape où l’on a le moins le droit à l’erreur. Trois précautions transforment un déploiement risqué en déploiement contrôlé.
D’abord, déployez sur staging avant production. Staging est un environnement identique à la production sauf qu’il n’a pas d’utilisateurs réels. Validez sur staging pendant 24 à 48 heures avant de pousser en production. Pour un projet ouest-africain à petit volume, staging peut être hébergé sur la même infrastructure (Vercel, Netlify, Railway) avec un compte distinct ou une URL secondaire.
Ensuite, configurez du monitoring minimal : Sentry pour les erreurs (plan gratuit suffisant pour un projet débutant), Plausible ou similaires pour les analytics, et un outil de uptime monitoring (Uptime Kuma en self-hosted, ou la fonction native de votre hébergeur). Sans monitoring, vous découvrez les bugs par les plaintes des utilisateurs — le pire scénario possible.
Enfin, préparez un plan de rollback documenté. Une page d’une demi-page dans votre RUNBOOK.md qui dit : « En cas de régression critique en production, exécuter [commande] pour redéployer la version précédente. La sauvegarde de base la plus récente est dans [endroit]. Le contact d’urgence est [personne]. » Sans ce document, un incident à 23h le vendredi devient une nuit blanche au lieu d’une opération maîtrisée en quinze minutes.
Erreurs fréquentes
| Erreur | Cause | Solution |
|---|---|---|
| « On verra plus tard pour les tests » | Sous-estimation du coût de la dette technique | Imposer dès le premier MVP les tests sur les zones critiques uniquement (pas tout le code) — l’investissement initial est minime |
| Fichier de règles trop long et ignoré par l’agent | Documentation noyée dans la verbosité | Limiter à une page, supprimer les évidences, garder seulement les règles non-triviales et les anti-patterns vraiment vécus |
| Branche principale qui contient des modifications non testées | Pas de protection de branche configurée | Activer la protection de branche sur GitHub/GitLab, exiger CI verte avant merge |
| Secrets fuités dans le dépôt public | Commit accidentel d’un fichier .env |
Faire tourner immédiatement les clefs côté services concernés, nettoyer l’historique avec git filter-repo, vérifier le .gitignore |
| Aucune procédure de rollback en cas d’incident | Pas de planification préalable | Rédiger un RUNBOOK.md simple en une heure dès la première mise en production |
| Sauvegardes existantes mais jamais testées | Confiance excessive dans la fonctionnalité automatique | Tester la restauration sur staging au moins une fois par trimestre — la première fois révèle souvent des configurations manquantes |
Adaptation au contexte ouest-africain
Cette méthodologie s’applique sans changement majeur quel que soit le contexte géographique, mais quelques angles méritent attention pour un freelance ou une PME en Afrique de l’Ouest. La conformité aux réglementations sur les données personnelles — loi sénégalaise sur la protection des données personnelles supervisée par la CDP, équivalents CEDEAO — ajoute une dimension à l’étape 1 : si votre projet collecte des données nominatives, listez explicitement les données concernées, leur durée de conservation, et le cadre juridique de leur traitement. Cette traçabilité protège en cas de contrôle.
Le monitoring abordable est une réalité pratique : Sentry plan gratuit, Plausible Cloud à environ 9 USD par mois (5 500 FCFA), Uptime Kuma en self-hosted sur un VPS Hostinger ou OVH à quelques USD par mois. L’outillage moderne ne coûte plus une fortune et la mise en place tient sur un week-end pour un développeur seul.
La discipline de sauvegarde mérite un acharnement particulier en zone à connectivité intermittente : si vous travaillez majoritairement depuis Dakar mais que vos serveurs sont à Francfort, une coupure internet locale ne doit pas vous priver de l’accès à vos sauvegardes. Stockez les copies de sauvegarde sur deux fournisseurs distincts géographiquement (par exemple AWS S3 Frankfurt + Backblaze B2 USA, ou Hetzner Storage + un disque local chiffré).
Tutoriels associés
- Cursor Composer 2.0 en mode vibe coding : agent autonome multi-fichiers
- Vibe coding pour entrepreneurs ouest-africains : du prompt au MVP déployé
Pour aller plus loin
- 🔝 Retour au guide principal : Vibe coding 2026 : du tweet de Karpathy aux outils dominants
- OWASP Top 10 (référence sécurité applicative) : owasp.org/Top10
- Documentation Sentry : docs.sentry.io
- Pour l’usage discipliné des outils en production : guide principal AI coding développeur 2026 (Claude Code, Cursor, Copilot)
FAQ
La méthodologie ralentit-elle vraiment le vibe coding ?
Au démarrage, oui — comptez une heure pour la première mise en place sur un projet existant. Sur les sessions suivantes, l’overhead est de cinq à dix minutes par session, largement compensé par les bugs et incidents évités. Sur un projet de plusieurs mois, la méthodologie économise des semaines.
Que faire si l’agent dévie d’une règle écrite dans CLAUDE.md ?
Trois précautions cumulatives. Renforcer la règle (la rendre plus explicite, ajouter un exemple). Vérifier que le fichier est bien lu (la plupart des outils signalent dans la conversation qu’ils l’ont chargé). Sur les zones critiques, ajouter un test automatisé qui valide la règle (par exemple un linter custom qui détecte un anti-pattern).
Le RUNBOOK.md est-il vraiment indispensable pour un projet solo ?
Pour un side-project, c’est une discipline saine mais pas indispensable. Pour tout projet qui sert au moins un client réel, oui — l’incident arrive toujours au pire moment, et avoir une procédure écrite permet de garder la tête froide.
Combien de tests sont nécessaires pour un MVP vibe-codé ?
Vingt à trente tests qui couvrent les zones critiques identifiées à l’étape 1. Pas mille tests qui couvrent tout le code — vous n’aurez ni le temps de les écrire ni l’envie de les maintenir. La règle pratique : si une régression sur cette zone peut coûter de l’argent ou exposer des données, écrivez le test.
Comment auditer les secrets sur un projet existant qui n’a pas suivi cette méthodologie dès le début ?
Lancez la commande grep mentionnée à l’étape 6, listez les résultats, faites tourner toutes les clefs côté services tiers, ajoutez ce qu’il faut au .gitignore. Si l’historique git contient des secrets, utilisez git filter-repo pour les retirer ; si le dépôt est public, la rotation des clefs est non négociable.
Cette méthodologie est-elle compatible avec le vibe coding pur tel que Karpathy l’a décrit ?
Elle l’est dans la mesure où elle réserve la lecture attentive aux zones critiques et laisse le mode vibe libre sur le reste. Elle s’éloigne de la formulation puriste de Karpathy (« forget that the code even exists ») mais elle est plus proche de la pratique réelle des développeurs sérieux qui utilisent ces outils en 2026.