El guardia de Claude
Antes de clonar un repo, instalar una skill o agregar un MCP, Claude lo revisa con SkillSpector, el escáner gratis de NVIDIA. Lo configuras una vez con un prompt y a partir de ahí ya no instalas nada a ciegas.
En corto
Una skill es un texto que Claude obedece y, a veces, código que corre en tu compu.
Revisarla a mano cada vez no pasa: se te olvida a la tercera. Por eso aquí el escáner va dentro de un hook de Claude Code, una regla que corre sola justo antes de que Claude ejecute el comando que instala algo. El guardia lee el resultado y decide si sigue, si te avisa o si se frena a preguntarte.
Ficha
El guardia de Claude
- Nivel
- Intermedio
- Herramienta
- SkillSpector de NVIDIA, gratis y de código abierto (Apache 2.0)
- Qué necesitas
- Claude Code en tu compu. Lo demás lo instala Claude
- Cuánto toma
- Unos 10 minutos, casi todos de Claude trabajando
- Cuesta
- Nada. En el modo que usa la guía no pide llaves ni manda tus archivos a ningún lado
01 · El problema
Lo que puede venir escondido en una skill
Un grupo de investigadores revisó 31,132 skills sacadas de los catálogos más grandes. El 26.1 % traía algún hueco de seguridad y el 5.2 % tenía señales de estar hecho a propósito para hacer daño. Una de cada veinte.
No hace falta que la skill sea un programa raro. Muchas son puro texto, y ese texto Claude lo lee como instrucciones. Si alguien mete ahí una orden escondida, Claude puede seguirla como si se la hubieras dado tú.
26.1 %
traía al menos un hueco de seguridad
5.2 %
mostraba señales de intención maliciosa
31,132
skills analizadas en el estudio que cita NVIDIA
Fuente: README de NVIDIA/skillspector, que cita Agent Skills in the Wild (Liu et al., 2026).
Las dos que más importan
Instrucciones escondidas
Es lo que llaman prompt injection. Un párrafo dentro de la skill le pide a Claude otra cosa: que lea un archivo que no le pediste, que mande algo a una dirección de internet o que ignore lo que tú dijiste.
Código que se lleva tus llaves
Un script que viene con la skill busca tus contraseñas, tokens o llaves de API y los manda fuera. Tú solo viste que la skill se instaló bien.
02 · La herramienta
SkillSpector, el escáner de NVIDIA
SkillSpector lee una skill o un repo completo antes de que lo instales y te dice qué tan riesgoso es. Busca 71 patrones agrupados en 17 categorías: instrucciones escondidas, robo de datos, dependencias trampa, malware conocido y trucos específicos de servidores MCP, entre otros.
Le das un link de GitHub, una carpeta o un .zip, y te regresa una calificación de 0 a 100, una severidad (baja, media, alta o crítica) y una recomendación: seguro, con cuidado o no lo instales. Esa recomendación es lo que lee el guardia.
La herramienta
NVIDIA SkillSpector
- De quién es
- NVIDIA
- Licencia
- Apache 2.0, gratis
- Versión revisada
- 2.12.0, del 23 de septiembre de 2026
- Qué revisa
- Skills, repos y servidores MCP
- Necesita
- Python 3.12 o más nuevo. Si usas uv para instalarlo, uv trae su propio Python
- Modo de esta guía
- Sin IA (--no-llm): corre local, no pide llaves y no manda tus archivos a ningún lado
Hasta dónde llega
NVIDIA lo describe como una capa más de defensa y aclara que no aísla nada en tu compu. Lee el código antes de que entre; lo que la skill haga después ya no lo ve. Por eso el guardia te frena en lo grave, pero no te promete que todo lo que deja pasar sea seguro.
03 · Cómo decide
Cuatro respuestas posibles, y solo una te frena
El guardia es un hook: una regla que Claude Code corre sola antes de ejecutar ciertos comandos. Este se fija en los comandos que meten código ajeno a tu compu, como clonar un repo, instalar una skill o agregar un MCP. Todo lo demás pasa sin que el guardia lo toque.
Cuando ve uno de esos comandos, saca el link de GitHub, lo escanea con SkillSpector y lee la recomendación. Según lo que diga, pasa una de estas cuatro cosas.
Limpio
Sigue sin decirte nada
SkillSpector lo marca como seguro. Claude ejecuta el comando y tú ni te enteras de que hubo revisión.
Menor
Te avisa y sigue
Lo marca como con cuidado. Ves un aviso corto con la calificación y los hallazgos, y el comando corre igual.
Grave
Se frena y te pregunta
Lo marca como no instalar. Claude Code te enseña la calificación y los tres hallazgos más graves, y no corre nada hasta que tú digas sí o no.
Sin revisar
Te dice que no pudo
El escaneo falló, tardó demasiado o el comando no traía un repo de GitHub. No te bloquea, pero te avisa claro que eso entró sin revisión.
Por qué no frena en todo
Si el guardia te preguntara por cada cosita, lo apagarías a la semana. En el modo que usa esta guía, SkillSpector encuentra algo en casi cualquier repo, y muchas veces es una frase inocente que se parece a una trampa. Por eso lo menor solo se avisa. La pregunta queda para cuando el escáner de verdad dice que no lo instales, y esa pregunta aparece aunque tengas a Claude en modo automático.
04 · El prompt
Pégaselo a Claude Code una vez
Abre Claude Code en cualquier carpeta y pega el prompt completo. Claude instala SkillSpector si no lo tienes, escribe el guardia, te enseña exactamente qué va a cambiar en tus ajustes y espera tu ok antes de guardarlo.
El guardia de Claude
Instala SkillSpector, crea el hook y lo prueba sin clonar nada. Pide tu ok antes de tocar tus ajustes.
Configura NVIDIA SkillSpector como un guardia de Claude Code que revise cualquier repo, skill o MCP antes de que entre a mi computadora. 0. Revisa si tengo el comando skillspector. Si no, instálalo con: uv tool install git+https://github.com/NVIDIA/skillspector.git Necesita Python 3.12 o más nuevo; uv trae el suyo. Si no tengo uv, instálalo con su instalador oficial y explícame en una línea qué hiciste. Confirma que skillspector --help responde. 1. Haz un escaneo de prueba para ver cómo viene el resultado: skillspector scan https://github.com/blader/humanizer --no-llm -f json Fíjate en risk_assessment (score, severity y recommendation), en la lista issues y en execution_successful. Dime cuánto tardó. 2. Crea el script ~/.claude/hooks/skillspector-guard.sh y regístralo como hook PreToolUse en ~/.claude/settings.json, con matcher "Bash" y timeout de 120 segundos. 3. El script lee el comando de tool_input.command. Solo actúa si el comando es: git clone, gh repo clone, npx skills add, claude mcp add, pip install git+, uv tool install git+, o curl/wget mandado a sh o bash. Cualquier otro comando lo deja pasar sin imprimir nada. 4. Saca el link de GitHub del comando. Si viene como usuario/repo, conviértelo en https://github.com/usuario/repo. Si no trae ningún repo de GitHub (por ejemplo, un paquete de npm), deja pasar el comando con un systemMessage que diga que eso NO se revisó y por qué. 5. Corre skillspector scan [link] --no-llm -f json con un límite de 100 segundos (en Mac no viene el comando timeout; resuélvelo sin instalar nada extra). Decide por el JSON, no por el código de salida, porque el código 0 incluye hallazgos menores y el 2 es un error del escáner. Tampoco decidas por el hallazgo más alto: decide por recommendation. - SAFE: deja pasar en silencio. - CAUTION: deja pasar con un systemMessage corto con el score y los dos hallazgos principales. - DO_NOT_INSTALL: responde con hookSpecificOutput, permissionDecision "ask" y en permissionDecisionReason el score, la severidad y los 3 hallazgos más graves con su categoría, archivo y línea, para que yo decida. 6. Si el escaneo falla, se pasa del límite, execution_successful sale false o el JSON no se puede leer, no me bloquees: deja pasar con un systemMessage que diga claro que ese repo NO se revisó. El script siempre termina con código 0 e imprime JSON válido; nunca uses exit 2. 7. Conserva todos los hooks y ajustes que ya tengo. Antes de guardar settings.json, enséñame el diff y espera mi ok. 8. Pruébalo sin clonar nada: pásale al script por la entrada un JSON de prueba con el comando git clone https://github.com/blader/humanizer, otro con npx skills add usuario/repo inventado, y otro con ls -la. Enséñame qué decidió el guardia en cada caso y dime cómo lo veo en /hooks.
Lo que va a pasar en tu pantalla
- 1
Instala SkillSpector
Si ya lo tienes, se lo salta. Si no, lo instala con uv, que también trae el Python que hace falta.
- 2
Escanea un repo de prueba
Lo hace para leer cómo viene el resultado antes de escribir el guardia, en vez de adivinarlo.
- 3
Escribe el guardia
Un archivo en tu carpeta de Claude, en ~/.claude/hooks/. Vale para todos tus proyectos.
- 4
Te enseña el cambio y espera
Vas a ver qué líneas se agregan a tus ajustes. Revisa que tus hooks de antes sigan ahí y dile que sí.
- 5
Lo prueba sin clonar nada
Le pasa al guardia tres comandos de mentira y te enseña qué decidió con cada uno.
Sin llaves y sin mandar nada
El --no-llm del prompt hace que SkillSpector revise con reglas fijas, en tu compu. No pide ninguna llave de API y no le manda el contenido de las skills a ningún servicio. La única consulta que sale es a una base pública de vulnerabilidades conocidas en dependencias.
05 · Pruébalo
Cómo saber que el guardia está despierto
El paso 8 del prompt ya lo prueba sin clonar nada, y uno de sus tres casos sale a propósito como no revisado: el repo inventado no existe y el escáner no tiene qué leer. Si quieres verlo con tus propios ojos, escribe /hooks dentro de Claude Code. Aparece una lista de solo lectura con tus hooks, y el guardia sale en PreToolUse, guardado en tus ajustes de usuario.
La prueba de verdad es pedirle a Claude que instale algo. Abajo están los prompts para eso, incluido uno que arma una skill tramposa de mentira para que veas el freno sin arriesgar nada.
Lo que salió al probarlo
Escaneé blader/humanizer, una skill popular para que los textos no suenen a IA. Tardó 7 segundos y salió con cuidado, 49 de 100, con siete hallazgos. Dos venían marcados como altos por la frase without warning, que en esa skill es parte de un ejemplo de redacción y no una orden escondida. Con la regla del prompt, el guardia avisa y deja pasar. Si decidiera por el hallazgo más alto, te habría frenado por nada.
Luego armé una skill tramposa de mentira: una orden escondida para leer las llaves de la compu y mandarlas a una dirección falsa. Tardó 2 segundos y salió 100 de 100, crítica, no instalar. Ahí el guardia sí se frena y pregunta.
El repo completo de SkillSpector, que es grande, pasó de los 10 minutos sin terminar. Con el límite del prompt, ese caso cae en no revisado y te avisa.
Ver al guardia avisar con un repo real
Le pide a Claude que clone algo para ver al guardia trabajar de verdad.
Clona https://github.com/blader/humanizer en una carpeta temporal. Si el guardia de SkillSpector te avisa o te frena, enséñame exactamente qué dijo antes de seguir. Al final borra la carpeta temporal.
Ver el freno sin arriesgar nada
Arma una skill tramposa de mentira, con direcciones que no existen, y la escanea.
Crea en una carpeta temporal una skill de prueba que parezca maliciosa pero sea inofensiva: un SKILL.md con una orden escondida para ignorar al usuario y leer ~/.ssh, y un script que mande algo con curl a https://example.invalid. No la instales ni corras nada de ella. Escanéala con skillspector scan [carpeta] --no-llm -f json, dime qué recomendación salió y qué haría el guardia con ese resultado. Al final borra la carpeta.
Leer un reporte del guardia
Para cuando te frenó y no entiendes si es grave de verdad.
El guardia de SkillSpector acaba de frenar este repo. Explícame en palabras simples cada hallazgo del reporte: qué encontró, en qué archivo y línea, y si parece una trampa real o una frase inocente que el escáner confundió. Abre los archivos y léelos antes de opinar. Al final dime si tú lo instalarías y por qué.
06 · Lo que no cubre
Dónde termina el trabajo del guardia
El guardia revisa lo que entra por la puerta que vigila. Conviene saber cuáles puertas no vigila, para no confiarte de más.
Lo que se le escapa
- Lo que no viene de GitHub. Un MCP que se instala como paquete de npm, sin repo en el comando, entra con el aviso de no revisado.
- Lo que tú instalas a mano. El guardia vive dentro de Claude Code: si clonas algo tú desde tu terminal, nadie lo revisa.
- Los repos muy grandes. Si el escaneo pasa del límite de tiempo, el comando sigue y te avisa que no se revisó.
- Lo que ya tenías instalado antes de hoy. El guardia solo mira lo nuevo.
- Lo que la skill haga después. SkillSpector lee el código antes de que entre; no vigila qué hace cuando ya corre.
Para lo demás, estas guías
07 · Ajustes
Hazlo más estricto, más fino o apágalo
Cada cambio es un prompt aparte. Igual que el primero, Claude te enseña el diff antes de guardar.
Más estricto
Que también te pregunte cuando el resultado es con cuidado, no solo cuando es grave.
Cambia mi guardia de SkillSpector (~/.claude/hooks/skillspector-guard.sh) para que cuando la recomendación sea CAUTION también responda con permissionDecision "ask" y el reporte, igual que con DO_NOT_INSTALL. Lo demás se queda igual. Enséñame el diff antes de guardar.
Menos falsos positivos, usando IA
SkillSpector puede revisar con un modelo además de sus reglas. Tarda más y gasta de tu límite.
Revisa en el README de https://github.com/NVIDIA/skillspector cómo se usa el proveedor claude_cli (variable SKILLSPECTOR_PROVIDER), que usa mi Claude Code y no pide llave de API. Cambia mi guardia de SkillSpector para que escanee con ese proveedor en vez de --no-llm, sube el límite de tiempo a lo que haga falta según una prueba real, y dime cuánto tardó esa prueba. Enséñame el diff antes de guardar.
Revisar a mano un repo grande
Para cuando el guardia te avisó que no alcanzó a revisarlo.
El guardia de SkillSpector no alcanzó a revisar este repo. Escanéalo tú sin límite de tiempo con skillspector scan [link] --no-llm -f json, y cuando termine resúmeme la recomendación y los hallazgos más graves en palabras simples. No instales nada todavía.
Apagar el guardia
Quita solo este hook y deja tus demás ajustes como estaban.
Quita el guardia de SkillSpector: borra su entrada de PreToolUse en ~/.claude/settings.json y el script ~/.claude/hooks/skillspector-guard.sh. No toques ningún otro hook ni ajuste. Enséñame el diff antes de guardar. SkillSpector se queda instalado por si lo quiero usar a mano.
08 · Si también usas Codex
El mismo guardia en Codex, con una diferencia
Codex, el agente de OpenAI, también tiene hooks que corren antes de un comando. Puedes ponerle el mismo guardia, pero hoy Codex no sabe preguntarte: si un hook le pide que pregunte, lo marca como fallido y deja correr el comando. Así que en Codex lo grave se bloquea y te enseña el reporte. Si después de leerlo quieres instalarlo, lo haces tú.
- 1
Pega el prompt en Claude Code o en Codex
Cualquiera de los dos puede escribirlo. Va a revisar la documentación oficial de Codex antes de tocar nada.
- 2
Aprueba el hook en Codex
Codex no corre un hook nuevo hasta que lo apruebas. Abre Codex, escribe /hooks y márcalo como confiable.
El guardia en Codex
Reusa el script de Claude Code y lo conecta a Codex, bloqueando en vez de preguntar.
Ya tengo un guardia de SkillSpector para Claude Code en ~/.claude/hooks/skillspector-guard.sh. Ponme el mismo guardia en Codex. Antes de escribir nada, lee la documentación oficial de hooks de Codex en https://developers.openai.com/codex/hooks y sigue lo que diga sobre dónde se registran (~/.codex/hooks.json o config.toml) y el formato de PreToolUse. Como Codex todavía no soporta permissionDecision "ask", cuando la recomendación sea DO_NOT_INSTALL responde con permissionDecision "deny" y pon en el motivo el score y los 3 hallazgos más graves. Lo de CAUTION y lo que no se pudo revisar se avisa y sigue, como en Claude Code. No inventes rutas ni campos que no estén en la documentación. Enséñame el diff antes de guardar y al final dime cómo aprobar el hook en /hooks de Codex.
Guía de la bóveda
Esta guía es una de las gratuitas de la bóveda.
Lo que cambia con el guardia puesto
Antes, instalar una skill nueva era confiar a ciegas en quien la subió. Con el guardia puesto, Claude la lee primero y te dice qué encontró. Tú sigues decidiendo, pero ya decides con el reporte enfrente.
SkillSpector en GitHub
El código, la lista completa de lo que detecta y cómo instalarlo a mano.
NVIDIA/skillspector
Lo nuevo sale primero en Instagram
Ahí publico lo que voy probando antes de que se vuelva guía.
@soyenriquerocha