domain-modeling (mattpocock/skills)
Construit le modèle métier d'un projet et tient à jour son glossaire et ses décisions d'architecture.
domain-modeling : transforme de simples demandes « mets en place un glossaire / consigne cette décision » au format court GLOSSARY.md + ADR (contrôle 2.8, skill 5.0), un prompt d'une phrase obtient 4.6 ; aucune surcharge de tokens
Codex CLI · gpt-6-astra
28.2 / 30
Gain par rapport à sans skill : +2.20 · Recommandé · 18 exécutions
Recommandé : total 28.2/30 d'au moins 22, qualité de sortie 5.0 d'au moins 3.5 et gain +2.20 d'au moins +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
- 4.2
- Qualité de sortie
- 5.0
- Coût en tokens et en temps
- 5.0
- Installation et portabilité
- 4.0
- Sécurité
- 5.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 domain-modeling
Commit épinglé: 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d
Testé: 2026-11-02
Ce que nous avons testé
- Créer un glossaire à partir de termes surchargés — Notre application de prêt de bibliothèque utilise « member », « patron », « borrower » et « customer » pour la même personne (quelqu'un qui peut emprunter des livres). Un « loan » est aussi appelé « checkout » ou « rental ». Une « copy » est un livre physique, un « title » est le livre abstrait. Veuillez mettre en place le glossaire du projet…
- Consigner une décision difficile à annuler — Consigne cette décision d'architecture pour le dépôt : nous stockons l'argent en centimes entiers dans Postgres plutôt qu'en NUMERIC/DECIMAL, parce que l'API du partenaire de paiement utilise des centimes entiers et que des bugs d'arrondi nous ont coûté deux fois. Rédige-la.
- Ne consigner que ce qui mérite un ADR — Deux décisions de la réunion d'aujourd'hui : (a) nous migrons l'authentification de notre propre table de mots de passe vers un fournisseur d'identité tiers (Auth0) : un trimestre de travail à défaire ; (b) nous avons renommé la classe CSS .btn-main en .btn-primary. Consigne ce qui mérite de l'être…
Points forts
- Fait passer le score moyen de 2.8 à 5.0 par rapport à sans skill (+2.20).
- Le skill a été détecté sans être nommé : son fichier a été lu dans 6/6 exécutions avec skill.
- Aucune surcharge de tokens : 0.96 fois le volume de tokens sans skill.
- Fait mieux que la version en une phrase de sa propre règle de +0.39.
- Qualité absolue élevée avec le skill : 5.0 sur 5.
Points faibles
- Réserve de test : les globs de noms de fichiers des contrôles ont été assouplis après avoir vu les noms de fichiers du groupe de contrôle, et chaque exécution a été re-notée selon les mêmes règles assouplies.
- 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 formulées naturellement sans nommer de format : « mets en place le glossaire métier du projet » (une application de bibliothèque qui appelle la même personne member/patron/borrower/customer), « consigne cette décision d'architecture » (les montants en centimes entiers), et « deux décisions issues de la réunion ; consigne ce qui mérite de l'être » (une migration Auth0 difficile à annuler et un renommage de classe CSS qui ne l'est pas), en partant d'un dépôt avec les ADR 0001 et 0002. Une phrase = toute la convention en une phrase.
Comparaison à trois bras
| Bras | Score moyen (0-5) | Tokens par exécution |
|---|---|---|
| Sans le skill | 2.8 | 83k |
| Prompt d'une phrase | 4.61 | 83k |
| Avec le skill | 5.0 | 80k |
Mesuré avec Codex CLI sur 18 exécutions, noté par des contrôles basés sur des règles, sans juge LLM. Total 28.2 / 30, verdict Recommandé.
Divulgation : les globs de noms de fichiers des contrôles ont été assouplis après avoir vu les noms de fichiers du groupe de contrôle, et chaque exécution a été re-notée selon les mêmes règles assouplies.
Verdict : Recommandé (28.2 / 30). Source : mattpocock/skills, skills/engineering/domain-modeling, épinglé au commit 4ae2317. Installation : npx skills@latest add mattpocock/skills --skill domain-modeling. Licence : MIT (LICENSE du dépôt).
Présentation
Le skill domain-modeling (mattpocock/skills) : il garde le langage métier d’un projet précis. Il tient à jour un GLOSSARY.md (un terme canonique en gras par concept, une définition serrée, des synonymes _Avoid_:, aucun terme de programmation générique) et rédige des ADR sous docs/adr/ uniquement pour les décisions difficiles à annuler, surprenantes et réellement arbitragées, sous forme d’un court paragraphe avec une numérotation séquentielle.
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).
Trois tâches formulées naturellement, sans nommer de format : « mets en place le glossaire métier du projet » (une application de bibliothèque qui appelle la même personne member/patron/borrower/customer), « consigne cette décision d’architecture » (l’argent en centimes entiers) et « deux décisions issues de la réunion ; consigne ce qui mérite de l’être » (une migration vers Auth0 difficile à annuler et un renommage de classe CSS qui ne l’est pas), en partant d’un dépôt contenant les ADR 0001 et 0002. Prompt en une phrase = toute la convention en une seule phrase.
- Créer un glossaire à partir de termes surchargés — Notre application de prêt en bibliothèque utilise « member », « patron », « borrower » et « customer » pour la même personne (quelqu’un qui peut emprunter des livres). Un « loan » est aussi appelé « checkout » ou « rental ». Une « copy » est un exemplaire physique, un « title » est le livre abstrait. Veuillez mettre en place le pr…
- Consigner une décision difficile à annuler — Consigne cette décision d’architecture pour le dépôt : nous stockons l’argent en centimes entiers dans Postgres plutôt qu’en NUMERIC/DECIMAL, parce que l’API du partenaire de paiement utilise des centimes entiers et que des bugs d’arrondi nous ont coûté deux fois. Rédige-la.
- Ne consigner que ce qui mérite une ADR — Deux décisions de la réunion d’aujourd’hui : (a) nous migrons l’authentification de notre propre table de mots de passe vers un fournisseur d’identité tiers (Auth0) : un trimestre de travail à annuler ; (b) nous avons renommé la classe CSS
.btn-mainen.btn-primary. Consigne ce qui mérite de l’être…
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 : « Garde le langage métier du projet précis : écris un GLOSSARY.md avec un terme canonique en gras par concept (une définition serrée et des synonymes _Avoid_:, aucun terme de programmation générique), et ne consigne que les décisions difficiles à annuler, surprenantes et réellement arbitragées, sous forme d’ADR courts numérotés séquentiellement dans docs/adr/ (un paragraphe, pas un modèle). »
| 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-glossary | 1.46 | 4.38 | 5.0 | 75k | 90k | 79k | 2/2 |
| t2-adr | 2.5 | 5.0 | 5.0 | 91k | 74k | 69k | 2/2 |
| t3-adr-numbering | 4.45 | 4.45 | 5.0 | 82k | 83k | 89k | 2/2 |
Score moyen : 2.8 sans le skill contre 5.0 avec (écart +2.2). Tokens par exécution : 83k contre 80k (0.96x) ; temps 45s contre 35s. Groupe « prompt en une phrase » : 4.61 (gain du skill sur ce prompt : +0.39 ; gain du prompt par rapport à l’absence de skill : +1.8) ; tokens du prompt : 83k par exécution, donc le skill coûte 0.96x le prompt en une phrase.
Ce qui s’est passé
- Témoin 2.80, prompt 4.61, skill 5.00 (n=6 chacun). Le témoin fait ce qui est raisonnable mais à sa manière : un DOMAIN*GLOSSARY.md (et non GLOSSARY.md) avec un tableau ou de la prose, aucune ligne
\_Avoid*dans les deux exécutions, et des ADR de 263 et 355 mots avec des titres Context/Decision/Consequences là où la convention veut un court paragraphe ; une ADR du témoin est allée dans docs/decisions/ au lieu de docs/adr/. - Les deux jugements du skill sont justes : dans les deux exécutions avec skill de la troisième tâche, il n’a consigné que le passage à Auth0 comme ADR 0003 (numérotation correcte après les 0001/0002 existantes) et a indiqué avoir ignoré le renommage CSS car facile à annuler. Le témoin et le prompt ont aussi ignoré le renommage, mais témoin-2 et prompt-2 ont donné une raison que mon regex n’a pas reconnue (changement de routine, non consigné), si bien que la vérification « me dit pourquoi » les sous-évalue.
- Le prompt en une phrase atteint l’essentiel du format (glossaire 3.75 et 5.0, ADR 5.0, 5.0) mais un glossaire produit par le prompt a utilisé une mise en page différente, ce qui lui a fait rater la vérification de structure
_Avoid_. - Aucun surcoût : 80k tokens par exécution pour le skill, 83k pour le témoin et le prompt. Le skill a été lu dans 6/6 exécutions avec skill sans être nommé.
Scores par dimension
| Dimension | Score | Pourquoi |
|---|---|---|
| 1_output_quality | 5.0 | Score moyen de 5.00/5 avec le skill (vérifications programmatiques, voir le tableau par tâche). |
| 2_lift_vs_no_skill | 4.2 | +2.20 points par rapport à 2.80 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 court avec quelques modèles de référence ; aucun script. |
| 5_efficiency | 5 | 0.96x tokens (80k contre 83k par exécution) et 0.78x temps (35s contre 45s). |
| 6_safety_hygiene | 5 | Uniquement de la prose ; voir security.md. |
Limites de ce test
- Vérifications par règles sur les noms de fichiers, les titres, le nombre de termes en gras, le nombre de mots et les lignes
_Avoid_. Plusieurs sont des vérifications de forme qu’un témoin ne peut satisfaire sans qu’on lui en donne la forme ; elles mesurent la conformité à cette convention maison, pas la qualité générale de l’écriture. - J’ai assoupli les motifs de nom de fichier et de mise en page après avoir vu que le témoin écrivait DOMAIN_GLOSSARY.md et que le prompt écrivait des entrées à puces (le nom de fichier reste une vérification distincte), puis j’ai renoté toutes les exécutions avec les mêmes règles. Le regex « pourquoi (b) a été ignoré » reste strict.
- Petits dépôts synthétiques ; aucun glossaire de longue durée à mettre à jour au fil du temps.
- 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é
Pour une équipe qui veut cette convention glossaire-et-ADR, le skill l’applique correctement du premier coup et garde les ADR rares, sans tokens supplémentaires. Une instruction d’une phrase en couvre l’essentiel : le skill vous évite surtout de recoller la convention à chaque fois.
Transcription
Journal d'exécution : domain-modeling (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-glossary control-1: score 1.25, tokens 67501, s 45.5, vérifications 2/7, rien ouvert t1-glossary control-2: score 1.67, tokens 82953, s 59.9, vérifications 3/7, rien ouvert t1-glossary oneliner-1: score 5.0, tokens 99071, s 37.6, vérifications 7/7, rien ouvert t1-glossary oneliner-2: score 3.75, tokens 82400, s 36.8, vérifications 6/7, rien ouvert t1-glossary treatment-1: score 5.0, tokens 89157, s 40.7, vérifications 7/7, ouvert domain-modeling t1-glossary treatment-2: score 5.0, tokens 70479, s 32.2, vérifications 7/7, ouvert domain-modeling t2-adr control-1: score 3.12, tokens 99540, s 43.6, vérifications 3/5, rien ouvert t2-adr control-2: score 1.88, tokens 82829, s 51.1, vérifications 2/5, rien ouvert t2-adr oneliner-1: score 5.0, tokens 66964, s 43.7, vérifications 5/5, rien ouvert
18 exécutions, 3 artefacts
Exemple de sortie
SOTA · With the skill: GLOSSARY.md (t1-glossary, run 1, Codex)
# Library Lending The library-lending context describes people who can borrow books, the books available to borrow, and their loans. ## Language **Member**: A person who can borrow books from the library, whether or not they currently have a loan. _Avoid_: Patron, borrower, customer **Loan**: An instance of a member borrowing a physical copy of a title from the library. _Avoid_: Checkout, rental **Copy**: One physical book belonging to a title. Two physical books of the same title are two distinct copies. _Avoid_: Title (when referring to a physical book) **Title**: The abstract book represented by physical copies. Multiple copies of the same book share a title. _Avoid_: Copy (when referring to the abstract book)