Vai al contenuto

Skills

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

Esegui alla lettera il comando di verifica del progetto — stesso scope, stessi flag. La variante quasi identica che improvvisi mente in entrambe le direzioni.

PatternProvenienza: cleanStato: activev0.1.0 · Apache-2.0

Conferita da chi ha letto la scheda, non rivendicata dal file su se stesso. Una scheda che l'agente distilla durante un'esecuzione che ha consumato contenuti non affidabili nasce contaminata e resta in attesa di revisione prima di essere mai recuperata.

Quando viene in mente

  • sto per lanciare lint o type check
  • verifico prima di un commit o una PR
  • la CI fallisce ma in locale passa
  • aggiungo uno scope o un flag più severo
  • dichiaro il gate verde

Il valore di solito sta in Evita e Verifica. Fai è la sezione che scrivono tutti.

Il corpo della scheda qui sopra è una traduzione. L'originale inglese è ciò che la CLI importa, ciò che l'agente legge in esecuzione e ciò che l'hash qui sotto attesta.

Trigger

Stai per eseguire il gate di qualità del progetto — lint, type check, test — e riportarne l'esito come prova che una modifica è sicura. La tentazione è restringerlo ("ho toccato solo chimera/") oppure irrigidirlo ("--strict è sicuramente meglio").

Non si applica all'esplorazione. Eseguire pytest tests/test_governed_surfaces.py -x mentre itera su un singolo file è la cosa giusta da fare; la regola riguarda ciò che poi puoi chiamare il gate. Un'esecuzione ristretta è un ausilio al debug, mai la verifica.

Fai

  1. Trova dove il comando è scritto, e designa UNA fonte come canonica. In Chimera è il target check nel Makefilemake check — perché un target è eseguibile e una riga di prosa ne è una copia. I tre controlli che esegue sono ruff check ., mypy chimera e pytest -q.
  2. Esegui la forma canonica byte per byte. Nessun argomento di percorso aggiunto, nessun flag aggiunto, nessun runner sostituito. Attenzione: una copia in prosa può differire in modi che sembrano cosmetici e non lo sono: Makefile:21 la avvolge come uv run --no-sync, CONTRIBUTING.md:105 come uv run --extra dev --extra desktop. Stesso strumento, ambienti diversi — che è esattamente il motivo per cui una delle due deve essere la fonte.
  3. Se due fonti sono in disaccordo, considera autorevole il workflow di CI, esegui quello, e correggi il documento obsoleto nella stessa PR — CONTRIBUTING.md ha portato per un po' una riga mypy --strict sbagliata, e un'istruzione obsoleta si propaga a chiunque la legga.
  4. Se il comando canonico non può essere eseguito nel tuo ambiente, di' che il gate non è stato eseguito. Su Windows il .venv locale è rotto (litellm vuole Rust/MSVC), quindi il gate gira in WSL — spostare la shell è consentito, modificare il comando no.
  5. Riporta il comando e il suo output alla lettera, non un riassunto di come è andata.

Evita

Due quasi-errori, entrambi reali, entrambi nella stessa sessione, e nota che sbagliano in direzioni opposte:

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

Il flag esplicito scavalca il warn_unused_ignores = false che il progetto ha nel proprio pyproject.toml e riporta una quindicina di errori unused-ignore in file che nessuno ha toccato. Per poco non è diventato un bug report aperto contro codice pulito.

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

Lo scope ristretto non riporta un B023 (una closure che cattura una variabile di ciclo) che invece ruff check . riporta, perché lo scope cambia quali file — e quindi quali impostazioni di regole per directory — entrano in gioco. La CI è fallita su una PR il cui "gate" locale era verde.

Il meccanismo condiviso: il flag decide quale configurazione vince, e lo scope decide quali regole scattano. Nessuna delle due è una differenza cosmetica, ed entrambe le varianti somigliano al comando vero abbastanza da far leggere l'output come autorevole.

Verifica

Indica il file e la riga dove è scritto il tuo comando. Makefile:21, CONTRIBUTING.md:105. Se non ci riesci, l'hai improvvisato.

La domanda binaria: la stringa che hai digitato potrebbe essere incollata nella recipe check senza alcuna modifica? Se il tuo comando ha un argomento o un flag che la recipe non ha, la risposta è no, e quello che hai eseguito era un controllo diverso che per caso condivide il nome.

Rischio

Il comando canonico è di solito il più lento, e una regola che vieta la variante rapida spinge verso il non eseguire proprio nulla. È un esito peggiore di un'esecuzione ristretta etichettata onestamente.

Misura il costo prima di decidere che la regola è economica, e rimisuralo man mano che la suite cresce. La prima stesura di questa card diceva che la suite completa di Chimera durava "circa quindici secondi" — un numero vero una volta e che, al momento in cui la card è stata scritta, era slittato a circa 100 secondi su quattro esecuzioni misurate. Una card sul non improvvisare comandi è un pessimo posto in cui pubblicare una cifra che non sopravvive all'esecuzione del comando.

E la recipe stessa può essere sbagliata. Seguirla alla lettera significa ereditarne i punti ciechi: make check non ti dirà che un test legge un bench/local_lift/results/paired.json ignorato da git che un clone fresco non ha. La soluzione per un gate cattivo è cambiare la recipe in una PR, non eseguire di nascosto una versione privata migliore — un miglioramento privato protegge esattamente una persona e lascia la CI, e tutti gli altri, sul vecchio comando.

Come usarla

La scheda è un dato. Clona il repository e importala per percorso — ciò che arriva dalla rete è trattato come contaminato e trattenuto in attesa di approvazione, che è il comportamento desiderabile e il motivo per cui qui non c'è un installatore in una riga.

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

Integrità

SHA-256 del file così com'è pubblicato. Chi lo importa può verificare che ciò che ha ricevuto sia ciò che questa pagina mostrava.

12e60e2bbe0fa29b4a242ec429a1897741266f43812148c3a55356f77de227b9

Leggi la scheda nel repository