Catégorie : github

  • Mon Workflow « Agentique » : De l’idée à la production

    Mon Workflow « Agentique » : De l’idée à la production

    Il y a quelques mois encore, j’utilisais l’IA comme un simple assistant : un super moteur de recherche ou un générateur de snippets. Mais les choses ont changé. Vite.

    Aujourd’hui, je ne « chat » plus vraiment avec mon IDE. Je collabore avec des Agents.

    Récemment, VSCode (ou Cursor si vous voulez) a intégré nativement la gestion des agents. Couplé à des modèles de raisonnement comme Claude Sonnet 4.5 ou Gemini Pro 3, et à la puissance des MCP (Model Context Protocol), ma façon de développer une application, de l’idée au déploiement, a été totalement transformée.

    Voici comment je développe mes applications aujourd’hui, étape par étape, sans jamais quitter mon éditeur.

    Using agents in Visual Studio Code

    Le Setup : Donner des super-pouvoirs à l’IA

    Avant d’écrire la moindre ligne de code, il faut équiper l’agent. Un modèle d’IA, aussi puissant soit-il, est limité par sa date de connaissance (training cut-off) et son isolement. Pour pallier cela, j’installe des MCP (Model Context Protocol).

    C’est le standard qui permet à l’IA de se connecter à des outils externes. J’en utilise principalement deux :

    • Context7 : C’est mon « bridge » vers la connaissance temps réel. Il permet à l’agent de consulter les documentations officielles les plus récentes. Fini le code React déprécié ou les hallucinations sur des API qui n’existent plus.
    • ChromeDevTools : Permet à l’agent de « voir » et debugger ce qui se passe dans le navigateur via la console ou des screenshots qu’il prend lui même.
    • Supabase, Stripe, MongoDB : J’utilise Supabase pour plusieur de mes projets, un MCP existe permettant aux agents de l’utiliser « nativement ». C’est la même chose avec pas mal de technologies actuelles, je vous invite à les utiliser selon les projets, vos agents n’en seront que plus efficaces !

    La Mémoire du Projet : Le dossier .github/instructions

    C’est mon secret pour éviter que l’IA ne devienne amnésique ou incohérente au bout de 30 messages.

    L’IA a une fenêtre de contexte limitée. Plutôt que de répéter « N’oublie pas qu’on utilise Tailwind » à chaque prompt, je crée un dossier .github/instructions à la racine de mon projet. Les agents VSCode lisent ces fichiers systématiquement avant de répondre.

    J’y place généralement :

    • tech_stack.md : La liste de mes technos (Next.js, Supabase, Shadcn/ui…).
    • arch.md : L’architecture du projet (les connexions avec les APIs, les dossiers du projets, …)
    • project_rules.md : Mes principes de design (DRY, composition over inheritance, gestion des erreurs).
    • plan.md : L’état d’avancement(roadmap) du projet (on y reviendra).

    C’est la mémoire à long terme de mon assistant.

    Phase d’Idéation : Challenger le concept

    Tout commence par une discussion, mais pas n’importe laquelle. J’active le modèle Gemini Pro 3, GPT 5.2 ou Claude Opus 4.5 (pour leur capacité de raisonnement supérieure) et je lance un prompt de challenge.

    Voici un exemple de prompt :

    Objectif : obtenir une analyse complète, structurée et objective d’une idée d’application pour décider de sa viabilité commerciale et stratégique.

    Instructions pour l’IA :
    Tu es un analyste de marché expert, combinant des compétences en stratégie, business model, étude de concurrence, finance, tarification, estimation des coûts, et validation de produit. Je te fournis ci-dessous une idée d’application ; tu dois évaluer sa viabilité sur le marché réel, en étant objectif et précis.


    1. Résumé de l’idée (à remplir)
    Nom de l’application :
    Description succincte :
    Problème que l’application résout :
    Public cible :

    2. Analyse de marché

    • Estime la taille du marché adressable (TAM/SAM/SOM) avec des données ou chiffres du secteur (sources publiques, tendances).
    • Décris les tendances du marché, croissance, demandes émergentes, et si le problème existe dans la réalité.
    • Identifie les indicateurs de demande, comme volume de recherche, communautés/plateformes où le problème est discuté, signaux d’intérêt (forums, social), etc.

    3. Concurrence

    • Liste les principaux concurrents directs et indirects (produits/services similaires).
    • Compare leurs offres, fonctionnalités, positionnement, forces et faiblesses.
    • Évalue les barrières à l’entrée (propriété intellectuelle, effets réseaux, coût d’acquisition, licences).

    4. Business Model & Tarification

    • Propose plusieurs modèles de monétisation plausibles (SaaS, freemium, abonnement, commission, publicité, etc.).
    • Pour chaque modèle, suggère plages de prix réalistes basées sur le marché actuel.
    • Estime les marges unitaires (par utilisateur/transaction) avec hypothèses de coûts variables et fixes.

    5. Coûts & Temps de Développement

    • Estime le coût de développement (MVP, version 1) : main-d’œuvre, tech stack, design, tests, infrastructure.
    • Donne une plage de durée réaliste de la phase MVP jusqu’à une première version exploitable (en semaines/mois).
    • Identifie les ressources ou compétences nécessaires (dev, product, marketing, support).

    6. Acquisition & Distribution

    • Propose des canaux efficaces pour acquérir les premiers utilisateurs et tester rapidement l’offre (ex. pubs, référencement, réseaux pro, partenariats).
    • Estime un coût d’acquisition client (CAC) réaliste selon les canaux.
    • Donne une stratégie de go-to-market progressive (phase beta, early adopters, scaling).

    7. Scénarios Financiers

    • Présente 3 scénarios (pessimiste / réaliste / optimiste) avec :
      • Nombre d’utilisateurs sur 12 mois
      • Revenus estimés
      • Coûts (fixes + variables)
      • Point mort financier (break-even)

    8. Risques & Opportunités

    • Identifie risques majeurs (technique, réglementaire, marché, concurrence) et stratégies pour les atténuer.
    • Détaille opportunités supplémentaires (extensions de produit, marchés adjacents).

    9. Recommandation Finale

    • Sur une échelle de 1 à 10, donne une note de viabilité commerciale globale.
    • Résume conditions pour poursuivre (ex : validations à faire, données manquantes, prochaines étapes).

    Format de réponse attendu :
    Réponse structurée par section, avec chiffres ou sources quand c’est possible, hypothèses indiquées clairement, et recommandations concrètes (pas seulement théoriques).

    L’agent me force à affiner mon tir avant même de coder. Une fois l’idée validée, on passe à la structure.

    Planification : Le mode « Plan » de VSCode

    Une fois l’idée validée, il va falloir planifier le développement de celle-ci pour en faire une application fonctionnelle (ou dans un premier temps un bon MVP). Pour ça, vous pouvez utiliser le mode « plan » dans VSCode. C’est une fonctionnalité native de VSCode que j’adore. Je ne saute pas dans le code.

    Ici, je demande à l’agent de rédiger le PRD (Product Requirements Document). On définit ensemble :

    1. Le MVP (Minimum Viable Product) : Qu’est-ce qu’on livre en premier ?
    2. Les User Stories : « En tant qu’utilisateur, je veux… »
    3. L’Architecture : Base de données, API, Authentification.

    L’agent génère un fichier PLAN.md. Ce fichier servira de boussole pour tout le reste du développement. Je le place donc dans mon dossiers « .github/instructions« 

    Voici un exemple de prompt pour le plan :

    Objectif :
    Construire un plan global, fonctionnel et non technique d’une application déjà validée sur le marché, décrivant précisément ce que fait l’application, pour qui, et comment les utilisateurs interagissent avec elle, jusqu’à obtenir une vision complète et cohérente du produit.


    Rôle de l’IA :
    Tu es un Product Manager senior spécialisé en conception d’applications (web / mobile / SaaS).
    Ton objectif est de transformer une idée validée en un plan fonctionnel détaillé, clair et structuré, sans écrire de code ni entrer dans des choix techniques.

    Tu dois :

    • Identifier les zones floues ou ambiguës
    • Poser des questions ciblées et utiles quand des informations manquent
    • Construire le plan progressivement, en itérant avec l’utilisateur
    • T’arrêter uniquement lorsque le plan est complet, cohérent et exploitable

    1. Contexte de départ (fourni par l’utilisateur)

    Nom de l’application :
    Objectif principal de l’application :
    Problème utilisateur résolu :
    Cible principale (utilisateurs) :
    Plateforme(s) envisagée(s) : (ex : mobile, web, desktop)


    2. Méthode de travail (obligatoire)

    • Commence par résumer ta compréhension du produit en quelques phrases
    • Identifie immédiatement :
      • Ce qui est clair
      • Ce qui est incomplet ou ambigu
    • Pose des questions avant d’aller trop loin si nécessaire

    ⚠️ Ne fais pas d’hypothèses critiques sans validation.
    Pose des questions plutôt que d’inventer.


    3. Structure attendue du plan fonctionnel final

    Tu devras produire, une fois toutes les informations réunies, un plan contenant au minimum :

    A. Vision Produit

    • Proposition de valeur principale
    • Objectifs du produit (court / moyen terme)
    • Règles fondamentales (ce que l’app fait / ne fait pas)

    B. Typologie des utilisateurs

    • Types d’utilisateurs (ex : visiteurs, utilisateurs inscrits, admins, etc.)
    • Droits et capacités de chaque type
    • Parcours général de chaque type d’utilisateur

    C. Parcours Utilisateur (User Journeys)

    • Découverte / arrivée sur l’app
    • Inscription / onboarding
    • Utilisation principale (cœur de valeur)
    • Actions récurrentes
    • Sortie / désengagement

    D. Fonctionnalités Clés

    Pour chaque fonctionnalité :

    • Objectif utilisateur
    • Description fonctionnelle (ce que ça permet de faire)
    • Déclencheur (quand / pourquoi l’utilisateur l’utilise)
    • Résultat attendu

    ⚠️ Pas de technique, pas de code, pas de stack.

    E. Règles Métier & Logique Fonctionnelle

    • Limitations
    • Cas particuliers
    • Conditions d’accès à certaines fonctionnalités
    • Interactions entre fonctionnalités

    F. Gestion des Contenus & Données (fonctionnel)

    • Types de données manipulées (sans schéma technique)
    • Qui crée quoi, qui voit quoi, qui modifie quoi
    • Logique de cycle de vie des contenus

    G. Notifications & Interactions

    • Types de notifications
    • Déclencheurs
    • Objectifs (engagement, information, rappel, etc.)

    H. Monétisation (si applicable)

    • Ce qui est gratuit vs payant
    • Déclencheurs de paiement
    • Parcours utilisateur lié à la monétisation

    I. Administration & Modération

    • Fonctionnalités nécessaires pour gérer l’app
    • Actions possibles côté admin
    • Contrôles et règles

    4. Processus itératif obligatoire

    • À chaque étape :
      • Si une information manque → pose une ou plusieurs questions précises
      • Attends la réponse avant de continuer
    • Reformule régulièrement pour valider la compréhension
    • Ne considère le plan terminé que lorsque toutes les sections sont complètes

    5. Critère de fin

    Le travail est terminé lorsque :

    • Le plan peut servir de base à un cahier des charges fonctionnel
    • Un designer ou un développeur peut comprendre ce que doit faire l’application
    • Aucune fonctionnalité majeure n’est floue ou implicite

    Commence maintenant par :

    1. Résumer ta compréhension du projet à partir des éléments fournis
    2. Lister les informations manquantes
    3. Poser les premières questions nécessaires

    Développement : L’Agent aux commandes

    C’est ici que la magie opère. Je passe en mode « Agent » avec Claude Sonnet 4.5. Ce modèle est redoutable pour le code.

    La règle d’or : Les Micro-tâches

    Je ne dis jamais « Crée toute l’application ». C’est le meilleur moyen d’obtenir du code spaghetti.

    Je découpe le travail :

    « Implémente la User Story #1 : La page de Login avec Supabase Auth. »

    Exécution et Auto-correction (Self-Healing)

    L’agent va :

    1. Lire mes instructions (.github/instructions).
    2. Générer le code des composants.
    3. Lancer des commandes terminal.

    C’est là que c’est fort : si je lui demande de lancer un npm run lint ou un test et que ça échoue, l’agent lit l’erreur et se corrige lui-même. Il itère jusqu’à ce que la tâche soit verte.

    Grâce au MCP Context7, s’il a un doute sur une nouvelle fonction de Next.js 16, il va lire la doc officielle avant d’écrire le code, m’évitant des heures de debugging.

    Sécuriser l’avancée : Git et Tests

    Travailler avec des agents va vite, très vite. Parfois trop. Pour ne pas perdre le contrôle :

    1. Tests automatisés : J’exige de l’agent qu’il crée un test unitaire pour chaque feature critique. C’est mon filet de sécurité pour m’assurer que les nouvelles modifications ne cassent pas ce qui marchait 5 minutes avant.
    2. Commit Atomique : Dès qu’une micro-tâche est validée et que les tests passent -> Git Commit.Si l’agent part en vrille à l’étape suivante (ça arrive), je fais un simple rollback. Git est mon bouton « Sauvegarde ».

    Déploiement : L’Agent DevOps

    Une fois le MVP prêt, je ne change pas de méthode. Je demande à l’agent :

    « Prépare le déploiement sur Vercel. Vérifie que les variables d’environnement sont bien configurées dans le projet et génère le Dockerfile si nécessaire. »

    L’agent interagit avec les CLI, prépare les configs, et je n’ai plus qu’à valider le push sur GitHub qui déclenchera la CI/CD.

    Conclusion

    Ce workflow a radicalement changé ma productivité. Je ne tape plus autant de code « boilerplate », mais je passe plus de temps à concevoir, vérifier et guider.

    VSCode, avec ses modes natifs (Plan, Agent, Edit) et la puissance des modèles comme Claude Sonnet 4.5, devient plus qu’un éditeur : c’est un véritable cockpit de pilotage.

    Et vous, vous avez testé les MCP ? Dites-moi en commentaire quel est votre setup !

  • VS Code : Comment synchroniser votre configuration entre tous vos ordinateurs

    VS Code : Comment synchroniser votre configuration entre tous vos ordinateurs

    Si comme moi vous jonglez entre plusieurs machines — un MacBook pour les déplacements, une tour sous Windows à la maison, ou peut-être un laptop fourni par un client — vous connaissez forcément cette friction.

    Vous installez une super extension ou vous peaufinez un raccourci clavier sur votre machine principale, et le lendemain, en ouvrant VS Code sur votre autre poste… c’est la frustration. Il manque la moitié de vos outils, le thème n’est pas le bon, et votre productivité en prend un coup.

    Pendant longtemps, la solution consistait à copier-coller des fichiers JSON ou à utiliser des extensions tierces parfois instables. Mais c’est du passé. Aujourd’hui, je vous montre comment utiliser la synchronisation native de VS Code pour avoir un environnement de développement unifié, où que vous soyez.

    Fini le bricolage, place au natif

    Il y a quelques années, l’extension « Settings Sync » (celle avec l’icône rouge) était la référence. Elle utilisait des Gist GitHub pour stocker nos configs. C’était ingénieux, mais c’était du bricolage.

    Microsoft a finalement intégré cette fonctionnalité directement dans le cœur de l’éditeur (depuis la version 1.48). C’est plus rapide, plus fiable et surtout, beaucoup plus simple à configurer.

    Ce qui est synchronisé (et ce qui ne l’est pas)

    Avant d’activer le bouton magique, voici ce que VS Code va propager sur vos machines :

    • Paramètres : Votre fichier settings.json (police, zoom, formatage, etc.).
    • Raccourcis clavier : Vos bindings personnalisés.
    • Extensions : La liste de vos plugins (et leur état activé/désactivé).
    • Snippets : Vos morceaux de code réutilisables.
    • État de l’interface : La disposition de vos panneaux, votre thème, vos icônes.

    Ce qui reste local (et c’est tant mieux) : les chemins de vos exécutables spécifiques à la machine (comme le path vers un binaire PHP ou Python s’il diffère d’un OS à l’autre).

    Le tutoriel : Activer la synchronisation en 3 clics

    La procédure est triviale, mais autant la faire proprement. Commencez par l’ordinateur qui possède votre configuration idéale.

    1. Ouvrez VS Code.
    2. Cliquez sur la roue dentée Gérer (Manage) tout en bas à gauche.
    3. Cliquez sur Activer la synchronisation des paramètres… (Turn on Settings Sync).
    Le menu de la roue dentée propose l'option "Turn on Settings Sync"

    Une fenêtre va s’ouvrir vous demandant ce que vous souhaitez synchroniser. Par défaut, tout est coché. Je vous conseille de tout laisser tel quel pour une expérience vraiment « miroir ».

    Ensuite, cliquez sur le bouton Se connecter & Activer. VS Code vous proposera deux choix :

    • Compte Microsoft
    • Compte GitHub

    Personnellement, j’utilise mon compte GitHub. Une fois l’autorisation donnée dans votre navigateur, VS Code va uploader votre configuration dans le cloud.

    Sur votre deuxième ordinateur

    C’est là que la magie opère. Ouvrez VS Code (qui est peut-être vierge ou mal configuré).

    Répétez la même opération : Roue dentée > Activer la synchronisation > Connexion (avec le même compte).

    VS Code va détecter une configuration existante dans le cloud. Il va télécharger vos extensions, appliquer votre thème et vos raccourcis. En moins de 30 secondes, vous vous retrouvez avec votre environnement familier.

    Gérer les conflits sans panique

    Que se passe-t-il si vous modifiez un paramètre sur l’ordi A et un autre sur l’ordi B alors qu’ils sont hors ligne ?

    Lors de la reconnexion, VS Code va détecter un conflit. Il ne va rien écraser bêtement. Il vous présentera une vue de comparaison (diff view) similaire à celle de Git, vous demandant si vous voulez garder la version Locale, la version Cloud, ou fusionner les deux manuellement. C’est propre et sécurisé.

    Pour aller plus loin : Les Profils

    C’est une nouveauté récente qui change la donne. Si vous faites du développement Web le jour et du Rust ou du C++ le soir, vous n’avez pas forcément besoin des mêmes 50 extensions chargées en permanence.

    VS Code permet maintenant de créer des Profils (Roue dentée > Profils > Créer un profil). Vous pouvez avoir un profil « Work » et un profil « Perso ».

    La bonne nouvelle ? Settings Sync gère aussi les profils. Vous pouvez donc retrouver votre profil « Dev React » parfaitement configuré sur tous vos ordinateurs, sans polluer votre installation avec des outils inutiles.

    Conclusion

    Si vous n’avez pas encore activé cette fonctionnalité, foncez. C’est le genre de configuration « set it and forget it » qui offre un confort de vie incroyable. On change d’ordi, on se logue, et on code. C’est aussi simple que ça.

    N’hésitez pas à me dire en commentaire si vous utilisez des profils spécifiques ou si vous préférez tout garder dans une config globale !

  • Automatiser vos déploiements (CI/CD) avec GitHub Actions

    Automatiser vos déploiements (CI/CD) avec GitHub Actions

    Les pipelines CI/CD (Continuous Integration / Continuous Delivery) sont devenus un standard incontournable du développement moderne. Ils assurent la qualité du code et accélèrent la mise en production.

    GitHub Actions offre une solution puissante et native pour orchestrer ces pipelines directement depuis votre dépôt GitHub, sans avoir besoin d’outils externes complexes comme Jenkins.

    Comprendre le CI/CD en un coup d’œil

    Avant de plonger dans le code, rappelons les concepts :

    • Continuous Integration (CI) : C’est le filet de sécurité. À chaque modification du code (push ou Pull Request), on compile le projet et on lance les tests automatiquement.
    • Continuous Delivery (CD) : C’est l’automatisation de la livraison. Si la CI est validée (tests au vert), le code est automatiquement déployé sur un serveur de test ou de production.

    Le principe clé : Si le code échoue à la compilation ou si un test ne passe pas, le processus s’arrête immédiatement. On ne déploie jamais une erreur.

    GitHub Actions : Comment ça marche ?

    GitHub Actions fonctionne via des Workflows (fichiers YAML) situés dans le dossier .github/workflows/. Pour bien comprendre la structure, il faut connaître ce vocabulaire :

    Action : Un script réutilisable (ex: actions/checkout pour récupérer le code).

    Workflow : Le processus automatisé complet (ex: « Déploiement Production »).

    Event (on) : L’événement qui déclenche le workflow (ex: un push sur main).

    Job : Une série d’étapes exécutées sur un même serveur (Runner).

    Step : Une tâche individuelle (ex: lancer une commande npm install).

    Cas pratique : Mettre en place la CI (Tests)

    Voici un workflow classique pour une application Node.js. Il s’assure que le code est sain avant toute chose.

    name: CI Test
    
    on:
      push:
        branches: [ "main" ]
      pull_request:
        branches: [ "main" ]
    
    jobs:
      build-and-test:
        runs-on: ubuntu-latest # Le système d'exploitation virtuel
    
        steps:
          # Étape 1 : Récupérer le code
          - name: Checkout code
            uses: actions/checkout@v4
    
          # Étape 2 : Installer l'environnement
          - name: Setup Node.js
            uses: actions/setup-node@v4
            with:
              node-version: '20' # Toujours utiliser une version LTS récente
              cache: 'npm'       # Astuce : met en cache les node_modules pour aller plus vite
    
          # Étape 3 : Installation et Tests
          - name: Install dependencies
            run: npm ci # 'npm ci' est plus fiable que 'npm install' pour les pipelines
          
          - name: Run tests
            run: npm testLangage du code : YAML (yaml)

    Cas pratique : Le Déploiement (CD)

    Une fois le code validé, nous voulons le déployer. Pour cet exemple, nous utiliserons SCP pour copier les fichiers vers un serveur Linux classique.

    Sécurité avant tout : Ne mettez jamais de mots de passe en clair dans vos fichiers YAML. Utilisez les GitHub Secrets (Settings > Secrets and variables > Actions).

    name: Deploy to Server
    
    on:
      push:
        branches: [ "main" ]
    
    jobs:
      deploy:
        runs-on: ubuntu-latest
        # Optionnel : attendre que la CI passe avant de déployer
        # needs: build-and-test 
    
        steps:
          - name: Checkout code
            uses: actions/checkout@v4
    
          # Imaginez ici une étape de "Build" (ex: npm run build) qui génère un dossier dist/
    
          - name: Copy files to server
            uses: appleboy/scp-action@master
            with:
              host: ${{ secrets.SERVER_IP }}
              username: ${{ secrets.SERVER_USER }}
              key: ${{ secrets.SERVER_SSH_KEY }}
              source: "dist/"
              target: "/var/www/myapp"
              strip_components: 1 # Pour éviter de copier le dossier parent "dist"Langage du code : YAML (yaml)

    L’astuce Pro : Tester en local avec Act

    L’un des plus grands défis des pipelines CI/CD est le cycle « commit > push > attendre l’erreur > recommencer« . L’outil Act résout ce problème en vous permettant d’exécuter vos GitHub Actions localement via Docker.

    Pourquoi l’utiliser ?

    • Gain de temps immédiat (feedback loop rapide).
    • Pas de pollution de l’historique Git avec des commits « fix ci ».
    • Économie des minutes gratuites de GitHub Actions.

    Installation et utilisation :

    # Sur macOS
    brew install act
    
    # Lister les jobs disponibles
    act -l
    
    # Lancer le workflow complet
    act
    # Ou lancer un job spécifique
    act -j build-and-testLangage du code : Bash (bash)

    Conclusion

    L’automatisation avec GitHub Actions n’est pas seulement un gain de temps, c’est une garantie de sérénité. En mettant en place ce pipeline :

    1. Vous détectez les régressions instantanément (CI).
    2. Vous déployez sans intervention manuelle risquée (CD).
    3. Vous sécurisez vos accès grâce aux Secrets.

    Commencez par un workflow simple de tests, puis ajoutez le déploiement une fois à l’aise. Votre « moi du futur » vous remerciera !