Tous les skills

systematic-debugging (obra/superpowers)

Enquête méthodiquement sur les bugs, échecs de tests et comportements inattendus avant de proposer des correctifs.

superpowers systematic-debugging : aucun gain mesurable sur trois petits bugs, environ 1.3 fois les tokens

Selon les casSûr

Codex CLI · gpt-6-astra

22.4 / 30

Gain par rapport à sans skill : +0.00 · Selon les cas · 18 exécutions

Selon les cas : le gain +0.00 est inférieur à +1.0. Pour être recommandé, il faut un total de 22/30, une qualité de sortie de 3.5 et un gain de +1.0.

SOTA

Réussi

Testé avec Codex.

Couvre Codex, Claude Code

Codex CLI 0.166 (palier SOTA) : 18 exécutions notées. Une réussite ici couvre aussi Claude Code selon notre règle de palier ; elle ne dit rien du second palier.

Scores

Chaque dimension va de 0 à 5 et les six forment le total sur 30. 5 est la meilleure note dans chaque dimension. Coût 5 signifie bon marché et rapide. Installation 5 signifie facile.

Fiabilité du déclenchement
5.0
Gain par rapport à sans skill
2.0
Qualité de sortie
4.5
Coût en tokens et en temps
3.0
Installation et portabilité
4.0
Sécurité
4.0

Revue de sécurité

Sûr

Scan statique : 0 CRITIQUE / 0 ÉLEVÉ / 0 MOYEN. Revue manuelle : sûr à exécuter dans un bac à sable sans réseau (aucun problème détecté). Un scan propre ne prouve pas qu'un skill est sûr.

Installer

npx skills@latest add obra/superpowers --skill systematic-debugging

Source

Commit épinglé: 2ce8aa15d05bd57213e6f746f953aafb7ded7a8b

Testé: 2026-11-02

Ce que nous avons testé

  • Décalage d'un rang dans une petite fonction — moving_average dans movavg.py renvoie des nombres faux : moving_average([2, 4, 6, 8, 10], 3) devrait donner [2, 3, 4, 6, 8] mais les dernières valeurs sortent fausses. Trouvez la cause et corrigez-la. Tests : python3 -m unittest.
  • Bug de dates entre fichiers — Les en-têtes de notre rapport hebdomadaire affichent des dates fausses autour du nouvel an, par exemple header('2026-W01') devrait donner 'Week 2026-W01: Dec 29 - Jan 04, 2026'. Trouvez la cause et corrigez-la.
  • Échec de test dépendant de l'ordre — Les tests de tests/test_settings.py passent seuls mais test_b échoue quand tout le fichier s'exécute, et les configs semblent conserver des tags d'appels précédents. Diagnostiquez et corrigez.

Points forts

  • Le skill a été détecté sans être nommé : son fichier a été lu dans 6/6 exécutions avec skill.

Points faibles

  • Aucun gain mesurable par rapport à sans skill (+0.00, dans le bruit).
  • Un prompt d'une phrase obtient 4.86, contre 4.45 avec le skill (-0.42).
  • Réserve de test : le bras « prompt d'une phrase » (6 exécutions) a été ajouté plus tard, sur une machine différente de celles des bras de contrôle et avec skill.
  • n=2 par tâche et par bras ; les écarts inférieurs à environ 1 point sont du bruit.

Avis

Codex CLI 0.166 (gpt-6-astra, low reasoning) sur un Mac de test, un projet temporaire neuf et des HOME/TMPDIR/caches temporaires à chaque exécution, skill installé (traitement) ou absent (contrôle) ou absent avec l'exigence centrale du skill compressée en une phrase ajoutée au prompt (groupe « prompt d'une phrase »), 2 exécutions par groupe et par tâche, réseau coupé, écritures dans /tmp bloquées. Les prompts ne mentionnent jamais le skill. La notation est programmatique (tests cachés / rappel d'éléments plantés / vérifications de contraintes / rendu+OCR le cas échéant), de 0 à 5 par exécution. Aucun juge LLM n'a décidé d'un score.

Comparaison à trois bras

BrasScore moyen (0-5)Tokens par exécution
Sans le skill4.4575k
Prompt d'une phrase4.8698k
Avec le skill4.4599k

Mesuré avec Codex CLI sur 18 exécutions, noté par des contrôles basés sur des règles, sans juge LLM. Total 22.4 / 30, verdict Selon les cas.

Divulgation : le bras « prompt d'une phrase » (6 exécutions) a été ajouté plus tard, sur une machine différente de celles des bras de contrôle et avec skill.

Verdict : selon les cas (22.4 / 30). Source : obra/superpowers, skills/systematic-debugging, épinglé au commit 2ce8aa1. Installation : npx skills@latest add obra/superpowers --skill systematic-debugging. Licence : MIT (LICENSE du dépôt).

Présentation

Le skill systematic-debugging de obra/superpowers : « à utiliser face à tout bug, échec de test ou comportement inattendu, avant de proposer des correctifs ». Quatre phases (étudier la cause racine, repérer des motifs, formuler une hypothèse, corriger), une règle contre l'empilement de correctifs, et des notes complémentaires (traçage de la cause racine, défense en profondeur, attente conditionnelle) plus des scénarios de pression par les tests et un script shell (find-polluter.sh, un bisect local sur les fichiers de test).

Notre méthode de test

Codex CLI 0.166 (gpt-6-astra, raisonnement faible) sur une machine de test Mac, un projet temporaire neuf et des HOME/TMPDIR/caches temporaires à chaque exécution, skill installé (groupe traité) ou absent (groupe témoin), ou absent avec l'exigence centrale du skill compressée en une phrase ajoutée au prompt (groupe « une phrase »), 2 exécutions par groupe et par tâche, réseau coupé, écritures dans /tmp bloquées. Les prompts ne mentionnent jamais le skill.

  1. Décalage d'un dans une petite fonction — moving_average dans movavg.py renvoie des nombres faux : moving_average([2, 4, 6, 8, 10], 3) devrait donner [2, 3, 4, 6, 8] mais les valeurs suivantes sont fausses. Trouve la cause et corrige-la. Tests : python3 -m unittest.
  2. Bug de date entre fichiers — Les en-têtes de notre rapport hebdomadaire affichent des dates fausses autour du nouvel an, par exemple header('2026-W01') devrait donner 'Week 2026-W01: Dec 29 - Jan 04, 2026'. Trouve la cause et corrige-la.
  3. Échec de test dépendant de l'ordre — Les tests de tests/test_settings.py passent seuls mais test_b échoue quand tout le fichier s'exécute, et les configs semblent transporter des tags d'appels précédents. Diagnostique et corrige.

Le scoring est programmatique (tests cachés / rappel des anomalies introduites / vérifications de contraintes / rendu + OCR le cas échéant), 0–5 par exécution. Aucun juge LLM n'a décidé d'un seul score.

Résultats

Le prompt d'une phrase donné au troisième groupe : « Débogue méthodiquement : reproduis d'abord l'échec, étudie la cause racine et formule une seule hypothèse à la fois avec des preuves avant de changer le code, applique le plus petit correctif pour la cause racine (aucune supposition empilée), et vérifie avec les tests. »

TâcheScore témoinUne phraseAvec le skillTokens témoinsTokens (une phrase)Tokens avec le skillSkill lu
t1-moving-average4.174.584.5860k62k69k2/2
t2-weekly-dates4.175.04.1778k104k109k2/2
t3-shared-state5.05.04.5885k127k118k2/2

Score moyen : 4.45 sans contre 4.45 avec le skill (delta +0.0). Tokens par exécution : 75k contre 99k (1.33x) ; temps 34s contre 45s. Groupe « une phrase » : 4.86 (gain du skill sur le prompt d'une phrase : -0.42 ; gain du prompt d'une phrase sur l'absence de skill : +0.42) ; 98k tokens par exécution pour le prompt d'une phrase, donc le skill coûte 1.01x ce prompt.

Ce qui s'est passé

  • Résultat : les tests cachés passaient dans toutes les exécutions des deux groupes, la justesse ne différait donc pas.
  • La vérification de processus « a lancé les tests avant de modifier le code » (reproduire d'abord) : le témoin l'a manquée dans 4/6 exécutions, le groupe avec le skill aussi dans 4/6. La première phase du skill est « reproduire », mais les agents avec le skill corrigeaient encore souvent avant d'exécuter quoi que ce soit.
  • Le skill a été lu dans 6/6 exécutions avec le skill, le déclenchement n'est donc pas le problème ; il n'a simplement pas changé le comportement sur ces petits bugs (les bugs étaient trouvables en lisant le code).
  • Coût : environ 1.3x les tokens par exécution (89k contre 67k).
  • Version en une phrase (reproduire d'abord, une hypothèse à la fois, le plus petit correctif, vérifier) : moyenne 4.86 contre 4.45 pour le témoin et 4.45 pour le skill, à 98k tokens par exécution contre 75k (1.3x) et 99k pour le skill (1.0x).
  • La différence tient à l'exécution des tests avant modification : 5 des 6 exécutions avec le prompt d'une phrase l'ont fait, contre 2 des 6 exécutions témoins et 2 des 6 exécutions avec le skill. Le skill n'a pas changé ce comportement ; la phrase qui le nomme, si. Chaque groupe a expliqué la cause racine dans toutes les exécutions et passé tous les tests cachés, avec de petits diffs.

Scores par dimension

DimensionScorePourquoi
1_output_quality4.45

Score moyen de 4.45/5 avec le skill (vérifications programmatiques, voir le tableau par tâche).

2_lift_vs_no_skill2.0

+0.00 point contre 4.45 sans le skill (n=2 par tâche ; en dessous d'environ 1 point, c'est du bruit).

3_trigger5.0Fichier du skill lu dans 6/6 exécutions avec le skill.
4_instructions_portability4
5_efficiency31.33x de tokens (99k contre 75k par exécution) et 1.32x de temps (45s contre 34s).
6_safety_hygiene4

Limites de ce test

  • Trois petits bugs implantés (décalage d'un, logique de dates entre fichiers, pollution de tests dépendante de l'ordre) — tous assez simples pour que la base les corrige.
  • Le skill est conçu pour des bugs difficiles, résolus en plusieurs tentatives ; nous ne les avons pas testés.
  • find-polluter.sh n'a pas été exercé.
  • n = 2 par groupe et par tâche : les différences inférieures à environ 1 point relèvent du bruit.
  • Le scoring basé sur des règles mesure ce que les vérifications peuvent voir ; il ne peut juger du goût ni du caractère optimal d'un résultat.

Sécurité

Voir security.md. Scan : 0 CRITICAL / 0 HIGH / 0 MEDIUM. Verdict : sûr à exécuter (sandbox sans réseau). Un scan propre ne prouve pas qu'un skill est sûr.

En résumé

Sur trois petits bugs, le skill a ajouté environ 1.3x les tokens sans changement mesurable : le témoin et le skill ont tous deux obtenu 4.45 et n'ont lancé les tests avant modification que dans 2 exécutions sur 6. La version en une phrase qui dit « reproduire d'abord » a fait mieux (4.86, 5 sur 6). Il pourrait être rentable sur des bugs plus difficiles, que nous n'avons pas testés.

Transcription

Journal d'exécution : systematic-debugging (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.)
Colonnes : tâche, groupe-exécution, score (0-5), tokens, secondes, vérifications réussies, fichiers de la skill ouverts par l'agent.

t1-moving-average control-1: score 4.17, tokens 60337, s 30.6, vérifications 3/4, rien ouvert
t1-moving-average control-2: score 4.17, tokens 60293, s 24.1, vérifications 3/4, rien ouvert
t1-moving-average oneliner-1: score 4.17, tokens 62543, s 30.2, vérifications 3/4, rien ouvert
t1-moving-average oneliner-2: score 5.0, tokens 62033, s 32.0, vérifications 4/4, rien ouvert
t1-moving-average treatment-1: score 5.0, tokens 69716, s 31.0, vérifications 4/4, ouvert systematic-debugging
t1-moving-average treatment-2: score 4.17, tokens 69385, s 26.6, vérifications 3/4, ouvert systematic-debugging
t2-weekly-dates control-1: score 4.17, tokens 78575, s 38.8, vérifications 3/4, rien ouvert
t2-weekly-dates control-2: score 4.17, tokens 78005, s 39.5, vérifications 3/4, rien ouvert
t2-weekly-dates oneliner-1: score 5.0, tokens 96141, s 41.5, vérifications 4/4, rien ouvert

18 exécutions, 3 artefacts

Exemple de sortie

SOTA · With the skill: movavg.py (t1-moving-average, run 1, Codex)

def moving_average(values, window): """Trailing moving average. Output i is the mean of the last `window` values ending at index i. For i < window - 1 only the values available so far are used. Raises ValueError if window < 1. """ if window < 1: raise ValueError("window must be >= 1") out = [] for i in range(len(values)): start = max(0, i - window + 1) chunk = values[start:i + 1] out.append(sum(chunk) / len(chunk)) return out

Voir Pro