💻 Développement

dev-bug-debugger

Aide à diagnostiquer et résoudre un bug en suivant une méthodologie structurée.

⚡ Installation & lancement en 1 commande

Copiez-collez dans votre terminal : le skill s'installe dans ~/.claude/skills et Claude Code se lance directement dessus.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.sh | sh -s -- dev-bug-debugger --launch
Windows (PowerShell)
iex "& { $(iwr -useb https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.ps1) } dev-bug-debugger -Launch"

🚀 Déjà installé ?

claude "/dev-bug-debugger"

Ou tapez /dev-bug-debugger dans une session Claude Code, ou décrivez simplement votre besoin — le skill se déclenche automatiquement via le skill-router.

🔑 Déclencheurs automatiques

Le skill s'active automatiquement quand votre demande contient :

j'ai un bugça ne marche paserreurcrashpourquoi ça fait çaTypeErrorundefined

📦 Installation manuelle

git clone https://github.com/khalilbenaz/claude-skills-collection.git cp -r claude-skills-collection/skills/dev-bug-debugger ~/.claude/skills/

Payload du plugin : skills/dev-bug-debugger · source éditable : dev-skills/bug-debugger

📖 Manuel

Bug Debugger

Étape 0 — Collecter le contexte minimal

Avant toute hypothèse, s'assurer d'avoir :

InfoExemples
Message d'erreur completstack trace, code HTTP, errno
Comportement attendu vs observé"devrait retourner 200, retourne 500"
Reproductibilitétoujours / parfois / en prod seulement
Dernière modificationcommit, déploiement, changement config
EnvironnementOS, version runtime, variables d'env

Si un de ces éléments manque et bloque le diagnostic → demander uniquement ce qui est nécessaire, pas tout à la fois.


Étape 1 — Lire l'erreur sans sauter aux conclusions

TypeError: Cannot read properties of undefined (reading 'id')
    at getUserName (user.js:42:18)
    at processRequest (api.js:17:5)

Étape 2 — Formuler 3 hypothèses classées par probabilité

Format attendu :

  1. (Probable) user est undefined car la DB ne retourne rien pour cet ID → vérifier avec console.log(user) avant la ligne 42.
  2. (Possible) La fonction est appelée avant que la promesse soit résolue → ajouter await.
  3. (Moins probable) Race condition sur un cache partagé → vérifier si ça arrive en parallèle.

Règle : ne pas proposer plus de 3 hypothèses sans validation intermédiaire.


Étape 3 — Vérification rapide par hypothèse

JavaScript/TypeScript

// Inspecter sans modifier le flux
console.log('[debug] user:', JSON.stringify(user, null, 2));
// Vérifier le type exact
console.log('[debug] typeof user:', typeof user, user instanceof Object);

Python

import pprint
print('[debug] user:', pprint.pformat(user))
# Ou avec breakpoint natif (Python 3.7+)
breakpoint()

.NET / C#

// Ajouter un point de log avant la ligne incriminée
_logger.LogDebug("user={User}", JsonSerializer.Serialize(user));
// Ou utiliser le debugger avec Watch sur l'expression

Shell / CLI

# Activer le mode verbose
set -x          # bash : affiche chaque commande avant exécution
export DEBUG=*  # Node.js : active les logs de debug des modules

Étape 4 — Correction

Toujours présenter un diff avant/après :

// AVANT
const name = user.profile.name;

// APRÈS — avec guard null
const name = user?.profile?.name ?? 'Inconnu';

Expliquer pourquoi la correction fonctionne, pas seulement quoi changer.


Étape 5 — Prévention

Adapter selon le contexte :

Type de bugPrévention recommandée
Null/undefinedTypeScript strict, optional chaining, guards
Race conditionmutex, transactions, idempotence
Régressiontest unitaire couvrant le cas exact
Config manquantevalidation au démarrage (zod, pydantic)
Erreur silencieuselogger sur les catch, ne jamais catch {} vide

Garde-fous et anti-patterns

Ne pas faire :

Pièges fréquents :


Commandes de diagnostic utiles (copiables)

# Git — trouver le commit qui a introduit le bug
git bisect start
git bisect bad HEAD
git bisect good <commit-ok>

# Node.js — lancer avec inspect
node --inspect-brk index.js

# Docker — logs du container
docker logs --tail=100 -f <container>

# Linux — tracer les appels système
strace -p <pid> 2>&1 | grep -v ENOENT

# .NET — heap dump
dotnet-dump collect -p <pid>

Critères de décision — quand escalader