Aller au contenu

Skills

chimera-run-the-projects-own-gate-command

Lancez la commande de vérification du projet à la lettre — même périmètre, mêmes flags. La variante presque identique que vous improvisez ment dans les deux sens.

PatronProvenance: cleanStatut: activev0.1.0 · Apache-2.0

Conférée par la personne qui a relu la fiche, et non revendiquée par le fichier lui-même. Une fiche que l'agent distille au cours d'une exécution ayant consommé du contenu non fiable naît contaminée et reste en attente de relecture avant d'être un jour récupérée.

Quand elle vient à l'esprit

  • avant de lancer lint ou typage
  • vérifier avant un commit ou une PR
  • la CI échoue, ça passe en local
  • ajouter un argument de scope ou un flag de sévérité
  • annoncer le contrôle au vert

C'est dans À éviter et Vérifier que se trouve d'ordinaire la valeur. À faire est la section que tout le monde écrit.

Le corps de la fiche ci-dessus est une traduction. L'original anglais est ce que la CLI importe, ce que l'agent lit à l'exécution et ce que l'empreinte ci-dessous atteste.

Déclencheur

Vous vous apprêtez à lancer la barrière qualité du projet — lint, vérification de types, tests — et à en rapporter le résultat comme preuve qu'un changement est sûr. La tentation est de la restreindre (« je n'ai touché qu'à chimera/ ») ou de la durcir (« --strict est sûrement mieux »).

Cela ne s'applique pas à l'exploration. Lancer pytest tests/test_governed_surfaces.py -x pendant qu'on itère sur un fichier est exactement ce qu'il faut faire ; la règle porte sur ce que vous avez ensuite le droit d'appeler la barrière. Une exécution restreinte est une aide au débogage, jamais la vérification.

À faire

  1. Trouvez où la commande est écrite, et désignez UNE source comme canonique. Dans Chimera, c'est la cible check du Makefilemake check — parce qu'une cible est exécutable alors qu'une ligne en prose n'en est qu'une copie. Les trois vérifications qu'elle lance sont ruff check ., mypy chimera et pytest -q.
  2. Lancez la forme canonique octet pour octet. Pas d'argument de chemin ajouté, pas de flag ajouté, pas de lanceur substitué. Attention : une copie en prose peut différer de façons qui semblent cosmétiques et ne le sont pas : Makefile:21 l'enveloppe en uv run --no-sync, CONTRIBUTING.md:105 en uv run --extra dev --extra desktop. Même outil, environnements différents — ce qui est précisément pourquoi l'une des deux doit être la source.
  3. Si deux sources divergent, considérez le workflow de CI comme faisant autorité, lancez celui-là, et corrigez le document obsolète dans la même PR — CONTRIBUTING.md a porté une ligne mypy --strict erronée pendant un temps, et une instruction obsolète se propage à tous ceux qui la lisent.
  4. Si la commande canonique ne peut pas s'exécuter dans votre environnement, dites que la barrière n'a pas été passée. Sous Windows, le .venv local est cassé (litellm réclame Rust/MSVC), la barrière tourne donc dans WSL — déplacer le shell est permis, modifier la commande ne l'est pas.
  5. Rapportez la commande et sa sortie telles quelles, pas un résumé de la façon dont ça s'est passé.

À éviter

Deux quasi-erreurs, toutes deux réelles, toutes deux dans la même session, et notez qu'elles échouent dans des directions opposées :

mypy --strict chimera      # WRONG — lies toward failure
mypy chimera               # right

Le flag explicite écrase le warn_unused_ignores = false propre au projet dans pyproject.toml et remonte une quinzaine d'erreurs unused-ignore dans des fichiers auxquels personne n'a touché. Cela a failli devenir un rapport de bug déposé contre du code sain.

ruff check chimera tests   # WRONG — lies toward success
ruff check .               # right

Le périmètre restreint ne remonte pas un B023 (une fermeture capturant une variable de boucle) que ruff check . remonte, parce que le périmètre change quels fichiers — et donc quels réglages de règles par répertoire — entrent en jeu. La CI a échoué sur une PR dont la « barrière » locale était verte.

Le mécanisme commun : le flag décide quelle configuration l'emporte, et le périmètre décide quelles règles se déclenchent. Ni l'un ni l'autre n'est une différence cosmétique, et les deux variantes ressemblent assez à la vraie commande pour que leur sortie se lise comme faisant autorité.

Vérifier

Montrez le fichier et la ligne où votre commande est écrite. Makefile:21, CONTRIBUTING.md:105. Si vous ne pouvez pas, vous l'avez improvisée.

La question binaire : la chaîne que vous avez tapée pourrait-elle être collée dans la recette check sans la moindre modification ? Si votre commande porte un argument ou un flag que la recette n'a pas, la réponse est non, et ce que vous avez lancé est une autre vérification qui partage juste le même nom.

Risque

La commande canonique est en général la plus lente, et une règle qui interdit la variante rapide pousse à ne rien lancer du tout. C'est un résultat pire qu'une exécution restreinte honnêtement étiquetée.

Mesurez le coût avant de décider que la règle est bon marché, et remesurez à mesure que la suite grossit. Le premier jet de cette carte affirmait que la suite complète de Chimera prenait « une quinzaine de secondes » — un chiffre vrai à un moment donné, qui avait dérivé vers environ 100 secondes sur quatre exécutions mesurées au moment où la carte a été écrite. Une carte sur le fait de ne pas improviser les commandes est un mauvais endroit pour publier un chiffre qui ne survit pas à l'exécution de la commande.

Et la recette elle-même peut être fausse. La suivre à la lettre, c'est hériter de ses angles morts : make check ne vous dira pas qu'un test lit un bench/local_lift/results/paired.json ignoré par git qu'un clone frais n'a pas. Le remède à une mauvaise barrière est de changer la recette dans une PR, pas de faire tourner discrètement une meilleure version privée — une amélioration privée protège exactement une personne et laisse la CI, et tous les autres, sur l'ancienne commande.

L'utiliser

La fiche est une donnée. Clonez le dépôt et importez-la par son chemin — ce qui arrive par le réseau est traité comme contaminé et retenu pour approbation, ce qui est le comportement souhaitable et la raison pour laquelle il n'y a pas d'installateur en une ligne ici.

git clone https://github.com/brcampidelli/chimera-agent.git
chimera skills-import chimera-agent/skills/chimera-run-the-projects-own-gate-command/SKILL.md

Intégrité

SHA-256 du fichier tel qu'il est publié. Qui l'importe peut vérifier que ce qu'il a reçu correspond à ce que cette page affichait.

12e60e2bbe0fa29b4a242ec429a1897741266f43812148c3a55356f77de227b9

Lire la fiche dans le dépôt