codebase-design (mattpocock/skills)
Fournit un vocabulaire commun pour concevoir des modules profonds avec de petites interfaces et des coutures nettes.
codebase-design : apporte aux revues d'architecture le vocabulaire des modules profonds et une structure plus claire (contrôle 3.2, skill 3.9, une phrase 4.5) pour 1.1 fois les tokens, mais n'a pas trouvé plus de problèmes plantés que le prompt d'une phrase
Codex CLI · gpt-6-astra
23.6 / 30
Gain par rapport à sans skill : +0.71 · Selon les cas · 18 exécutions
Selon les cas : le gain +0.71 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éussiTesté 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.7
- Qualité de sortie
- 3.9
- Coût en tokens et en temps
- 4.0
- Installation et portabilité
- 4.0
- Sécurité
- 4.0
Revue de sécurité
SûrScan 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 mattpocock/skills --skill codebase-design
Commit épinglé: 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d
Testé: 2026-11-02
Ce que nous avons testé
- Analyse d'architecture de tout le dépôt — Analysez ce petit backend de boutique pour des améliorations d'architecture : où une restructuration rendrait-elle le code plus facile à modifier et à tester ? Rédigez vos conclusions dans un rapport HTML autonome nommé report.html dans ce dossier (n'ouvrez pas de navigateur et ne lancez pas de serveur…
- Paiement et inventaire uniquement — Ne regardez que les parties paiement et inventaire de ce backend et dites-moi quelles restructurations seraient rentables. Rédigez vos conclusions dans un rapport HTML autonome nommé report.html dans ce dossier (n'ouvrez pas de navigateur et ne lancez pas de serveur) et ne modifiez aucun code…
- Pourquoi place_order est-il difficile à tester ? — Il me semble pénible d'écrire un vrai test pour place_order dans ce backend. Pourquoi, et quelle restructuration corrigerait cela ? Ne modifiez aucun fichier ; répondez dans votre message final.
Points forts
- Fait passer le score moyen de 3.21 à 3.92 par rapport à sans skill (+0.71).
- Le skill a été détecté sans être nommé : son fichier a été lu dans 6/6 exécutions avec skill.
Points faibles
- Un prompt d'une phrase obtient 4.54, contre 3.92 avec le skill (-0.63).
- 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 PC Windows de test dédié, 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 (sauf la formulation indiquée ci-dessous). Un petit backend de boutique avec six points de friction plantés (validateurs et wrappers monétaires superficiels, un service d'inventaire passe-plat, un adaptateur de paiement unique, de la logique dupliquée, et autres). Tâches : écrire un rapport HTML des améliorations d'architecture, un rapport limité au paiement et à l'inventaire, et « pourquoi place_order est-il difficile à tester et comment le corriger » (réponse dans le chat). Les prompts ne nomment aucun terme de design. Le groupe « une phrase » énonce l'idée de profondeur et les points à signaler.
Comparaison à trois bras
| Bras | Score moyen (0-5) | Tokens par exécution |
|---|---|---|
| Sans le skill | 3.21 | 119k |
| Prompt d'une phrase | 4.54 | 114k |
| Avec le skill | 3.92 | 133k |
Mesuré avec Codex CLI sur 18 exécutions, noté par des contrôles basés sur des règles, sans juge LLM. Total 23.6 / 30, verdict Selon les cas.
Verdict : Selon le cas (23.6 / 30). Source : mattpocock/skills, skills/engineering/codebase-design, épinglé au commit 4ae2317. Installation : npx skills@latest add mattpocock/skills --skill codebase-design. Licence : MIT (LICENSE du dépôt).
Présentation
Le skill codebase-design (mattpocock/skills) : une manière de relire l’architecture par la profondeur des modules : des modules profonds dont une petite interface masque beaucoup de comportement ; signaler les modules superficiels qui ne font que transmettre, les coutures à adaptateur unique qui restent hypothétiques, la logique dupliquée et le comportement testé uniquement via des helpers ; indiquer où placer une couture pour que le comportement soit testé à travers l’interface.
Méthode de test
Codex CLI 0.166 (gpt-6-astra, raisonnement faible) sur une machine de test Windows dédiée, un projet temporaire neuf et des HOME/TMPDIR/caches temporaires à chaque exécution, skill installé (groupe avec skill), absent (groupe témoin), ou absent avec l’exigence centrale du skill compressée en une phrase ajoutée au prompt (groupe « prompt en une phrase »), 2 exécutions par groupe et par tâche, réseau désactivé, écritures dans /tmp bloquées. Les prompts ne mentionnent jamais le skill (sauf la formulation indiquée plus bas).
Un petit backend de boutique avec six points de friction implantés (validateurs et wrappers monétaires superficiels, un service d’inventaire qui ne fait que transmettre, un adaptateur de paiement unique, de la logique dupliquée, entre autres). Tâches : rédiger un rapport HTML d’améliorations d’architecture, un rapport limité au paiement et à l’inventaire, et « pourquoi place_order est-il difficile à tester et comment le corriger ? » (réponse dans le chat). Les prompts ne nomment aucun terme de design. Le prompt en une phrase énonce l’idée de profondeur et les points à signaler.
- Analyse d’architecture sur tout le dépôt — Passez en revue ce petit backend de boutique pour des améliorations d’architecture : où une restructuration rendrait-elle le code plus facile à modifier et à tester ? Rédigez vos conclusions dans un rapport HTML autonome nommé report.html dans ce dossier (n’ouvrez pas de navigateur et ne démarrez pas de se…
- Paiement et inventaire uniquement — Regardez uniquement les parties paiement et inventaire de ce backend et dites-moi quelles restructurations seraient rentables. Rédigez vos conclusions dans un rapport HTML autonome nommé report.html dans ce dossier (n’ouvrez pas de navigateur et ne démarrez pas de serveur) et ne modifiez aucun co…
- Pourquoi place_order est-il difficile à tester ? — Il semble pénible d’écrire un vrai test pour place_order dans ce backend. Pourquoi, et quelle restructuration corrigerait cela ? Ne modifiez aucun fichier ; répondez dans votre message final.
Le scoring est programmatique (tests cachés / détection des problèmes implantés / vérifications de contraintes / rendu + OCR le cas échéant), de 0 à 5 par exécution. Aucun juge LLM n’a attribué de score.
Résultats
Le prompt en une phrase donné au troisième groupe : « Juge les modules par leur profondeur : un module profond a une petite interface qui masque beaucoup de comportement ; signale les modules superficiels qui ne font que transmettre, les coutures hypothétiques à adaptateur unique, la logique dupliquée et le comportement testé uniquement via des helpers, et indique où placer une couture pour que le comportement soit testé à travers l’interface. »
| Tâche | Score témoin | Prompt en une phrase | Avec skill | Tokens témoin | Tokens du prompt en une phrase | Tokens avec skill | Skill lu |
|---|---|---|---|---|---|---|---|
| t1-scan | 2.54 | 3.63 | 3.83 | 135k | 135k | 177k | 2/2 |
| t2-focus | 2.5 | 5.0 | 3.75 | 153k | 139k | 148k | 2/2 |
| t3-testing | 4.58 | 5.0 | 4.17 | 65k | 65k | 72k | 2/2 |
Score moyen : 3.21 sans le skill contre 3.92 avec (écart +0.71). Tokens par exécution : 119k contre 133k (1.12x) ; temps 154s contre 158s. Groupe « prompt en une phrase » : 4.54 (gain du skill sur ce prompt : -0.63 ; gain du prompt par rapport à l’absence de skill : +1.34) ; tokens du prompt : 114k par exécution, donc le skill coûte 1.17x le prompt en une phrase.
Ce qui s’est passé
- Témoin 3.21, skill 3.92, prompt en une phrase 4.54 (n=6 chacun). Sans consigne, les rapports HTML n’utilisaient presque aucun vocabulaire d’architecture (0-2 occurrences de deep/shallow/seam/interface, là où la vérification en attend 6) dans 4 exécutions sur 4. Les rapports du skill l’utilisaient dans les 4 exécutions, tout comme le prompt en une phrase.
- Analyse de tout le backend : skill 4.24 et 3.41, prompt 3.41 et 3.86, témoin 2.88 et 2.2. Les deux bras guidés ont trouvé 3-4 des 6 points implantés ; les wrappers de validateurs superficiels et l’adaptateur de paiement unique ont été manqués dans plusieurs exécutions par tous les bras.
- Tâche ciblée paiement et inventaire : skill 3.75 dans les deux exécutions, témoin 2.5 dans les deux, prompt 5.0 dans les deux. Toutes les exécutions du skill et du témoin n’ont trouvé qu’un des deux points (l’adaptateur de paiement unique hypothétique a été manqué) ; le prompt en une phrase a trouvé les deux.
- Pourquoi place_order est difficile à tester : tous les bras sont proches (témoin 4.17 et 5.0, skill 4.17 et 4.17, prompt 5.0 et 5.0) ; les exécutions du skill ont manqué une cause (tests via helpers uniquement) dans une exécution et les couches de simple transmission dans une autre.
- Tokens : skill 133k, prompt 114k, témoin 119k par exécution (1.12x le témoin). Le skill a été lu dans 6/6 exécutions avec skill.
Scores par dimension
| Dimension | Score | Pourquoi |
|---|---|---|
| 1_output_quality | 3.92 | Score moyen de 3.92/5 avec le skill (vérifications programmatiques, voir le tableau par tâche). |
| 2_lift_vs_no_skill | 2.71 | +0.71 point par rapport à 3.21 sans le skill (n=2 par tâche ; un écart inférieur à ~1 point relève du bruit). |
| 3_trigger | 5.0 | Fichier du skill lu dans 6/6 exécutions avec skill. |
| 4_instructions_portability | 4 | SKILL.md plus quelques fichiers de référence. |
| 5_efficiency | 4 | 1.12x tokens (133k contre 119k par exécution) et 1.03x temps (158s contre 154s). |
| 6_safety_hygiene | 4 | Uniquement de la prose ; voir security.md. |
Limites de ce test
- Vérifications de détection par règles sur le texte des rapports (mots-clés près des noms de fichiers) et comptage du vocabulaire ; la pertinence des restructurations proposées n’a pas été jugée et les rapports n’ont pas été ouverts dans un navigateur.
- La vérification du vocabulaire récompense les termes propres au skill, que le prompt en une phrase nomme aussi, et favorise les bras guidés.
- La vérification « avant/après » ne ressort que pour 2 exécutions en échec sur la tâche d’analyse ; ce n’est pas un facteur discriminant.
- n=2 par cellule ; un seul petit dépôt.
- n = 2 par groupe et par tâche : un écart inférieur à ~1 point relève du bruit.
- Le scoring par 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 : exécution sans danger (sandbox sans réseau). Un scan propre ne prouve pas qu’un skill est sûr.
En résumé
Le skill donne clairement à la revue le cadre de la profondeur des modules qui manque à un prompt nu, avec un léger gain de score sur le témoin, mais la même idée en une phrase trouve davantage de problèmes implantés pour moins de tokens : le gain est donc surtout stylistique.
Transcription
Journal d'exécution : codebase-design (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-scan control-1: score 2.88, tokens 135577, s 182.2, vérifications 4/6, rien ouvert t1-scan control-2: score 2.2, tokens 136096, s 168.8, vérifications 4/6, rien ouvert t1-scan oneliner-1: score 3.86, tokens 135437, s 152.3, vérifications 5/6, rien ouvert t1-scan oneliner-2: score 3.41, tokens 135611, s 172.2, vérifications 4/6, rien ouvert t1-scan treatment-1: score 3.41, tokens 176681, s 216.0, vérifications 4/6, ouvert codebase-design t1-scan treatment-2: score 4.24, tokens 178425, s 181.7, vérifications 6/6, ouvert codebase-design t2-focus control-1: score 2.5, tokens 164638, s 128.2, vérifications 2/4, rien ouvert t2-focus control-2: score 2.5, tokens 143158, s 298.9, vérifications 2/4, rien ouvert t2-focus oneliner-1: score 5.0, tokens 112021, s 375.7, vérifications 4/4, rien ouvert
18 exécutions, 3 artefacts
Exemple de sortie
SOTA · With the skill: report.html (t1-scan, run 1, Codex)
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Small shop backend — architecture review</title> <style> :root{color-scheme:light;--ink:#183047;--muted:#506276;--accent:#116b66;--line:#d8e2e8}*{box-sizing:border-box}body{margin:0;background:#f3f6f8;color:var(--ink);font:16px/1.65 system-ui,sans-serif}main{max-width:1060px;margin:auto;padding:48px 28px 70px}header{border-top:6px solid var(--accent);padding:24px 0}h1{font-size:2.5rem;line-height:1.15;letter-spacing:-.04em}h2{font-size:1.55rem;margin-top:0}h3{font-size:1.1rem;margin-bottom:6px}p{margin:10px 0 18px}.eyebrow,.meta{color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:.13em;font-size:.8rem;font-weight:700}section{background:white;border:1px solid var(--line);border-radius:12px;padding:26px;margin:22px 0}code,pre{font-family:Consolas,monospace;font-size:.9em}code{overflow-wrap:anywhere}pre{background:#edf4f5;padding:18px;white-space:pre-wrap;border-left:4px solid var(--accent)}table{width:100%;border-collapse:collapse;font-size:.93rem}th,td{text-align:left;vertical-align:top;padding:12px;border-bottom:1px solid var(--line)}th{background:#edf4f5}a{color:var(--accent)}.tag{display:inline-block;background:#e3f2ef;color:#155b53;border-radius:20px;padding:3px 10px;font-size:.8rem;font-weight:700}.note{border-left:4px solid #d1a03b;padding-left:16px}.flow{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0}.flow div{flex:1;min-width:180px;background:#edf4f5;padding:16px;border-radius:8px}li{margin:8px 0}@media(max-width:650px){main{padding:24px 14px}section{padding:18px}h1{font-size:2rem}table{font-size:.83rem}th,td{padding:7px}}@media print{body{background:white}main{padding:0}section{break-inside:avoid}a{color:inherit}} </style> </head> <body><main> <header><div class="eyebrow">Architecture review · 2 November 2026</div> <h1>Make pricing and ordering the test surface.</h1> <p>The highest-value restructuring is to concentrate pricing policy in one pure module and let an order module own validation, stock decisions, and payment sequencing behind a small interface. Remove pass-through layers as this happens. This backend is small enough that a framework, generic repository hierarchy, or distributed decomposition would add more work than leverage.</p> <p class="meta">Scope: all ten Python files in <code>shop/</code>, <code>tests/test_helpers.py</code>, and the README. This report proposes changes; no application or test files were edited. Source references use the line numbers of the reviewed snapshot.</p> <nav aria-label="Report contents"><a href="#pricing">Pricing</a> · <a href="#orders">Order module</a> · <a href="#stock">Stock consistency</a> · <a href="#validation">Validation</a> · <a href="#plan">Migration & tests</a></nav> </header> <section><h2>Current structure and where knowledge leaks</h2> <pre aria-label="Current dependency diagram">cart ──→ money pricing (discount implementation) └── own discount rules ↑ imported by orders, never called orders ──→ validators + money + own discount rules ├─→ inventory_service ──→ inventory_repo ──→ g [... excerpt: first 3200 of 17083 characters]