
safer-dependencies v0.6.0
Capa de seguridad automatizada de dependencias para asistentes de codificación de IA que audita paquetes en busca de CVEs, typosquats, abandono, problemas de antigüedad de versiones e integridad de hash en los ecosistemas npm, PyPI, RubyGems, Maven, Go y Rust.
Dependencias más seguras para Claude Code
Cuando los asistentes de codificación con IA como Claude añaden paquetes a tu proyecto, a menudo eligen la versión que les suena bien, sin comprobar si tiene vulnerabilidades de seguridad conocidas, si el paquete sigue mantenido activamente o si el nombre está a un error tipográfico de un suplantador malicioso.
safer-dependencies es una capa de seguridad para Claude Code: se sitúa entre Claude y tus archivos de manifiesto y ejecuta sus comprobaciones de seguridad automáticamente: las instalaciones vulnerables se deniegan antes de ejecutarse, y una versión arriesgada escrita en un manifiesto se corrige en disco justo después de la escritura. Detecta y corrige dependencias arriesgadas — CVEs, typosquats, paquetes abandonados y problemas de antigüedad de versión, además de un período de enfriamiento para lanzamientos completamente nuevos — en npm, PyPI, RubyGems, Maven, Go, Rust y PHP (Composer). Consulta CAPABILITIES.md para ver exactamente qué está y qué no está cubierto.
¿Nuevo aquí? GETTING-STARTED.md te lleva de cero a una instalación funcional en unos cinco minutos.
Seguridad y privacidad: consulta SECURITY.md (divulgación de vulnerabilidades), PRIVACY.md (egreso de datos, sin telemetría) y CAPABILITIES.md (contra qué se defiende la herramienta y contra qué no).
Licencia (código disponible — NO es "código abierto" OSI): Gratis para usar y modificar para tus propios fines, incluido el uso interno con fines de lucro/empresarial y la creación de productos que vendas. Se requiere una licencia de pago por separado solo para monetizar el software en sí mismo — venderlo, incluirlo en un producto o servicio que se venda, u ofrecer su funcionalidad a terceros a cambio de una tarifa (incluido alojado/SaaS/API). La redistribución y las obras derivadas deben mantener la licencia y dar crédito a este proyecto. Consulta LICENSE (Sección 4 para la restricción comercial); solicitudes de licencia comercial vía github.com/robert-auger.
Contenidos
- Primeros pasos — de cero a instalado en unos cinco minutos
- Qué hace
- Qué lo activa
- Qué hay en este repositorio
- Ecosistemas compatibles
- Instalación
- Niveles de advertencia
- Cómo funciona
- Registro de auditoría
- Requisitos
- FAQ
Primeros pasos
GETTING-STARTED.md te lleva de cero a una instalación funcional en unos cinco minutos — requisitos previos, la instalación interactiva y la verificación. Para la referencia completa de instalación (instalaciones globales/de proyecto/manuales, detalles de Windows, la lista de permisos permitidos, actualización y desinstalación), consulta INSTALLATION.md.
Uso diario: una vez instalados los hooks, no hay nada que ejecutar — safer-dependencies funciona automáticamente en segundo plano. Cuando Claude añade o instala paquetes, marca las dependencias arriesgadas y actualiza las versiones vulnerables a una segura en el mismo lugar — y bloquea una instalación conocidamente vulnerable antes de que siquiera se ejecute — de modo que los paquetes inseguros se detectan y corrigen sin que tengas que pedirlo. Aun así puedes invocarlo directamente en cualquier momento: "¿es seguro [email protected]?", "comprueba la configuración de safer-dependencies" o "muestra las estadísticas de safer-dependencies".
Qué hace
Cuando Claude está a punto de añadir un paquete a tu proyecto, safer-dependencies lo intercepta y ejecuta 5 comprobaciones:
- Procedencia — registro oficial, detección de typosquats (npm/PyPI/RubyGems/Maven/crates.io), antigüedad del paquete
- Antigüedad de la versión — elige la versión estable más reciente publicada hace 7+ días (ventana de enfriamiento)
- Escaneo de vulnerabilidades — API de OSV, con herramientas nativas del ecosistema (npm audit, pip-audit, bundle audit) cuando están disponibles
- Integridad del pin de hash — para líneas de
requirements.txtde PyPI con pines--hash=sha256:..., el hash declarado se valida contra los hashes publicados por PyPI; una discrepancia emite una ADVERTENCIA - Paquetes abandonados y obsoletos — los paquetes conocidamente abandonados (p. ej.
paperclip,request,pycrypto,github.com/dgrijalva/jwt-go) se bloquean de inmediato con una alternativa sugerida; los paquetes sin lanzamiento estable en 2+ años reciben una advertencia informativaSTALE:. Los paquetes bloqueados se eliminan del manifiesto y Claude preguntará cómo proceder; los paquetes solo obsoletos se dejan en su lugar.
Si se encuentran problemas, Claude emite advertencias y puede retroceder a una versión más segura. Todas las comprobaciones se registran en ~/.claude/safer-dependencies-audit-YYYY-MM.log (un archivo por mes calendario).
Qué lo activa
La skill se activa automáticamente cuando Claude:
Operaciones de manifiesto / instalación
- Añade o actualiza un paquete en
package.json,requirements.txt,Gemfile,pom.xml,build.gradle,Cargo.toml,go.modo cualquier otro manifiesto compatible - Escribe un
import,requireousepara un paquete aún no declarado en el manifiesto - Genera o actualiza un archivo de bloqueo (comprueba solo las entradas nuevas/cambiadas)
- Ejecuta una instalación del gestor de paquetes vía Bash (
npm install,bundle install,poetry install,uv sync,go mod tidy, etc.) — Pre-Instalación audita los argumentos del comando, Post-Instalación audita el archivo de bloqueo resultante - Escribe un
Dockerfileo un flujo de trabajo de CI (.github/workflows/*.yml, etc.) que incorpore pasos de instalación del gestor de paquetes con versiones fijadas
Preguntas de selección y recomendación
- Comparaciones de bibliotecas/frameworks: "¿debería usar axios o node-fetch?", "¿moment vs dayjs?", "¿cuál es mejor X o Y?"
- Solicitudes de recomendación: "¿cuál es un buen cliente HTTP para Python?", "recomienda una biblioteca de registro para Go", "¿qué paquete maneja CSV en Node?"
- Selección de versión: "¿qué versión de Django debería usar?", "¿última versión estable de Flask?"
Expresiones de intención de uso (pre-adición)
- "Quiero usar FastAPI para esto", "estoy pensando en añadir Celery", "estamos considerando Prisma como ORM", "usemos Tailwind"
Preguntas sobre salud y confianza de paquetes
- "¿Sigue mantenido moment.js?", "¿sigue activa esta gema?", "¿está abandonado X?", "¿está X en fin de vida (EOL)?", "¿puedo confiar en este paquete?", "¿cuándo se actualizó faker por última vez?"