Debugging Systématique
Ce prompt applique la méthode scientifique au débogage: reproduction, hypothèses, expérimentation, correction minimale et test de régression. Il force une approche structurée au lieu du "changement au hasard".
Le prompt
Débogue le problème suivant en utilisant une approche systématique. Ne fais AUCUN changement de code avant d'avoir complété les étapes 1 à 3.
<probleme>
Description: [Décris le bug observé]
Comportement attendu: [Ce qui devrait se passer]
Comportement actuel: [Ce qui se passe réellement]
Fichier(s) concerné(s): [Chemins des fichiers suspects, si connus]
Étapes de reproduction: [Comment reproduire le bug, si connu]
</probleme>
Suis cette méthode dans l'ordre strict:
<etape-1-reproduction>
Objectif: confirmer que le bug est reproductible.
1. Lis les fichiers mentionnés et le code environnant
2. Identifie le flux d'exécution complet (point d'entrée jusqu'au bug)
3. Si un test existe pour ce flux, lance-le et vérifie qu'il échoue
4. Si aucun test n'existe, écris un test qui reproduit le bug (ce test DOIT échouer)
5. Documente les conditions exactes de reproduction
Si le bug n'est pas reproductible, explique pourquoi et demande plus d'informations.
</etape-1-reproduction>
<etape-2-hypotheses>
Objectif: formuler des hypothèses classées par probabilité.
Formule au moins 3 hypothèses en suivant ce format:
- Hypothèse: [description]
- Probabilité: haute / moyenne / faible
- Raison: [pourquoi cette hypothèse]
- Vérification: [comment la tester sans modifier le code]
Catégories courantes à explorer:
- Erreur de logique (condition inversée, off-by-one, mauvais opérateur)
- Problème de types (null/undefined non géré, type incorrect)
- Problème d'état (race condition, état stale, mutation inattendue)
- Problème de données (entrée malformée, encoding, format de date)
- Problème d'environnement (variable manquante, version de dépendance)
- Problème d'async (await manquant, promesse non résolue, ordre d'exécution)
</etape-2-hypotheses>
<etape-3-investigation>
Objectif: tester chaque hypothèse sans modifier le code de production.
Pour chaque hypothèse, par ordre de probabilité:
1. Ajoute des logs temporaires ou utilise le debugger pour collecter des données
2. Analyse les données collectées
3. Verdict: confirmée / infirmée / indéterminée
4. Si confirmée, passe à l'étape 4
5. Si toutes infirmées, élargis la recherche et formule de nouvelles hypothèses
</etape-3-investigation>
<etape-4-correction>
Objectif: corriger le bug avec le changement MINIMAL nécessaire.
1. Propose la correction la plus simple qui résout le bug
2. Explique POURQUOI cette correction fonctionne (cause racine)
3. Applique la correction
4. Retire tous les logs temporaires ajoutés à l'étape 3
5. Vérifie que le test de reproduction (étape 1) passe maintenant
6. Lance la suite de tests complète pour vérifier qu'aucune régression n'est introduite
</etape-4-correction>
<etape-5-prevention>
Objectif: empêcher ce type de bug de se reproduire.
1. Ajoute un test de régression permanent (différent du test de reproduction si nécessaire)
2. Si applicable, propose une amélioration du typage pour prévenir ce bug au compile-time
3. Documente la cause racine en commentaire si la logique est subtile
</etape-5-prevention>
<contraintes>
- Ne modifie JAMAIS plus de code que nécessaire pour corriger le bug
- Ne refactore pas pendant le débogage, c'est une tâche séparée
- Un seul commit: "fix(scope): description de la correction"
- Si le bug a plusieurs causes, traite-les une par une
</contraintes>
Utilisation
Remplissez la section <probleme> avec autant de détails que possible. Plus les étapes de reproduction sont précises, plus le diagnostic sera rapide. Ce prompt est conçu pour éviter le piège du "je change un truc et je vois si ça marche": Claude Code doit comprendre la cause racine avant de toucher au code.