Normes
Les relecteurs appliquent les mêmes conventions à la main, commentaire après commentaire. Cette compétence extrait ces commentaires pour en faire des normes écrites, puis vérifie les diffs par rapport à celles-ci. Chaque norme associe une règle qu'un agent suit lorsqu'il écrit du code à un « lens » qu'un relecteur applique à un diff. Chaque § numérotée cite les commentaires de révision qui la sous-tendent, afin que quiconque puisse remonter d'une règle aux relecteurs qui l'ont appliquée.
Principes fondamentaux
- Les preuves d'abord. Une § a besoin de commentaires de révision provenant d'au moins 3 changements distincts et 2 relecteurs distincts, car plusieurs commentaires sur un seul changement, ou d'une seule personne, ne reflètent que le goût d'un seul relecteur.
- Chaque règle porte son pourquoi. Une raison guide encore un agent même après que le code autour de la règle a changé de forme.
- Un seul endroit par convention. Deux copies divergent, et un agent suit celle qu'il a lue en premier.
- Une vérification vaut mieux qu'une §. Une convention qu'un linter, un type ou un test peut détecter appartient à cet outil, car une vérification s'exécute à chaque fois.
- Supprimez ce que les agents font déjà. Une règle suivie spontanément coûte du contexte à chaque chargement et ne change rien.
- Les scripts sont des raccourcis. Chaque fichier de sortie possède un schéma dans
references/schemas/, afin que, lorsqu'un script est manquant ou échoue, vous puissiez écrire le même fichier à la main. gitest la seule dépendance matérielle. L'interface en ligne de commande d'une forge, commeghouglab, ajoute les commentaires de révision, etgit logla remplace en son absence.
Commandes
| Commande | Ce qu'elle fait | Sortie | Référence |
|---|---|---|---|
mine | Extrait les commentaires de révision, les étiquette par convention, classe les groupes par fréquence multipliée par gravité | .standards/clusters.json | references/mine.md |
write | Transforme les groupes classés en une compétence de normes dans le dépôt, chaque § avec son pourquoi et ses preuves | la compétence de normes | references/write.md |
review | Applique chaque lens déclenché par un diff et rapporte les résultats avec la § citée | résultats dans la réponse | references/review.md |
prune | Teste A/B chaque règle sur des bancs d'essai et supprime celles que les agents suivent spontanément | prune.json | references/prune.md |
doctor | Signale la dérive : globs qui ne correspondent à rien, fichiers cités qui ont disparu, lenses qui ne se déclenchent jamais, données d'élagage obsolètes | .standards/doctor.json | references/doctor.md |
Routage
Invoquez comme standards [commande] [portée]. Une portée est un chemin ou un glob, un slug de zone provenant de l'index généré, ou un numéro de § (§2, §2.3). Résolvez-la selon references/scope.md. mine ne prend qu'un chemin, car les zones n'existent qu'après write.
- Aucun argument. Affichez le menu ci-dessous et attendez un choix. N'exécutez jamais une commande automatiquement, car chacune lit l'historique, édite le dépôt ou consomme de nombreuses exécutions d'agent.
- Une portée sans commande. Exécutez
reviewde cette portée sans demander, carreviewne fait que lire. - Une commande explicite ou clairement implicite. Chargez sa référence et suivez-la pas à pas.
- Deux commandes sont possibles. Demandez une fois laquelle, en nommant les deux et ce que chacune ferait. Suivez ensuite la réponse.
- Normes à partir de rien. Commencez par
mine, carwritea besoin declusters.json. Proposezwritelorsqueminese termine. - Une question sur la compétence elle-même. Répondez à partir de ce fichier sans exécuter de commande.
Menu
standards: que dois-je faire ?
mine Extraire les commentaires de révision en conventions classées
write Écrire les normes à partir des conventions classées
review Réviser un diff par rapport aux normes
prune Tester chaque règle et supprimer celles que les agents suivent déjà
doctor Vérifier la dérive des normes
Chaque commande accepte une portée optionnelle : un chemin, une zone ou une §.
Lorsque des normes générées existent, listez leurs zones sous le menu avec le numéro de § et le slug.
Pipeline
mine alimente write, et write produit ce que review applique. prune et doctor maintiennent les normes ensuite.
Les fichiers de travail se trouvent dans .standards/ à la racine du dépôt cible. Gardez ce dossier hors du contrôle de version, car les commentaires de révision citent du code et des personnes. prune.json est l'exception. Il se trouve à côté des normes générées, car doctor le lit à cet endroit.
<skill-dir> dans les références est le dossier qui contient ce fichier. Les scripts dans <skill-dir>/scripts/ accélèrent mine et n'ont besoin que de la bibliothèque standard d'un environnement d'exécution JavaScript.
Modèle de jugement
mine, prune et doctor posent de nombreuses petites questions typées. Un modèle de jugement est un modèle rapide qui répond à des questions typées (choisir parmi un ensemble, probabilité oui/non, score) avec des probabilités calibrées. Si votre environnement vous fournit un modèle de jugement, répondez aux questions avec lui ; sinon, répondez-y vous-même. Les instructions de votre propre environnement décident quel modèle est utilisé.
Normes générées
- La sortie par défaut est une compétence avec un index de résumés d'une ligne, chacun pointant vers un fichier §. Modèles : index et section.
- Une compétence par zone est une option, décidée par dépôt selon l'expérience de forme dans references/write.md.
- Les normes générées suivent les mêmes règles que cette compétence : uniquement le frontmatter de spec, pas d'URL, pas de dates, et un pourquoi pour chaque règle.