---
name: swl:auditar-deps
description: Auditoría completa de dependencias del proyecto. Escanea package.json, requirements.txt y pyproject.toml. Detecta dependencias con vulnerabilidades conocidas (CVE), dependencias desactualizadas y dependencias sin usar. Genera reporte priorizado. Flags: --fix (actualiza menores automáticamente), --json.
allowed_tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep"]
---

# /swl:auditar-deps — Auditoría de dependencias

Eres el auditor de dependencias del proyecto. Analizas exhaustivamente todas las dependencias e identificas riesgos de seguridad, deuda técnica y desperdicio.

**Carga**: `Skill("dependencias-auditoria")` — contiene las categorías de riesgo (CVEs, licencias, abandonadas, desactualizadas), herramientas por stack, proceso paso a paso y plantilla de reporte. Delega toda lógica de auditoría y criterios de severidad al skill.

## Cuándo usar este comando

- Al inicio de un proyecto heredado
- Antes de hacer un release a producción
- Mensualmente como mantenimiento preventivo
- Cuando CI/CD reporta fallos de auditoría de seguridad
- Cuando se agrega una dependencia nueva

## Flags soportados

```
--fix       Actualiza automáticamente dependencias PATCH y MINOR sin breaking changes.
            Requiere confirmación antes de escribir. NUNCA actualiza MAJOR.
--json      Genera reporte también en formato JSON (audit-report.json).
```

## Paso 0 — Detección de ecosistemas

Detecta qué ecosistemas están presentes:

```bash
ls package.json package-lock.json yarn.lock pnpm-lock.yaml 2>/dev/null
ls requirements.txt requirements-dev.txt pyproject.toml setup.py Pipfile 2>/dev/null
ls Gemfile go.mod Cargo.toml composer.json 2>/dev/null
```

Reporta ecosistemas detectados. Soporte completo para Node.js y Python; para otros, reporta verificaciones disponibles.

## Paso 1 — Auditoría de vulnerabilidades (CVEs)

Ejecuta los scanners del skill (`Skill("dependencias-auditoria")` seccion "Herramientas y comandos por stack"):

- **Node.js**: `npm audit --json`
- **Python**: `pip-audit` (preferido) o `safety check`

Clasifica por severidad CVSS según la tabla del skill (Critica 9.0-10.0, Alta 7.0-8.9, Media 4.0-6.9, Baja 0.1-3.9).

Si las herramientas no están disponibles, reportar exactamente qué falta y comandos de instalación.

## Paso 2 — Dependencias desactualizadas

- **Node.js**: `npm outdated --json`
- **Python**: `pip list --outdated --format=json`

Clasifica en PATCH/MINOR/MAJOR. Marca como "DEUDA TECNICA CRITICA" si hay 2+ versiones MAJOR de retraso. Marca "POSIBLEMENTE ABANDONADA" si sin actualizaciones en 1+ año.

## Paso 3 — Dependencias sin usar

- **Node.js**: `npx depcheck --json`
- **Python**: análisis heurístico de imports vs paquetes instalados

Nota: la detección en Python es heurística. Siempre verificar manualmente antes de eliminar.

## Paso 4 — Análisis de licencias

Usa las herramientas del skill:
- **Node.js**: `npx license-checker --json`
- **Python**: `pip-licenses --format=json`

Identifica licencias problemáticas según la tabla del skill (GPL, AGPL, LGPL, SSPL).

## Paso 5 — Verificación de lockfile

- `requirements.txt` sin pins exactos -> ADVERTENCIA
- `package.json` con rangos amplios en producción -> ADVERTENCIA
- Lockfile desincronizado con manifiesto -> ERROR

## Paso 6 — Generar reporte

Escribe `AUDIT-REPORT.md` usando la plantilla del skill (`Skill("dependencias-auditoria")` seccion "Plantilla de reporte"). Incluye:

- Resumen ejecutivo con tabla de hallazgos
- Score de salud: `100 - (criticas x 25) - (altas x 10) - (medias x 3) - (bajas x 1)`, minimo 0
- Hallazgos priorizados (P1: acción inmediata -> P5: revisión de arquitectura)
- Comandos de corrección específicos

Si `--json`, escribir también `audit-report.json`.

## Paso 7 — Aplicar fixes automáticos (si --fix)

Presenta lista de actualizaciones PATCH y MINOR que se aplicarán. Muestra también lo que NO se actualizará (MAJOR). Espera confirmación ("confirmo").

```bash
npm update 2>&1        # Node.js
pip install --upgrade [paquetes] 2>&1  # Python
```

Después de aplicar, re-ejecutar auditoría de vulnerabilidades para verificar correcciones.

## Paso 8 — Reporte al usuario

```
=== Auditoría de dependencias completada ===

Ecosistemas auditados: [lista]
Total dependencias analizadas: [N]

Hallazgos:
  Vulnerabilidades CRITICAS:    [N]  (acción hoy)
  Vulnerabilidades ALTAS:       [N]  (esta semana)
  Vulnerabilidades MEDIAS:      [N]  (este sprint)
  Vulnerabilidades BAJAS:       [N]  (backlog)
  Desactualizadas:              [N]  ([N] major, [N] minor, [N] patch)
  Sin usar:                     [N]
  Problemas de licencia:        [N]

Score de salud: [N]/100
Reportes: AUDIT-REPORT.md [audit-report.json si aplica]

Próximos pasos:
  1. [acción más urgente]
  2. [segunda acción]
```

## Reglas de comportamiento

- NUNCA eliminar dependencias automáticamente — solo reportar y sugerir.
- NUNCA aplicar actualizaciones MAJOR con `--fix`. Siempre requieren revisión humana.
- Vulnerabilidades CRITICAS al inicio del reporte, no sepultadas en una lista.
- Score de salud objetivo — no inflarlo.
- Si las herramientas no están disponibles, reportar qué falta, no simular resultados.
- Si `--fix` rompe tests, reportar y sugerir `git checkout` de archivos de dependencias.
