@saulwade/swl-ses 2.2.0 → 2.2.3

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.
Files changed (81) hide show
  1. package/CLAUDE.md +199 -196
  2. package/README.md +597 -579
  3. package/agentes/arquitecto-swl.md +0 -5
  4. package/agentes/backend-python-swl.md +0 -5
  5. package/agentes/implementador-swl.md +0 -5
  6. package/agentes/nemesis-auditor-swl.md +0 -5
  7. package/agentes/orquestador-swl.md +0 -5
  8. package/agentes/planificador-swl.md +0 -5
  9. package/agentes/revisor-codigo-swl.md +0 -5
  10. package/bin/swl-mcp-server.js +1 -1
  11. package/comandos/swl/adoptar-proyecto.md +253 -258
  12. package/comandos/swl/aprender.md +823 -828
  13. package/comandos/swl/claudemd.md +234 -239
  14. package/comandos/swl/ejecutar-fase.md +0 -5
  15. package/comandos/swl/nuevo-proyecto.md +200 -205
  16. package/comandos/swl/release.md +19 -5
  17. package/comandos/swl/revisar-impacto.md +0 -5
  18. package/habilidades/agent-browser/SKILL.md +0 -5
  19. package/habilidades/angular-moderno/SKILL.md +0 -5
  20. package/habilidades/api-rest-diseno/SKILL.md +0 -5
  21. package/habilidades/aprendizaje-continuo/SKILL.md +0 -5
  22. package/habilidades/auth-patrones/SKILL.md +0 -5
  23. package/habilidades/build-errors-nextjs/SKILL.md +0 -5
  24. package/habilidades/changelog-generator/SKILL.md +174 -179
  25. package/habilidades/checklist-seguridad/SKILL.md +0 -5
  26. package/habilidades/contenedores-docker/SKILL.md +0 -5
  27. package/habilidades/datos-etl/SKILL.md +0 -5
  28. package/habilidades/doc-sync/SKILL.md +0 -5
  29. package/habilidades/extractor-de-aprendizajes/SKILL.md +0 -5
  30. package/habilidades/fastapi-experto/SKILL.md +0 -5
  31. package/habilidades/frontend-avanzado/SKILL.md +0 -5
  32. package/habilidades/iam-secretos/SKILL.md +0 -5
  33. package/habilidades/manejo-errores/SKILL.md +0 -5
  34. package/habilidades/mapear-codebase/SKILL.md +0 -5
  35. package/habilidades/meta-skills-estandar/SKILL.md +0 -5
  36. package/habilidades/monitoring-alertas/SKILL.md +0 -5
  37. package/habilidades/nextjs-experto/SKILL.md +0 -5
  38. package/habilidades/nextjs-testing/SKILL.md +0 -5
  39. package/habilidades/node-experto/SKILL.md +0 -5
  40. package/habilidades/orquestacion-async/SKILL.md +0 -5
  41. package/habilidades/patrones-python/SKILL.md +227 -232
  42. package/habilidades/planear-fase/SKILL.md +336 -341
  43. package/habilidades/postgresql-experto/SKILL.md +0 -5
  44. package/habilidades/prevencion-sobreingenieria/SKILL.md +0 -5
  45. package/habilidades/protocolo-revision-swl/SKILL.md +0 -5
  46. package/habilidades/react-experto/SKILL.md +0 -5
  47. package/habilidades/release-semver/SKILL.md +0 -5
  48. package/habilidades/swl-claudemd/SKILL.md +0 -5
  49. package/habilidades/tdd-workflow/SKILL.md +710 -715
  50. package/habilidades/testing-python/SKILL.md +335 -340
  51. package/habilidades/verificar-trabajo/SKILL.md +0 -5
  52. package/hooks/lib/etapa-perfil-usuario.js +1 -1
  53. package/hooks/lib/evolution-tracker.js +191 -35
  54. package/hooks/resumen-sesion.js +4 -4
  55. package/llms.txt +1 -1
  56. package/manifiestos/canonical-hashes.json +1310 -0
  57. package/manifiestos/modulos.json +3 -0
  58. package/manifiestos/skills-lock.json +70 -70
  59. package/package.json +1 -1
  60. package/plugin.json +1 -1
  61. package/scripts/doctor.js +13 -0
  62. package/scripts/generar-canonical-hashes.js +147 -0
  63. package/scripts/instalador.js +140 -54
  64. package/scripts/lib/audit-evolved.js +76 -0
  65. package/scripts/lib/canonical-hash.js +94 -0
  66. package/scripts/lib/evolved-fuente.js +138 -0
  67. package/scripts/lib/manifiestos.js +1 -1
  68. package/scripts/publicar.js +42 -5
  69. package/scripts/remediar-evolved-instaladas.js +242 -0
  70. package/scripts/validar.js +14 -0
  71. package/scripts/vendor/claude-usage/__pycache__/scanner.cpython-314.pyc +0 -0
  72. package/scripts/verificar-evolucion.js +36 -0
  73. package/scripts/verificar-release.js +33 -0
  74. package/agentes/.evolved.json +0 -9
  75. package/comandos/swl/.evolved.json +0 -23
  76. package/habilidades/auth-patrones/.evolved.json +0 -9
  77. package/habilidades/extractor-de-aprendizajes/.evolved.json +0 -9
  78. package/habilidades/instalar-sistema/.evolved.json +0 -9
  79. package/habilidades/manejo-errores/.evolved.json +0 -9
  80. package/habilidades/node-experto/.evolved.json +0 -9
  81. package/habilidades/release-semver/.evolved.json +0 -9
@@ -1,179 +1,174 @@
1
- ---
2
- name: changelog-generator
3
- description: >
4
- Generador automático de entradas CHANGELOG.md en formato Keep a Changelog
5
- desde commits Conventional Commits. Parser determinista que clasifica feat/
6
- fix/perf/refactor/docs/etc. en categorías user-facing en español, detecta
7
- breaking changes (marca '!' o trailer 'BREAKING CHANGE:') y reporta nivel
8
- de conformidad para decidir fallback manual. Cargar en /swl:release Paso 7
9
- cuando hay commits Conventional, o manualmente para previsualizar el
10
- changelog antes de un release.
11
- version: 1.1.0
12
- evolved: true
13
- evolved-from: "1.0.0"
14
- evolved-at: "2026-06-11"
15
- evolved-by: "fase-10-slice-5"
16
- evolved-note: "v1.1.0: el parser CC tolera el prefijo de trazabilidad [T-NN]/[REQ-NN] de la convención de ejecutar-fase commits con prefijo de tarea cuentan como conformes (Fase 10)."
17
- nivelRiesgo: BAJO
18
- herramientasPermitidas: [Read, Bash]
19
- skillsInvocables: [release-semver]
20
- exclusiones:
21
- - "No invocar para generar release notes con marketing copy o anuncios para usuarios finales este skill produce listado técnico-legible, no narrativa."
22
- - "No invocar si el repo no usa Conventional Commits — el parser detecta <80% conformidad y el caller debe abortar a flujo manual de release-semver."
23
- - "No invocar para reescribir CHANGELOG histórico — solo agrega entrada de la próxima versión al inicio."
24
- ---
25
-
26
- # /habilidades/changelog-generator CHANGELOG automático desde Conventional Commits
27
-
28
- ## Cuándo cargar
29
-
30
- - Durante `/swl:release` Paso 7 (Generar CHANGELOG), cuando el flujo automático
31
- está disponible y los commits del rango siguen Conventional Commits.
32
- - Para previsualizar el changelog candidato antes de bumpear versión:
33
- `node habilidades/changelog-generator/scripts/parse-commits.js --version X`
34
- - Cuando un colaborador pide un resumen legible de cambios entre dos refs
35
- arbitrarias del repo.
36
-
37
- ## Cuándo NO cargar
38
-
39
- - Repo sin Conventional Commits (<80% de conformidad): el parser detecta y
40
- reporta; el caller debe usar `Skill("release-semver")` flujo manual.
41
- - Generación de **release notes** (texto narrativo con contexto de producto):
42
- este skill produce CHANGELOG técnico-legible; las release notes con marketing
43
- son tarea aparte (`documentador-swl` con plantilla específica).
44
- - Reescritura histórica del CHANGELOG (squash de varias versiones, corrección
45
- de entradas antiguas): solo se agrega entrada de la versión nueva al inicio.
46
-
47
- ## Qué hace el skill
48
-
49
- 1. **Lee commits** desde la última tag (o entre dos refs arbitrarias) con
50
- `git log --format=...` usando un separador único para parsear subject + body
51
- sin colisiones.
52
- 2. **Parsea con Conventional Commits 1.0.0**: regex que captura tipo, scope,
53
- marca `!`, descripción. Soporta tipos extendidos del proyecto SWL:
54
- `evolucion` (cambios de skills/agentes), además de `feat/fix/perf/refactor/
55
- docs/style/test/ci/build/chore/revert`. Tolera el prefijo opcional de
56
- trazabilidad `[T-NN]` / `[REQ-NN]` de la convención de `ejecutar-fase`
57
- (no altera la semántica CC el tipo+scope+descripción siguen presentes).
58
- 3. **Detecta breaking changes** por marca `!` después del tipo o trailer
59
- `BREAKING CHANGE:` en el body. Los breaking siempre van al inicio del
60
- release, sin importar el tipo original.
61
- 4. **Transforma descripción técnica → legible**:
62
- - Elimina referencias a issues al final (`(#123)`, `Refs #456`).
63
- - Capitaliza primera letra.
64
- - Elimina punto final (Keep a Changelog usa bullets sin punto).
65
- 5. **Agrupa en categorías** con orden canónico:
66
- 1. Breaking changes
67
- 2. Nuevas funcionalidades (feat)
68
- 3. Correcciones (fix)
69
- 4. Mejoras de rendimiento (perf)
70
- 5. Cambios internos (refactor)
71
- 6. Reversiones (revert)
72
- 7. Evoluciones de skills/agentes (evolucion — SWL-specific)
73
- 8. Mantenimiento (docs/style/test/ci/build/chore — colapsadas)
74
- 9. Otros (commits sin prefijo CC válido)
75
- 6. **Reporta conformidad**: ratio commits conformes / total. Si <80%, el
76
- caller debe decidir si abortar o seguir manualmente.
77
-
78
- ## Helper programático
79
-
80
- ```js
81
- const {
82
- parsearCommits,
83
- leerCommitsGit,
84
- generarChangelog,
85
- } = require('./habilidades/changelog-generator/scripts/parse-commits');
86
-
87
- // 1. Leer commits desde la última tag hasta HEAD
88
- const commits = leerCommitsGit({ to: 'HEAD' });
89
-
90
- // 2. Parsear y clasificar
91
- const { categorias, conformidad, totalCommits, conformes } = parsearCommits(commits);
92
-
93
- // 3. Si conformidad < 0.8, abortar o avisar al usuario
94
- if (conformidad < 0.8) {
95
- console.warn(`Conformidad CC: ${conformes}/${totalCommits}. Revisar "Otros".`);
96
- }
97
-
98
- // 4. Generar markdown listo para insertar en CHANGELOG.md
99
- const md = generarChangelog(categorias, {
100
- version: '1.6.5',
101
- fecha: '2026-05-22', // opcional, default = hoy
102
- incluirHash: true, // muestra hash corto al inicio de cada bullet
103
- });
104
- ```
105
-
106
- ## Uso CLI
107
-
108
- Previsualizar changelog candidato sin escribir nada:
109
-
110
- ```bash
111
- node habilidades/changelog-generator/scripts/parse-commits.js \
112
- --version 1.6.5 \
113
- --format markdown
114
- ```
115
-
116
- Filtrar por rango específico:
117
-
118
- ```bash
119
- node habilidades/changelog-generator/scripts/parse-commits.js \
120
- --from v1.6.4 \
121
- --to HEAD \
122
- --version 1.6.5
123
- ```
124
-
125
- Salida JSON estructurado para post-procesamiento:
126
-
127
- ```bash
128
- node habilidades/changelog-generator/scripts/parse-commits.js \
129
- --from v1.6.4 \
130
- --format json > /tmp/changelog-candidato.json
131
- ```
132
-
133
- ## Reglas de uso desde /swl:release
134
-
135
- 1. Llamar a `leerCommitsGit` con la última tag detectada en el Paso 1 del
136
- release.
137
- 2. Verificar `conformidad >= 0.8`. Si menor, presentar al usuario los commits
138
- bajo "Otros" y pedir decisión: (a) continuar con el changelog, (b) abortar
139
- y reescribir commits, (c) editar manualmente la categoría "Otros".
140
- 3. Si `--dry-run` está activo en `/swl:release`, mostrar el output de
141
- `generarChangelog` sin escribir a disco.
142
- 4. Si conformidad OK: leer CHANGELOG.md actual, insertar el bloque generado
143
- al inicio después del header `# Changelog`, escribir atómicamente.
144
- 5. NO hacer commit aquí eso lo hace el Paso 8 de `/swl:release`.
145
-
146
- ## Gotchas observables
147
-
148
- - **Conventional Commits sin scope son válidos**: `fix: corregir X` parsea
149
- igual que `fix(modulo): corregir X`. El parser no exige scope.
150
- - **El subject debe ir en una sola línea**: si un commit usa newline en el
151
- subject, el parser lo trata como completo pero `git log %s` ya lo trunca.
152
- - **Tipos no estándar van a "Otros"**: si un equipo usa `mejora:`, `cambio:`,
153
- el parser los marca como no conformes. El usuario debe ajustar la lista
154
- `CATEGORIAS` en `parse-commits.js` o adoptar tipos estándar.
155
- - **El skill NO escribe a disco directamente**: solo retorna markdown. El
156
- caller (`/swl:release` Paso 7) es responsable de leer el CHANGELOG actual,
157
- insertar al inicio y escribir atómicamente.
158
- - **Commits revert vienen del propio git**: `git revert` genera mensajes
159
- `Revert "Subject original"` que el parser categoriza correctamente bajo
160
- Reversiones (regex matchea `revert:` sin que el usuario lo escriba si usa
161
- `git revert -e` para editar el mensaje al formato CC).
162
- - **El hash corto se trunca a 7 chars**: alineado con el formato `git log
163
- --oneline` estándar.
164
-
165
- ## Origen
166
-
167
- Adaptado del skill `changelog-generator` de
168
- `temp/awesome-codex-skills-master/changelog-generator/` (ComposioHQ, MIT) con:
169
-
170
- - Frontmatter al estándar SWL (es-MX, `nivelRiesgo: BAJO`, `exclusiones`).
171
- - Parser determinista en Node.js (`parse-commits.js`) el origen es solo
172
- documentación; este skill agrega la implementación ejecutable.
173
- - Tipo `evolucion:` específico de SWL agregado al parser.
174
- - Soporte para breaking changes `!` y trailer `BREAKING CHANGE:` (origen
175
- solo menciona el segundo).
176
- - Reporte de conformidad <80% como gate explícita para fallback manual.
177
- - Integración con `/swl:release` Paso 7 documentada en `comandos/swl/release.md`.
178
-
179
- Documentado en ADR-0029 (integración parcial awesome-codex-skills, Opción B).
1
+ ---
2
+ name: changelog-generator
3
+ description: >
4
+ Generador automático de entradas CHANGELOG.md en formato Keep a Changelog
5
+ desde commits Conventional Commits. Parser determinista que clasifica feat/
6
+ fix/perf/refactor/docs/etc. en categorías user-facing en español, detecta
7
+ breaking changes (marca '!' o trailer 'BREAKING CHANGE:') y reporta nivel
8
+ de conformidad para decidir fallback manual. Cargar en /swl:release Paso 7
9
+ cuando hay commits Conventional, o manualmente para previsualizar el
10
+ changelog antes de un release.
11
+ version: 1.1.0
12
+ nivelRiesgo: BAJO
13
+ herramientasPermitidas: [Read, Bash]
14
+ skillsInvocables: [release-semver]
15
+ exclusiones:
16
+ - "No invocar para generar release notes con marketing copy o anuncios para usuarios finaleseste skill produce listado técnico-legible, no narrativa."
17
+ - "No invocar si el repo no usa Conventional Commits — el parser detecta <80% conformidad y el caller debe abortar a flujo manual de release-semver."
18
+ - "No invocar para reescribir CHANGELOG histórico — solo agrega entrada de la próxima versión al inicio."
19
+ ---
20
+
21
+ # /habilidades/changelog-generatorCHANGELOG automático desde Conventional Commits
22
+
23
+ ## Cuándo cargar
24
+
25
+ - Durante `/swl:release` Paso 7 (Generar CHANGELOG), cuando el flujo automático
26
+ está disponible y los commits del rango siguen Conventional Commits.
27
+ - Para previsualizar el changelog candidato antes de bumpear versión:
28
+ `node habilidades/changelog-generator/scripts/parse-commits.js --version X`
29
+ - Cuando un colaborador pide un resumen legible de cambios entre dos refs
30
+ arbitrarias del repo.
31
+
32
+ ## Cuándo NO cargar
33
+
34
+ - Repo sin Conventional Commits (<80% de conformidad): el parser detecta y
35
+ reporta; el caller debe usar `Skill("release-semver")` flujo manual.
36
+ - Generación de **release notes** (texto narrativo con contexto de producto):
37
+ este skill produce CHANGELOG técnico-legible; las release notes con marketing
38
+ son tarea aparte (`documentador-swl` con plantilla específica).
39
+ - Reescritura histórica del CHANGELOG (squash de varias versiones, corrección
40
+ de entradas antiguas): solo se agrega entrada de la versión nueva al inicio.
41
+
42
+ ## Qué hace el skill
43
+
44
+ 1. **Lee commits** desde la última tag (o entre dos refs arbitrarias) con
45
+ `git log --format=...` usando un separador único para parsear subject + body
46
+ sin colisiones.
47
+ 2. **Parsea con Conventional Commits 1.0.0**: regex que captura tipo, scope,
48
+ marca `!`, descripción. Soporta tipos extendidos del proyecto SWL:
49
+ `evolucion` (cambios de skills/agentes), además de `feat/fix/perf/refactor/
50
+ docs/style/test/ci/build/chore/revert`. Tolera el prefijo opcional de
51
+ trazabilidad `[T-NN]` / `[REQ-NN]` de la convención de `ejecutar-fase`
52
+ (no altera la semántica CC el tipo+scope+descripción siguen presentes).
53
+ 3. **Detecta breaking changes** por marca `!` después del tipo o trailer
54
+ `BREAKING CHANGE:` en el body. Los breaking siempre van al inicio del
55
+ release, sin importar el tipo original.
56
+ 4. **Transforma descripción técnica legible**:
57
+ - Elimina referencias a issues al final (`(#123)`, `Refs #456`).
58
+ - Capitaliza primera letra.
59
+ - Elimina punto final (Keep a Changelog usa bullets sin punto).
60
+ 5. **Agrupa en categorías** con orden canónico:
61
+ 1. Breaking changes
62
+ 2. Nuevas funcionalidades (feat)
63
+ 3. Correcciones (fix)
64
+ 4. Mejoras de rendimiento (perf)
65
+ 5. Cambios internos (refactor)
66
+ 6. Reversiones (revert)
67
+ 7. Evoluciones de skills/agentes (evolucion — SWL-specific)
68
+ 8. Mantenimiento (docs/style/test/ci/build/chore — colapsadas)
69
+ 9. Otros (commits sin prefijo CC válido)
70
+ 6. **Reporta conformidad**: ratio commits conformes / total. Si <80%, el
71
+ caller debe decidir si abortar o seguir manualmente.
72
+
73
+ ## Helper programático
74
+
75
+ ```js
76
+ const {
77
+ parsearCommits,
78
+ leerCommitsGit,
79
+ generarChangelog,
80
+ } = require('./habilidades/changelog-generator/scripts/parse-commits');
81
+
82
+ // 1. Leer commits desde la última tag hasta HEAD
83
+ const commits = leerCommitsGit({ to: 'HEAD' });
84
+
85
+ // 2. Parsear y clasificar
86
+ const { categorias, conformidad, totalCommits, conformes } = parsearCommits(commits);
87
+
88
+ // 3. Si conformidad < 0.8, abortar o avisar al usuario
89
+ if (conformidad < 0.8) {
90
+ console.warn(`Conformidad CC: ${conformes}/${totalCommits}. Revisar "Otros".`);
91
+ }
92
+
93
+ // 4. Generar markdown listo para insertar en CHANGELOG.md
94
+ const md = generarChangelog(categorias, {
95
+ version: '1.6.5',
96
+ fecha: '2026-05-22', // opcional, default = hoy
97
+ incluirHash: true, // muestra hash corto al inicio de cada bullet
98
+ });
99
+ ```
100
+
101
+ ## Uso CLI
102
+
103
+ Previsualizar changelog candidato sin escribir nada:
104
+
105
+ ```bash
106
+ node habilidades/changelog-generator/scripts/parse-commits.js \
107
+ --version 1.6.5 \
108
+ --format markdown
109
+ ```
110
+
111
+ Filtrar por rango específico:
112
+
113
+ ```bash
114
+ node habilidades/changelog-generator/scripts/parse-commits.js \
115
+ --from v1.6.4 \
116
+ --to HEAD \
117
+ --version 1.6.5
118
+ ```
119
+
120
+ Salida JSON estructurado para post-procesamiento:
121
+
122
+ ```bash
123
+ node habilidades/changelog-generator/scripts/parse-commits.js \
124
+ --from v1.6.4 \
125
+ --format json > /tmp/changelog-candidato.json
126
+ ```
127
+
128
+ ## Reglas de uso desde /swl:release
129
+
130
+ 1. Llamar a `leerCommitsGit` con la última tag detectada en el Paso 1 del
131
+ release.
132
+ 2. Verificar `conformidad >= 0.8`. Si menor, presentar al usuario los commits
133
+ bajo "Otros" y pedir decisión: (a) continuar con el changelog, (b) abortar
134
+ y reescribir commits, (c) editar manualmente la categoría "Otros".
135
+ 3. Si `--dry-run` está activo en `/swl:release`, mostrar el output de
136
+ `generarChangelog` sin escribir a disco.
137
+ 4. Si conformidad OK: leer CHANGELOG.md actual, insertar el bloque generado
138
+ al inicio después del header `# Changelog`, escribir atómicamente.
139
+ 5. NO hacer commit aquí eso lo hace el Paso 8 de `/swl:release`.
140
+
141
+ ## Gotchas observables
142
+
143
+ - **Conventional Commits sin scope son válidos**: `fix: corregir X` parsea
144
+ igual que `fix(modulo): corregir X`. El parser no exige scope.
145
+ - **El subject debe ir en una sola línea**: si un commit usa newline en el
146
+ subject, el parser lo trata como completo pero `git log %s` ya lo trunca.
147
+ - **Tipos no estándar van a "Otros"**: si un equipo usa `mejora:`, `cambio:`,
148
+ el parser los marca como no conformes. El usuario debe ajustar la lista
149
+ `CATEGORIAS` en `parse-commits.js` o adoptar tipos estándar.
150
+ - **El skill NO escribe a disco directamente**: solo retorna markdown. El
151
+ caller (`/swl:release` Paso 7) es responsable de leer el CHANGELOG actual,
152
+ insertar al inicio y escribir atómicamente.
153
+ - **Commits revert vienen del propio git**: `git revert` genera mensajes
154
+ `Revert "Subject original"` que el parser categoriza correctamente bajo
155
+ Reversiones (regex matchea `revert:` sin que el usuario lo escriba si usa
156
+ `git revert -e` para editar el mensaje al formato CC).
157
+ - **El hash corto se trunca a 7 chars**: alineado con el formato `git log
158
+ --oneline` estándar.
159
+
160
+ ## Origen
161
+
162
+ Adaptado del skill `changelog-generator` de
163
+ `temp/awesome-codex-skills-master/changelog-generator/` (ComposioHQ, MIT) con:
164
+
165
+ - Frontmatter al estándar SWL (es-MX, `nivelRiesgo: BAJO`, `exclusiones`).
166
+ - Parser determinista en Node.js (`parse-commits.js`) — el origen es solo
167
+ documentación; este skill agrega la implementación ejecutable.
168
+ - Tipo `evolucion:` específico de SWL agregado al parser.
169
+ - Soporte para breaking changes `!` y trailer `BREAKING CHANGE:` (origen
170
+ solo menciona el segundo).
171
+ - Reporte de conformidad <80% como gate explícita para fallback manual.
172
+ - Integración con `/swl:release` Paso 7 documentada en `comandos/swl/release.md`.
173
+
174
+ Documentado en ADR-0029 (integración parcial awesome-codex-skills, Opción B).
@@ -2,11 +2,6 @@
2
2
  name: checklist-seguridad
3
3
  description: Checklist de seguridad basado en OWASP Top 10 + seguridad de agentes autónomos (A11). Cubre inyección, autenticación, exposición de datos, control de acceso, configuración insegura, XSS, deserialización, componentes vulnerables, logging y agencia excesiva de IA. Produce reporte con hallazgos y remediaciones.
4
4
  version: "1.2.0"
5
- evolved: true
6
- evolved-from: "1.1.0"
7
- evolved-at: "2026-05-04"
8
- evolved-by: "aprender"
9
- evolved-note: "Corregir contradicción interna en ejemplo BIEN de IDOR pre-side-effect: el detail exponía UUID interno violando el gotcha 'vocabulario interno' de fastapi-experto v1.1.1. Detail al cliente ahora es genérico (Recurso no encontrado); UUID y tenant solo en logger.info para auditoría."
10
5
  herramientasPermitidas: [Read, Grep]
11
6
  evolvable: true # default para skill estandar
12
7
  nist_csf: [PR.PS-01, PR.DS-02, PR.DS-10, DE.CM-09, RS.MI-01]
@@ -2,11 +2,6 @@
2
2
  name: contenedores-docker
3
3
  description: Docker y containerización. Dockerfiles optimizados con multi-stage builds, docker-compose, volúmenes, networking, health checks, security scanning, build caching, distroless images. Anti-patrones comunes.
4
4
  version: "1.0.1"
5
- evolved: true
6
- evolved-from: "1.0.0"
7
- evolved-at: "2026-05-05"
8
- evolved-by: "aprender"
9
- evolved-note: "Gotcha de la sesión SIGM 2026-05-05 (L6): scripts en /docker-entrypoint-initdb.d con dependencias externas (mc, aws, etc.) abortan initdb"
10
5
  herramientasPermitidas: [Read]
11
6
  exclusiones:
12
7
  - "No cargar para orquestación Kubernetes (Deployments, Services, Helm, HPA) — para Kubernetes cargar `kubernetes-orquestacion`."
@@ -5,11 +5,6 @@ description: >
5
5
  CDC (change data capture), validación de datos, linaje de datos, procesamiento batch vs
6
6
  streaming, patrones dbt, patrones de data lake.
7
7
  version: "1.0.1"
8
- evolved: true
9
- evolved-from: "1.0.0"
10
- evolved-at: "2026-05-05"
11
- evolved-by: "aprender"
12
- evolved-note: "Gotcha de la sesión SIGM 2026-05-05 (L9): seeds con check constraint fecha_vencimiento >= fecha_emision violan al usar emision única para todas las tuplas"
13
8
  herramientasPermitidas: [Read, Grep]
14
9
  evolvable: true # default para skill estandar
15
10
  exclusiones:
@@ -2,11 +2,6 @@
2
2
  name: doc-sync
3
3
  description: Sincronización de documentación con el estado actual del código. Detecta documentos desactualizados (README, ADRs, docstrings, comentarios de API), genera un changelog estructurado de los cambios relevantes, y mantiene los Architecture Decision Records (ADRs) actualizados con las decisiones tomadas durante el desarrollo.
4
4
  version: "1.3.0"
5
- evolved: true
6
- evolved-from: "1.2.0"
7
- evolved-at: "2026-05-16"
8
- evolved-by: "aprender"
9
- evolved-note: "v1.3.0 (MINOR): sección nueva 'Protocolo proactivo: qué hacer al modificar componentes SWL' con sub-secciones por tipo (agente, skill, comando, hook, regla, variable de entorno, ADR, dependencia opt-in). Cierra el gap entre detección post-hoc (verificadores) y guía prescriptiva proactiva. Origen: feedback usuario 2026-05-16 — la información del flujo operativo estaba dispersa en 5 archivos (registro-componentes-nuevos.md + CLAUDE.md § Mapa + verificadores + reglas) sin un punto único invocable."
10
5
  herramientasPermitidas: [Read, Bash, Glob, Grep]
11
6
  exclusiones:
12
7
  - "No cargar para crear documentación nueva desde cero — este skill sincroniza documentación existente con el código actual; para crear documentación de feature nueva usar `documentador-swl` o escribir el README/ADR directamente."
@@ -9,11 +9,6 @@ exclusiones:
9
9
  - "No cargar para crear un skill nuevo desde cero de forma interactiva; usar `/swl:crear-skill` que guía el proceso con validaciones."
10
10
  - "No cargar si el aprendizaje no tiene causa raíz identificada — documentar síntoma sin causa produce reglas que no previenen el error real."
11
11
  evolvable: true # default para skill estandar
12
- evolved: true
13
- evolved-from: "1.0.5"
14
- evolved-at: "2026-06-11"
15
- evolved-by: "aprender"
16
- evolved-note: "Modo D del gotcha sub-agentes (CONFIRMADO x5 → x6): agentes de documentación (claude-code-guide) emiten veredictos NO-SOPORTADO por inferencia del contexto local sin consultar la doc oficial; exigir cita a doc consultada en el turno. Precedente 2026-05-15 (runtimes Cursor/Codex)"
17
12
  ---
18
13
  # Extractor de Aprendizajes
19
14
 
@@ -6,11 +6,6 @@ description: >
6
6
  en async). Cargar cuando se implementen endpoints FastAPI, schemas Pydantic v2,
7
7
  queries SQLAlchemy async, WebSockets, SSE o tests de integración con httpx.
8
8
  version: "1.3.1"
9
- evolved: true
10
- evolved-from: "1.3.0"
11
- evolved-at: "2026-06-04"
12
- evolved-by: "evolucionar"
13
- evolved-note: "3 patrones nuevos OIC v1.5 2026-06-04: handler logging defensivo con sesión SQLAlchemy desacoplada (PE-001); tests pytest cuelgan si handler abre engine con pool_pre_ping al startup sin BD + receta conftest (PE-002); tests de endpoint sin BD con dependency_overrides[get_db]=lambda:None + monkeypatch del service (PE-008)"
14
9
  herramientasPermitidas: [Read]
15
10
  exclusiones:
16
11
  - "No cargar para proyectos Django o Flask — los patrones de ORM sync, Class-Based Views y middleware difieren fundamentalmente; cargar `django-experto` o el skill del framework correspondiente."
@@ -5,11 +5,6 @@ description: >
5
5
  Web Components, Shadow DOM, CSS Container Queries, CSS Layers, View Transitions API.
6
6
  Patrones de optimización de rendimiento.
7
7
  version: "1.1.0"
8
- evolved: true
9
- evolved-from: "1.0.0"
10
- evolved-at: "2026-04-24"
11
- evolved-by: "aprender"
12
- evolved-note: "Sección nueva: CSP 'unsafe-inline' como transitorio aceptable con plan de migración a nonce"
13
8
  herramientasPermitidas: [Read, Grep]
14
9
  evolvable: true # default para skill estandar
15
10
  exclusiones:
@@ -5,11 +5,6 @@ description: >
5
5
  AWS Secrets Manager, Azure Key Vault, rotación de secretos, principio de mínimo
6
6
  privilegio, cuentas de servicio, gestión de API keys, zero trust.
7
7
  version: "1.1.0"
8
- evolved: true
9
- evolved-from: "1.0.0"
10
- evolved-at: "2026-04-24"
11
- evolved-by: "aprender"
12
- evolved-note: "Sección nueva: logs con PII → gitignore + hard-block env flag en producción (defense in depth)"
13
8
  herramientasPermitidas: [Read, Grep]
14
9
  evolvable: true # default para skill estandar
15
10
  nist_csf: [PR.AA-01, PR.AA-02, PR.AA-05, PR.DS-02]
@@ -5,11 +5,6 @@ description: >
5
5
  excepciones personalizadas, códigos de error, logging estructurado, error boundaries,
6
6
  degradación elegante, patrones de reintento y circuit breakers.
7
7
  version: "1.2.0"
8
- evolved: true
9
- evolved-from: "1.1.1"
10
- evolved-at: "2026-05-04"
11
- evolved-by: "aprender"
12
- evolved-note: "+sección anti-patrón except Exception con isinstance interno — usar excepts planos por tipo (sync desde global tras sesión SIGM Fase 5b). Preserva gotcha try/catch require de v1.1.1."
13
8
  herramientasPermitidas: [Read]
14
9
  exclusiones:
15
10
  - "No cargar para monitoreo y alertas en producción (Prometheus, Grafana, PagerDuty) — para observabilidad cargar `monitoring-alertas` o `sre-patrones`."
@@ -2,11 +2,6 @@
2
2
  name: mapear-codebase
3
3
  description: Análisis profundo de un codebase existente. Genera árbol de directorios anotado, identifica puntos de entrada, tecnologías usadas, estándares del proyecto, deuda técnica visible y zonas de riesgo. Produce un documento estructurado que sirve como mapa de navegación para el equipo.
4
4
  version: "1.1.0"
5
- evolved: true
6
- evolved-from: "1.0.0"
7
- evolved-at: "2026-04-24"
8
- evolved-by: "aprender"
9
- evolved-note: "Sección nueva: validar parser jerárquico contra árbol real antes de congelar dataclass"
10
5
  herramientasPermitidas: [Read, Write, Edit, Bash, Glob, Grep]
11
6
  exclusiones:
12
7
  - "No cargar cuando el codebase ya tiene un `CODEBASE-MAP.md` generado en los últimos 30 días y no ha habido cambios arquitectónicos — ejecutar este skill produce un mapa redundante con costo de análisis innecesario."
@@ -10,11 +10,6 @@ description: >
10
10
  esté escribiendo o auditando un SKILL.md y se necesiten patrones avanzados
11
11
  que no están en la regla core.
12
12
  version: "1.1.1"
13
- evolved: true
14
- evolved-from: "1.1.0"
15
- evolved-at: "2026-05-16"
16
- evolved-by: "aprender"
17
- evolved-note: "v1.1.0 MINOR: 3 secciones nuevas (contratos controller↔worker + return explícito + evaluator-optimizer). v1.1.1 PATCH: corrige inconsistencia interna — ejemplos de la sección 'Pseudocódigo con return' usaban iter=0/while iter<3, contradiciendo el contrato 1-based de la sección anterior. Mismo skill que enseña off-by-one no debe cometerlo en sus ejemplos."
18
13
  herramientasPermitidas: [Read, Write, Edit]
19
14
  exclusiones:
20
15
  - "No cargar si solo se necesita el frontmatter obligatorio, el límite de líneas o la estructura de directorio — eso está en la regla core `reglas/skills-estandar.md` que se carga siempre."
@@ -5,11 +5,6 @@ description: >
5
5
  métricas RED/USE, SLIs/SLOs/SLAs, reglas de alerting, runbooks, dashboards,
6
6
  distributed tracing. Anti-patrones de alerting.
7
7
  version: "1.0.1"
8
- evolved: true
9
- evolved-from: "5.0.3"
10
- evolved-at: "2026-04-23"
11
- evolved-by: "aprender"
12
- evolved-note: "Patrón nuevo: logging.Filter para silenciar 404 esperados en endpoints semánticos"
13
8
  herramientasPermitidas: [Read, Grep]
14
9
  evolvable: true # default para skill estandar
15
10
  exclusiones:
@@ -5,11 +5,6 @@ description: >
5
5
  streaming con Suspense, ISR, route handlers y middleware. Cargar cuando se
6
6
  implementen páginas Next.js, data fetching, mutaciones o rutas de API.
7
7
  version: "1.1.1"
8
- evolved: true
9
- evolved-from: "1.1.0"
10
- evolved-at: "2026-05-11"
11
- evolved-by: "aprender"
12
- evolved-note: "L-108 SIGM Opción C: cache .next/ confirmado x2 (Opción B + Opción C) — patrón consolidado para refactors de tipos masivos. Sin cambios en otros gotchas."
13
8
  herramientasPermitidas: [Read]
14
9
  exclusiones:
15
10
  - "No cargar para proyectos Next.js con Pages Router (pages/index.tsx) — el modelo de getServerSideProps y getStaticProps es diferente al App Router; este skill solo cubre App Router."
@@ -5,11 +5,6 @@ description: >
5
5
  Cubre Server Components, Server Actions, page objects E2E y mocking de API.
6
6
  Cargar cuando se escriban tests de componentes, integración o E2E en Next.js.
7
7
  version: "1.1.0"
8
- evolved: true
9
- evolved-from: "1.0.1"
10
- evolved-at: "2026-05-12"
11
- evolved-by: "aprender"
12
- evolved-note: "Backport L-139 SIGM: tests con vi.stubGlobal('fetch') no validan contrato real backend↔frontend; añadir test de contrato con codegen api-types.ts; previo L-106 getByText vs getAllByText"
13
8
  herramientasPermitidas: [Read]
14
9
  exclusiones:
15
10
  - "No cargar para tests React puros fuera del contexto de Next.js (Vite, CRA, Remix) — los mocks del router de Next.js y los Server Components son específicos del framework."
@@ -2,11 +2,6 @@
2
2
  name: node-experto
3
3
  description: Node.js y TypeScript backend moderno. Cubre patterns de Express/Fastify/NestJS, error handling middleware, streams y buffers, worker threads y clustering, Prisma/Drizzle ORM, validación con Zod, graceful shutdown y anti-patrones críticos como callback hell y event loop blocking.
4
4
  version: "1.1.0"
5
- evolved: true
6
- evolved-from: "1.0.2"
7
- evolved-at: "2026-05-16"
8
- evolved-by: "aprender"
9
- evolved-note: "v1.1.0 (MINOR): sección completa nueva 'Patrones de readline + prompts asíncronos' — Promise+close obligatorio, pausa de spinners durante prompts, listener leak prevention. Origen: H1 sesión 2026-05-16 (race condition spinner/prompt en swl-ses update + premature close detectado por Cursor IDE + /swl:nemesis --remediar iter-2 con 2 fixes adicionales). v1.0.2: gotchas `undefined<N` (NaN comparison), first-wins vs deep merge en config (PR #27 #30 v1.5.2), `assert.notMatch` no existe. v1.0.1: gotcha req.destroy() + CRLF + TOML literal."
10
5
  herramientasPermitidas: [Read, Write, Glob]
11
6
  exclusiones:
12
7
  - "No cargar para aplicaciones Next.js con App Router — Next.js tiene patrones de Server Components, SSR y caché que difieren del backend Node puro; cargar `nextjs-experto`."
@@ -6,11 +6,6 @@ description: >
6
6
  Basado en Deep Agents v0.5 (LangChain). Cargar cuando orquestador-swl necesite
7
7
  ejecutar implementaciones en paralelo o gestionar agentes de larga duración.
8
8
  version: "1.1.0"
9
- evolved: true
10
- evolved-from: "1.0.0"
11
- evolved-at: "2026-04-24"
12
- evolved-by: "aprender"
13
- evolved-note: "Sección nueva: matriz agente × archivo con intersección vacía antes de lanzar paralelos"
14
9
  herramientasPermitidas: [Read]
15
10
  user-invocable: false
16
11
  exclusiones: