You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Prérequis : Node.js ≥ 24 et pnpm 11. À la racine du dépôt :
pnpm install
pnpm aidd-evaluation:project # évalue le projet courant (assess .)
pnpm aidd-evaluation # évalue le dépôt ou dossier indiqué
pnpm aidd-evaluation:profiles # évalue tous les profils de référence
pnpm aidd-evaluation:harness # audite le contexte Claude du projet courant
Pour l’utiliser dans un autre repo via Claude Code :
/plugin marketplace add BlandineRdl/aidd-audit
/plugin install aidd-evaluation@aidd-evaluation
L’outil évalue la maturité AIDD à partir de preuves observables dans un dépôt ou des profils de référence, jamais sur de simples déclarations. Il croise quatre axes : taille des changements, harness IA, intervention humaine et travail en parallèle.Son moteur déterministe attribue le plus haut niveau entièrement prouvé, explique les preuves et distingue ce qui manque de ce qui est inconnu.
Avant d'envoyer
Aucune clé d'API n'est présente dans le code ni dans l'historique Git
Merci pour ce rendu. Voici ce qu'on en a retenu, après l'avoir installé, lancé
sur les huit profils dans un conteneur isolé, et lu de bout en bout.
Ce qu'on a regardé
Vidéo. Dans le dépôt, 2 min 16.
Dépôt. 388 fichiers, licence MIT, un README qui donne l'usage, les options, la lecture de la sortie, les limites annoncées et les codes de retour.
Documentation. Ta note de méthode, une mémoire projet, des plans, des phases, des revues et sept fiches d'audit datées.
Harnais. Un CLAUDE.md, douze règles chargées selon les chemins, ta mémoire projet, un pre-commit.
Intégration continue. Aucune. La porte est locale, pnpm check, branchée avant chaque commit.
Tests. 1 111, tous verts sauf un, qui dépend d'une configuration machine que notre bac à sable ne fournit pas.
Interfaces. Pas d'écran. Le terminal, un format JSON versionné, et un plugin Claude Code installable avec ses deux skills.
Le calcul. Lu ligne par ligne, puis testé en te donnant un autre modèle de niveaux.
Un dossier abîmé exprès, pour voir comment il réagit.
Comment ton outil marche
Un axe n'est pas noté, il est comparé à une exigence. Trois formes de comparaison, aucun score.
Le niveau retenu est le plus haut dont toutes les exigences sont remplies.
Ta règle centrale tient en une ligne. Une observation absente ou non confirmée devient « non prouvé », jamais « non atteint ». Une donnée qui manque n'est jamais un zéro.
Le modèle de niveaux vit hors du code, dans un fichier qu'on peut remplacer en ligne de commande.
Le déclaratif n'est pas utilisé, et c'est écrit dans ton code.
Ce qui marche bien
La sortie donne l'écart exact jusqu'au cran suivant. « Pour atteindre Silver : ✗ Harness, manque la boucle de validation. Déjà au niveau requis : Taille, En parallèle. »
Le déterminisme tient jusqu'au bout. Deux dépendances en production, aucun appel à un modèle.
Le modèle est vraiment remplaçable. On t'en a donné un autre. Un profil a changé de cran, avec le seuil demandé et le seuil observé affichés côte à côte.
Tu ne supposes pas que les niveaux s'empilent, tu le vérifies. Un modèle où un niveau demande moins que le précédent est refusé, avec le message qui dit lequel.
Quand ton collecteur de dépôt échoue, c'est écrit en clair.assess sur ton propre dépôt publie l'échec et son motif, sans rien deviner.
L'architecture suit le même soin. Quatre parties séparées, et un script qui vérifie que dix de tes onze règles de séparation tiennent toujours. On en a cassé deux pour vérifier : il échoue, et il nomme la règle.
Ce qu'on a préféré
La différence entre « je n'ai pas la donnée » et « la donnée dit non ». Les deux n'appellent pas la même action, et ça tient jusque dans ton code. Sur le profil le moins renseigné, tu écris « aucun niveau prouvé », jamais un niveau bas.
Et ta commande harness, qui sort du sujet. Elle chiffre ce qu'un contexte coûte à l'ouverture d'une session, repère ce que la mémoire et les règles répètent, et propose des retraits. Elle nous a d'ailleurs signalé un problème dans deux de nos propres fichiers. Vérification faite, elle avait raison.
Ce qu'on améliorerait
La commande annoncée dans ton formulaire n'existe pas dans le dépôt. C'est le premier mur pour qui suit la doc, et le plus facile à enlever.
Le refus s'arrête juste avant la réponse. Sur un profil réduit à deux fichiers, tu écris « niveau prouvé : aucun, 1 axe confirmé sur 4 », et ça s'arrête là. Garde ça, et ajoute un niveau estimé à côté. Ta couverture d'axes est déjà la mesure d'incertitude qu'il faut.
Un fichier que ton outil n'arrive pas à ouvrir mérite un traitement à part. Aujourd'hui, un fichier coupé en deux donne la même réponse qu'un fichier qui n'existe pas. Et un fichier qu'on n'a pas le droit d'ouvrir éteint un axe entier. On a fait le test : on a bloqué l'accès à un fichier que tu n'utilises même pas, et le verdict est tombé de Copper à « aucun niveau prouvé ». Tes deux collecteurs affichaient pourtant « terminé ». Tu sais déjà signaler ce genre de souci pour le collecteur qui lit le dépôt, il reste à le faire pour celui qui lit les profils.
Les seuils de découpage ne suivent pas le modèle. Les niveaux sont dans le fichier remplaçable, mais ce qui transforme une donnée brute en valeur d'axe reste en dur.
Ton outil lit moins de pièces qu'il n'y paraît. Le code, l'analyse statique et les pull requests ne sont jamais ouverts : on les a supprimés d'un profil, et la sortie n'a pas changé d'un caractère. La session n'est qu'un marqueur de présence, tu testes son nom de fichier. Sur le profil réduit à une session, la seule pièce disponible n'est donc jamais lue.
L'attribution par personne passe par un appel réseau, donc on n'a pas pu la voir tourner. Lire les pull requests du dossier ouvrirait ce chemin hors ligne.
En résumé
Une ligne de commande déterministe, quatre parties séparées dont la séparation est vérifiée une à une par un script, un modèle de niveaux remplaçable par un fichier, un plugin Claude Code installable, et une commande d'audit du contexte qui sort du sujet.
Ton calcul refuse d'affirmer ce qu'il n'a pas vu, et ta sortie donne l'écart exact jusqu'au cran suivant, avec ce qui est déjà bon. On l'a vérifié en te donnant un autre modèle, et un profil a bougé d'un cran.
Ce qu'on garde
Ne jamais remplacer une donnée manquante par un zéro, et le montrer à l'écran. Un signe pour ce qu'on n'a pas pu observer, un autre pour ce qu'on a observé et qui n'atteint pas le seuil. Les deux ne se corrigent pas de la même façon.
Activity
blafourcade commentedon Sep 4, 2026
Merci pour ce rendu. Voici ce qu'on en a retenu, après l'avoir installé, lancé
sur les huit profils dans un conteneur isolé, et lu de bout en bout.
Ce qu'on a regardé
CLAUDE.md, douze règles chargées selon les chemins, ta mémoire projet, un pre-commit.pnpm check, branchée avant chaque commit.Comment ton outil marche
Ce qui marche bien
assesssur ton propre dépôt publie l'échec et son motif, sans rien deviner.Ce qu'on a préféré
La différence entre « je n'ai pas la donnée » et « la donnée dit non ». Les deux n'appellent pas la même action, et ça tient jusque dans ton code. Sur le profil le moins renseigné, tu écris « aucun niveau prouvé », jamais un niveau bas.
Et ta commande
harness, qui sort du sujet. Elle chiffre ce qu'un contexte coûte à l'ouverture d'une session, repère ce que la mémoire et les règles répètent, et propose des retraits. Elle nous a d'ailleurs signalé un problème dans deux de nos propres fichiers. Vérification faite, elle avait raison.Ce qu'on améliorerait
En résumé
Une ligne de commande déterministe, quatre parties séparées dont la séparation est vérifiée une à une par un script, un modèle de niveaux remplaçable par un fichier, un plugin Claude Code installable, et une commande d'audit du contexte qui sort du sujet.
Ton calcul refuse d'affirmer ce qu'il n'a pas vu, et ta sortie donne l'écart exact jusqu'au cran suivant, avec ce qui est déjà bon. On l'a vérifié en te donnant un autre modèle, et un profil a bougé d'un cran.
Ce qu'on garde
Ne jamais remplacer une donnée manquante par un zéro, et le montrer à l'écran. Un signe pour ce qu'on n'a pas pu observer, un autre pour ce qu'on a observé et qui n'atteint pas le seuil. Les deux ne se corrigent pas de la même façon.