@saulwade/swl-ses 2.6.0 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +197 -197
- package/README.md +600 -600
- package/agentes/_intent-spec.md +73 -73
- package/agentes/_propose-step.md +90 -90
- package/agentes/accesibilidad-wcag-swl.md +690 -690
- package/agentes/arquitecto-swl.md +267 -267
- package/agentes/auto-evolucion-swl.md +932 -932
- package/agentes/backend-csharp-swl.md +420 -420
- package/agentes/backend-go-swl.md +390 -390
- package/agentes/backend-java-swl.md +281 -281
- package/agentes/backend-rust-swl.md +364 -364
- package/agentes/backend-workers-swl.md +482 -482
- package/agentes/cloud-infra-swl.md +509 -509
- package/agentes/consolidador-swl.md +541 -541
- package/agentes/depurador-swl.md +352 -352
- package/agentes/devops-ci-swl.md +400 -400
- package/agentes/disenador-ui-swl.md +569 -569
- package/agentes/documentador-swl.md +345 -345
- package/agentes/frontend-angular-swl.md +621 -621
- package/agentes/frontend-css-swl.md +716 -716
- package/agentes/frontend-react-swl.md +692 -692
- package/agentes/frontend-swl.md +496 -496
- package/agentes/frontend-tailwind-swl.md +826 -826
- package/agentes/investigador-swl.md +432 -432
- package/agentes/investigador-ux-swl.md +505 -505
- package/agentes/migrador-swl.md +442 -442
- package/agentes/mobile-android-swl.md +511 -511
- package/agentes/mobile-cross-swl.md +541 -541
- package/agentes/mobile-ios-swl.md +502 -502
- package/agentes/mobile-testing-swl.md +302 -302
- package/agentes/nemesis-auditor-swl.md +285 -285
- package/agentes/observabilidad-swl.md +438 -438
- package/agentes/pagos-swl.md +310 -310
- package/agentes/perfilador-usuario-swl.md +321 -321
- package/agentes/planificador-swl.md +399 -399
- package/agentes/producto-prd-swl.md +589 -589
- package/agentes/red-team-swl.md +218 -218
- package/agentes/release-manager-swl.md +590 -590
- package/agentes/rendimiento-swl.md +713 -713
- package/agentes/revisor-angular-swl.md +278 -278
- package/agentes/revisor-csharp-swl.md +264 -264
- package/agentes/revisor-go-swl.md +259 -259
- package/agentes/revisor-java-swl.md +257 -257
- package/agentes/revisor-kotlin-swl.md +273 -273
- package/agentes/revisor-nextjs-swl.md +281 -281
- package/agentes/revisor-php-swl.md +271 -271
- package/agentes/revisor-react-swl.md +278 -278
- package/agentes/revisor-rust-swl.md +346 -346
- package/agentes/revisor-seguridad-swl.md +399 -399
- package/agentes/revisor-swift-swl.md +268 -268
- package/agentes/revisor-typescript-swl.md +346 -346
- package/agentes/tdd-qa-swl.md +393 -393
- package/comandos/swl/actualizar.md +174 -174
- package/comandos/swl/adoptar-proyecto.md +265 -265
- package/comandos/swl/aprender.md +836 -836
- package/comandos/swl/aprobar-plan.md +146 -146
- package/comandos/swl/auditar-deps.md +134 -134
- package/comandos/swl/autoresearch.md +264 -264
- package/comandos/swl/ayuda.md +224 -224
- package/comandos/swl/brainstorm.md +51 -51
- package/comandos/swl/briefing.md +119 -119
- package/comandos/swl/checkpoint.md +325 -325
- package/comandos/swl/claudemd.md +234 -234
- package/comandos/swl/compactar.md +310 -310
- package/comandos/swl/configurar-ci.md +235 -235
- package/comandos/swl/contexto.md +110 -110
- package/comandos/swl/contribuir.md +233 -233
- package/comandos/swl/crear-skill.md +292 -292
- package/comandos/swl/cron.md +194 -194
- package/comandos/swl/discutir-fase.md +169 -169
- package/comandos/swl/ejecutar-fase.md +233 -233
- package/comandos/swl/evaluar-skill.md +520 -520
- package/comandos/swl/evolucion-continua.md +73 -73
- package/comandos/swl/evolucionar.md +267 -267
- package/comandos/swl/exportar-vault.md +583 -583
- package/comandos/swl/fix.md +118 -118
- package/comandos/swl/gateway.md +158 -158
- package/comandos/swl/inbox.md +116 -116
- package/comandos/swl/instalar.md +220 -220
- package/comandos/swl/instintos.md +86 -86
- package/comandos/swl/mapear-codebase.md +312 -312
- package/comandos/swl/mcp-status.md +175 -175
- package/comandos/swl/modelo.md +100 -100
- package/comandos/swl/nemesis.md +433 -433
- package/comandos/swl/notificaciones.md +299 -299
- package/comandos/swl/nuevo-proyecto.md +251 -251
- package/comandos/swl/planear-fase.md +263 -263
- package/comandos/swl/plugins.md +256 -256
- package/comandos/swl/predecir.md +169 -169
- package/comandos/swl/reflect-skills.md +125 -125
- package/comandos/swl/release.md +450 -450
- package/comandos/swl/revisar-impacto.md +201 -201
- package/comandos/swl/revisar.md +330 -330
- package/comandos/swl/seguridad.md +189 -189
- package/comandos/swl/sesiones.md +200 -200
- package/comandos/swl/skill-search.md +113 -113
- package/comandos/swl/status.md +345 -345
- package/comandos/swl/verificar.md +817 -817
- package/comandos/swl/wiki.md +620 -620
- package/gateway/cron/jobs.example.json +12 -12
- package/habilidades/auto-evolucion-protocolo/SKILL.md +294 -294
- package/habilidades/backend-async-postgres-testing/SKILL.md +2 -1
- package/habilidades/changelog-generator/SKILL.md +174 -174
- package/habilidades/compactacion-contexto/SKILL.md +2 -1
- package/habilidades/contenedores-docker/SKILL.md +4 -2
- package/habilidades/doubt-driven-review/SKILL.md +207 -207
- package/habilidades/drift-detection/SKILL.md +1 -1
- package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
- package/habilidades/extractor-de-aprendizajes/SKILL.md +8 -2
- package/habilidades/git-worktrees-paralelo/SKILL.md +19 -1
- package/habilidades/harness-claude-code/SKILL.md +314 -314
- package/habilidades/instalar-sistema/SKILL.md +227 -227
- package/habilidades/planear-fase/SKILL.md +358 -358
- package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -166
- package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -85
- package/habilidades/proceso-ingenieria-requerimientos/SKILL.md +147 -147
- package/habilidades/release-semver/SKILL.md +2 -2
- package/habilidades/tdd-workflow/SKILL.md +749 -749
- package/hooks/agente-lifecycle.js +1 -1
- package/hooks/audit-trail.js +1 -1
- package/hooks/auto-consolidacion.js +1 -1
- package/hooks/captura-acciones-post.js +1 -1
- package/hooks/captura-acciones-session.js +1 -1
- package/hooks/captura-feedback-usuario.js +1 -1
- package/hooks/contexto-iteracion.js +1 -1
- package/hooks/contexto-subagente.js +68 -68
- package/hooks/degradacion-instintos.js +1 -1
- package/hooks/grafo-contexto.js +1 -1
- package/hooks/guardrail-modelo.js +1 -1
- package/hooks/inbox-aviso.js +1 -1
- package/hooks/inyeccion-contexto.js +1 -1
- package/hooks/lib/agent-matcher.js +1 -1
- package/hooks/lib/agent-routing.js +1 -1
- package/hooks/lib/captura-acciones.js +1 -1
- package/hooks/lib/etapa-metricas.js +1 -1
- package/hooks/lib/evolution-tracker.js +1 -1
- package/hooks/lib/gateway-notify.js +193 -193
- package/hooks/lib/mcp-health.js +1 -1
- package/hooks/lib/notificacion-formato.js +58 -0
- package/hooks/lib/nudge-tracker.js +1 -1
- package/hooks/lib/otlp-exporter.js +1 -1
- package/hooks/lib/propose-step.js +1 -1
- package/hooks/lib/raiz-proyecto.js +127 -102
- package/hooks/lib/run-log.js +1 -1
- package/hooks/lib/singleton-guard.js +20 -13
- package/hooks/lib/telegram-cliente.js +11 -3
- package/hooks/notificacion-telegram.js +13 -3
- package/hooks/preservar-estado-pre-compact.js +1 -1
- package/hooks/registro-turnos.js +1 -1
- package/hooks/resumen-sesion.js +1 -1
- package/hooks/risk-scoring.js +1 -1
- package/hooks/session-briefing.js +1 -1
- package/hooks/spec-gate.js +1 -1
- package/hooks/sugerir-regenerar-inventario.js +1 -1
- package/hooks/tdd-gate.js +1 -1
- package/hooks/telemetria-agentes.js +1 -1
- package/hooks/telemetria-skill-routing.js +1 -1
- package/hooks/tracking-costos.js +1 -1
- package/hooks/validar-formato-post-subagente.js +1 -1
- package/hooks/validar-intent-spec.js +1 -1
- package/hooks/validar-planning-paths.js +1 -1
- package/llms.txt +29 -29
- package/manifiestos/canonical-hashes.json +5588 -5257
- package/manifiestos/hooks-config.json +469 -469
- package/manifiestos/invariantes-criticos.json +30 -30
- package/manifiestos/modulos.json +1429 -1428
- package/manifiestos/skills-lock.json +1275 -1275
- package/package.json +94 -94
- package/plugin.json +369 -369
- package/scripts/auditar-clases-conocidas.js +134 -134
- package/scripts/bootstrap-instintos.js +85 -14
- package/scripts/canario-hooks.js +166 -166
- package/scripts/cli/autonomia.js +23 -23
- package/scripts/cli/benchmark-memoria.js +37 -37
- package/scripts/cli/ciclo-autonomo.js +73 -73
- package/scripts/cli/ciclo-fase-b.js +102 -102
- package/scripts/cli/guardrail-metrics.js +39 -39
- package/scripts/cli/memoria-search.js +69 -69
- package/scripts/cli/nudge-accionar.js +39 -39
- package/scripts/cli/run-eval.js +38 -38
- package/scripts/doctor.js +26 -3
- package/scripts/evidencia-valor.js +101 -101
- package/scripts/field-report.js +16 -16
- package/scripts/instalador.js +13 -0
- package/scripts/lib/activar-hooks-proyecto.js +116 -116
- package/scripts/lib/ciclo-autonomo/candidatos.js +174 -174
- package/scripts/lib/ciclo-autonomo/config.js +165 -165
- package/scripts/lib/ciclo-autonomo/drenador-feedback.js +174 -174
- package/scripts/lib/ciclo-autonomo/fallback.js +77 -77
- package/scripts/lib/ciclo-autonomo/guard-convivencia.js +139 -139
- package/scripts/lib/ciclo-autonomo/higiene-nudges.js +112 -112
- package/scripts/lib/ciclo-autonomo/index.js +301 -301
- package/scripts/lib/ciclo-autonomo/lock.js +124 -124
- package/scripts/lib/ciclo-autonomo/presupuesto.js +122 -122
- package/scripts/lib/ciclo-autonomo/puente-degradacion.js +240 -240
- package/scripts/lib/ciclo-autonomo/runner-fase-b.js +248 -248
- package/scripts/lib/ciclo-autonomo/writer-instintos.js +190 -190
- package/scripts/lib/ciclo-autonomo/yaml-instintos.js +535 -535
- package/scripts/lib/evidencia-valor.js +228 -228
- package/scripts/lib/expandir-targets.js +71 -71
- package/scripts/lib/limpiar-basura-global.js +161 -0
- package/scripts/lib/toml-merge.js +204 -204
- package/scripts/mcp-server/auth.js +105 -105
- package/scripts/mcp-server/cache.js +106 -106
- package/scripts/tui/pantallas/install-wizard.js +403 -403
- package/instintos/.backups/perfil-usuario.yaml.2026-07-10-165128.bak +0 -53
- package/instintos/.backups/proyecto.yaml.2026-07-10-165128.bak +0 -372
|
@@ -1,189 +1,189 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: swl:seguridad
|
|
3
|
-
description: >
|
|
4
|
-
Chequeo de seguridad del PROYECTO COMPLETO (no del diff): escaneo de secretos
|
|
5
|
-
en el repo, auditoría de dependencias con CVEs, revisión OWASP dirigida a los
|
|
6
|
-
módulos críticos vía revisor-seguridad-swl, verificación de gates de seguridad
|
|
7
|
-
del pipeline CI, y detección de superficie LLM (prompt injection) cuando
|
|
8
|
-
aplica. Consolida todo en un reporte de postura de seguridad con score, veto
|
|
9
|
-
items y acciones priorizadas. Usar al adoptar un proyecto, antes de un release
|
|
10
|
-
mayor, tras un incidente, o periódicamente. Para revisar solo los cambios de
|
|
11
|
-
una fase usar /swl:verificar --solo-seguridad; para el diff usar /swl:revisar
|
|
12
|
-
seguridad.
|
|
13
|
-
argument-hint: "[--rapido] [--threat-model] [--llm] [--json]"
|
|
14
|
-
allowed-tools: [Read, Grep, Glob, Bash, Write, Agent, Skill]
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
# /swl:seguridad — Postura de seguridad del proyecto completo
|
|
18
|
-
|
|
19
|
-
Eres el coordinador de un chequeo de seguridad integral. A diferencia de
|
|
20
|
-
`/swl:verificar` (que audita el diff de una fase) y de `/swl:revisar seguridad`
|
|
21
|
-
(que revisa cambios recientes), este comando evalúa la **postura del proyecto
|
|
22
|
-
entero**: secretos, dependencias, código, pipeline y superficie LLM.
|
|
23
|
-
|
|
24
|
-
## Cuándo usar
|
|
25
|
-
|
|
26
|
-
- Al adoptar un proyecto existente (complemento natural de `/swl:adoptar-proyecto`).
|
|
27
|
-
- Antes de un release mayor o del primer despliegue productivo.
|
|
28
|
-
- Tras un incidente de seguridad o la rotación de un secreto filtrado.
|
|
29
|
-
- Periódicamente (candidato a `/swl:cron` mensual).
|
|
30
|
-
|
|
31
|
-
**Cuándo NO usar**: para el diff de una fase (→ `/swl:verificar
|
|
32
|
-
--solo-seguridad`), para revisar un PR (→ `/swl:revisar seguridad`), o para
|
|
33
|
-
auditar artefactos de skills/plugins antes de instalarlos (→
|
|
34
|
-
`Skill("seguridad-skills-ia")`).
|
|
35
|
-
|
|
36
|
-
## Flags
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
--rapido Solo capas 1-2 (secretos + dependencias). ~2 minutos.
|
|
40
|
-
--threat-model Añade la capa 6: genera/actualiza THREAT-MODEL.md con Skill("threat-model-lite").
|
|
41
|
-
--llm Fuerza la capa 5 (ai-runtime-security) aunque la detección automática no encuentre stack LLM.
|
|
42
|
-
--json Además del reporte Markdown, emite el resumen como JSON (para CI).
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Paso 0 — Carga y alcance
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
Skill("checklist-seguridad")
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
Detectar el stack (lockfiles, extensiones dominantes) y enumerar los módulos
|
|
52
|
-
críticos del proyecto: auth/, endpoints/rutas públicas, manejo de archivos,
|
|
53
|
-
pagos, todo lo que toque datos de usuario. Si existe `.planning/`, revisar
|
|
54
|
-
reportes previos de este comando en `.planning/audit/` para comparar postura.
|
|
55
|
-
|
|
56
|
-
## Capa 1 — Secretos en el repositorio
|
|
57
|
-
|
|
58
|
-
Escaneo del repo completo (tracked files + historial reciente), no solo del
|
|
59
|
-
working tree:
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
# Working tree — patrones de credenciales (mismas familias que el hook escaneo-secretos)
|
|
63
|
-
git grep -nIE "(sk-(ant|proj|live|test)-|AKIA[0-9A-Z]{16}|ghp_[A-Za-z0-9]{36}|glpat-|xox[baprs]-|-----BEGIN (RSA|EC|OPENSSH) PRIVATE KEY-----)" -- . ':!*.lock' ':!node_modules'
|
|
64
|
-
# Claves genéricas asignadas
|
|
65
|
-
git grep -nIE "(password|passwd|secret|api[_-]?key|token)\s*[=:]\s*['\"][^'\"]{8,}['\"]" -- '*.py' '*.js' '*.ts' '*.env*' '*.yaml' '*.yml' '*.json' ':!*test*' ':!*spec*'
|
|
66
|
-
# Historial: archivos .env commiteados alguna vez
|
|
67
|
-
git log --all --diff-filter=A --name-only --pretty=format: -- '*.env' '.env.*' | sort -u
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
Si `gitleaks` está instalado, preferirlo (`gitleaks detect --no-banner`) —
|
|
71
|
-
cubre historial completo con menos falsos positivos. Complemento del sistema:
|
|
72
|
-
el audit-tool `pentest-scanner.js` y el hook `escaneo-secretos.js` (mismas
|
|
73
|
-
familias de patrones) están disponibles cuando swl-ses está instalado; el flujo
|
|
74
|
-
`/swl:verificar --full` los orquesta sobre el diff.
|
|
75
|
-
|
|
76
|
-
**Todo hallazgo de secreto en historial es CRÍTICO aunque ya esté rotado o
|
|
77
|
-
gitignoreado** — sigue el protocolo Hallazgo A/B/C de
|
|
78
|
-
`arreglar-al-detectar.md` (limpiar historial es operación destructiva →
|
|
79
|
-
Hallazgo C, decisión del usuario).
|
|
80
|
-
|
|
81
|
-
## Capa 2 — Dependencias (supply chain)
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
Skill("dependencias-auditoria")
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
Ejecutar el auditor del ecosistema detectado (`npm audit` / `pip-audit` /
|
|
88
|
-
`cargo audit` / `govulncheck` / `composer audit` / `mvn dependency-check`).
|
|
89
|
-
Reglas de severidad de `reglas/seguridad.md`: CVE crítico → 72 horas, medio →
|
|
90
|
-
2 semanas. Registrar también: dependencias abandonadas (>18 meses sin release)
|
|
91
|
-
y pins abiertos (`^`, `>=`, `*`) en producción.
|
|
92
|
-
|
|
93
|
-
## Capa 3 — Código (OWASP, proyecto completo dirigido)
|
|
94
|
-
|
|
95
|
-
Delegar a `revisor-seguridad-swl` vía Agent con alcance de proyecto:
|
|
96
|
-
|
|
97
|
-
```
|
|
98
|
-
Agent(revisor-seguridad-swl) con:
|
|
99
|
-
- Alcance: los módulos críticos del Paso 0 (no un diff)
|
|
100
|
-
- Instrucción: auditoría OWASP Top 10 + path traversal + CSRF con severidad
|
|
101
|
-
CVSSv3 y veto items. Priorizar auth/autz, validación de entradas, queries,
|
|
102
|
-
manejo de archivos y sanitización de salida. Cargar Skill("checklist-seguridad")
|
|
103
|
-
y Skill("auth-patrones") / Skill("iam-secretos") según lo que encuentre.
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
En proyectos grandes (>500 archivos), dividir en 2-3 invocaciones por dominio
|
|
107
|
-
(auth, API pública, manejo de datos) y consolidar.
|
|
108
|
-
|
|
109
|
-
## Capa 4 — Pipeline CI (gates de seguridad)
|
|
110
|
-
|
|
111
|
-
```
|
|
112
|
-
Skill("devsecops-pipeline-security")
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
Verificar contra los 5 gates del skill qué existe en `.github/workflows/` (o
|
|
116
|
-
equivalente GitLab/Azure): secret scanning (gitleaks), SAST, dependency audit,
|
|
117
|
-
container scanning, DAST. Reportar la matriz presente/ausente. Para
|
|
118
|
-
materializar los faltantes: `/swl:configurar-ci --seguridad` (instala los
|
|
119
|
-
workflows opt-in).
|
|
120
|
-
|
|
121
|
-
## Capa 5 — Superficie LLM (condicional)
|
|
122
|
-
|
|
123
|
-
Detectar stack LLM (deps `anthropic`, `openai`, `langchain`, `llama-index`,
|
|
124
|
-
servidores MCP propios, prompts en el repo). Si existe — o con `--llm`:
|
|
125
|
-
|
|
126
|
-
```
|
|
127
|
-
Skill("ai-runtime-security")
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
Auditar: manejo de input no confiable hacia prompts (injection directa e
|
|
131
|
-
indirecta), guardrails de salida, secretos en system prompts, gates de
|
|
132
|
-
autonomía previos a tool-calls.
|
|
133
|
-
|
|
134
|
-
## Capa 6 — Threat model (solo con `--threat-model`)
|
|
135
|
-
|
|
136
|
-
```
|
|
137
|
-
Skill("threat-model-lite")
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
Generar o actualizar `THREAT-MODEL.md` (STRIDE ligero: superficie de ataque,
|
|
141
|
-
activos críticos, matriz de riesgo). Si ya existe uno, actualizarlo contra los
|
|
142
|
-
endpoints/módulos nuevos en vez de regenerarlo desde cero.
|
|
143
|
-
|
|
144
|
-
## Paso final — Reporte de postura consolidado
|
|
145
|
-
|
|
146
|
-
Escribir `.planning/audit/seguridad-postura-[YYYY-MM-DD].md` (si no hay
|
|
147
|
-
`.planning/`, ofrecer la raíz del proyecto):
|
|
148
|
-
|
|
149
|
-
```markdown
|
|
150
|
-
# Postura de seguridad — [proyecto] — [fecha]
|
|
151
|
-
|
|
152
|
-
## Score por capa
|
|
153
|
-
| Capa | Score | Veredicto |
|
|
154
|
-
|------|-------|-----------|
|
|
155
|
-
| 1. Secretos | N/100 | ... |
|
|
156
|
-
| 2. Dependencias | N/100 | ... |
|
|
157
|
-
| 3. Código OWASP | N/100 | ... |
|
|
158
|
-
| 4. Pipeline CI | N/100 | ... |
|
|
159
|
-
| 5. Superficie LLM | N/100 o N/A | ... |
|
|
160
|
-
|
|
161
|
-
## VETO ITEMS DETECTADOS
|
|
162
|
-
[secreto en historial, SQL injection, eval con input, CVE crítico sin parche…
|
|
163
|
-
→ score global CAP a 60/100 con 1 veto, 30/100 con 2+. Formato de
|
|
164
|
-
reglas/gobernanza.md § Veto items]
|
|
165
|
-
|
|
166
|
-
## Hallazgos priorizados
|
|
167
|
-
| # | Severidad (CVSSv3) | Capa | archivo:línea | Hallazgo | Remediación |
|
|
168
|
-
|
|
169
|
-
## Acciones recomendadas (en orden)
|
|
170
|
-
1. [acción — comando SWL que la ejecuta si existe]
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
Reportar al usuario el resumen con el score global y las top 3 acciones. Si
|
|
174
|
-
hay hallazgos CRÍTICOS, recordar el flujo de remediación: `/swl:fix` (triage y
|
|
175
|
-
reparación) o `/swl:verificar --solo-seguridad --until-converge` tras corregir.
|
|
176
|
-
|
|
177
|
-
## Reglas de comportamiento
|
|
178
|
-
|
|
179
|
-
- **Este comando NO modifica código ni secretos** — diagnostica y prioriza.
|
|
180
|
-
La remediación pasa por el flujo fix/verificar con el usuario al tanto.
|
|
181
|
-
- Toda cita archivo:línea del reporte sale de `Read`/`Grep` reales de esta
|
|
182
|
-
corrida (`verificar-citas-normativas.md § Familia 2`).
|
|
183
|
-
- Los veto items no se negocian ni se suavizan por presión de entrega
|
|
184
|
-
(`reglas/gobernanza.md`).
|
|
185
|
-
- Con `--rapido`, decir explícitamente qué capas NO corrieron — un reporte
|
|
186
|
-
parcial presentado como completo es degradación silenciosa.
|
|
187
|
-
- Falsos positivos de secretos (fixtures, ejemplos): verificarlos leyendo el
|
|
188
|
-
archivo antes de reportar; si son fixtures legítimos, recomendar renombrarlos
|
|
189
|
-
al patrón reconocible (`placeholder`, `example`, `dummy_`).
|
|
1
|
+
---
|
|
2
|
+
name: swl:seguridad
|
|
3
|
+
description: >
|
|
4
|
+
Chequeo de seguridad del PROYECTO COMPLETO (no del diff): escaneo de secretos
|
|
5
|
+
en el repo, auditoría de dependencias con CVEs, revisión OWASP dirigida a los
|
|
6
|
+
módulos críticos vía revisor-seguridad-swl, verificación de gates de seguridad
|
|
7
|
+
del pipeline CI, y detección de superficie LLM (prompt injection) cuando
|
|
8
|
+
aplica. Consolida todo en un reporte de postura de seguridad con score, veto
|
|
9
|
+
items y acciones priorizadas. Usar al adoptar un proyecto, antes de un release
|
|
10
|
+
mayor, tras un incidente, o periódicamente. Para revisar solo los cambios de
|
|
11
|
+
una fase usar /swl:verificar --solo-seguridad; para el diff usar /swl:revisar
|
|
12
|
+
seguridad.
|
|
13
|
+
argument-hint: "[--rapido] [--threat-model] [--llm] [--json]"
|
|
14
|
+
allowed-tools: [Read, Grep, Glob, Bash, Write, Agent, Skill]
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# /swl:seguridad — Postura de seguridad del proyecto completo
|
|
18
|
+
|
|
19
|
+
Eres el coordinador de un chequeo de seguridad integral. A diferencia de
|
|
20
|
+
`/swl:verificar` (que audita el diff de una fase) y de `/swl:revisar seguridad`
|
|
21
|
+
(que revisa cambios recientes), este comando evalúa la **postura del proyecto
|
|
22
|
+
entero**: secretos, dependencias, código, pipeline y superficie LLM.
|
|
23
|
+
|
|
24
|
+
## Cuándo usar
|
|
25
|
+
|
|
26
|
+
- Al adoptar un proyecto existente (complemento natural de `/swl:adoptar-proyecto`).
|
|
27
|
+
- Antes de un release mayor o del primer despliegue productivo.
|
|
28
|
+
- Tras un incidente de seguridad o la rotación de un secreto filtrado.
|
|
29
|
+
- Periódicamente (candidato a `/swl:cron` mensual).
|
|
30
|
+
|
|
31
|
+
**Cuándo NO usar**: para el diff de una fase (→ `/swl:verificar
|
|
32
|
+
--solo-seguridad`), para revisar un PR (→ `/swl:revisar seguridad`), o para
|
|
33
|
+
auditar artefactos de skills/plugins antes de instalarlos (→
|
|
34
|
+
`Skill("seguridad-skills-ia")`).
|
|
35
|
+
|
|
36
|
+
## Flags
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
--rapido Solo capas 1-2 (secretos + dependencias). ~2 minutos.
|
|
40
|
+
--threat-model Añade la capa 6: genera/actualiza THREAT-MODEL.md con Skill("threat-model-lite").
|
|
41
|
+
--llm Fuerza la capa 5 (ai-runtime-security) aunque la detección automática no encuentre stack LLM.
|
|
42
|
+
--json Además del reporte Markdown, emite el resumen como JSON (para CI).
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Paso 0 — Carga y alcance
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Skill("checklist-seguridad")
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Detectar el stack (lockfiles, extensiones dominantes) y enumerar los módulos
|
|
52
|
+
críticos del proyecto: auth/, endpoints/rutas públicas, manejo de archivos,
|
|
53
|
+
pagos, todo lo que toque datos de usuario. Si existe `.planning/`, revisar
|
|
54
|
+
reportes previos de este comando en `.planning/audit/` para comparar postura.
|
|
55
|
+
|
|
56
|
+
## Capa 1 — Secretos en el repositorio
|
|
57
|
+
|
|
58
|
+
Escaneo del repo completo (tracked files + historial reciente), no solo del
|
|
59
|
+
working tree:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Working tree — patrones de credenciales (mismas familias que el hook escaneo-secretos)
|
|
63
|
+
git grep -nIE "(sk-(ant|proj|live|test)-|AKIA[0-9A-Z]{16}|ghp_[A-Za-z0-9]{36}|glpat-|xox[baprs]-|-----BEGIN (RSA|EC|OPENSSH) PRIVATE KEY-----)" -- . ':!*.lock' ':!node_modules'
|
|
64
|
+
# Claves genéricas asignadas
|
|
65
|
+
git grep -nIE "(password|passwd|secret|api[_-]?key|token)\s*[=:]\s*['\"][^'\"]{8,}['\"]" -- '*.py' '*.js' '*.ts' '*.env*' '*.yaml' '*.yml' '*.json' ':!*test*' ':!*spec*'
|
|
66
|
+
# Historial: archivos .env commiteados alguna vez
|
|
67
|
+
git log --all --diff-filter=A --name-only --pretty=format: -- '*.env' '.env.*' | sort -u
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Si `gitleaks` está instalado, preferirlo (`gitleaks detect --no-banner`) —
|
|
71
|
+
cubre historial completo con menos falsos positivos. Complemento del sistema:
|
|
72
|
+
el audit-tool `pentest-scanner.js` y el hook `escaneo-secretos.js` (mismas
|
|
73
|
+
familias de patrones) están disponibles cuando swl-ses está instalado; el flujo
|
|
74
|
+
`/swl:verificar --full` los orquesta sobre el diff.
|
|
75
|
+
|
|
76
|
+
**Todo hallazgo de secreto en historial es CRÍTICO aunque ya esté rotado o
|
|
77
|
+
gitignoreado** — sigue el protocolo Hallazgo A/B/C de
|
|
78
|
+
`arreglar-al-detectar.md` (limpiar historial es operación destructiva →
|
|
79
|
+
Hallazgo C, decisión del usuario).
|
|
80
|
+
|
|
81
|
+
## Capa 2 — Dependencias (supply chain)
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Skill("dependencias-auditoria")
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Ejecutar el auditor del ecosistema detectado (`npm audit` / `pip-audit` /
|
|
88
|
+
`cargo audit` / `govulncheck` / `composer audit` / `mvn dependency-check`).
|
|
89
|
+
Reglas de severidad de `reglas/seguridad.md`: CVE crítico → 72 horas, medio →
|
|
90
|
+
2 semanas. Registrar también: dependencias abandonadas (>18 meses sin release)
|
|
91
|
+
y pins abiertos (`^`, `>=`, `*`) en producción.
|
|
92
|
+
|
|
93
|
+
## Capa 3 — Código (OWASP, proyecto completo dirigido)
|
|
94
|
+
|
|
95
|
+
Delegar a `revisor-seguridad-swl` vía Agent con alcance de proyecto:
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
Agent(revisor-seguridad-swl) con:
|
|
99
|
+
- Alcance: los módulos críticos del Paso 0 (no un diff)
|
|
100
|
+
- Instrucción: auditoría OWASP Top 10 + path traversal + CSRF con severidad
|
|
101
|
+
CVSSv3 y veto items. Priorizar auth/autz, validación de entradas, queries,
|
|
102
|
+
manejo de archivos y sanitización de salida. Cargar Skill("checklist-seguridad")
|
|
103
|
+
y Skill("auth-patrones") / Skill("iam-secretos") según lo que encuentre.
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
En proyectos grandes (>500 archivos), dividir en 2-3 invocaciones por dominio
|
|
107
|
+
(auth, API pública, manejo de datos) y consolidar.
|
|
108
|
+
|
|
109
|
+
## Capa 4 — Pipeline CI (gates de seguridad)
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
Skill("devsecops-pipeline-security")
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Verificar contra los 5 gates del skill qué existe en `.github/workflows/` (o
|
|
116
|
+
equivalente GitLab/Azure): secret scanning (gitleaks), SAST, dependency audit,
|
|
117
|
+
container scanning, DAST. Reportar la matriz presente/ausente. Para
|
|
118
|
+
materializar los faltantes: `/swl:configurar-ci --seguridad` (instala los
|
|
119
|
+
workflows opt-in).
|
|
120
|
+
|
|
121
|
+
## Capa 5 — Superficie LLM (condicional)
|
|
122
|
+
|
|
123
|
+
Detectar stack LLM (deps `anthropic`, `openai`, `langchain`, `llama-index`,
|
|
124
|
+
servidores MCP propios, prompts en el repo). Si existe — o con `--llm`:
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
Skill("ai-runtime-security")
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Auditar: manejo de input no confiable hacia prompts (injection directa e
|
|
131
|
+
indirecta), guardrails de salida, secretos en system prompts, gates de
|
|
132
|
+
autonomía previos a tool-calls.
|
|
133
|
+
|
|
134
|
+
## Capa 6 — Threat model (solo con `--threat-model`)
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
Skill("threat-model-lite")
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Generar o actualizar `THREAT-MODEL.md` (STRIDE ligero: superficie de ataque,
|
|
141
|
+
activos críticos, matriz de riesgo). Si ya existe uno, actualizarlo contra los
|
|
142
|
+
endpoints/módulos nuevos en vez de regenerarlo desde cero.
|
|
143
|
+
|
|
144
|
+
## Paso final — Reporte de postura consolidado
|
|
145
|
+
|
|
146
|
+
Escribir `.planning/audit/seguridad-postura-[YYYY-MM-DD].md` (si no hay
|
|
147
|
+
`.planning/`, ofrecer la raíz del proyecto):
|
|
148
|
+
|
|
149
|
+
```markdown
|
|
150
|
+
# Postura de seguridad — [proyecto] — [fecha]
|
|
151
|
+
|
|
152
|
+
## Score por capa
|
|
153
|
+
| Capa | Score | Veredicto |
|
|
154
|
+
|------|-------|-----------|
|
|
155
|
+
| 1. Secretos | N/100 | ... |
|
|
156
|
+
| 2. Dependencias | N/100 | ... |
|
|
157
|
+
| 3. Código OWASP | N/100 | ... |
|
|
158
|
+
| 4. Pipeline CI | N/100 | ... |
|
|
159
|
+
| 5. Superficie LLM | N/100 o N/A | ... |
|
|
160
|
+
|
|
161
|
+
## VETO ITEMS DETECTADOS
|
|
162
|
+
[secreto en historial, SQL injection, eval con input, CVE crítico sin parche…
|
|
163
|
+
→ score global CAP a 60/100 con 1 veto, 30/100 con 2+. Formato de
|
|
164
|
+
reglas/gobernanza.md § Veto items]
|
|
165
|
+
|
|
166
|
+
## Hallazgos priorizados
|
|
167
|
+
| # | Severidad (CVSSv3) | Capa | archivo:línea | Hallazgo | Remediación |
|
|
168
|
+
|
|
169
|
+
## Acciones recomendadas (en orden)
|
|
170
|
+
1. [acción — comando SWL que la ejecuta si existe]
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Reportar al usuario el resumen con el score global y las top 3 acciones. Si
|
|
174
|
+
hay hallazgos CRÍTICOS, recordar el flujo de remediación: `/swl:fix` (triage y
|
|
175
|
+
reparación) o `/swl:verificar --solo-seguridad --until-converge` tras corregir.
|
|
176
|
+
|
|
177
|
+
## Reglas de comportamiento
|
|
178
|
+
|
|
179
|
+
- **Este comando NO modifica código ni secretos** — diagnostica y prioriza.
|
|
180
|
+
La remediación pasa por el flujo fix/verificar con el usuario al tanto.
|
|
181
|
+
- Toda cita archivo:línea del reporte sale de `Read`/`Grep` reales de esta
|
|
182
|
+
corrida (`verificar-citas-normativas.md § Familia 2`).
|
|
183
|
+
- Los veto items no se negocian ni se suavizan por presión de entrega
|
|
184
|
+
(`reglas/gobernanza.md`).
|
|
185
|
+
- Con `--rapido`, decir explícitamente qué capas NO corrieron — un reporte
|
|
186
|
+
parcial presentado como completo es degradación silenciosa.
|
|
187
|
+
- Falsos positivos de secretos (fixtures, ejemplos): verificarlos leyendo el
|
|
188
|
+
archivo antes de reportar; si son fixtures legítimos, recomendar renombrarlos
|
|
189
|
+
al patrón reconocible (`placeholder`, `example`, `dummy_`).
|