Come controllare una skill di Claude Code prima di installarla
SkillSpector è uno scanner di sicurezza per le skill degli agenti di intelligenza artificiale: analizza una skill prima dell'installazione e restituisce un punteggio di rischio da 0 a 100 con una raccomandazione. Lo ha pubblicato NVIDIA su GitHub con licenza Apache 2.0, ed è la cosa più concreta oggi disponibile per controllare una skill di Claude Code prima di installarla. Al momento in cui scrivo il repository conta circa 22.400 stelle.
Controllare una skill prima di installarla vuol dire fare due cose: lanciare uno scanner che cerca schemi noti, e leggere a mano il file SKILL.md e gli script che lo accompagnano. Qui sotto spiego come fare la prima con SkillSpector, cosa lo scanner non può vedere e come faccio io la seconda.
Perché una skill va controllata prima di installarla
Una skill va controllata perché l'agente la esegue con la fiducia che dà a un'istruzione del suo utente. Il README di SkillSpector lo dice in una frase: le skill degli agenti "execute with implicit trust and minimal vetting", cioè vengono eseguite con fiducia implicita e senza quasi nessuna verifica.
I numeri citati dal README vengono da un'analisi di NVIDIA su un dataset di 42.447 skill raccolte dai principali marketplace, di cui 31.132 analizzate. Nel sottoinsieme analizzato il 26,1% contiene almeno una vulnerabilità e il 5,2% mostra un'intenzione probabilmente malevola. Sono misure di NVIDIA sul proprio dataset, non una statistica indipendente, e quel "probabilmente" conta: il 5,2% è un giudizio dello scanner, non una condanna caso per caso.
Il motivo per cui il rischio è reale lo avevo già scritto nell'articolo sui setup pubblici di Claude Code su GitHub: un pacchetto messo in ~/.claude/skills/ viene visto da ogni progetto in cui lavori. Una skill sbagliata non rovina una sessione, rovina tutte quelle successive.
Come si lancia SkillSpector su una skill
SkillSpector si installa con uv e si lancia con il comando skillspector scan seguito dal percorso della skill. I comandi qui sotto sono quelli del README.
uv tool install git+https://github.com/NVIDIA/skillspector.git
skillspector scan ./my-skill/
skillspector scan ./my-skill/ --no-llm
skillspector scan https://github.com/user/my-skill
Il comando skillspector scan ./my-skill/ usa anche l'analisi semantica con un modello linguistico. Con --no-llm SkillSpector salta quel passaggio e fa solo l'analisi statica, con regole su testo, albero sintattico di Python e firme YARA. Il comando accetta anche direttamente l'indirizzo di un repository, quindi la skill si controlla prima ancora di scaricarla a mano.
Il README dichiara 71 schemi in 17 categorie, fra cui prompt injection, esfiltrazione di dati, escalation di privilegi, supply chain, avvelenamento della memoria e abuso degli strumenti MCP. Chi non sa cos'è MCP trova la spiegazione in cos'è MCP e a cosa serve.
Come si legge il punteggio
Il punteggio di SkillSpector si somma per gravità: ogni problema critico vale 50 punti, alto 25, medio 10, basso 5, con un moltiplicatore di 1,3 se la skill contiene script eseguibili. La tabella riporta le fasce dichiarate nel README.
| Punteggio | Gravità | Raccomandazione |
|---|---|---|
| 0-20 | LOW | SAFE |
| 21-50 | MEDIUM | CAUTION |
| 51-80 | HIGH | DO NOT INSTALL |
| 81-100 | CRITICAL | DO NOT INSTALL |
Come si usa in una pipeline
Il comando skillspector scan esce con codice 0 se il punteggio è 50 o meno, con 1 se è sopra 50 o se scatta una delle soglie opzionali, con 2 in caso di errore. Per questo si presta a un controllo automatico: lo stesso skillspector scan può bloccare una pipeline prima che una skill entri in un repository, e il README prevede anche l'uscita in formato SARIF 2.1.0 per gli strumenti di CI.
Cosa SkillSpector non vede e cosa manda fuori
SkillSpector non è un sandbox e fa solo analisi statica: il README lo scrive nella sezione sui limiti. Segnala i rischi prima dell'installazione, ma non isola una skill che decidi di installare comunque.
| Limite dichiarato | Cosa significa in pratica |
|---|---|
| Contenuti non in inglese | Può non riconoscere uno schema scritto in italiano |
| Attacchi nelle immagini | Il testo dentro un'immagine non viene letto |
| Codice cifrato o compilato | Un binario o un file cifrato resta opaco |
| Comportamento a runtime | Nessuna esecuzione, quindi nessuna prova di cosa fa davvero |
Quello che SkillSpector manda fuori dal computer dipende dalle opzioni. Con l'analisi LLM attiva, che è il comportamento predefinito, il contenuto dei file analizzabili viene inviato al provider configurato. Con --no-llm i file restano sul computer, ma il controllo sulle dipendenze interroga comunque OSV.dev con nomi e versioni dei pacchetti dichiarati dalla skill. Se la skill è di un cliente, questa differenza va decisa prima di lanciare lo scanner.
Cosa si controlla a mano prima di installare una skill
Prima di installare una skill si apre il suo SKILL.md e si cercano tre cose: quali strumenti dichiara di poter usare, se rimanda a script da eseguire e se contiene istruzioni che non c'entrano con il suo scopo. È un controllo di cinque minuti e lo scanner non lo sostituisce.
Nel repository di questo sito c'è una skill che uso ogni giorno, .claude/skills/articolo: sono cinque file markdown e nessuno è eseguibile. Il suo SKILL.md però dichiara nel frontmatter allowed-tools: Read, Write, Glob, Grep, Bash e chiede di lanciare uno script Node, scripts/geo/keyword-articolo.mjs. Una skill così, trovata su GitHub e scritta da uno sconosciuto, andrebbe letta due volte: il testo è innocuo, ma il permesso su Bash e lo script sono esattamente il punto in cui un'istruzione diventa un comando sul tuo computer.
Il controllo veloce con grep
Per un primo passaggio veloce su una cartella scaricata basta una ricerca dei comandi di rete e di esecuzione.
grep -rnE "curl|wget|base64|eval|exec|ssh" ./my-skill/
In che ordine si fanno i controlli
La ricerca con grep non è un'analisi, è un modo per sapere dove guardare. Ogni riga che compare va letta per intero. L'ordine che consiglio è questo: prima la lettura a mano, poi skillspector scan con --no-llm sulle skill che non vanno mandate fuori dal computer, e solo dopo l'installazione in un progetto vuoto, non nella cartella della home. La logica è la stessa descritta in come funzionano le agent skills e come si installano e in come trasformare un documento in una skill: una skill è un file che scrivi o che leggi, e se non l'hai letto non è tua.
Il quadro di rischio più ampio per chi usa agenti in azienda sta in i rischi dell'intelligenza artificiale in azienda. Lo scanner di NVIDIA lo abbassa, non lo azzera. Per questo sulle skill degli sconosciuti la mia regola resta una sola: nessuna installazione senza averle lette.
Il repository con il codice e il README completo è NVIDIA/SkillSpector su GitHub.
Domande frequenti
SkillSpector funziona solo con le skill di Claude Code?
No. Il README di NVIDIA/SkillSpector cita come esempi di skill analizzabili quelle usate da Claude Code, Codex CLI e Gemini CLI, e ha anche una modalità per i server MCP. Lo scanner legge cartelle, file singoli, archivi zip e repository, quindi conta il contenuto della skill e non lo strumento che poi la caricherà.
Cosa serve per installare SkillSpector?
Serve Python 3.12 o successivo, più uv oppure pip. Docker è facoltativo. Per l'analisi con modello linguistico servono le credenziali del provider scelto, mentre con l'opzione `--no-llm` non serve nessuna chiave.
SkillSpector è gratuito?
Il codice è distribuito con licenza Apache 2.0, quindi si scarica e si usa senza pagare. Il costo eventuale è quello dell'analisi con modello linguistico, che dipende dal provider configurato e non da NVIDIA. L'analisi solo statica non ha costi di chiamate a un modello.
Cos'è NVIDIA Verified Skills?
NVIDIA Verified Skills è la pipeline di cui, secondo il README, SkillSpector fa parte: scansiona, valuta e firma le skill degli agenti prima della pubblicazione. Quelle che la superano finiscono nel catalogo NVIDIA su GitHub, nel repository NVIDIA/skills.
Una skill con punteggio basso è sicura da installare?
No, un punteggio basso dice soltanto che lo scanner non ha trovato schemi che conosce. Una skill può nascondere l'istruzione dannosa in un punto che lo strumento dichiara di non leggere, quindi il punteggio si legge sempre insieme al contenuto della skill.