debug-methodical
$
npx mdskill add TheBeardedBearSAS/claude-craft/debug-methodicalApplique une méthode rigoureuse de débogage en 4 étapes pour résoudre les bugs
- Solve des bugs, régressions, ou tests instables avec une approche systématique
- Utilise des tests automatisés, des environnements isolés, et des commits précis
- Suivi des étapes de reproduction, isolation, correction et vérification
- Fournit des résultats vérifiables avec des tests de régression corrigés
SKILL.md
.github/skills/debug-methodicalView on GitHub ↗
--- name: debug-methodical description: Debugging méthodique en 4 phases (reproduce → isolate → fix → verify). Use when investigating a bug, regression, flaky test, or unexpected behavior. context: fork disable-model-invocation: true triggers: keywords: ["bug", "debug", "crash", "error", "regression", "flaky", "broken", "failing test", "not working"] auto_suggest: true --- # Debug-Methodical — Debugging en 4 phases Skill inspiré de [obra/superpowers](https://github.com/obra/superpowers). **Objectif :** forcer une méthode rigoureuse au lieu de "try random fixes until it works". **Règle d'or :** un bug sans reproduction stable est un bug mal compris. Ne JAMAIS fixer avant de reproduire. ## Les 4 phases (strictes, dans l'ordre) ### Phase 1 : REPRODUCE **Objectif :** exécuter le bug à volonté, dans un environnement contrôlé. **Checklist :** - [ ] Étapes de reproduction documentées (Given/When/Then) - [ ] Reproduction déterministe (>= 3 runs consécutifs identiques) - [ ] Environnement isolé (local, container, test env) - [ ] Inputs minimaux (le moins de données/steps possible) - [ ] Version/commit exacts identifiés **Sortie :** test automatisé qui **échoue** en exposant le bug (test de régression). **Signal rouge :** "ça marche sur ma machine" / "parfois ça fail" → reproduction insuffisante, retour Phase 1. ### Phase 2 : ISOLATE **Objectif :** identifier la **cause racine**, pas juste un symptôme. **Techniques :** - **Bisect** : `git bisect` pour trouver le commit fautif - **Binary search** dans le code : commenter la moitié, puis itérer - **Print-driven debugging** : logs aux frontières (entrée/sortie fonctions) - **Debugger** : breakpoints, step-through, variable watch - **Diff environnements** : que diffère-t-il entre "qui marche" et "qui casse" ? - **Question the premise** : l'hypothèse initiale est-elle correcte ? **Checklist :** - [ ] Cause identifiée (ligne / condition / input exact) - [ ] Explication du **pourquoi** (pas juste le **quoi**) - [ ] Chaîne de causalité documentée (A cause B cause C) - [ ] Autres manifestations potentielles du même bug identifiées **Signal rouge :** "je pense que c'est X" sans preuve → retour isolate avec instrumentation. ### Phase 3 : FIX **Objectif :** corriger la cause racine avec le minimum de changement. **Checklist :** - [ ] Fix au bon niveau (cause racine, pas symptôme) - [ ] Changement minimal (KISS, voir rule 05) - [ ] Pas d'effet de bord sur autres features - [ ] Pas de fix "au cas où" / spéculatif (voir rule 23 Karpathy) - [ ] Fix dans le bon layer (domain / infra / UI) **Signaux rouges :** - Fix qui ajoute un `try/catch` pour masquer l'erreur → traite le symptôme, pas la cause - Fix qui nécessite de modifier les tests existants de façon suspecte - Fix qui "marche" sans que tu saches pourquoi ### Phase 4 : VERIFY **Objectif :** prouver que le fix marche ET n'a rien cassé d'autre. **Checklist :** - [ ] Test de régression (Phase 1) passe maintenant - [ ] Suite de tests complète passe - [ ] Reproduction manuelle ne montre plus le bug - [ ] Scénarios adjacents testés (edge cases proches) - [ ] Performance non dégradée - [ ] Logs / monitoring vérifiés en staging si critique **Règle de régression :** le test écrit en Phase 1 reste dans la codebase **pour toujours**. Un bug fixé ne doit JAMAIS réapparaître (voir `/qa:regression`). ## Anti-patterns critiques | Anti-pattern | Pourquoi c'est mal | |--------------|---------------------| | **Shotgun debugging** | Changer 10 trucs au hasard, aucun apprentissage | | **Fix du symptôme** | Bug revient sous une autre forme | | **Skip reproduction** | Fix impossible à valider | | **Skip verification** | "ça devrait marcher" — preuve ou pas fini | | **Pas de test de régression** | Bug réapparaît dans 3 mois | | **Fix avec `catch (Exception)` générique** | Masque d'autres bugs | | **Commit mélangé fix + refactor** | `git bisect` impossible | ## Techniques avancées ### Pour bugs de concurrence - Forcer les interleavings (sleep stratégique, stress test) - Thread dumps / profiler - Vérifier les invariants atomiquement ### Pour bugs d'intégration - Snapshot du payload exact (HAR, logs) - Reproduire avec `curl` ou client minimal - Vérifier versions exactes des dépendances ### Pour flaky tests - Run 100x pour mesurer le taux de flakiness - Identifier la dépendance (temps, ordre, ressource partagée) - Ne JAMAIS marquer un test `@Flaky` sans ticket de correction ## Intégration Claude Craft - **`/qa:tdd`** — bug fix en mode TDD (test qui échoue d'abord) - **`/qa:fix`** — correction automatisée des bugs QA - **`/qa:regression`** — registre des tests de régression - **Skill `atomic-tasks`** — découper le debug en phases atomiques - **Rule 07 (testing)** — bug fix = test de régression obligatoire ## Ressources - [obra/superpowers](https://github.com/obra/superpowers) - Rule `.claude/rules/07-testing.md` - Command `/qa:tdd`, `/qa:regression` --- **Date de dernière mise à jour :** 2026-04-15 **Version :** 1.0.0
More from TheBeardedBearSAS/claude-craft
- adapter-developmentErstellen Sie eine Paperclip-Extension — ein Plugin via @paperclipai/plugin-sdk oder einen Built-in-Adapter unter packages/adapters. Verwenden Sie dies beim Hinzufügen von AI-Runtimes oder Feature-Plugins.
- aggregatesRègle 05 : Aggregates et Aggregate Roots. Use when implementing DDD patterns.
- api-gatewayAPI Gateway patterns (Kong, Traefik, AWS API Gateway) — rate limiting, auth, routing, versioning. Use when implementing API gateway, reverse proxy, or API management.
- architecture-clean-dddArchitecture Clean + DDD + Hexagonal - Atoll Tourisme. Use when designing architecture or reviewing code structure.
- architecture-paperclipPaperclip-Two-Layer-Architektur (Control-Plane + Adapter). Verwenden Sie dies beim Entwerfen oder Reviewen von Paperclip-Modul-/Adapter-Grenzen.
- asyncArchitecture async-first avec messaging et queues (Symfony Messenger, Laravel Queue, Ecotone). Use when working with async processing, queues, workers, background jobs.
- atomic-tasksPattern GSD (Get Shit Done) - découper en tâches atomiques avec contextes subagent frais pour combattre le context rot. Use when planning complex work or working past 50% context usage.
- coding-standards-tsPaperclip-TypeScript-Coding-Standards — Strict-Modus, Kebab-Files, kein any, strukturierte Logs. Verwenden Sie dies beim Schreiben oder Reviewen von Paperclip-TS-Code.
- cqrsCQRS - Command Query Responsibility Segregation. Use when implementing DDD patterns, separating read/write models, event sourcing, or building scalable architectures with heterogeneous performance requirements.
- ddd-patternsPatterns DDD - Atoll Tourisme. Use when implementing DDD patterns.