TP1re année12 livrables
Découvrir un agent IA de code
Un assistant qui code avec toi, dans tes fichiers, en langage naturel : Claude Code, OpenCode… Tu vas apprendre à t'en servir — pour aller plus vite SANS perdre le contrôle. Et c'est ici que ton portfolio démarre vraiment.
Par Josselyn C., prof de BTS SIO. Publié le , mis à jour le .
- Objectif
- utiliser un agent IA de code (prompts efficaces, itération, relecture critique) et lancer ton portfolio
- On manipule
- un agent IA de code dans le terminal + ton projet portfolio (HTML/CSS)
- Pré-requis
- avoir fait HTML & CSS (ta page de présentation) et savoir utiliser le terminal
- Pour qui
- SLAM et SISR, 1re année
- Durée
- environ 3 h
Compétences : C1.6 Organiser son développement professionnel, C2.1 Concevoir et développer une solution applicative
L'IA t'assiste, elle ne te remplace pas : tu restes le pilote, tu relis et tu comprends ce qui est produit.
Avant de commencer
Pourquoi apprendre à coder AVEC l'IA
Les développeurs utilisent désormais des agents IA de code au quotidien : ils décrivent ce qu'ils veulent, l'IA propose le code, eux relisent et ajustent. Bien utilisé, c'est un accélérateur énorme. Mal utilisé, on copie-colle sans comprendre et on produit du code cassé. Tout l'enjeu de cette séance : t'en servir comme un pro — vite, mais en gardant la main et la compréhension.
Ce que tu sauras faire à la fin
| Compétence | Tu sauras… |
|---|---|
| Lancer un agent | démarrer Claude Code / OpenCode sur ton projet |
| Comprendre le contexte | savoir ce que l'agent « voit » de ton projet |
| Bien prompter | écrire des demandes précises qui donnent du bon code |
| Relire le diff | accepter ou refuser un changement en connaissance de cause |
| Revenir en arrière | annuler proprement si l'agent casse quelque chose |
| Itérer | affiner par allers-retours avec l'agent |
| Garder le contrôle | relire, tester et comprendre le code produit |
| Lancer ton portfolio | améliorer ta page et documenter ta démarche |
0. C'est quoi un agent IA de code ?
Tu connais peut-être ChatGPT : tu poses une question, il répond du texte. Un agent IA de code va plus loin : il travaille directement dans ton projet — il lit tes fichiers, en crée, en modifie, lance des commandes — en suivant tes instructions en langage naturel.
| Chatbot (ChatGPT…) | Agent de code (Claude Code…) | |
|---|---|---|
| Où | une fenêtre de chat à part | dans ton terminal, sur ton projet |
| Ce qu'il fait | te donne du texte/code à copier | agit : crée/modifie tes fichiers, exécute |
| Ce qu'il voit | seulement ce que tu colles | les fichiers de ton dossier directement |
| Pour quoi | poser une question ponctuelle | construire/modifier une vraie appli |
La fenêtre de contexte — combien l'agent peut « garder en tête »
Tout ce que l'agent peut traiter en une fois s'appelle la fenêtre de contexte. Elle est mesurée en tokens (groupes d'environ 4 caractères, soit ~¾ de mot). Quand elle est pleine, l'agent « oublie » le début de la conversation.
| Outil | Fenêtre de contexte | Équivalent concret | Idéal pour |
|---|---|---|---|
| Claude Code (Sonnet) | ~200 000 tokens | ≈ un roman entier (~150 000 mots) | projets moyens à grands, lire tout un dépôt |
| OpenCode (GPT-4o) | ~128 000 tokens | ≈ un gros rapport technique (~100 000 mots) | projets petits/moyens |
| GitHub Copilot (inline) | ~8 000 tokens | ≈ le fichier ouvert + quelques voisins (~6 000 mots) | complétion ligne à ligne dans l'éditeur |
| ChatGPT / Claude web | 64 000 – 200 000 tokens | même taille, mais sans accès direct aux fichiers | questions ponctuelles, copier-coller |
Quel outil pour quoi ? (comparaison rapide)
| Outil | Accès | Point fort | Limite |
|---|---|---|---|
| Claude Code | terminal (abonnement ou clé API) | contexte énorme, lit tout le projet, très autonome | payant en prod ; interface terminal uniquement |
| OpenCode | terminal (clé API OpenAI) | compatible GPT-4o, bonne gestion des outils | contexte plus court ; coût par token |
| GitHub Copilot | extension VS Code (~10 €/mois) | intégré à l'éditeur, complétion temps réel | ne voit que le fichier actif ; peu autonome |
| ChatGPT / Claude.ai | navigateur (gratuit/payant) | zéro installation | copier-coller manuel, pas de diff |
Apprendre AVEC l'IA, pas faire faire À ma place
C'est la distinction la plus importante de la séance. Le même outil peut te rendre plus fort… ou te rendre dépendant et nul. Tout dépend de comment tu t'en sers.
| Faire faire à ma place (piège) | Apprendre avec (objectif) |
|---|---|
| « fais-moi tout le portfolio » | « ajoute cette section, puis explique-moi le code » |
| j'accepte sans lire | je lis le diff, je comprends, j'accepte |
| je ne saurais pas le refaire seul | je saurais réécrire l'idée sans l'agent |
| devant le jury E6 : je sèche | devant le jury E6 : j'explique mon code |
Flag A1
Checkpoint
Avec tes mots : quelle est la différence entre un chatbot classique et un agent IA de code ? Et entre « apprendre avec l'IA » et « lui faire faire le travail à ma place » ? Rends : ta réponse.
1. Lancer l'agent sur ton projet
On démarre l'agent dans le dossier de ton portfolio (celui avec index.html et style.css).
Étape 1 — Ouvrir un terminal dans le projet
Dans VS Code : Terminal → Nouveau terminal (il s'ouvre déjà dans ton dossier de projet). Vérifie où tu es :
ls
index.html style.css
Étape 2 — Démarrer l'agent
Selon l'outil installé en classe, lance l'une de ces commandes :
claude # Claude Code
opencode # OpenCode
Étape 3 — Lui parler la première fois
Tape ta première demande, en français, puis Entrée :
quels fichiers vois-tu dans ce projet ?
Je vois 2 fichiers : index.html et style.css.
index.html contient ta page de présentation,
style.css contient sa mise en forme.
Flag B1
Production
Lance l'agent dans le dossier de ton portfolio et demande-lui quels fichiers il voit. Rends : la commande utilisée pour le lancer + la réponse de l'agent (la liste des fichiers).
2. Le contexte : ce que l'agent « voit »
Un agent ne devine pas : il travaille à partir d'un contexte. Comprendre ce contexte, c'est comprendre pourquoi il répond bien ou mal.
1. Les fichiers du dossier
Quand tu le lances dans un dossier, l'agent peut lire les fichiers de ce dossier (et des sous-dossiers). C'est pour ça qu'il faut le lancer dans ton projet : lancé ailleurs, il ne voit pas ton index.html et travaille à l'aveugle.
2. Ce que tu lui écris
Tes prompts s'ajoutent au contexte au fil de la conversation. L'agent se souvient de ce qui a été dit plus haut dans la même session : tu peux dire « la section d'avant » sans tout réexpliquer.
3. Un fichier de mémoire (optionnel) — AGENTS.md / CLAUDE.md
Tu peux déposer à la racine de ton projet un petit fichier de consignes permanentes que l'agent lit à chaque démarrage. Selon l'outil il s'appelle AGENTS.md ou CLAUDE.md. Exemple de contenu :
Ce projet est mon portfolio de BTS SIO.
- Garde un style HTML/CSS simple et lisible.
- Commente le CSS pour que je comprenne.
- Explique-moi toujours ce que tu changes.
Modèle complet d'AGENTS.md pour ton portfolio
Voici un modèle pro à copier et adapter. Chaque section est expliquée :
# Consignes permanentes — Portfolio BTS SIO
## Contexte du projet
- Portfolio personnel HTML/CSS pur (pas de framework, pas de JavaScript pour l'instant).
- Fichiers : index.html (contenu), style.css (mise en forme).
- Sections dans cet ordre : #accueil, #apropos, #competences, #projets, footer contact.
## Style de code
- Une ligne de commentaire CSS avant chaque bloc de règles (ex: /* Bouton principal */).
- Classes en français avec tirets : .carte-projet, .btn-cv, .barre-nav.
- Indentation : 2 espaces.
## Ce que tu dois TOUJOURS faire
- Montrer le diff et attendre ma validation avant de modifier un fichier.
- Expliquer chaque propriété CSS que tu utilises en 1 phrase.
- Si tu n'es pas sûr d'une propriété, le dire.
## Ce que tu ne dois JAMAIS faire
- Supprimer mon contenu existant sans me le demander explicitement.
- Ajouter du JavaScript (on n'a pas encore vu ça).
- Utiliser des classes Bootstrap ou Tailwind.
Flag B2
Production (mémoire de projet)
Crée à la racine de ton portfolio un fichier de mémoire (AGENTS.md ou CLAUDE.md) avec 2-3 consignes durables qui te ressemblent. Rends : le contenu de ton fichier.
3. Le bon prompt : précis = bon résultat
La qualité de ce que tu obtiens dépend entièrement de ta demande (le prompt). Un prompt vague donne un résultat vague.
| Prompt faible | Prompt fort |
|---|---|
| « améliore ma page » | « ajoute une section "Mes projets" dans le <main> avec 3 cartes en grille, chacune avec un titre et une courte description » |
| « mets des couleurs » | « change la couleur principale du site en bleu nuit (#1b2a4a) et adapte les liens en conséquence » |
Un même besoin, deux niveaux de prompt
FAIBLE : fais un menu
FORT : dans index.html, ajoute une barre de navigation
en haut avec 4 liens (Accueil, À propos,
Projets, Contact) qui pointent vers les sections
de la page. Style sobre, fond foncé, texte clair.
expl.
Le prompt fort dit où (index.html, en haut), quoi (4 liens nommés), comment (vers les sections, style sobre). L'agent n'a presque plus à deviner → il tape juste.
Atelier — répare 3 prompts faibles
Voici 3 demandes trop vagues. Pour chacune, repère ce qui manque (le contexte ? le quoi précis ? le comment ?), puis réécris-la en prompt fort.
| Prompt faible | Ce qui manque (indice) |
|---|---|
| « rends ma page plus jolie » | aucun « quoi » concret : que changer exactement ? |
| « ajoute une image » | où ? laquelle ? quelle taille / quel texte alternatif ? |
| « corrige le bug » | quel bug ? sur quel fichier ? que vois-tu vs que veux-tu ? |
La question à te poser à chaque fois
« Si je donnais cette phrase à un humain qui ne connaît pas mon projet, saurait-il quoi faire sans me reposer de question ? » Si non, il manque du contexte, du quoi ou du comment.
Exemple travaillé — de bout en bout (patron atomique)
On suit le cycle complet : prompt fort → diff agent → explication token par token → résultat attendu. Cible : ajouter un bouton « Télécharger mon CV » à la section À propos.
Le prompt fort (à écrire à l'agent) :
dans index.html, dans la section id="apropos",
ajoute un lien-bouton "Télécharger mon CV" juste après
le paragraphe de présentation. href="cv.pdf".
Style dans style.css : fond #3d1d63, texte blanc,
padding 10px 24px, coins arrondis 6px,
au survol fond plus clair (#5b2d8e), transition douce.
expl.
dans index.html, dans la section id="apropos" — localisation double : fichier + section. L'agent sait exactement où chercher, il ne peut pas se tromper d'endroit.
juste après le paragraphe de présentation — position précise par rapport à un repère existant. Évite « en bas » ou « quelque part ».
href="cv.pdf" — valeur exacte de l'attribut. L'agent ne devine pas le nom de ton fichier CV.
fond #3d1d63 — valeur hexadécimale, pas « violet foncé » que l'agent interpréterait selon sa propre palette.
transition douce — une exigence qualitative volontairement vague pour laisser l'agent choisir la valeur de durée. Tu verifieras le résultat et ajusteras si besoin.
Ce que l'agent propose (diff) :
--- index.html
<p>Je m'appelle ... étudiant en BTS SIO SLAM.</p>
+ <a href="cv.pdf" class="btn-cv">Télécharger mon CV</a>
--- style.css
+ /* Bouton lien CV */
+ .btn-cv {
+ display: inline-block;
+ background-color: #3d1d63;
+ color: #ffffff;
+ padding: 10px 24px;
+ border-radius: 6px;
+ text-decoration: none;
+ font-weight: 700;
+ transition: background-color 0.2s ease;
+ }
+ .btn-cv:hover {
+ background-color: #5b2d8e;
+ }
expl.
<a href="cv.pdf" class="btn-cv"> — un lien (<a>), pas un <button>. Pourquoi ? Parce qu'un <button> HTML n'a pas d'attribut href nativement : il déclenche une action JavaScript. Un lien vers un fichier = balise <a>. La distinction est sémantique et accessible (les lecteurs d'écran les distinguent).
display: inline-block — par défaut un <a> est inline (comme du texte) et n'accepte pas bien le padding vertical. inline-block lui donne la mise en forme d'un bloc (padding, dimensions) tout en restant dans le flux du texte.
padding: 10px 24px — raccourci : 10 px haut/bas, 24 px gauche/droite. C'est ce qui crée la « forme bouton » (espace autour du texte). Si tu inverses (24 px haut, 10 px gauche), le bouton devient très haut et étroit.
border-radius: 6px — 6 px de coin arrondi. 0 = rectangle parfait, 50 % = cercle (utilisé pour les avatars). Les boutons pro tournent entre 4 px et 12 px.
text-decoration: none — supprime le soulignement automatique des liens. Sans cette ligne, le texte « Télécharger mon CV » serait souligné comme un lien classique.
transition: background-color 0.2s ease — anime le changement de couleur au survol sur 0,2 seconde avec une accélération douce (ease). Sans transition, le changement de couleur au survol est instantané (brutal). 0.2s est la durée idéale : assez court pour ne pas sembler lent, assez long pour être perceptible.
.btn-cv:hover { background-color: #5b2d8e; } — :hover est une pseudo-classe CSS : les règles s'appliquent uniquement quand la souris survole l'élément. #5b2d8e est un violet légèrement plus clair que #3d1d63 — l'effet de surbrillance est subtil, c'est voulu.
[Résultat attendu dans le navigateur]
Un bouton violet foncé texte blanc arrondi.
Au survol : fond légèrement plus clair, transition fluide.
Si cv.pdf n'existe pas encore : le bouton s'affiche,
mais rien ne se télécharge au clic (erreur 404 silencieuse
dans la console — F12 → onglet Console pour la voir).
Et si… cv.pdf n'existe pas encore ?
Le bouton s'affiche correctement, mais au clic le navigateur affiche une erreur 404 (fichier introuvable). Solution temporaire : remplace href="cv.pdf" par href="#" — le bouton reste visible et cliquable sans erreur. Quand ton vrai CV est prêt, tu remets href="cv.pdf" et tu déposes le fichier dans le même dossier qu'index.html.
Flag B3
Production
- Réécris les 3 prompts faibles de l'atelier en versions fortes (contexte + quoi + comment + résultat attendu).\
- Puis écris ton prompt fort pour ajouter quelque chose d'utile à ta page, et lance-le. Rends : tes 3 réécritures + ton prompt réel + ce que l'agent a proposé.
4. La boucle de travail
Travailler avec un agent, ce n'est pas « un prompt → c'est fini ». C'est une boucle que tu répètes : tu demandes, il propose, tu relis, tu testes, et si ce n'est pas parfait… tu recommences en affinant.
La boucle en une phrase
Prompt → diff → relire/accepter → tester → (si besoin) reformuler. Tu fais le tour de cette boucle autant de fois qu'il faut, par petits pas. Les 4 prochains chapitres détaillent chaque étape.
5. Lire le diff & accepter
L'agent te propose des modifications de fichiers. Avant de les accepter, on regarde ce qu'il change.
Le diff : ce qui change
L'agent montre un diff : les lignes ajoutées (souvent en vert, préfixées +) et supprimées (en rouge, préfixées -). Il te demande si tu acceptes.
<main>
+ <section id="projets">
+ <h2>Mes projets</h2>
+ </section>
</main>
expl.
Les lignes + = ce que l'agent veut ajouter. Les lignes sans préfixe = le contexte autour (inchangé), pour que tu situes où ça s'insère. Tu lis : est-ce que ça correspond à ce que j'ai demandé ? Si oui, tu acceptes ; sinon, tu refuses et tu reformules.
Mode plan vs mode auto-accept
La plupart des agents proposent plusieurs façons de valider les changements. À connaître :
| Mode | Ce qui se passe | Pour toi (débutant) |
|---|---|---|
| Plan | l'agent explique d'abord ce qu'il compte faire, sans toucher aux fichiers | idéal pour comprendre avant d'agir |
| Demande à chaque fois | il te montre chaque diff et attend ton OK | le bon réglage par défaut |
| Auto-accept | il applique tout sans te demander | à éviter tant que tu débutes |
Auto-accept = danger pour débuter
Le mode auto-accept est rapide mais te fait perdre le contrôle : l'agent peut enchaîner 10 modifications que tu n'as pas lues.
Tant que tu apprends, reste en mode « il demande à chaque fois ». Tu accepteras consciemment, un changement après l'autre.
Ne jamais accepter à l'aveugle
« Accepter tout sans lire » est le piège n°1. Même si c'est tentant d'aller vite, lis le diff : c'est toi qui es responsable du code de TON projet.
Un changement non compris aujourd'hui = un bug incompréhensible demain.
Checklist de lecture d'un diff (à passer mentalement avant d'accepter)
| Question à te poser | Pourquoi ça compte | Si non… |
|---|---|---|
Les lignes + correspondent-elles à ce que j'ai demandé ? | L'agent peut interpréter ta demande différemment de ce que tu voulais | Refuse (n) et reformule |
Y a-t-il des lignes - que je n'ai pas demandées ? | L'agent supprime parfois du contenu existant « pour réorganiser » | Refuse et ajoute « sans toucher au contenu existant » dans ton prompt |
Les balises HTML sont-elles équilibrées ? (chaque <div> ouvert a son </div>) | Une balise non fermée casse toute la page sans message d'erreur visible | Refuse et demande à l'agent de vérifier les balises |
| Je comprends à peu près ce que fait le code ajouté ? | Si non, tu ne pourras pas déboguer si ça casse | Accepte mais note : demande à l'agent d'expliquer juste après |
Erreur courante
l'agent supprime ton contenu sans prévenir
Symptôme exact : le diff montre des lignes - (supprimées) qui correspondent à ton texte de présentation ou à du contenu que tu avais écrit.
Cause : tu as demandé « améliore la section » et l'agent a décidé de « réécrire » plutôt qu'« ajouter ».
Solution : refuse (n), puis reformule en ajoutant explicitement : « sans supprimer ni modifier le contenu existant, seulement ajouter ». Sur un fichier déjà rempli, c'est une précaution à mettre dans chaque prompt.
Prévention : ajoute cette ligne dans ton AGENTS.md : « Ne jamais supprimer mon contenu existant sans me le demander explicitement. »
Erreur courante
l'agent ajoute !important dans le CSS
Symptôme exact : le diff contient des lignes du type color: red !important; ou display: flex !important;. Visuellement, ça semble marcher.
Cause : l'agent n'arrive pas à trouver pourquoi une règle CSS ne s'applique pas (conflit de spécificité) et utilise !important comme solution de facilité. La spécificité est la règle qui détermine quelle règle CSS « gagne » quand deux règles ciblent le même élément — un sélecteur id est plus fort qu'une class, qui est plus forte qu'un element.
Pourquoi c'est grave : !important court-circuite toute la cascade CSS. Si tu modifies cette propriété plus tard, tu devras toi aussi ajouter !important partout pour contrer le premier — le CSS devient rapidement impossible à déboguer, même par un senior.
Solution : refuse le diff et dis à l'agent : « N'utilise pas !important. Analyse pourquoi la règle ne s'applique pas (problème de spécificité ou de sélecteur) et corrige proprement. » Si l'agent utilise un sélecteur plus précis (ex. .section-projets .carte au lieu de .carte), la règle l'emportera sans !important.
Règle pro : !important est justifié uniquement dans les bibliothèques de classes utilitaires type Tailwind, jamais dans du CSS rédigé à la main sur ton propre projet.
Flag B4
Production
Accepte une modification proposée par l'agent, puis ouvre le fichier : retrouve ce qui a changé. Rends : le diff (les lignes ajoutées) et explique avec TES mots ce que fait ce nouveau code.
6. Annuler, revenir en arrière
Ça arrive : l'agent casse quelque chose, ou tu acceptes un changement que tu regrettes. Pas de panique — on sait toujours revenir en arrière. Un dev qui sait annuler proprement n'a peur de rien.
Méthode 1 — Annuler dans l'éditeur (Ctrl+Z)
Si l'agent vient de modifier un fichier ouvert dans VS Code, tu peux annuler directement dans l'éditeur, comme dans un traitement de texte :
| Action | Windows / Linux | macOS |
|---|---|---|
| Annuler la dernière modif | Ctrl + Z | Cmd + Z |
| Refaire (annuler l'annulation) | Ctrl + Y | Cmd + Maj + Z |
expl.
Le fichier doit être ouvert et au premier plan dans VS Code pour que Ctrl+Z agisse dessus. Appuie plusieurs fois pour remonter plusieurs modifications.
Méthode 2 — Demander à l'agent de revenir en arrière
Tu peux simplement le lui dire, dans la conversation :
annule ton dernier changement, remets le code comme avant
expl.
L'agent se souvient de ce qu'il a modifié dans la session et peut le défaire. Vérifie quand même le résultat (relis, teste) : « il a dit que c'est annulé » ne suffit pas.
Le vrai filet de sécurité arrive bientôt : Git
Ctrl+Z dépanne, mais il a des limites (un seul fichier, l'historique se perd si tu fermes l'éditeur).
À la prochaine séance, tu apprendras Git : il enregistre des « points de sauvegarde » de tout ton projet, auxquels tu peux revenir à tout moment. C'est le filet des pros quand on travaille avec un agent.
Erreur courante
« tout est cassé, ma page est blanche »
Symptôme : après un changement, la page ne s'affiche plus du tout.
Cause fréquente : une balise mal fermée ou une accolade CSS manquante.
Solution : annule le dernier changement (Ctrl+Z), recharge la page. Si c'est réparé, redemande la modif en plus petit.
Flag C1
Annulation maîtrisée
Accepte un changement, puis annule-le (par Ctrl+Z ou en le demandant à l'agent) et vérifie que ta page est revenue à l'état d'avant. Rends : la méthode utilisée et comment tu as vérifié le retour en arrière.
7. Vérifier : ça marche vraiment ?
Le code produit a l'air bon ≠ il est bon. On teste, toujours.
- Ouvre ta page dans le navigateur (ou rafraîchis avec
F5). - Le résultat correspond-il à ta demande ?
- Rien n'est cassé ailleurs (le reste de la page va bien) ?
Comment ça marche
l'IA se trompe parfois
Un agent IA peut produire du code qui semble juste mais ne marche pas, ou inventer une balise/propriété qui n'existe pas : c'est une hallucination.
C'est pour ça qu'on teste systématiquement. La règle des pros : « confiance, mais vérification ».
Erreur courante
« l'agent a dit que c'était bon »
Symptôme : l'agent affirme « voilà, c'est corrigé » alors que ça ne marche pas.
Qui décide : toi. C'est le test dans le navigateur (ou l'exécution) qui tranche, pas l'agent.
Solution : s'il y a un souci, dis-le-lui précisément : « la section ne s'affiche pas, le titre est invisible ».
Exemple — bien décrire un problème à l'agent
Un agent corrige bien… si tu décris bien. Compare ces deux signalements après un bug d'affichage :
| Signalement faible | Signalement fort |
|---|---|
| « ça marche pas » | « la section "Mes projets" ne s'affiche pas du tout dans le navigateur ; les autres sections sont là » |
| « c'est moche » | « les 3 cartes se chevauchent et le texte dépasse de la carte sur mobile » |
Le réflexe : dire ce que tu vois vs ce que tu attendais, et où. Mini-dialogue :
Toi : après ton changement, ma page est vide à partir du titre "Mes projets". Avant elle s'affichait. Trouve ce qui est cassé.
Tu as raison : j'avais oublié de fermer la balise
</section>. Voici le correctif :
- <div class="cartes">
+ <div class="cartes">...</div>
+ </section>
expl.
En décrivant le symptôme exact (« vide à partir de tel titre », « avant ça marchait »), tu donnes à l'agent de quoi localiser le bug. Tu relis le diff, tu acceptes, tu re-testes.
Flag C2
Vérification
Après une modification de l'agent, teste ta page. Si quelque chose ne va pas, signale-le précisément à l'agent et fais corriger. Rends : le problème constaté et le message exact que tu as envoyé à l'agent pour le faire corriger.
8. Itérer : le dialogue
On obtient rarement le résultat parfait du premier coup. Le vrai pouvoir de l'agent, c'est l'itération : on affine par petits pas.
| Tour | Ton message |
|---|---|
| 1 | « ajoute une section projets avec 3 cartes » |
| 2 | « mets-les en grille de 3 colonnes » |
| 3 | « ajoute une ombre douce et un effet au survol » |
| 4 | « en mobile, passe-les sur une seule colonne » |
Petits pas > gros prompt
Plutôt qu'un énorme prompt de 10 demandes (où l'agent en oublie la moitié), avance par petites étapes vérifiées.
Tu gardes le contrôle, tu testes à chaque pas, et tu comprends ce que tu construis. C'est exactement la construction incrémentale en programmation : un bout, je teste, le bout suivant.
Pourquoi le gros prompt rate
| Gros prompt unique | Itération par petits pas | |
|---|---|---|
| Risque d'oubli | l'agent zappe des demandes | une demande = une vérif |
| Si ça casse | tu ne sais pas QUOI a cassé | tu sais : c'est le dernier pas |
| Compréhension | tu subis un gros bloc | tu comprends chaque ajout |
| Correction | tout reprendre | annuler juste le dernier pas |
Astuce
repartir d'une base qui marche
Quand un pas marche et te plaît, c'est un palier stable. Si le pas suivant tourne mal, tu reviens à ce palier (annulation) plutôt qu'au point de départ. Tu ne perds jamais tout ton travail.
Flag B5
Production (itération)
Pars d'une première version et améliore-la en 3 itérations successives avec l'agent (chaque message affine la précédente), en testant entre chaque. Rends : tes 3 messages dans l'ordre et l'évolution du résultat à chaque tour.
9. Une session complète, de bout en bout
Voici à quoi ressemble une vraie session sur le portfolio : un dialogue, du début (le prompt) à la fin (testé et validé). Lis-le comme un exemple à reproduire sur ton propre projet. Toi = ce que tu écris · Agent = ce qu'il répond.
Tour 1 — La demande
Toi :
dans index.html, ajoute après le titre une section
"Mes projets" avec 3 cartes. Chaque carte : un titre
et une phrase de description. Mets le style dans style.css.
Agent — il propose un diff sur deux fichiers :
index.html
+ <section id="projets">
+ <h2>Mes projets</h2>
+ <div class="cartes">
+ <article><h3>Page perso</h3><p>Ma 1re page HTML/CSS.</p></article>
+ <article><h3>...</h3><p>...</p></article>
+ </div>
+ </section>
Accepter ? (o/n)
Tour 2 — Tu relis, tu acceptes, tu testes
Tu lis le diff : ça correspond. Tu tapes o. Tu ouvres la page dans le navigateur (F5). Les 3 cartes s'affichent… mais les unes sous les autres, pas côte à côte. Pas grave : on itère.
Tour 3 — Tu affines
Toi :
mets les 3 cartes côte à côte, en grille de 3 colonnes,
avec un espace entre elles
Agent — diff sur le CSS :
style.css
+ .cartes { display: grid;
+ grid-template-columns: 1fr 1fr 1fr;
+ gap: 16px; }
expl.
display: grid — affiche les cartes en grille. grid-template-columns: 1fr 1fr 1fr — 3 colonnes de largeur égale. gap: 16px — un espace de 16 px entre les cartes. Tu acceptes, tu recharges : c'est bon, 3 colonnes.
Tour 4 — Tu fais expliquer (apprendre)
Toi : explique-moi ce que veut dire 1fr — l'agent t'explique que fr = « fraction » de l'espace dispo. Tu as appris un truc : tu repars plus fort, pas juste avec du code collé.
Tour 5 — Rendre la page mobile-friendly (responsive)
Toi :
sur écran mobile (largeur inférieure à 600px), mets les
3 cartes sur une seule colonne au lieu de 3 côte à côte
Agent — diff CSS :
style.css
+ @media (max-width: 600px) {
+ .cartes {
+ grid-template-columns: 1fr;
+ }
+ }
expl.
@media (max-width: 600px) — une media query : le bloc de règles à l'intérieur ne s'applique que si la largeur de l'écran est ≤ 600 px (taille typique d'un smartphone). En dehors de cette condition (écran plus large), le CSS général (1fr 1fr 1fr) reprend le dessus.
grid-template-columns: 1fr — une seule colonne pleine largeur. Ça « écrase » la règle 1fr 1fr 1fr du CSS global, mais uniquement pour les écrans étroits.
Comment tester sans smartphone : dans Chrome, appuie sur F12 → icône téléphone/tablette en haut à gauche des outils → sélectionne « iPhone SE » (375 px) dans le menu déroulant. Tu vois les cartes passer sur une colonne en temps réel. Repasse en « Desktop » pour retrouver les 3 colonnes.
[Résultat attendu — mode mobile 375 px dans DevTools]
Les 3 cartes s'empilent verticalement.
Chacune occupe toute la largeur disponible.
[En mode desktop 1280 px]
Les 3 cartes reviennent côte à côte, 3 colonnes.
Les breakpoints courants
les chiffres que les pros utilisent
Un breakpoint est le seuil de largeur où la mise en page change. Il n'y a pas de règle universelle, mais ces valeurs reviennent souvent :
| Seuil | Appareils ciblés | Utilisation typique |
|---|---|---|
480 px | petit smartphone (iPhone SE old) | colonne unique, texte large |
600 px | smartphone standard (iPhone 14, Android) | passage 3 colonnes → 1 |
768 px | tablette portrait (iPad) | passage à 2 colonnes |
1024 px | tablette paysage / petit laptop | début mise en page « desktop » |
1280 px | écran laptop standard | largeur max du contenu centré |
Pour un portfolio personnel, 600 px suffit comme unique breakpoint : un seul @media simple, lisible, maintenable. Si tu en mets 5, le CSS devient difficile à déboguer.
Mobile-first vs Desktop-first
ce que les pros font (et pourquoi)
Il existe deux façons opposées d'écrire du CSS responsive :
| Desktop-first (ce qu'on a fait) | Mobile-first (standard industrie) | |
|---|---|---|
| Logique | CSS de base = grand écran, @media (max-width: …) rétrécit | CSS de base = petit écran, @media (min-width: …) élargit |
| Exemple cartes | .cartes { grid-template-columns: 1fr 1fr 1fr; }puis @media (max-width: 600px) { grid-template-columns: 1fr; } | .cartes { grid-template-columns: 1fr; }puis @media (min-width: 600px) { grid-template-columns: 1fr 1fr 1fr; } |
| Pourquoi mobile-first est préféré | — | +60 % du trafic web vient du mobile (2025) ; le navigateur mobile charge d'abord le CSS le plus léger, sans traiter les media queries desktop inutiles |
Pour ce TP, les deux approches fonctionnent. À retenir : si l'agent utilise min-width dans ses @media, il fait du mobile-first — c'est une bonne pratique, ne le corrige pas. Si tu veux adopter le mobile-first sur ton portfolio, dis-le dans ton AGENTS.md : « Écris le CSS en mobile-first : base = mobile, @media (min-width: …) pour le desktop. »
Tour 6 — Sauvegarder avant de continuer
Toi : dans VS Code, Ctrl + S sur index.html et style.css. C'est maintenant un bon réflexe à prendre après chaque changement accepté. La prochaine séance t'apprendra à sauvegarder toute l'histoire du projet avec Git — mais d'ici là, Ctrl + S assure le minimum.
Flag B6
Production (reproduis la session)
Reproduis cette boucle complète sur TON portfolio : un prompt qui crée quelque chose → tu acceptes → tu testes → au moins une itération qui corrige/améliore → une question « explique-moi… ». Rends : ta session sous forme de dialogue (tes messages + ce que l'agent a fait), et la chose que tu as apprise.
10. Limites & ta responsabilité
Un bon utilisateur d'IA connaît ses limites. Ça évite les mauvaises surprises.
À quoi ressemble une hallucination
Une hallucination, c'est l'IA qui affirme du faux avec assurance. Exemple typique : une propriété CSS qui n'existe pas.
/* proposé par l'agent */
.carte { text-shadow-color: bleu;
rounded-corners: 12px; }
expl.
Ces deux propriétés n'existent pas en CSS (les vraies sont box-shadow et border-radius, et une couleur s'écrit blue ou un code hexa). Le navigateur les ignore en silence : ta page n'a ni ombre ni coins arrondis, et aucun message d'erreur. D'où l'importance de tester : si l'effet attendu n'apparaît pas, méfiance.
Comment démasquer une hallucination
1. L'effet attendu n'apparaît pas après le test → suspect.
2. Demande à l'agent : « cette propriété existe-t-elle vraiment ? » ou cherche le mot dans la doc (MDN).
3. Dans le doute, fais expliquer : un nom inventé tient rarement la route à l'explication.
MDN
vérifier n'importe quelle propriété CSS/HTML en 20 secondes
MDN Web Docs (developer.mozilla.org) est la référence officielle du Web, maintenue par Mozilla, Google et Microsoft. C'est le réflexe de tout développeur pour vérifier une propriété suspecte :
- Dans la barre d'adresse ou Google, tape
mdn border-radius(remplace par la propriété à vérifier) → MDN apparaît en premier résultat. - Sur la page MDN, vérifie que la propriété existe (page avec syntaxe, exemples). Si la propriété n'existe pas, MDN affiche « Page not found » ou redirige vers un résultat générique.
- En bas de chaque page MDN : le tableau « Browser compatibility » — une coche verte = supportée dans Chrome/Firefox/Safari, une croix rouge = non supportée. Les propriétés hallucinees n'ont évidemment pas de page MDN.
| Propriété | MDN trouve ? | Verdict |
|---|---|---|
border-radius | Oui, page complète | Réelle — utilise-la |
rounded-corners | Non (page not found) | Inventée — hallucination |
text-shadow-color | Non | Inventée — la vraie propriété est text-shadow (qui inclut la couleur) |
| Limite | Le réflexe |
|---|---|
| Hallucinations (invente du faux) | tester, vérifier dans la doc |
| Code qui « marche » mais mal écrit | relire, demander d'expliquer |
| Tu ne comprends plus ton projet | avancer par petits pas, faire expliquer |
| Données sensibles | ne jamais coller mots de passe / données privées |
En BTS et en examen, c'est TOI qui es évalué
L'IA est un outil pour apprendre plus vite, pas pour penser à ta place.
À l'examen E6, tu dois comprendre et défendre ton code devant un jury. Un code que tu ne sais pas expliquer ne vaut rien.
Utilise l'agent pour apprendre, pas pour zapper la compréhension.
Éthique : citer son usage de l'IA
En contexte scolaire et professionnel, on est honnête sur l'usage de l'IA. Ce n'est pas tricher de l'utiliser ; ce serait malhonnête de cacher qu'on l'a utilisée et de faire passer pour « compris » du code qu'on ne comprend pas.
| OK | Pas OK |
|---|---|
| « j'ai généré cette section avec l'agent puis je l'ai relue et adaptée » | rendre un code IA en prétendant l'avoir écrit seul |
| documenter ses prompts et ses corrections | copier sans comprendre, et sécher à l'oral |
Le réflexe portfolio
Dans ta documentation, une simple ligne suffit : « section générée avec l'agent IA, relue et modifiée par moi (ajout des vraies descriptions, choix des couleurs) ». C'est professionnel et honnête.
Ce qui part vraiment « dans le cloud » — tableau de risque
Quand tu utilises Claude Code ou OpenCode, tes prompts et le contenu de tes fichiers sont envoyés aux serveurs distants d'Anthropic / OpenAI. Voici ce que ça implique concrètement :
| Ce que tu envoies | Niveau de risque | Ce qu'il faut faire |
|---|---|---|
| Ton HTML/CSS de portfolio personnel | Nul — c'est public | Rien de particulier |
Un fichier .env avec DB_PASSWORD= ou API_KEY= | Critique — la clé peut être capturée et réutilisée par un tiers | Ne jamais ouvrir ce dossier dans l'agent ; ajouter .env au .gitignore |
| Des données personnelles réelles (noms, e-mails, numéros) | Illégal si non consentis (RGPD, art. 83 — jusqu'à 4 % du CA mondial) | N'utiliser que des données fictives en dev ; jamais de données réelles dans le contexte agent |
| Du code métier confidentiel d'une entreprise | Moyen à élevé — risque de fuite de propriété intellectuelle | Vérifier la politique de l'employeur avant d'utiliser un agent en stage |
À retenir pour le projet GSB Ordonnances (1A)
Dès que tu travailleras sur GSB Ordonnances (C#, MySQL), ton code contiendra :
- La chaîne de connexion MySQL avec mot de passe (
Pwd=gsbpass) - Des données patients simulées (mais structurées comme de vraies données médicales)
Pour utiliser un agent en toute sécurité sur ce projet : garde la chaîne de connexion dans un fichier appsettings.json non versionné (ou en variable d'environnement), et ne colle jamais une liste de patients dans un prompt. L'agent peut travailler sur la logique du code sans voir les données réelles.
Flag D1
Investigation
Demande à l'agent d'expliquer un bout de code qu'il a écrit (« explique-moi cette règle CSS ligne par ligne »). Rends : une chose précise que tu as apprise grâce à cette explication et que tu ne savais pas avant.
11. Kickoff : ton portfolio
Grand moment : on lance ton portfolio. C'est le site personnel que tu vas enrichir toute l'année et présenter au BTS blanc (décembre). Aujourd'hui, avec l'agent, on pose une vraie base.
Ce qu'un portfolio contient
| Section | Contenu |
|---|---|
| Accueil / À propos | qui tu es, ta formation (BTS SIO) |
| Compétences | ce que tu sais faire (et apprends) |
| Projets / Réalisations | tes travaux (les playbooks, ce TP, à venir l'AP) |
| Contact | comment te joindre (mail, GitHub à venir) |
4 bons prompts pour démarrer ton portfolio
Réutilise-les en les adaptant à toi (remplace les exemples par tes vraies infos) :
1) dans index.html, structure la page en 4 sections avec
des id : "accueil", "apropos", "competences", "projets".
Ajoute un titre h2 à chacune. Ne touche pas au contenu
déjà présent, déplace-le dans la bonne section.
2) ajoute une barre de navigation en haut avec 4 liens
qui mènent vers ces 4 sections (ancres #accueil, etc.).
3) dans la section competences, fais une liste à puces
de 5 compétences en cours d'acquisition (HTML, CSS,
terminal, Git à venir, travail avec un agent IA).
4) dans la section projets, crée une carte "réalisation"
pour CE TP : titre, 2 phrases de description, et la
mention des compétences travaillées.
expl.
Chaque prompt est ciblé (un seul objectif), précise le fichier, les id/ancres attendus, et protège l'existant (« ne touche pas au contenu déjà présent »). C'est ce niveau de précision qui donne un bon résultat du premier coup.
La structure cible (à quoi tu veux arriver)
Voici le squelette que tes prompts doivent produire dans index.html. Garde-le sous les yeux comme objectif :
<body>
<nav>...4 liens vers les sections...</nav>
<main>
<section id="accueil">...</section>
<section id="apropos">...</section>
<section id="competences">...</section>
<section id="projets">...</section>
</main>
<footer>...contact...</footer>
</body>
expl.
Chaque <section> a un id : c'est lui qui permet aux liens du <nav> (ancres #accueil…) de sauter à la bonne section. Tu n'es pas obligé d'écrire ce code toi-même : tu le demandes à l'agent, mais tu sais maintenant à quoi doit ressembler le résultat — donc tu peux vérifier qu'il l'a bien fait.
Le portfolio, ça se documente
Pour l'épreuve E5, un portfolio doit relier chaque réalisation à des compétences et montrer des preuves.
Dès maintenant, prends l'habitude : pour chaque chose que tu ajoutes, note ce que ça démontre. Le réflexe se prend tôt.
Ce que le jury E5 regardera vraiment — le tableau de synthèse
L'épreuve E5 dure 40 minutes en oral. Le jury évalue à partir de ton portfolio numérique et d'un tableau de synthèse que tu auras rempli avant l'examen. Chaque ligne du tableau = une réalisation professionnelle, avec ces colonnes :
| Colonne du tableau E5 | Ce que tu documentes maintenant | Exemple pour ce TP |
|---|---|---|
| Intitulé de la situation | une phrase courte décrivant la réalisation | « Développement du portfolio BTS SIO avec agent IA » |
| Période et durée | mois/année + durée approximative | Sept. 2026 · ~3,5 h |
| Compétences mobilisées | intitulés exacts du référentiel | C1.6 (veille, mise à jour des compétences) · C2.1 (développer en respectant les standards) |
| Productions / résultats | liens, fichiers, captures | URL de ton portfolio + lien vers ton journal.md |
| Preuves | captures annotées, extraits de code | capture du diff accepté, résultat dans le navigateur, contenu de ton AGENTS.md |
Réflexe à prendre dès maintenant : une capture d'écran significative par séance, légendée en une phrase (« ce diff montre l'ajout de la section Projets en CSS Grid »). En fin d'année, tu auras toute la matière pour remplir le tableau sans effort de mémoire.
Ce que les jurys reprochent le plus souvent : des réalisations listées sans preuves concrètes, ou des compétences revendiquées avec des intitulés inexacts. Utilise uniquement les intitulés officiels du référentiel — jamais « gestion de base de données », mais « C2.3 — Gérer les données ».
Flag B7
Production (lancement portfolio)
Avec l'agent, transforme ta page de présentation en une vraie base de portfolio : au moins les sections Accueil/À propos, Compétences, Projets. Rends : la structure obtenue (les sections) et 2 prompts clés que tu as utilisés.
12. Mini-projet : construire & documenter
On boucle en mode pro : produire une amélioration avec l'agent, et documenter sa démarche (le réflexe portfolio / E5).
La mission
- Choisis une amélioration concrète pour ton portfolio (ex. une galerie de projets, un thème de couleurs, un menu responsive).
- Réalise-la par itérations avec l'agent (au moins 3 allers-retours), en testant à chaque étape.
- Documente dans ton
journal.md: tes prompts, ce que l'agent a produit, ce que tu as gardé / corrigé, et ce que tu as appris. - Vérifie que tu comprends le code final (sois capable de l'expliquer sans l'agent).
Le modèle de « fiche de démarche »
| Rubrique | Ce que tu écris |
|---|---|
| Objectif | ce que je voulais ajouter et pourquoi |
| Mes prompts | les demandes exactes, dans l'ordre |
| Résultat | ce que l'agent a produit |
| Mes corrections | ce que j'ai changé / refusé moi-même |
| Part de l'IA | ce qui vient de l'agent vs ce qui vient de moi |
| Apprentissage | 1 chose que je sais faire maintenant |
Exemple de fiche remplie (pour t'inspirer)
Objectif : ajouter une galerie de 3 projets en cartes.
Mes prompts : (1) « crée une section projets avec 3 cartes… » (2) « mets-les en grille 3 colonnes » (3) « ombre + survol ».
Résultat : section + CSS .cartes en grille.
Mes corrections : j'ai remplacé les textes bidon par mes vrais projets ; refusé une couleur trop vive.
Part de l'IA : structure HTML/CSS générée par l'agent, contenu et choix de couleurs par moi.
Apprentissage : je sais faire une grille CSS avec grid-template-columns.
Flag B8
Mini-projet (production)
Réalise et documente ton amélioration avec la fiche ci-dessus. Rends : ta « fiche de démarche » complète + confirme (en 2 phrases) que tu sais expliquer le code obtenu sans l'aide de l'agent.
Défis bonus
Bonus A : demande à l'agent de te proposer 2 façons différentes de faire une même chose, et choisis (en justifiant ton choix).
Bonus B : fais-toi expliquer un terme technique que l'agent a employé et que tu ne connaissais pas, puis réutilise-le correctement.
Bonus C : améliore ton fichier de mémoire (AGENTS.md / CLAUDE.md) avec une consigne qui t'a manqué pendant la séance.
Séquence avancée — comprendre le CSS généré
Chaque fois que l'agent génère du CSS, tu dois pouvoir en lire et en expliquer les lignes. Cette séquence te fait pratiquer ce déchiffrage — propriété par propriété — sur 3 blocs types que tu rencontreras dans ton portfolio.
Bloc 1 — La barre de navigation
L'agent a produit ce CSS pour ton <nav>. Lis chaque ligne, puis consulte l'explication.
nav {
display: flex;
justify-content: space-between;
align-items: center;
background-color: #1b2a4a;
padding: 12px 24px;
position: sticky;
top: 0;
z-index: 100;
}
expl.
display: flex — active le modèle de boîte Flexbox : les éléments enfants (logo + liens) s'alignent en ligne automatiquement. Sans ça, ils s'empileraient verticalement.
justify-content: space-between — pousse le premier enfant tout à gauche et le dernier tout à droite, avec tout l'espace entre eux. Idéal pour logo à gauche + liens à droite.
align-items: center — centre verticalement les éléments dans la barre. Sans ça, le logo et les liens auraient des hauteurs différentes et seraient mal alignés.
position: sticky; top: 0 — la barre reste collée en haut de la fenêtre quand on fait défiler la page. Sans sticky, elle défilerait avec le reste du contenu et disparaîtrait.
z-index: 100 — définit la « couche » de l'élément. 100 place la nav au-dessus de tous les éléments qui ont un z-index plus bas (par défaut 0). Sans ça, des images ou des sections pourraient passer devant la nav en défilant.
[Résultat attendu]
La barre reste visible en haut de la fenêtre quand
tu fais défiler la page. Logo à gauche, liens à droite,
tout centré verticalement sur la hauteur de la barre.
Erreur courante
la nav couvre le début de la page
Symptôme : quand tu cliques sur un lien d'ancre (#apropos), la page saute mais le titre est caché sous la barre de navigation.
Cause : la nav sticky a une hauteur (ex. 50 px), mais le scroll d'ancre ne la prend pas en compte.
Solution : demande à l'agent : « ma barre de navigation sticky fait environ 50px de haut et cache le début de chaque section quand je clique sur un lien. Ajoute un scroll-margin-top sur toutes mes sections. » Il ajoutera :
section { scroll-margin-top: 60px; }
scroll-margin-top: 60px — décale le point d'arrivée du scroll de 60 px vers le bas, laissant de la place pour la nav.
Bloc 2 — Les cartes de projets (Flexbox vs Grid)
L'agent peut utiliser Flexbox ou Grid pour aligner des cartes. Savoir différencier les deux te permet de choisir ou de corriger intelligemment.
Flexbox (display: flex) | Grid CSS (display: grid) | |
|---|---|---|
| Axe | 1D : une ligne OU une colonne | 2D : lignes ET colonnes simultanément |
| Idéal pour | nav, barre boutons, aligner logo + texte | galeries de cartes, mises en page à 2-3 colonnes |
| Taille des éléments | s'adapte au contenu par défaut | tu contrôles la taille des colonnes (ex. 1fr) |
| Responsive | flex-wrap: wrap + min-width sur les enfants | @media sur grid-template-columns |
| Apprendre en premier ? | Oui — plus simple, plus universel | Après Flexbox — plus puissant pour les mises en page complexes |
Astuce de choix rapide
Tu alignes des éléments en ligne (nav, boutons côte à côte) → Flexbox.
Tu fais une galerie (cartes en grille, plusieurs lignes de colonnes égales) → Grid.
En cas de doute : Flexbox marche presque toujours, Grid donne plus de contrôle sur la taille des colonnes.
Bloc 3 — La carte de projet (boîte complète)
.carte-projet {
background: #ffffff;
border: 1px solid #e0d8f0;
border-radius: 8px;
padding: 20px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.carte-projet:hover {
transform: translateY(-4px);
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.14);
}
expl.
border: 1px solid #e0d8f0 — contour fin d'1 px, plein (solid), couleur lavande très pâle. Donne de la délimitation sans être agressif.
border-radius: 8px — coins arrondis de 8 px, style « carte matérielle » moderne.
box-shadow: 0 2px 8px rgba(0,0,0,0.08) — ombre portée. Les 4 valeurs : décalage horizontal (0), décalage vertical (2 px vers le bas), flou (8 px), couleur. rgba(0,0,0,0.08) = noir à 8 % d'opacité = très légère. L'ombre donne l'illusion que la carte « flotte » légèrement au-dessus du fond.
transition: transform 0.2s ease, box-shadow 0.2s ease — anime deux propriétés en même temps (le déplacement et l'ombre). On liste chaque propriété séparée par une virgule.
transform: translateY(-4px) — au survol, la carte remonte de 4 px vers le haut (-4px = direction haut). translateY déplace l'élément sur l'axe vertical sans changer la mise en page des voisins (contrairement à margin-top: -4px qui repousserait les autres éléments).
box-shadow: 0 6px 16px rgba(0,0,0,0.14) au survol — l'ombre grossit et s'assombrit légèrement : ça renforce l'illusion de « soulèvement » commencée par le translateY.
[Résultat attendu]
En repos : carte avec légère ombre et bord arrondi.
Au survol : la carte remonte doucement de 4 px,
l'ombre s'agrandit — effet "soulèvement" fluide.
Et si… l'effet hover ne marche pas sur mobile ?
Sur écran tactile, il n'y a pas de souris → pas de survol. Le :hover est ignoré (ou déclenché brièvement au tap). C'est normal et attendu. Pour des interactions mobiles, on utilise :active (au tap) ou JavaScript — notions qui viendront plus tard. Pour un portfolio BTS, :hover desktop est suffisant.
Pour finir
Ton antisèche (bien travailler avec un agent)
| Réflexe | Pourquoi |
|---|---|
| Lancer l'agent DANS le projet | sinon il ne voit pas tes fichiers (contexte) |
| Prompt précis (contexte + quoi + comment) | moins d'allers-retours |
| Lire le diff avant d'accepter | tu restes responsable du code |
| Rester en mode « demande à chaque fois » | garder le contrôle (éviter auto-accept) |
| Savoir annuler (Ctrl+Z / Git bientôt) | oser, sans peur de casser |
| Tester dans le navigateur | « ça marche » ≠ « ça a l'air bon » |
| Itérer par petits pas | contrôle + compréhension |
| Faire expliquer ce qu'on ne comprend pas | apprendre AVEC, pas faire faire à sa place |
Vérifie tes acquis
- Différence entre un chatbot et un agent IA de code ?
- Que « voit » un agent de ton projet (son contexte) ? À quoi sert un fichier AGENTS.md / CLAUDE.md ?
- Qu'est-ce qui fait un bon prompt ?
- Pourquoi faut-il lire le diff avant d'accepter, et pourquoi éviter l'auto-accept en débutant ?
- Comment reviens-tu en arrière si l'agent casse quelque chose ?
- Qu'est-ce qu'une « hallucination » de l'IA, et comment s'en protéger ?
- Pourquoi vaut-il mieux itérer par petits pas qu'envoyer un gros prompt ?
- Pourquoi est-il essentiel de comprendre le code que l'IA produit (pense à l'E6) ? Comment cites-tu honnêtement ton usage de l'IA ?
Tu es bloqué ?
La commande de l'agent n'est pas reconnue ? → vérifie le nom exact de l'outil installé en classe.
L'agent ne voit pas tes fichiers ? → tu l'as lancé dans le mauvais dossier ; place-toi dans le projet (cd) puis relance.
Tout est cassé après un changement ? → annule (Ctrl+Z) ou demande à l'agent de revenir en arrière, puis recharge la page.
Le code ne marche pas ? → décris le problème précisément à l'agent (ce que tu vois vs ce que tu attends).
Un mot incompris ? → glossaire ci-dessous (ou demande à l'agent !).
Glossaire
| Mot | Définition |
|---|---|
| Agent IA de code | une IA qui agit dans ton projet (lit/crée/modifie des fichiers) sur tes instructions |
| Prompt | la demande que tu écris à l'IA |
| Contexte | ce que l'agent « voit » : les fichiers du dossier + la conversation en cours |
| AGENTS.md / CLAUDE.md | fichier de consignes durables que l'agent lit à chaque démarrage |
| Diff | l'affichage des lignes ajoutées (+) / supprimées (−) par un changement |
| Mode plan | l'agent explique ce qu'il va faire avant de toucher aux fichiers |
| Auto-accept | mode où l'agent applique les changements sans te demander (à éviter en débutant) |
| Itérer | améliorer par allers-retours successifs |
| Hallucination | quand l'IA invente quelque chose de faux avec assurance |
| Portfolio | ton site personnel qui présente tes réalisations (clé pour l'E5) |
La prochaine fois
Ton portfolio existe. À la prochaine séance, on apprend à le versionner avec Git & GitHub (sauvegarder son histoire, le vrai filet quand on travaille avec un agent), puis à le déployer en ligne (Vercel) pour qu'il ait une vraie adresse — prête pour le BTS blanc.
Compétences mobilisées
référentiel BTS SIO SLAM
Bloc 1 · Organiser son développement professionnel
→ Effectuer une veille technologique
→ Mettre à jour ses compétences
Bloc 2 · Concevoir et développer une solution applicative
→ Développer des applications en respectant les standards de programmation