Les normes d'ingénierie : le dire une fois, l'appliquer là où ça compte
Une cuisine de restaurant a quelques règles au mur ("se laver les mains") et quelques règles intégrées à l'équipement (le four s'éteint si la porte s'ouvre). Une affiche au mur peut être oubliée. Un verrou intégré, non. De bonnes normes d'ingénierie utilisent les deux, et savent quelle règle va où.
- La page de bonnes pratiques de Claude Code d'Anthropic sépare les instructions en deux sortes. Le guide (votre demande,
CLAUDE.md, les skills) est lu par le modèle, qui le suit "usually follows" (habituellement), mais n'y est pas forcé. Les règles imposées (hooks, règles de permission, paramètres gérés, tests, CI) sont appliquées par Claude Code ou par votre processus et ne dépendent pas du choix du modèle. - Le conseil de la documentation : si vous continuez d'ajouter de l'emphase à une ligne de
CLAUDE.mdet que Claude la rate encore, cette ligne doit aller dans un hook. L'inverse est vrai aussi : si vous avez des hooks pour des choses qui ne sont que des préférences, supprimez-les et laissez Claude décider. CLAUDE.mdse charge dans chaque session, donc chaque ligne coûte un peu d'attention à chaque tâche. Réservez-le à ce que Claude ne peut pas déduire du code : les commandes exactes de test, de vérification des types et de lint, les décisions qui ne sont pas dans le dépôt et les pièges. Les préférences personnelles vont dansCLAUDE.local.md, que vous ajoutez à.gitignore.- Claude Code lit ses paramètres à plusieurs endroits. La portée décide de qui un paramètre touche : utilisateur (
~/.claude/settings.json, vous dans tous les projets), projet partagé (.claude/settings.json, tout le monde dans le dépôt s'il est versionné), projet local (.claude/settings.local.json, vous dans un projet) et géré (défini par une organisation; rien dans vos propres fichiers ne le remplace). - Priorité, de la plus haute à la plus basse : paramètres gérés,
--settingsen ligne de commande, projet local, projet partagé, utilisateur. Les paramètres de type liste, commepermissions.allow, fusionnent d'un fichier à l'autre au lieu de se remplacer. - Certaines clés ne prennent jamais effet depuis un fichier versionné dans le dépôt, et d'autres, comme les règles
allow, attendent que chaque collègue fasse confiance au dossier. Les règlesdenyetasks'appliquent tout de suite. Lancez/statuspour voir quelles sources de paramètres sont chargées. - Les normes ne servent que si les gens peuvent les trouver et les utiliser. Rédigez un court fichier de normes d'ingénierie (nous l'appelons
ENGINEERING.mddans ce cours) et ajoutez-y un lien depuisCLAUDE.md.
| Rule | Guidance or enforced? | Where it lives |
|---|---|---|
| "Use clear names for functions" | Guide | CLAUDE.md |
"Run python3 -m unittest before you say you are done" | Guide, plus imposé par un hook Stop et la CI | CLAUDE.md, .claude/settings.json, CI |
"Never read .env" | Imposé | Règle permissions.deny |
| "Nothing merges without a passing test run and one human approval" | Imposé | Protection des branches (leçon 2) |
"Do not touch the migrations/ folder" | Imposé | Hook PreToolUse qui se termine avec le code 2 |
- Notez chaque règle que votre équipe suit ou voudrait suivre, une par ligne, en mots simples.
- Pour chaque règle, demandez-vous : "presque toujours" suffit-il? Si oui, c'est un guide. Si non, c'est une règle qui doit être imposée.
- Mettez les guides dans
CLAUDE.md, en gardant le fichier court. Incluez les commandes exactes pour les tests, la vérification des types et le lint. - Pour chaque règle imposée, choisissez le mécanisme dans le tableau et notez-le : une règle deny, un hook, la protection des branches ou la CI.
- Créez les vrais fichiers :
.claude/settings.jsonavec vos règles partagées, versionné dans le dépôt, et.claude/settings.local.jsonpour les réglages personnels, gardé hors de Git. - Rédigez
ENGINEERING.mden une page avec trois sections : comment nous travaillons, comment nous révisons, comment nous livrons. - Lancez
/statuset vérifiez que les sources de paramètres sont celles que vous attendez. - Vérification : un nouveau collègue peut trouver la commande de test en moins d'une minute, et vous pouvez indiquer l'endroit exact où chaque règle "jamais" est imposée.
Videos by other creators on YouTube, for reference. They are not made by or affiliated with The Future Market.
Read the video script
[Host] "Une affiche au mur peut être ignorée. Un verrou sur la porte, non."
[Text on screen: Guide ou règle imposée] "Certaines règles sont des guides, comme une note dans CLAUDE.md. D'autres sont imposées, comme une règle deny ou une vérification obligatoire."
[Screen: le tableau des règles] "Posez une seule question pour chaque règle : « presque toujours » suffit-il?"
[Text on screen: Gardez CLAUDE.md court] "Sinon, sortez-la des notes et mettez-la dans un hook, une règle de permission ou votre processus."
[Host] "Des notes courtes, des verrous solides et une page que tout le monde trouve."
Rédigez la liste des règles de votre équipe (au moins dix règles), classez-la en guides et en règles imposées, et créez les fichiers qui contiennent chacune. Ensuite, rédigez ENGINEERING.md sur une page.
ClaudeStuck? Copy a ready-made prompt for Claude
Copy this, open Claude, paste it, and Claude will walk you through the lesson step by step.
For a grown-up: Claude is for adults (18+). Copy this, paste it into Claude, and use the answer to explain the lesson to your child.
I'm learning "Pratique de l'ingénierie avec l'IA : livrer et maintenir des logiciels créés avec l'IA" on The Future Market. Lesson 1: "Les normes d'ingénierie : le dire une fois, l'appliquer là où ça compte". What the lesson teaches: - La page de bonnes pratiques de Claude Code d'Anthropic sépare les instructions en deux sortes. Le guide (votre demande, CLAUDE.md, les skills) est lu par le modèle, qui le suit "usually follows" (habituellement), mais n'y est pas forcé. Les règles imposées (hooks, règles de permission, paramètres gérés, tests, CI) sont appliquées par Claude Code ou par votre processus et ne dépendent pas du choix du modèle. - Le conseil de la documentation : si vous continuez d'ajouter de l'emphase à une ligne de CLAUDE.md et que Claude la rate encore, cette ligne doit aller dans un hook. L'inverse est vrai aussi : si vous avez des hooks pour des choses qui ne sont que des préférences, supprimez-les et laissez Claude décider. - CLAUDE.md se charge dans chaque session, donc chaque ligne coûte un peu d'attention à chaque tâche. Réservez-le à ce que Claude ne peut pas déduire du code : les commandes exactes de test, de vérification des types et de lint, les décisions qui ne sont pas dans le dépôt et les pièges. Les préférences personnelles vont dans CLAUDE.local.md, que vous ajoutez à .gitignore. - Claude Code lit ses paramètres à plusieurs endroits. La portée décide de qui un paramètre touche : utilisateur (~/.claude/settings.json, vous dans tous les projets), projet partagé (.claude/settings.json, tout le monde dans le dépôt s'il est versionné), projet local (.claude/settings.local.json, vous dans un projet) et géré (défini par une organisation; rien dans vos propres fichiers ne le remplace). - Priorité, de la plus haute à la plus basse : paramètres gérés, --settings en ligne de commande, projet local, projet partagé, utilisateur. Les paramètres de type liste, comme permissions.allow, fusionnent d'un fichier à l'autre au lieu de se remplacer. - Certaines clés ne prennent jamais effet depuis un fichier versionné dans le dépôt, et d'autres, comme les règles allow, attendent que chaque collègue fasse confiance au dossier. Les règles deny et ask s'appliquent tout de suite. Lancez /status pour voir quelles sources de paramètres sont chargées. - Les normes ne servent que si les gens peuvent les trouver et les utiliser. Rédigez un court fichier de normes d'ingénierie (nous l'appelons ENGINEERING.md dans ce cours) et ajoutez-y un lien depuis CLAUDE.md. The exercise I'm working on: Rédigez la liste des règles de votre équipe (au moins dix règles), classez-la en guides et en règles imposées, et créez les fichiers qui contiennent chacune. Ensuite, rédigez ENGINEERING.md sur une page. I'm stuck. Please: 1. Explain the main idea in plain, simple words with one everyday example. 2. Walk me through the exercise one small step at a time. Ask me what I've done so far before giving the next step. 3. Don't just give me the final answer. Help me do it myself, and check my work when I share it.
I'm a parent helping my child (about 8 years old) with a lesson called "Les normes d'ingénierie : le dire une fois, l'appliquer là où ça compte" from the course "Pratique de l'ingénierie avec l'IA : livrer et maintenir des logiciels créés avec l'IA".
Here's what the lesson says:
Une cuisine de restaurant a quelques règles au mur ("se laver les mains") et quelques règles intégrées à l'équipement (le four s'éteint si la porte s'ouvre). Une affiche au mur peut être oubliée. Un verrou intégré, non. De bonnes normes d'ingénierie utilisent les deux, et savent quelle règle va où.
The activity:
Rédigez la liste des règles de votre équipe (au moins dix règles), classez-la en guides et en règles imposées, et créez les fichiers qui contiennent chacune. Ensuite, rédigez ENGINEERING.md sur une page.
Please explain this so an 8-year-old understands: short sentences, a fun everyday example, and no hard words.
Then give me 3 simple questions I can ask my child to check they understood, and a way to do the activity together, one tiny step at a time.Sources
- Anthropic, Best practices for Claude Code: code.claude.com/docs/en/best-practices
- Anthropic, Settings files and precedence: code.claude.com/docs/en/settings
- Anthropic, Configure permissions: code.claude.com/docs/en/permissions
Un processus de révision pour du code que vous n'avez pas écrit
This lesson is part of full access: every course and every level for one payment.
Les tests comme barrières, et la vérification des tests eux-mêmes
This lesson is part of full access: every course and every level for one payment.
Des contrôles de sécurité pour le code assisté par l'IA
This lesson is part of full access: every course and every level for one payment.
Claude Code dans les scripts et la CI, avec des limites
This lesson is part of full access: every course and every level for one payment.
Livrer par petites étapes et rester maintenable
This lesson is part of full access: every course and every level for one payment.
Diriger une petite équipe et documenter le processus
This lesson is part of full access: every course and every level for one payment.
Final project
This lesson is part of full access: every course and every level for one payment.
Quiz
Quelle est la différence entre un guide et une règle imposée?
Un guide (un prompt ou CLAUDE.md) est lu par le modèle, qui le suit habituellement. Une règle imposée (un hook, une règle deny, la protection des branches ou la CI) est appliquée par l'outil ou le processus, quoi que le modèle décide.
Où doit se trouver une règle "ne jamais lire .env"?
Dans une règle de permission deny (et le bac à sable pour des limites plus fortes), pas seulement dans CLAUDE.md.
Une révision de code par IA approuve-t-elle ou bloque-t-elle une pull request?
Non. Elle laisse des constats, et la décision de fusionner reste aux personnes.
Pourquoi Code Review lit-il REVIEW.md sur la branche de base et non dans la pull request?
Pour qu'une pull request ne puisse pas modifier les règles utilisées pour se réviser elle-même.
Que fait un fichier CODEOWNERS?
Il nomme les personnes ou les équipes responsables de parties du code, à qui l'on demande de réviser les changements apportés à ces fichiers.
Qu'est-ce qu'une vérification par mutation?
Modifier le code exprès d'une petite façon et vérifier qu'un test échoue. Si les tests réussissent encore, ils sont trop faibles.
Comment faire qu'un test en échec bloque une fusion?
Lancer les tests en CI et activer les vérifications d'état obligatoires dans la protection des branches.
Quels signes d'alerte un réviseur humain doit-il chercher dans un diff écrit par l'IA?
Des fichiers inattendus, des tests supprimés ou affaiblis, des tests modifiés pour s'adapter à un bogue, de nouvelles dépendances, des secrets écrits en dur et du code que personne ne peut expliquer.
Que fait la push protection?
Elle bloque les push qui contiennent des secrets pris en charge avant qu'ils atteignent le dépôt.
Nommez trois limites que vous fixez à une exécution de Claude Code sans surveillance.
Par exemple une courte liste d'outils autorisés, le mode de permission dontAsk, un plafond de tours ou de budget et un délai d'attente du workflow.
Pourquoi utiliser --bare dans les scripts et la CI?
Il saute les hooks, plugins, serveurs MCP et CLAUDE.md découverts automatiquement, de sorte que l'exécution fait la même chose sur chaque machine.
Comment annuler un commit livré en gardant l'historique?
Utiliser git revert, qui crée un nouveau commit annulant le précédent.
Final exam
This lesson is part of full access: every course and every level for one payment.
Certificate
This lesson is part of full access: every course and every level for one payment.