Comment écrire un CLAUDE.md qui réduit les conflits de merge
Comment structurer un CLAUDE.md pour que les agents génèrent moins de conflits de merge et s'intègrent proprement dans un monorepo. Guide pratique, checklist et template.
Phrase d’accroche — Les PR générées par agents provoquent souvent des conflits qu’on peut anticiper et réduire. Selon une étude récente, les PR agentiques montrent un taux de conflits de merge de 27,67% — un levier concret pour améliorer l’intégration.
Dans cet article pratique, je te montre comment écrire un CLAUDE.md minimal et efficace pour un monorepo afin de :
- réduire les conflits de merge,
- diminuer les actions non pertinentes des agents,
- accélérer la validation des PR (CI / revue humaine).
Pourquoi ce problème existe (et pourquoi t’en soucier)
Les agents qui ouvrent des PR modifient du code, génèrent des tests ou réorganisent des fichiers. Une étude large (AgenticFlict) a observé un taux de conflits sur les PR générées par agents de ~27,67% — c’est loin d’être marginal.
Concrètement, un conflit = integration manuelle + temps perdu par un mainteneur. Pour les équipes qui cherchent à scaler l’usage d’agents, chaque pourcentage de conflit évité se traduit par des heures économisées et moins de risques d’introduire des erreurs humaines lors des résolutions rapides.
Source principale citée : AgenticFlict (Dataset & analyse) — https://arxiv.org/abs/2604.03551
Ce que la recherche dit sur les fichiers de contexte (AGENTS.md / CLAUDE.md)
Un paper récent (Evaluating AGENTS.md) montre que les fichiers de contexte, quand ils sont verbeux ou mal construits, peuvent aggraver les échecs des agents : ils réduisent parfois le taux de succès des tâches et augmentent le coût d’inférence de ~20% si on n’optimise pas leur contenu. La leçon : mieux vaut un CLAUDE.md court, précis et orienté actions plutôt qu’un long manuel descriptif.
Source : “Evaluating AGENTS.md” — arXiv 2602.11988 — https://arxiv.org/abs/2602.11988
Thèse centrale
Un CLAUDE.md bien conçu est : court, orienté commande, package-specific quand c’est possible, et explicite sur “NE PAS TOUCHER”. Suivre ces principes réduit les explorations inutiles des agents et diminue les risques de conflits de merge.
Plan d’action (résumé rapide)
- Prioriser les commandes exactes (install, test, build, lint)
- Indiquer les paths à modifier et ceux à ignorer
- Préférer des fichiers CLAUDE.md par package dans les monorepos
- Ajouter des règles de naming/branching que l’agent doit respecter
- Fournir une checklist PR minimaliste que l’agent doit suivre
- Mesurer : collecter les métriques de conflits et taux de succès
1 — Rédige des commandes exactes et reproductibles
Les agents suivent les commandes qu’on leur donne. Fournis des lignes exactes :
- Install :
pnpm install --frozen-lockfile - Test (package) :
pnpm --filter=@org/frontend test -- --runInBand - Build :
pnpm --filter=@org/frontend build - Lint :
pnpm --filter=@org/frontend lint -- --fix
Pourquoi : l’agent exécute ces commandes pour reproduire le contexte. Une commande manquante ou approximative le pousse à fouiller le repo — plus de fouille = plus de risques de modifier des fichiers sensibles.
Extrait template minimal (voir section Template plus bas).
2 — Indique clairement où l’agent est autorisé à écrire
Donne des chemins précis et liste les dossiers interdits :
- Où toucher :
packages/frontend/src,packages/api/src(si c’est le scope) - Ne pas toucher :
prisma/migrations/,infra/terraform/,apps/ci/
Pourquoi : Le comportement le plus courant menant à un conflit est qu’un agent modifie un même fichier que d’autres développeurs (migrations, infra). Limiter la surface d’écriture réduit la probabilité d’intersection.
3 — Privilégie des CLAUDE.md par package (monorepo)
Dans les grands monorepos, un CLAUDE.md global devient vite trop volumineux et contradictoire. Préfère des fichiers petits et ciblés : packages/frontend/CLAUDE.md, packages/api/CLAUDE.md.
Avantage : l’agent charge uniquement le contexte nécessaire et n’«explore» pas des zones qui augmentent les conflits.
4 — Ajoute des règles de branching et de nommage PR
Demande à l’agent d’utiliser un schéma de branche et de PR qui facilite la revue et l’intégration :
- Branch naming :
agent/<tâche>-YYYYMMDDoufeat/agent/<ticket> - PR title format :
[agent][package] courte description(ex:[agent][frontend] fixe import deadlink)
Conséquence : les outils CI/CD et les règles de merge (branch protection) peuvent mieux trier et appliquer des stratégies différentes (ex: désactiver auto-merge sur agent PR tant que la checklist humaine n’est pas validée).
5 — Checklist PR que l’agent doit respecter avant ouverture
Inclure dans le CLAUDE.md une checklist minimale que l’agent exécute automatiquement :
- Exécuter les tests ciblés (
pnpm --filter=@org/frontend test -- --runInBand) - Lancer le linter et corriger (
pnpm --filter=@org/frontend lint -- --fix) - Vérifier qu’aucun fichier listé dans “NE PAS TOUCHER” n’a été modifié
- Générer un changelog succinct ou description des fichiers modifiés
Une PR qui passe ces étapes a moins de chances d’induire un conflit inattendu.
6 — Template CLAUDE.md minimal (copier-coller)
Utilise ce modèle réduit et humainement éditable :
# CLAUDE.md
## Package ciblé
packages/frontend # change selon la tâche (packages/frontend | packages/api)
## Commandes (exactes)
- Install: `pnpm install --frozen-lockfile`
- Dev (frontend): `pnpm --filter=@org/frontend dev`
- Test (package): `pnpm --filter=@org/frontend test -- --runInBand`
- Build (package): `pnpm --filter=@org/frontend build`
- Lint: `pnpm --filter=@org/frontend lint -- --fix`
## Où écrire / Où ne pas écrire
- Autorisé: `packages/frontend/src`, `packages/frontend/components`
- Interdit: `prisma/migrations/`, `infra/terraform/`, `apps/ci/`
## Branching & PR
- Branch name template: `agent/<tâche>-YYYYMMDD`
- PR title template: `[agent][frontend] courte description`
## Checklist PR à exécuter
- `pnpm --filter=@org/frontend test -- --runInBand`
- `pnpm --filter=@org/frontend lint -- --fix`
- `git diff --name-only | grep -E "(prisma/migrations|infra/terraform)" && exit 1 || exit 0`
## Limites : NE PAS TOUCHER
- prisma/migrations/
- infra/terraform/
- apps/ci/
Ce template est volontairement court (~20-40 lignes). Les études citées montrent qu’un contexte trop large fait perdre aux agents en efficacité.
Sources & références : template inspiré de pratiques réelles et du fichier CLAUDE.md minimal — Monorepo pnpm (référence interne).
7 — Mesure ce qui compte
Avant / après la mise en place d’un CLAUDE.md réduit :
- Taux de conflits sur PR agentiques (si possible, extraire via API GitHub) — cible : baisser significativement de la baseline (ex: 27,67% mesuré par AgenticFlict pour l’échantillon étudié)
- Taux de succès des tâches agents (ex: tests passés sans intervention humaine)
- Temps moyen de revue humaine sur PR agentiques
Collecter ces métriques permet d’affiner le CLAUDE.md : si un dossier provoque encore des conflits, l’ajouter à la liste “NE PAS TOUCHER”.
8 — Cas pratiques & anti-patterns
- Anti-pattern : documenter tout le repo. Résultat : l’agent explore trop et multiplie les modifications.
- Anti-pattern : instructions vagues du type “corrige les bugs” — préférer “corrige X test failing in packages/frontend/tests/login.test.ts”.
- Bon pattern : fournir un script
scripts/repro.shet indiquer son usage dans CLAUDE.md.
9 — Intégrer claude-mem (optionnel)
Si tu utilises claude-mem pour réinjecter du contexte entre sessions, restreins le scope mémorisé (ex: erreurs récentes, commandes utiles) et évite d’y mettre des règles de non-écriture — le fichier CLAUDE.md doit rester la source de vérité.
Référence : https://github.com/thedotmack/claude-mem
10 — Checklist rapide avant d’ajouter un CLAUDE.md
- CLAUDE.md n’excède pas 40 lignes
- Commandes exactes présentes (install, test, build, lint)
- Paths autorisés / interdits clairement listés
- Checklist PR automatisable et exécutée avant ouverture
- Branch & PR naming définis
- Mesures mises en place pour suivre conflits
Ce qu’il faut retenir :
- Un CLAUDE.md court et orienté action réduit l’exploration inutile des agents — et donc les conflits de merge.
- Priorise le découpage par package dans les monorepos.
- Mesure (conflits, succès, temps de revue) et ajuste le fichier en conséquence.
FAQ
Q: “Un CLAUDE.md ne va-t-il pas empêcher les agents de faire des corrections utiles ?” A: Non — si tu limites uniquement les dossiers sensibles et fournis des commandes reproductibles. L’agent restera utile là où il a le droit d’agir.
Q: “Est-ce que ça remplace une revue humaine ?” A: Non. L’objectif est d’automatiser la partie répétable et de réduire les frictions d’intégration. La revue humaine reste requise pour la qualité finale.
Références
- AgenticFlict (merge conflicts dataset) — https://arxiv.org/abs/2604.03551
- Evaluating AGENTS.md — https://arxiv.org/abs/2602.11988
- Claude Code — Best practices docs — https://code.claude.com/docs/en/best-practices
- claude-mem repo — https://github.com/thedotmack/claude-mem
- Référence interne :
references/claude-md-monorepo-template.mddans le skill ai-blog-editor

