Anthropic ha introdotto in Claude Code un nuovo sistema di valutazione dedicato ai plugin, progettato per verificare se le estensioni utilizzate dall’agente di programmazione funzionino realmente nelle attività quotidiane. La funzione, denominata Plugin Evals, è disponibile a partire da Claude Code 2.1.269 e supera il controllo puramente strutturale offerto dal precedente comando di validazione, che verificava soprattutto sintassi e schema dei file. Il nuovo sistema misura invece se Claude seleziona effettivamente una determinata skill quando riceve una richiesta formulata in modo naturale, se continua a utilizzarla correttamente dopo modifiche al plugin o al modello e, soprattutto, se la presenza del plugin produce risultati migliori rispetto all’utilizzo del solo modello.
Il flusso di valutazione viene avviato attraverso il comando claude plugin eval. Ogni plugin può includere una directory evals/ contenente una serie di casi di test. Ciascun caso rappresenta un’attività simile a quelle che un utente reale potrebbe affidare a Claude Code e comprende almeno un prompt e uno o più grader incaricati di verificare il risultato. Le richieste devono essere formulate in modo naturale e non dovrebbero contenere esplicitamente il nome della skill da attivare, perché uno degli obiettivi della valutazione è proprio capire se Claude riesca a individuare autonomamente lo strumento appropriato.
Ogni esecuzione avviene in una sessione nuova e isolata di Claude Code. Il sistema carica il plugin, invia il prompt e lascia lavorare l’agente finché il task non viene completato oppure vengono raggiunti i limiti di tempo o di turni configurati. Nei file del caso di valutazione possono essere specificati anche il modello da utilizzare, gli strumenti consentiti, i tag e altri parametri dell’esecuzione. Per tenere conto della natura non deterministica degli agenti AI, ogni caso viene eseguito tre volte per impostazione predefinita e il punteggio finale deriva dalla media dei risultati ottenuti.
Plugin Evals mette a disposizione sei tipi di grader. regex verifica la presenza di determinati pattern nell’output, tool_used controlla se sia stato utilizzato uno specifico strumento, tool_order verifica l’ordine delle chiamate e file_exists controlla la presenza di file prodotti durante il task. Questi quattro metodi analizzano direttamente transcript e file e non richiedono ulteriori chiamate al modello. I grader llm e baseline utilizzano invece un altro modello per valutare il risultato secondo determinati criteri e generano quindi un costo aggiuntivo.
Uno degli elementi centrali del sistema è il confronto automatico con una baseline priva del plugin. Per impostazione predefinita lo stesso caso viene infatti eseguito sia con il plugin caricato, indicato come WITH, sia senza plugin, indicato come W/OUT. La differenza tra i due punteggi viene espressa attraverso il valore Δ e rappresenta il contributo misurabile dell’estensione. Se, ad esempio, Claude ottiene un punteggio di 1,0 sia con sia senza plugin, il risultato positivo non può essere attribuito al plugin. Se invece l’esecuzione con plugin raggiunge 1,0 mentre quella senza plugin si ferma a 0,33, il contributo misurato è pari a +0,67.
Questo confronto permette di individuare un problema difficile da rilevare con i normali controlli di configurazione: la presenza di una skill correttamente installata ma che Claude non decide di utilizzare. Anthropic indica tra i risultati più comuni proprio una Δ vicina a zero accompagnata dal fallimento del grader tool_used: Skill. In questo scenario il plugin può essere formalmente corretto, ma la sua descrizione o le sue istruzioni non sono sufficientemente efficaci perché il modello lo selezioni quando l’utente formula la richiesta senza citarlo esplicitamente.
Gli sviluppatori possono creare manualmente i casi di valutazione oppure utilizzare claude plugin eval init. Questo comando analizza il plugin, chiede quale dovrebbe essere considerato un buon risultato, propone prompt e grader, esegue una prima verifica e genera automaticamente i file necessari. Per gli ambienti CI è disponibile anche l’opzione --bare, che crea una struttura vuota da completare manualmente.
I risultati vengono salvati localmente all’interno della directory evals/results/ in una cartella identificata dal timestamp dell’esecuzione. Il sistema produce un report HTML che mostra i punteggi delle esecuzioni con e senza plugin, il valore Δ, il risultato dei singoli grader, gli eventuali errori e, per i grader basati su LLM, le valutazioni effettuate dal modello giudice. Sugli account che supportano la funzione, il report può anche essere pubblicato su claude.ai; l’opzione --no-publish permette invece di mantenerlo soltanto in locale.
Plugin Evals può essere utilizzato anche all’interno delle pipeline CI/CD. Attraverso --threshold è possibile definire un punteggio minimo che il plugin deve raggiungere, mentre --max-cost-usd consente di impostare un limite massimo alla spesa generata dalla valutazione. Se il punteggio scende sotto la soglia stabilita o il costo supera il limite configurato, la pipeline può interrompere la build. Il sistema può quindi essere utilizzato come controllo automatico per individuare regressioni introdotte da modifiche al plugin o da nuove versioni dei modelli Claude.
Le valutazioni hanno comunque un costo computazionale concreto. Ogni caso richiede esecuzioni reali di Claude Code e, nella configurazione predefinita, viene ripetuto tre volte con il plugin e altre tre senza plugin. A queste chiamate possono aggiungersi quelle necessarie ai grader llm e baseline. L’utilizzo viene conteggiato quindi nei limiti previsti dal piano Claude oppure nella fatturazione API, a seconda del sistema di autenticazione utilizzato.
Con Plugin Evals, Anthropic introduce quindi un livello di verifica orientato al comportamento effettivo delle estensioni. Un plugin non viene più considerato valido soltanto perché i suoi file rispettano lo schema previsto: diventa possibile misurare se Claude lo riconosce nel momento corretto, se continua a funzionare dopo aggiornamenti del sistema e quanto contribuisce realmente al risultato finale rispetto alle capacità già disponibili nel modello di base.
Questo articolo è stato redatto con il supporto di strumenti di intelligenza artificiale (AI)
