Tous les skills

improve-codebase-architecture (mattpocock/skills)

Repère les occasions d'approfondir les modules d'un projet et planifie des interfaces plus claires et testables.

improve-codebase-architecture : 4.1/5 contre 3.2 sans skill, mais un prompt d'une phrase atteint 3.9 pour 58 % des tokens du skill

Selon les casSûr

Codex CLI · gpt-6-astra

23.0 / 30

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

Selon les cas : le gain +0.92 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.9
Qualité de sortie
4.1
Coût en tokens et en temps
2.0
Installation et portabilité
4.0
Sécurité
5.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 mattpocock/skills --skill improve-codebase-architecture

Source

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.2 à 4.12 par rapport à sans skill (+0.92).
  • Le skill a été détecté sans être nommé : son fichier a été lu dans 6/6 exécutions avec skill.

Points faibles

  • Consomme 1.8 fois plus de tokens que sans 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 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). Trois tâches sur un petit backend de boutique Python avec des frictions plantées (validateurs/helpers monétaires superficiels, un service d'inventaire qui ne fait que relayer vers son dépôt, un adaptateur de paiement unique, une logique de remise dupliquée dans le panier et les commandes, des tests qui ne couvrent que les helpers) : une revue d'architecture de tout le code écrite dans report.html, la même limitée au paiement et à l'inventaire, et « pourquoi place_order est-il pénible à tester » répondu dans le chat. Les prompts du groupe avec skill commencent par $improve-codebase-architecture (invocation explicite) ; les prompts de contrôle et d'une phrase ne le nomment pas.

Comparaison à trois bras

BrasScore moyen (0-5)Tokens par exécution
Sans le skill3.2115k
Prompt d'une phrase3.91120k
Avec le skill4.12208k

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

Verdict : situationnel (23.0 / 30). Source : mattpocock/skills, skills/engineering/improve-codebase-architecture, skills/engineering/codebase-design, épinglé au commit 4ae2317. Installation : npx skills@latest add mattpocock/skills --skill improve-codebase-architecture. Licence : MIT (LICENSE du dépôt).

Ce que c'est

La compétence improve-codebase-architecture de mattpocock/skills. Elle cherche des « occasions d'approfondissement » dans une base de code : modules superficiels dont l'interface est aussi complexe que l'implémentation, couches de simple transit, jointures à adaptateur unique restées hypothétiques, logique dupliquée, comportement testé uniquement via des helpers. Elle produit un rapport HTML avec un avant/après par candidat et une recommandation principale. Elle s'appuie sur une compétence voisine, codebase-design, pour le vocabulaire. Markdown uniquement, aucun script.

Comment nous avons testé

Codex CLI 0.166 (gpt-6-astra, raisonnement faible) sur un PC de test Windows dédié, un projet temporaire neuf et des HOME/TMPDIR/caches temporaires à chaque exécution, compétence installée (avec compétence), absente (témoin) ou absente avec l'exigence essentielle de la compétence condensée en une phrase ajoutée au prompt (groupe prompt d'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 la compétence (sauf la formulation indiquée ci-dessous).

Trois tâches sur un petit backend de boutique en Python avec des frictions implantées (validators et helpers monétaires superficiels, un service d'inventaire qui ne fait que relayer vers son dépôt, un adaptateur de paiement unique, une logique de remise dupliquée dans le panier et les commandes, des tests qui ne couvrent que les helpers) : une revue d'architecture de toute la base de code rédigée dans report.html, la même limitée au paiement et à l'inventaire, et « pourquoi place_order est-il pénible à tester » répondue dans le chat. Les prompts du groupe avec compétence commencent par $improve-codebase-architecture (invocation explicite) ; ceux des groupes témoin et prompt d'une phrase ne la nomment pas.

  1. Analyse d'architecture de tout le dépôt — Analyse ce petit backend de boutique pour des améliorations d'architecture : où une restructuration rendrait-elle le code plus facile à modifier et à tester ? Rédige tes conclusions dans un rapport HTML autonome nommé report.html dans ce dossier (n'ouvre pas de navigateur et ne lance pas de se…
  2. Paiement et inventaire uniquement — Examine uniquement les parties paiement et inventaire de ce backend et dis-moi quelles restructurations seraient rentables. Rédige tes conclusions dans un rapport HTML autonome nommé report.html dans ce dossier (n'ouvre pas de navigateur et ne lance pas de serveur) et ne modifie aucun co…
  3. 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 y remédierait ? Ne modifie aucun fichier ; réponds dans ton message final.

Le score est calculé de manière programmatique (tests masqués / détection des problèmes implantés / vérifications de contraintes / rendu + OCR le cas échéant), avec une note de 0–5 par exécution. Aucun juge LLM n'a attribué de score.

Résultats

Le prompt d'une phrase fourni au troisième groupe : « Cherche les occasions d'approfondissement : modules superficiels dont l'interface est aussi complexe que l'implémentation (applique le test de suppression : supprimer ce module concentrerait-il la complexité ou la déplacerait-il simplement ?), couches de simple transit, jointures à adaptateur unique restées hypothétiques, logique dupliquée entre modules, et logique testée uniquement via des helpers plutôt que via la vraie interface ; présente chaque candidat avec les fichiers, le problème, la solution, les bénéfices, un avant/après, et nomme une recommandation principale. »

TâcheScore témoinPrompt d'une phraseAvec compétenceTokens témoinTokens du prompt d'une phraseTokens avec compétenceCompétence lue
t1-scan2.924.244.43154k158k243k2/2
t2-focus2.082.53.75116k133k228k2/2
t3-testing4.585.04.1774k67k150k2/2

Score moyen : 3.2 sans contre 4.12 avec la compétence (écart +0.92). Tokens par exécution : 115k contre 208k (1.80x) ; temps 112s contre 135s. Groupe prompt d'une phrase : 3.91 (gain de la compétence par rapport au prompt d'une phrase : +0.2 ; gain propre du prompt d'une phrase par rapport à l'absence de compétence : +0.72) ; tokens du prompt d'une phrase : 120k par exécution, la compétence coûte donc 1.73x le prompt d'une phrase.

Ce qui s'est passé

  • C'est sur la revue de toute la base de code que la différence apparaît : la compétence et la version en une phrase ont trouvé 6/6 points implantés, avec le vocabulaire d'architecture, un avant/après et une recommandation principale aux quatre exécutions ; Codex seul en a trouvé 2/6 dans une exécution et 5 contrôles sur 6 dans l'autre, et aucune des deux n'avait de « recommandation principale » claire.
  • La revue ciblée (paiement et inventaire uniquement) est difficile pour tout le monde : le meilleur groupe a trouvé en moyenne un des deux points implantés. Témoin 2/4 contrôles, prompt d'une phrase 3/4, compétence 3/4. La compétence n'a pas fait mieux que la phrase.
  • Sur « pourquoi place_order est-il difficile à tester », les trois groupes ont trouvé les causes implantées (PaymentAdapter caché, stock partagé au niveau du module, logique de remise dupliquée, tests qui s'arrêtent aux helpers). La réponse de la compétence utilisait son vocabulaire (« interface », « localité ») ; celle du témoin était tout aussi correcte en mots simples.
  • Score moyen 3.20 pour le témoin, 3.91 pour le prompt d'une phrase, 4.12 pour la compétence. La compétence apporte 0.21 de plus que la phrase en consommant 1.7x les tokens (208k contre 120k par exécution), car elle lit aussi la compétence voisine ; le groupe prompt d'une phrase coûte autant que le témoin (115k).
  • Comme la compétence installe deux dossiers de compétences, les exécutions avec compétence créaient des fichiers supplémentaires dans le dossier .agents du projet ; ils ont été exclus du contrôle « aucun fichier de code modifié » (une première passe les avait à tort mis en échec, et un bug propre à Windows dans le contrôle a été corrigé avant les chiffres finaux).

Scores par dimension

DimensionScorePourquoi
1_output_quality4.12

Score moyen de 4.12/5 avec la compétence (contrôles programmatiques, voir le tableau par tâche).

2_lift_vs_no_skill2.92

+0.92 point par rapport à 3.20 sans la compétence (n=2 par tâche ; moins d'environ 1 point relève du bruit).

3_trigger5.0Fichier de compétence lu dans 6/6 exécutions avec compétence.
4_instructions_portability4

Dépend d'une compétence voisine (codebase-design) et, en option, de grilling/domain-modeling ; installez la compétence supplémentaire, sinon le vocabulaire manque.

5_efficiency2

1.80x de tokens (208k contre 115k par exécution) et 1.20x de temps (135s contre 112s).

6_safety_hygiene5

Markdown uniquement ; analyse propre. Le squelette de rapport généré charge des scripts CDN lorsqu'on l'ouvre dans un navigateur.

Limites de ce test

  • Un petit jeu de données Python avec des problèmes implantés classiques ; l'utilité du rapport sur un gros dépôt réel n'est pas mesurée.
  • La qualité du rapport, les faux positifs et le style HTML (il charge Tailwind et Mermaid depuis des CDN à l'ouverture dans un navigateur) n'ont pas été notés ; le comportement de sous-agent décrit par la compétence n'a pas été exercé.
  • Le prompt d'une phrase reformule la checklist de la compétence : c'est donc une borne haute pour un prompt court.
  • n = 2 par groupe et par tâche : les écarts inférieurs à environ 1 point relèvent du bruit.
  • Le score basé sur des règles mesure ce que les contrôles peuvent voir ; il ne peut juger du goût ni du caractère optimal d'un résultat.

Sécurité

Voir security.md. Analyse : 0 CRITICAL / 0 HIGH / 0 MEDIUM. Verdict : sûr à exécuter (sandbox sans réseau). Une analyse propre ne prouve pas qu'une compétence est sûre.

En bref

Par rapport à l'absence de compétence, celle-ci améliore nettement une revue de toute la base de code, surtout en imposant la structure et le vocabulaire du rapport, en consommant 1.8x les tokens. Une seule phrase listant les mêmes symptômes obtient l'essentiel du gain : elle vaut donc surtout la peine si vous voulez retrouver à chaque fois le même format de rapport.

Transcription

Journal d'exécution : improve-codebase-architecture (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 1.67, tokens 154044, s 168.7, vérifications 2/6, rien ouvert
t1-scan control-2: score 4.17, tokens 154957, s 158.2, vérifications 5/6, rien ouvert
t1-scan oneliner-1: score 4.24, tokens 158136, s 159.2, vérifications 6/6, rien ouvert
t1-scan oneliner-2: score 4.24, tokens 158141, s 183.3, vérifications 6/6, rien ouvert
t1-scan treatment-1: score 4.62, tokens 229717, s 180.3, vérifications 6/6, ouvert codebase-design,improve-codebase-architecture
t1-scan treatment-2: score 4.24, tokens 258001, s 158.7, vérifications 6/6, ouvert codebase-design,improve-codebase-architecture
t2-focus control-1: score 1.25, tokens 107480, s 117.6, vérifications 2/4, rien ouvert
t2-focus control-2: score 2.92, tokens 125637, s 137.1, vérifications 2/4, rien ouvert
t2-focus oneliner-1: score 2.5, tokens 139088, s 200.6, vérifications 3/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 — architecture review</title> <style> :root{color-scheme:light;--ink:#182b36;--muted:#52616b;--accent:#13745b;--paper:#f5f3ed;--line:#d6ddd8}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.6 system-ui,sans-serif}main{max-width:1120px;margin:auto;padding:50px 28px}h1,h2,h3{line-height:1.18}h1{font: clamp(34px,5vw,58px)/1.1 Georgia,serif;margin:12px 0}h2{font:30px/1.2 Georgia,serif;margin:12px 0}h3{font-size:16px}a{color:var(--accent)}.eyebrow,.label{font-size:12px;font-weight:750;letter-spacing:.1em;text-transform:uppercase}.muted{color:var(--muted)}header{margin-bottom:30px}.summary,article,.top{background:#fff;border:1px solid var(--line);border-radius:16px;padding:28px;margin:24px 0}article{border-top:4px solid var(--accent)}.badge{display:inline-block;padding:4px 12px;border-radius:20px;background:#dff3e9;color:#07583f;font-size:13px;font-weight:700}.explore{background:#fff0ce;color:#805800}.files{font:13px/1.8 ui-monospace,monospace;color:var(--muted);overflow-wrap:anywhere}.diagrams{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:24px 0}.diagram{padding:20px;background:#f5f7f5;border-radius:10px}.diagram h3{margin:0 0 18px}.box{border:1px solid #95aaa1;border-radius:6px;background:white;padding:12px;text-align:center}.row{display:flex;gap:10px}.row>*{flex:1}.arrow{text-align:center;color:var(--accent);font-weight:700;padding:6px}.leak{color:#ad3f35}.deep{background:var(--ink);color:#fff;border:4px solid var(--ink);border-radius:8px;padding:16px;text-align:center}.inside{margin-top:12px;border-top:1px solid #7d9b98;padding:12px 4px;color:#d2e4df;font-size:14px}.seam{border-top:2px dashed #80958c;margin:12px 0;padding-top:8px;text-align:center;font-size:13px;color:var(--muted)}p{margin:12px 0}ul{padding-left:22px}li{margin:6px 0}.note{border-left:3px solid #d29b35;padding:8px 14px;background:#fff9eb}.top{background:#e3eee7}.index{display:flex;gap:20px;flex-wrap:wrap}.footer{font-size:13px;color:var(--muted)}@media(max-width:720px){main{padding:24px 14px}.diagrams{grid-template-columns:1fr}article,.summary,.top{padding:20px}}@media print{body{background:#fff}main{padding:0}article{break-inside:avoid}a{color:inherit}} </style> </head> <body><main> <header><div class="eyebrow">Architecture review · 2 November 2026</div><h1>Give shop behavior<br>one place to live.</h1><p class="muted">Three focused opportunities for change locality and test leverage.</p><nav class="index" aria-label="Candidates"><a href="#pricing">01 Pricing</a><a href="#inventory">02 Inventory</a><a href="#order">03 Order execution</a></nav></header> <section class="summary" aria-label="Scope and evidence"> <h2>Scope &amp; confidence</h2> <p>Reviewed all ten Python files in <code>shop/</code>, <code>tests/test_helpers.py</code>, README, and available history at <code>39cbee1</code>. History contains only <code>init</code>; no change hotspots can be inferred. No <code>GLOSSARY.md</code>, <code>docs/adr/</code>, or <code>AGENTS.md</code> was found. Domain names below come from [... excerpt: first 3200 of 13128 characters]

Voir Pro