@saulwade/swl-ses 2.4.2 → 2.5.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.
Files changed (198) hide show
  1. package/CLAUDE.md +194 -241
  2. package/README.md +600 -597
  3. package/agentes/_intent-spec.md +73 -73
  4. package/agentes/_propose-step.md +90 -90
  5. package/agentes/abogado-diablo-swl.md +145 -0
  6. package/agentes/accesibilidad-wcag-swl.md +690 -690
  7. package/agentes/arquitecto-swl.md +267 -267
  8. package/agentes/auto-evolucion-swl.md +908 -908
  9. package/agentes/backend-api-swl.md +1 -1
  10. package/agentes/backend-csharp-swl.md +420 -420
  11. package/agentes/backend-go-swl.md +390 -390
  12. package/agentes/backend-java-swl.md +281 -281
  13. package/agentes/backend-node-swl.md +1 -1
  14. package/agentes/backend-python-swl.md +1 -1
  15. package/agentes/backend-rust-swl.md +364 -364
  16. package/agentes/backend-workers-swl.md +482 -482
  17. package/agentes/cloud-infra-swl.md +509 -509
  18. package/agentes/consolidador-swl.md +541 -541
  19. package/agentes/datos-swl.md +1 -1
  20. package/agentes/depurador-swl.md +352 -352
  21. package/agentes/devops-ci-swl.md +400 -400
  22. package/agentes/disenador-ui-swl.md +569 -569
  23. package/agentes/documentador-swl.md +345 -345
  24. package/agentes/frontend-angular-swl.md +621 -621
  25. package/agentes/frontend-css-swl.md +716 -716
  26. package/agentes/frontend-react-swl.md +692 -692
  27. package/agentes/frontend-swl.md +496 -496
  28. package/agentes/frontend-tailwind-swl.md +826 -826
  29. package/agentes/gh-fix-ci-swl.md +6 -1
  30. package/agentes/implementador-swl.md +1 -1
  31. package/agentes/investigador-swl.md +432 -432
  32. package/agentes/investigador-ux-swl.md +505 -505
  33. package/agentes/llm-apps-swl.md +1 -1
  34. package/agentes/migrador-swl.md +442 -442
  35. package/agentes/mobile-android-swl.md +511 -511
  36. package/agentes/mobile-cross-swl.md +541 -541
  37. package/agentes/mobile-ios-swl.md +502 -502
  38. package/agentes/mobile-testing-swl.md +302 -302
  39. package/agentes/nemesis-auditor-swl.md +285 -285
  40. package/agentes/notificador-swl.md +1 -1
  41. package/agentes/observabilidad-swl.md +438 -438
  42. package/agentes/pagos-swl.md +310 -310
  43. package/agentes/perfilador-usuario-swl.md +321 -321
  44. package/agentes/planificador-swl.md +399 -399
  45. package/agentes/producto-prd-swl.md +589 -589
  46. package/agentes/red-team-swl.md +218 -218
  47. package/agentes/release-manager-swl.md +590 -590
  48. package/agentes/rendimiento-swl.md +713 -713
  49. package/agentes/resolutor-build-swl.md +10 -1
  50. package/agentes/revisor-angular-swl.md +278 -278
  51. package/agentes/revisor-codigo-swl.md +1 -1
  52. package/agentes/revisor-csharp-swl.md +264 -264
  53. package/agentes/revisor-go-swl.md +259 -259
  54. package/agentes/revisor-java-swl.md +257 -257
  55. package/agentes/revisor-kotlin-swl.md +273 -273
  56. package/agentes/revisor-nextjs-swl.md +281 -281
  57. package/agentes/revisor-php-swl.md +271 -271
  58. package/agentes/revisor-react-swl.md +278 -278
  59. package/agentes/revisor-rust-swl.md +346 -346
  60. package/agentes/revisor-seguridad-swl.md +399 -399
  61. package/agentes/revisor-swift-swl.md +268 -268
  62. package/agentes/revisor-typescript-swl.md +346 -346
  63. package/agentes/sre-swl.md +1 -1
  64. package/agentes/tdd-qa-swl.md +393 -393
  65. package/bin/lib/bot-comandos.js +1 -1
  66. package/bin/swl-ses.js +6 -0
  67. package/comandos/swl/adoptar-proyecto.md +14 -2
  68. package/comandos/swl/configurar-ci.md +8 -1
  69. package/comandos/swl/deuda-codigo.md +97 -97
  70. package/comandos/swl/discutir-fase.md +22 -118
  71. package/comandos/swl/fix.md +118 -0
  72. package/comandos/swl/nuevo-proyecto.md +54 -3
  73. package/comandos/swl/predecir.md +32 -2
  74. package/comandos/swl/seguridad.md +189 -0
  75. package/comandos/swl/status.md +5 -3
  76. package/habilidades/aprendizaje-continuo/SKILL.md +3 -1
  77. package/habilidades/discutir-fase/SKILL.md +84 -81
  78. package/habilidades/discutir-fase/recursos/plantilla-contexto.md +136 -0
  79. package/habilidades/doc-sync/SKILL.md +3 -1
  80. package/habilidades/doubt-driven-review/SKILL.md +15 -1
  81. package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
  82. package/habilidades/estructura-proyecto-claude/SKILL.md +11 -2
  83. package/habilidades/harness-claude-code/SKILL.md +3 -1
  84. package/habilidades/instalar-sistema/SKILL.md +3 -1
  85. package/habilidades/meta-reglas-extendido/SKILL.md +92 -0
  86. package/habilidades/meta-reglas-extendido/recursos/analisis-previo-tareas-grandes.md +186 -0
  87. package/habilidades/meta-reglas-extendido/recursos/analizar-directorios-antes-de-escribir.md +235 -0
  88. package/habilidades/meta-reglas-extendido/recursos/api-diseno.md +413 -0
  89. package/habilidades/meta-reglas-extendido/recursos/arquitectura.md +491 -0
  90. package/habilidades/meta-reglas-extendido/recursos/arreglar-al-detectar.md +264 -0
  91. package/habilidades/meta-reglas-extendido/recursos/debatir-antes-de-aceptar.md +152 -0
  92. package/habilidades/meta-reglas-extendido/recursos/git-workflow.md +259 -0
  93. package/habilidades/meta-reglas-extendido/recursos/gobernanza.md +291 -0
  94. package/habilidades/meta-reglas-extendido/recursos/memoria-consolidada.md +263 -0
  95. package/habilidades/meta-reglas-extendido/recursos/seguridad-agentes.md +443 -0
  96. package/habilidades/meta-reglas-extendido/recursos/sesiones-paralelas.md +190 -0
  97. package/habilidades/meta-reglas-extendido/recursos/sin-duplicacion-reglas-globales.md +179 -0
  98. package/habilidades/meta-reglas-extendido/recursos/skills-estandar.md +394 -0
  99. package/habilidades/meta-reglas-extendido/recursos/usar-code-review-graph.md +156 -0
  100. package/habilidades/meta-reglas-extendido/recursos/usar-context7.md +236 -0
  101. package/habilidades/meta-reglas-extendido/recursos/usar-sistema-swl.md +253 -0
  102. package/habilidades/meta-reglas-extendido/recursos/verificar-citas-normativas.md +527 -0
  103. package/habilidades/meta-skills-estandar/SKILL.md +3 -1
  104. package/habilidades/nuevo-proyecto/SKILL.md +20 -3
  105. package/habilidades/php-experto/SKILL.md +10 -3
  106. package/habilidades/{filament-admin/SKILL.md → php-experto/recursos/filament-admin.md} +23 -39
  107. package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -166
  108. package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -85
  109. package/habilidades/proceso-debate-adversarial/recursos/personas.md +5 -4
  110. package/habilidades/proceso-ingenieria-requerimientos/SKILL.md +147 -0
  111. package/hooks/check-update.js +19 -10
  112. package/hooks/contexto-subagente.js +68 -68
  113. package/hooks/degradacion-instintos.js +1 -1
  114. package/hooks/extraccion-aprendizajes.js +2 -2
  115. package/hooks/lib/briefing.js +3 -3
  116. package/hooks/lib/nudge-tracker.js +1 -1
  117. package/hooks/lib/otlp-exporter.js +1 -1
  118. package/hooks/lib/webhook-dedup.js +1 -1
  119. package/hooks/session-briefing.js +1 -1
  120. package/llms.txt +6 -6
  121. package/manifiestos/canonical-hashes.json +989 -0
  122. package/manifiestos/hooks-config.json +469 -469
  123. package/manifiestos/invariantes-criticos.json +30 -30
  124. package/manifiestos/modulos.json +168 -135
  125. package/manifiestos/perfiles.json +0 -2
  126. package/manifiestos/skills-lock.json +52 -59
  127. package/package.json +7 -5
  128. package/plantillas/github-workflows/README.md +15 -1
  129. package/plantillas/github-workflows/swl-devsecops.yml +70 -0
  130. package/plugin.json +5 -5
  131. package/reglas/analisis-previo-tareas-grandes.md +30 -156
  132. package/reglas/analizar-directorios-antes-de-escribir.md +30 -211
  133. package/reglas/api-diseno.md +28 -398
  134. package/reglas/arquitectura.md +35 -456
  135. package/reglas/arreglar-al-detectar.md +30 -230
  136. package/reglas/debatir-antes-de-aceptar.md +30 -143
  137. package/reglas/docs.md +7 -0
  138. package/reglas/estilo-codigo.md +9 -0
  139. package/reglas/fragmentos-compartidos.md +6 -0
  140. package/reglas/git-workflow.md +44 -240
  141. package/reglas/gobernanza.md +23 -262
  142. package/reglas/memoria-consolidada.md +34 -228
  143. package/reglas/performance.md +8 -0
  144. package/reglas/pruebas.md +12 -0
  145. package/reglas/seguridad-agentes.md +37 -418
  146. package/reglas/seguridad.md +12 -0
  147. package/reglas/sesiones-paralelas.md +29 -162
  148. package/reglas/sin-duplicacion-reglas-globales.md +25 -166
  149. package/reglas/skills-estandar.md +23 -373
  150. package/reglas/usar-code-review-graph.md +31 -140
  151. package/reglas/usar-context7.md +30 -208
  152. package/reglas/usar-sistema-swl.md +47 -242
  153. package/reglas/verificar-citas-normativas.md +47 -537
  154. package/scripts/actualizar.js +253 -253
  155. package/scripts/audit-tools/auditar-relleno-inventario.js +145 -0
  156. package/scripts/auditar-clases-conocidas.js +106 -0
  157. package/scripts/bootstrap-instintos.js +2 -2
  158. package/scripts/canario-hooks.js +166 -0
  159. package/scripts/cli/configurar-ci.js +2 -1
  160. package/scripts/evidencia-valor.js +93 -0
  161. package/scripts/field-report.js +1 -1
  162. package/scripts/generar-comandos.js +143 -0
  163. package/scripts/generar-inventario.js +236 -23
  164. package/scripts/generar-matriz-lenguajes.js +1 -1
  165. package/scripts/instalador.js +15 -1
  166. package/scripts/lib/configurar-ci.js +10 -3
  167. package/scripts/lib/detectar-runtime.js +12 -3
  168. package/scripts/lib/diary-entry.js +3 -1
  169. package/scripts/lib/drift-detector.js +1 -1
  170. package/scripts/lib/evidencia-valor.js +189 -0
  171. package/scripts/lib/expandir-targets.js +71 -71
  172. package/scripts/lib/frontmatter-md.js +63 -0
  173. package/scripts/lib/parsear-opciones.js +2 -0
  174. package/scripts/lib/prune-componentes.js +180 -0
  175. package/scripts/lib/reglas-globales-conocidas.json +16 -2
  176. package/scripts/lib/scoring-instintos.js +2 -2
  177. package/scripts/lib/toml-merge.js +204 -204
  178. package/scripts/lib/transformadores/claude.js +1 -1
  179. package/scripts/lib/transformadores/codex.js +1 -1
  180. package/scripts/lib/transformadores/copilot.js +1 -1
  181. package/scripts/lib/transformadores/cursor.js +1 -1
  182. package/scripts/lib/transformadores/gemini.js +22 -2
  183. package/scripts/lib/transformadores/opencode.js +1 -1
  184. package/scripts/mcp-server/auth.js +105 -105
  185. package/scripts/mcp-server/cache.js +106 -106
  186. package/scripts/prune.js +102 -0
  187. package/scripts/publicar.js +18 -2
  188. package/scripts/tui/pantallas/inspect.js +175 -175
  189. package/scripts/tui/pantallas/uninstall-wizard.js +210 -210
  190. package/scripts/tui/pantallas/update-wizard.js +234 -234
  191. package/scripts/tui/pantallas/welcome.js +189 -189
  192. package/habilidades/paid-media-tracking/SKILL.md +0 -269
  193. package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +0 -220
  194. package/habilidades/paid-media-tracking/recursos/google-ads-api.md +0 -215
  195. package/habilidades/tracking-measurement/SKILL.md +0 -239
  196. package/habilidades/tracking-measurement/recursos/consent-mode.md +0 -231
  197. package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +0 -216
  198. package/habilidades/tracking-measurement/recursos/meta-capi.md +0 -262
@@ -1,245 +1,49 @@
1
1
  # Regla: Git Workflow
2
2
 
3
- Un historial de git limpio es documentación ejecutable del proyecto. Facilita
4
- bisect, reverts, cherry-picks y revisiones de código. Estas reglas garantizan
5
- que el historial sea útil y comprensible.
6
-
7
- ---
3
+ Un historial de git limpio es documentación ejecutable del proyecto: facilita bisect,
4
+ reverts, cherry-picks y revisiones. Núcleo denso del flujo de trabajo con git.
8
5
 
9
6
  ## Commits atómicos — 1 cambio lógico = 1 commit
10
7
 
11
- - Un commit contiene exactamente un cambio lógico autocontenido.
12
- Se puede entender, revertir y aplicar de forma independiente.
13
- - Un commit NO mezcla: refactor + nueva feature, bugfix + limpieza de código,
14
- cambio de deps + lógica de negocio.
15
- - Si al escribir el mensaje de commit se necesita usar "y" o "también":
16
- es señal de que son dos commits.
17
- - Commits de trabajo en progreso (`WIP`, `temp`, `fix typo`) están permitidos
18
- en ramas de feature, pero se squashean antes del merge.
19
- - Commits con solo cambios de formato/whitespace: nunca mezclar con cambios
20
- de lógica. Hacer un commit dedicado de formateo si es necesario.
21
- - Tamaño razonable: si un PR tiene un solo commit con 50 archivos modificados,
22
- el commit no es atómicodividir en pasos lógicos.
23
-
24
- ---
25
-
26
- ## Mensajes de commit — formato imperativo, <72 chars
27
-
28
- Formato estándar:
29
- ```
30
- <tipo>(<scope>): <descripción en imperativo>
31
-
32
- [cuerpo opcional — explicar POR QUÉ, no qué hace el diff]
33
-
34
- [footer opcional — refs a tickets, breaking changes]
35
- ```
36
-
37
- Tipos permitidos:
38
- - `feat`: nueva funcionalidad
39
- - `fix`: corrección de bug
40
- - `refactor`: cambio que no agrega funcionalidad ni corrige bug
41
- - `test`: agregar o corregir tests
42
- - `docs`: cambios en documentación
43
- - `chore`: actualización de deps, configuración, tooling
44
- - `perf`: mejora de rendimiento
45
- - `style`: cambios de formato (espacios, punto y coma, etc.)
46
- - `ci`: cambios en pipelines de CI/CD
47
-
48
- Reglas del mensaje:
49
- - Primera línea: imperativo, presente, sin punto al final, <72 caracteres.
50
- - Mal: `Se agregó validación al formulario.`
51
- - Mal: `Agrega validación al formulario de registro de usuario con múltiples campos`
52
- - Bien: `feat(auth): agregar validación de formato de email en registro`
53
- - El cuerpo explica el contexto y la razón del cambio, no repite el diff.
54
- - Referenciar tickets: `Closes #123`, `Refs #456` en el footer.
55
- - Breaking changes: `BREAKING CHANGE: descripción` en el footer.
56
-
57
- ---
58
-
59
- ## Branches descriptivas
60
-
61
- Formato: `<tipo>/<descripcion-en-kebab-case>`
62
-
63
- Tipos de branch:
64
- - `feat/` — nueva feature
65
- - `fix/` — corrección de bug
66
- - `refactor/` — refactoring sin cambio funcional
67
- - `hotfix/` — corrección urgente de producción
68
- - `chore/` — mantenimiento, actualizaciones de deps
69
- - `docs/` — solo documentación
70
-
71
- Ejemplos:
72
- - `feat/modulo-facturacion-electronica`
73
- - `fix/error-calculo-impuesto-ieps`
74
- - `hotfix/sql-injection-endpoint-productos`
75
- - `refactor/migrar-callbacks-a-promises`
76
-
77
- Reglas:
78
- - Nombre describe el trabajo, no la persona ni el ticket.
79
- - Mal: `branch-juan`, `feat-123`, `nueva-rama`
80
- - Bien: `feat/exportacion-reporte-pdf`
81
- - Vida corta: las ramas de feature no duran más de 2 semanas sin mergearse.
82
- Ramas largas generan conflictos masivos.
83
- - Eliminar la rama después del merge al branch base.
84
-
85
- ---
86
-
87
- ## No force-push a main / develop
88
-
89
- - `git push --force` y `git push --force-with-lease` están prohibidos en
90
- `main`, `master` y `develop`.
91
- - Estas ramas deben tener protección de branch habilitada en el repositorio.
92
- - Si se requiere reescribir historial de main: escalar a decisión del equipo,
93
- con plan de comunicación y ventana de mantenimiento.
94
- - En ramas de feature propias: `--force-with-lease` está permitido para rebase
95
- interactivo antes del PR, con precaución.
96
- - Rebase en ramas compartidas (más de un colaborador): siempre coordinar antes.
97
-
98
- ---
99
-
100
- ## PRs — descripción y test plan obligatorios
101
-
102
- Todo Pull Request debe incluir:
103
-
104
- **Título**: sigue el mismo formato que el mensaje de commit.
105
-
106
- **Descripción mínima**:
107
- ```markdown
108
- ## Resumen
109
- - Qué cambió y por qué (1-3 bullets)
110
-
111
- ## Cambios principales
112
- - Lista de los cambios técnicos relevantes
113
-
114
- ## Test plan
115
- - [ ] Paso 1 para verificar manualmente
116
- - [ ] Paso 2 para verificar el caso edge
117
- - [ ] Caso de error verificado
118
-
119
- ## Screenshots (si hay cambios de UI)
120
-
121
- ## Notas para el reviewer
122
- - Contexto adicional, decisiones tomadas, alternativas descartadas
123
- ```
124
-
125
- Reglas adicionales:
126
- - PRs de más de 500 líneas cambiadas: justificar o dividir en PRs menores.
127
- - Asignar reviewer antes de solicitar revisión.
128
- - No mergear el propio PR sin revisión (excepto hotfixes urgentes documentados).
129
- - Resolver todos los comentarios antes de mergear (o marcar como `wontfix` con justificación).
130
-
131
- ---
132
-
133
- ## Squash antes de merge
134
-
135
- - Commits WIP, de typos y de fix de review se squashean antes del merge.
136
- - El historial de main muestra solo commits semánticos y atómicos.
137
- - Estrategia recomendada: `Squash and merge` desde la UI de GitHub/GitLab,
138
- o `rebase interactivo` antes del merge.
139
- - El mensaje del squash debe ser descriptivo del cambio completo, no solo
140
- el primer mensaje de la rama.
141
- - Ramas con múltiples commits lógicos independientes: usar `rebase` en lugar
142
- de `squash` para preservar la granularidad.
143
-
144
- ---
145
-
146
- ## Flujo completo de trabajo
147
-
148
- ```
149
- main ─────────────────────────────────────────► main
150
- │ ▲
151
- └─ feat/nombre ──[commits]──[squash]─┘
152
-
153
- └─ [PR] ──[review] ──[CI pass] ──[merge]
154
- ```
155
-
156
- 1. Crear branch desde `main` (o `develop` si existe).
157
- 2. Hacer commits atómicos en la branch.
158
- 3. Mantener la branch actualizada con `git rebase main` (no merge).
159
- 4. Abrir PR con descripción completa.
160
- 5. Pasar CI (linter, tests, type-check).
161
- 6. Obtener aprobación de al menos 1 reviewer.
162
- 7. Squash y merge.
163
- 8. Eliminar la branch.
164
-
165
- ---
166
-
167
- ## Reglas de emergencia (hotfixes)
168
-
169
- - Un hotfix de producción puede saltarse el proceso completo de review si hay
170
- indisponibilidad activa, con las siguientes condiciones:
171
- - Notificar al equipo en el canal de incidencias antes de mergear.
172
- - El fix más pequeño posible — solo lo que resuelve el incidente.
173
- - PR de follow-up con tests dentro de 24 horas.
174
- - Post-mortem si el incidente duró más de 30 minutos.
175
-
176
- ---
177
-
178
- ## Sincronización de versiones antes de release
179
-
180
- Cuando se modifican componentes del sistema SWL (agentes, skills, reglas, hooks,
181
- comandos, schemas o manifiestos), la versión debe actualizarse en TODOS los
182
- archivos que la declaran antes de hacer commit y publicar:
183
-
184
- | Archivo | Campo | Ejemplo |
185
- |---------|-------|---------|
186
- | `package.json` | `"version"` | `"5.0.3"` |
187
- | `plugin.json` | `"version"` | `"5.0.3"` |
188
- | `SALUD.md` | `Versión del sistema` | `5.0.3` (todas las ocurrencias) |
189
- | `.claude/.swl-install-state.json` | `"versionSistema"` | `"5.0.3"` (local, gitignored) |
190
-
191
- El tipo de bump sigue SemVer:
192
- - **PATCH** (5.0.X): correcciones de bugs, mejoras de redacción, ajustes de patrones
193
- - **MINOR** (5.X.0): agente nuevo, skill nuevo, comando nuevo, regla nueva
194
- - **MAJOR** (X.0.0): cambio breaking en schemas, reglas obligatorias nuevas, restructuración
195
-
196
- Verificación rápida de consistencia:
197
- ```bash
198
- node -e "const p=require('./package.json'),l=require('./plugin.json');console.log(p.version===l.version?'OK: '+p.version:'INCONSISTENTE: pkg='+p.version+' plugin='+l.version)"
199
- ```
200
-
201
- ---
202
-
203
- ## Reglas de oro CI/CD (cuando se adopta swl-configurar-ci)
204
-
205
- Cuando un proyecto activa el flujo CI/CD distribuido por swl-ses (vía
206
- `/swl:configurar-ci init`), aplican las siguientes reglas:
207
-
208
- - **Toda feature entra vía Pull Request a main**. Nunca se hace push directo
209
- a main — incluso para hotfixes urgentes (excepción documentada explícita).
210
- - **Branch protection en main es obligatorio**: aplicar via
211
- `node scripts/configurar-branch-protection.js` o vía GitHub Settings →
212
- Branches.
213
- - **Todo PR ejecuta automáticamente**: lint, validaciones de aislamiento,
214
- tests, security review con Claude. Si algo falla, el merge queda bloqueado.
215
- - **main siempre lista para producción**. Cualquier commit en main debe
216
- pasar el gate de CI antes de mergearse.
217
- - **Secrets en GitHub Secrets, nunca en código ni en .env del repo**: la
218
- `CLAUDE_API_KEY` requerida por el security workflow vive en
219
- Settings → Secrets and variables → Actions.
220
- - **Permisos mínimos en workflows**: `permissions:` declara solo lo
221
- estrictamente necesario (`contents: read`, `pull-requests: write`).
222
- Nunca `permissions: write-all`.
223
- - **Workflows desde fork PRs no reciben secrets**: la security review
224
- con Claude no puede correr en PRs desde forks externos sin configuración
225
- adicional. Esta limitación es de GitHub por diseño — documentarla en el
226
- proyecto.
227
-
228
- Estas reglas aplican solo cuando swl-configurar-ci está activo. Proyectos
229
- sin CI/CD pueden mantener flujos directos a main bajo responsabilidad
230
- del owner.
231
-
232
- ---
233
-
234
- ## Checklist antes de abrir un PR
235
-
236
- - [ ] Commits son atómicos y tienen mensajes descriptivos
237
- - [ ] Branch actualizada con `rebase` desde main (sin conflictos)
238
- - [ ] Tests pasan localmente
239
- - [ ] Linter y type-checker pasan
240
- - [ ] PR tiene descripción, cambios principales y test plan
241
- - [ ] No se fuerza push a main
242
- - [ ] Commits WIP squasheados
243
- - [ ] Si se modificaron componentes del sistema (agentes, skills, reglas, hooks):
244
- versión actualizada en package.json, plugin.json y SALUD.md
245
- - [ ] Si el proyecto usa `swl-configurar-ci`, este PR pasa todos los gates de CI
8
+ - Un commit contiene exactamente un cambio lógico autocontenido — se entiende, revierte y aplica de forma independiente. Si el mensaje necesita "y" o "también", son dos commits. NO mezclar: refactor + feature, bugfix + limpieza, deps + lógica de negocio, ni formato/whitespace con lógica (formateo va en commit dedicado). Un solo commit con 50 archivos no es atómico — dividir en pasos lógicos.
9
+ - Mensaje: `<tipo>(<scope>): <descripción>` — imperativo, presente, sin punto final, <72 caracteres. Tipos permitidos: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`, `perf`, `style`, `ci`.
10
+ - El cuerpo explica el POR QUÉ (contexto y razón), no repite el diff. Footer: `Closes #123` / `Refs #456`; breaking changes con `BREAKING CHANGE: descripción`.
11
+
12
+ ## Branches
13
+
14
+ - Formato `<tipo>/<descripcion-en-kebab-case>` (`feat/`, `fix/`, `refactor/`, `hotfix/`, `chore/`, `docs/`). El nombre describe el trabajo, no la persona ni el ticket.
15
+ - Vida corta: ≤2 semanas sin mergearse (ramas largas generan conflictos masivos); eliminar la rama tras el merge; mantenerla actualizada con `git rebase main`, no merge.
16
+
17
+ ## Force-push y protección
18
+
19
+ - NUNCA `--force` ni `--force-with-lease` a `main`/`master`/`develop` esas ramas llevan branch protection. Reescribir historial de main exige decisión de equipo con plan de comunicación.
20
+ - En ramas de feature propias, `--force-with-lease` está permitido para rebase pre-PR; en ramas compartidas, coordinar siempre antes de rebasear.
21
+
22
+ ## PRs y squash
23
+
24
+ - Todo PR lleva descripción (resumen + cambios principales) y test plan verificable; título con formato de commit. Template completo en el extendido.
25
+ - PRs >500 líneas cambiadas: justificar o dividir. No mergear el propio PR sin revisión (salvo hotfix urgente documentado); resolver todos los comentarios antes de mergear.
26
+ - Squash de commits WIP/typos/fix-de-review antes del merge — main solo muestra commits semánticos y atómicos; ramas con múltiples commits lógicos independientes usan rebase para preservar granularidad.
27
+
28
+ ## Hotfix de emergencia
29
+
30
+ - Solo con indisponibilidad activa: fix mínimo, notificar al equipo antes de mergear, PR de follow-up con tests en 24 h, post-mortem si duró >30 min.
31
+
32
+ ## Sincronización de versiones del sistema SWL
33
+
34
+ - Al modificar componentes SWL, actualizar la versión en `package.json`, `plugin.json` y `SALUD.md` (todas las ocurrencias) antes de commit y publicación.
35
+ - SemVer estricto: **PATCH** = fix/redacción, **MINOR** = componente nuevo (agente/skill/comando/regla), **MAJOR** = breaking en schemas, reglas obligatorias nuevas o restructuración.
36
+
37
+ ## Reglas de oro CI/CD (con swl-configurar-ci activo)
38
+
39
+ - Toda feature entra vía PR a main — nunca push directo, ni para hotfixes (excepción documentada explícita); branch protection en main es obligatorio y todo PR pasa gates automáticos (lint, tests, security review) antes de mergear.
40
+ - Secrets en GitHub Secrets, nunca en código ni `.env` del repo; `permissions:` mínimos en workflows (NUNCA `write-all`). Fork PRs no reciben secrets — limitación de GitHub por diseño.
41
+
42
+ ## Anti-patrones / prohibiciones
43
+
44
+ - Commit que mezcla dos cambios lógicos "para ahorrar tiempo".
45
+ - Force-push a main/develop bajo cualquier justificación.
46
+ - PR sin test plan o con comentarios de review sin resolver.
47
+ - Release con versiones desincronizadas entre package.json / plugin.json / SALUD.md.
48
+
49
+ Detalle extendido (template de PR, diagrama de flujo completo, tabla de versiones con comando de verificación, reglas CI/CD desarrolladas, checklist pre-PR): `Skill("meta-reglas-extendido")` → `recursos/git-workflow.md`.
@@ -1,280 +1,41 @@
1
1
  # Regla: Gobernanza
2
2
 
3
- Esta regla aplica a equipos y proyectos con múltiples contribuidores.
4
- Define políticas de aprobación, auditoría y control de cambios del sistema SWL.
5
- En proyectos individuales, sirve como guía de disciplina de cambios.
6
-
7
- ---
3
+ Aplica a equipos y proyectos con múltiples contribuidores; en proyectos individuales sirve como guía de disciplina de cambios. Núcleo denso de las políticas de aprobación, auditoría y control de cambios del sistema SWL.
8
4
 
9
5
  ## Políticas de aprobación
10
6
 
11
- ### Cambios de alto riesgo
12
-
13
- Los siguientes cambios requieren aprobación explícita del líder técnico antes
14
- de incorporarse al sistema activo. "Aprobación explícita" significa una revisión
15
- deliberada (no automática) con evidencia documentada en `.planning/AUDITORIA.md`.
16
-
17
- Cambios que requieren aprobación:
18
-
19
- - Modificación de reglas de seguridad (`reglas/seguridad.md`)
20
- - Cambios en umbrales de risk scoring en `manifiestos/hooks-config.json`
21
- - Adición de hooks con `blocking: true`
22
- - Modificación de agentes con `nivelRiesgo: ALTO`
23
- - Cambios en manifiestos de instalación (`manifiestos/modulos.json`, `manifiestos/perfiles.json`)
24
- - Eliminación de reglas o agentes del sistema base
25
-
26
- ### Skills generados automáticamente
27
-
28
- Los skills generados por `auto-evolucion-swl` o `/swl:evolucionar`:
29
-
30
- - Se instalan primero en `_userland/plugins/` como período de prueba.
31
- NUNCA se incorporan directamente al sistema base sin revisión.
32
- - Requieren validación en al menos 3 sesiones de trabajo independientes
33
- antes de ser promovidos al perfil `completo`.
34
- - Deben pasar la verificación de `/swl:status salud` sin degradar el score actual.
35
- - **Gate G8 — evidencia de calidad obligatoria**: antes de mover un skill
36
- desde `_userland/plugins/` a `habilidades/`, ejecutar
37
- `/swl:evaluar-skill <nombre>` y exigir badge ≥ **Plata** (score ≥ 70).
38
- Skills con Bronce o sin badge se devuelven a `_userland/` con feedback
39
- de qué dimensiones bajan el score. Detalle del flujo en
40
- `agentes/auto-evolucion-swl.md` sección "Gate G8". Origen ADR 0013
41
- sección 3C.
42
- - La promoción se registra en `.planning/AUDITORIA.md` con justificación
43
- Y en `.planning/evolution/evoluciones.jsonl` con evento
44
- `tipo: "promocion-skill"` y `score`.
45
-
46
- ### Reglas nuevas obligatorias
47
-
48
- Una regla nueva que se declare obligatoria para todos los agentes es un cambio
49
- `MAJOR` del sistema (ver sección de versionado). Requiere:
50
-
51
- 1. Propuesta documentada: qué problema resuelve y por qué es obligatoria.
52
- 2. Período de revisión de al menos 48 horas antes de activarse.
53
- 3. Comunicación al equipo con tiempo suficiente para adaptarse.
54
- 4. Entrada en el CHANGELOG con descripción del impacto.
55
-
56
- ---
7
+ - **Cambios de alto riesgo** requieren aprobación explícita (revisión deliberada, no automática) documentada en `.planning/AUDITORIA.md`: reglas de seguridad, umbrales de risk scoring en `manifiestos/hooks-config.json`, hooks `blocking: true`, agentes `nivelRiesgo: ALTO`, manifiestos de instalación (`modulos.json`, `perfiles.json`), y eliminación de reglas o agentes del sistema base.
8
+ - **Skills auto-generados** (`auto-evolucion-swl`, `/swl:evolucionar`): entran primero a `_userland/plugins/` como período de prueba; requieren validación en ≥3 sesiones independientes, pasar `/swl:status salud` sin degradar el score, y el **gate G8**: `/swl:evaluar-skill` con badge ≥ Plata (score ≥ 70) antes de promover a `habilidades/` (Bronce o sin badge → de vuelta a userland con feedback). La promoción se registra en AUDITORIA.md + `evolution/evoluciones.jsonl` (`tipo: "promocion-skill"` con `score`).
9
+ - **Regla nueva obligatoria** = cambio MAJOR: propuesta documentada + período de revisión de 48 horas + comunicación al equipo + entrada en el CHANGELOG.
57
10
 
58
11
  ## Auditoría
59
12
 
60
- ### Log de operaciones de alto riesgo
61
-
62
- Toda operación marcada como `nivelRiesgo: ALTO` debe registrarse en
63
- `.planning/AUDITORIA.md` con el siguiente formato:
64
-
65
- ```markdown
66
- ## [YYYY-MM-DD HH:MM] <tipo-de-operacion>
67
-
68
- **Agente**: nombre-agente-swl
69
- **Operación**: descripción breve de qué se hizo
70
- **Justificación**: por qué fue necesario
71
- **Aprobado por**: nombre o "individual" si es proyecto personal
72
- **Archivos afectados**: lista de rutas modificadas
73
- **Estado**: completado / revertido
74
- ```
75
-
76
- El hook `risk-scoring` genera entradas automáticas para operaciones detectadas.
77
- Las operaciones manuales de alto riesgo deben registrarse manualmente.
78
-
79
- ### Supresión de verificaciones
80
-
81
- Cuando se necesita suprimir un hook (via `SWL_DISABLED_HOOKS` u otro mecanismo):
82
-
83
- - Usar el scope más estrecho posible: archivo o directorio específico,
84
- no desactivación global del hook.
85
- - Documentar en `.planning/AUDITORIA.md`:
86
- - Fecha y duración de la supresión
87
- - Razón técnica por la que fue necesario
88
- - Alcance exacto (qué hook, qué archivos)
89
- - Plan de reactivación
90
-
91
- Una supresión sin documentación en AUDITORIA.md se considera deuda de gobernanza
92
- que debe resolverse antes del próximo release.
93
-
94
- ### Retención de logs
95
-
96
- - `.planning/AUDITORIA.md` es un archivo append-only. NUNCA borrar entradas antiguas.
97
- - Los instintos degradados por `degradacion-instintos.js` se registran
98
- automáticamente en el log de instintos, no en AUDITORIA.md.
99
- - Revisar AUDITORIA.md mensualmente para identificar patrones de operaciones de riesgo.
100
-
101
- ---
13
+ - `.planning/AUDITORIA.md` es append-only (NUNCA borrar entradas). Toda operación `nivelRiesgo: ALTO` se registra ahí (formato en el extendido); el hook `risk-scoring` genera entradas automáticas, las operaciones manuales se registran a mano. Revisión mensual para detectar patrones de riesgo.
14
+ - **Supresión de hooks** (`SWL_DISABLED_HOOKS` u otro mecanismo): scope más estrecho posible (archivo/directorio, nunca global) + documentar en AUDITORIA.md fecha y duración, razón técnica, alcance exacto y plan de reactivación. Supresión sin documentar = deuda de gobernanza a resolver antes del próximo release.
102
15
 
103
16
  ## Separación revisor / ejecutor
104
17
 
105
- Un agente que ejecuta cambios NUNCA verifica su propio trabajo. La verificación
106
- cruzada entre roles distintos reduce hallucaciones y errores de confirmación.
107
-
108
- ### Principio
109
-
110
- | Rol | Permisos | Responsabilidad |
111
- |-----|----------|-----------------|
112
- | **Ejecutor** | Write, Edit, Bash | Implementa cambios según el plan. NO se auto-revisa. |
113
- | **Revisor** | Read, Grep, Glob, Bash (solo lectura) | Emite veredictos estructurados. NO ejecuta correcciones. |
114
-
115
- ### Reglas obligatorias
116
-
117
- - El ejecutor NUNCA emite un veredicto de aprobación sobre su propio trabajo.
118
- Si termina una fase, reporta completitud — el revisor valida.
119
- - El revisor NUNCA modifica código de producción. Si detecta un problema,
120
- emite un veredicto `Fail` con instrucciones concretas en `nextStep.instructions`.
121
- El ejecutor aplica las correcciones.
122
- - En el flujo del orquestador, el revisor y el ejecutor son agentes distintos
123
- o invocaciones independientes con contexto separado.
124
- - Las instrucciones del revisor son específicas: archivo, línea, qué cambiar.
125
- "Mejorar el código" no es una instrucción válida.
126
- - El ejecutor sigue las instrucciones del revisor sin inventar mejoras adicionales
127
- no solicitadas. No crea un plan nuevo — ejecuta lo indicado.
128
-
129
- ### Mapeo a agentes SWL
130
-
131
- | Fase | Ejecutor | Revisor |
132
- |------|----------|---------|
133
- | Implementación | implementador-swl, backend-*-swl, frontend-*-swl | revisor-codigo-swl, revisor-*-swl |
134
- | Seguridad | (cualquier implementador) | revisor-seguridad-swl |
135
- | Testing | tdd-qa-swl (escribe tests) | (el test runner es el revisor) |
136
- | Verificación de fase | (agente que implementó) | verificar-trabajo (skill) |
137
-
138
- ### Anti-patrones
139
-
140
- - Un agente que dice "revisé mi propio código y se ve bien" — viola la separación.
141
- - Un revisor que aplica un fix directamente en lugar de emitir instrucciones.
142
- - Un ejecutor que ignora el veredicto del revisor y marca la tarea como completada.
143
- - Un loop de reparación infinito — máximo 2 intentos antes de escalar a humano.
144
-
145
- ---
146
-
147
- ## Veto items y cap enforcement (auditor-class pattern)
148
-
149
- Algunos hallazgos son **no negociables**: violaciones de reglas globales del
150
- sistema cuya presencia debe bloquear la aprobación independientemente de qué
151
- tan limpio esté el resto del trabajo. El patrón "veto items + cap enforcement"
152
- formaliza este criterio para todos los revisores SWL.
153
-
154
- ### Principio
155
-
156
- Un revisor declara una **lista finita y específica de veto items** asociados a
157
- su dominio. Si detecta CUALQUIER veto item:
158
-
159
- - El **score máximo** del reporte queda CAP a un valor de "no aprobado"
160
- (ejemplo: `60/100` para reportes en escala 0-100, `6.0/10` para reportes
161
- por dimensión).
162
- - El **veredicto automático** pasa a `RECHAZADO` o `APROBADO CON CORRECCIONES`,
163
- nunca `APROBADO` limpio.
164
- - 2+ veto items → cap más estricto (ej. `30/100` o `3.0/10`).
165
-
166
- El cap NO se compensa con scores altos en otras dimensiones. La presencia de un
167
- veto item indica violación de una regla global no opcional.
168
-
169
- ### Reglas
170
-
171
- 1. **Cada revisor declara explícitamente sus veto items** en su agente
172
- (sección dedicada en el `.md` del agente, antes del formato de reporte).
173
- 2. **Los veto items mapean a reglas del sistema** (`reglas/seguridad.md`,
174
- `reglas/estilo-codigo.md`, `reglas/arquitectura.md`, etc.). NO son criterios
175
- inventados ad-hoc por el revisor.
176
- 3. **El reporte muestra los veto items detectados** al inicio, antes de la
177
- tabla de scores, en bloque dedicado:
178
- ```
179
- ### VETO ITEMS DETECTADOS
180
- - [VI-1] <descripción del veto>: `archivo.py:42`
181
- - [VI-3] <descripción del veto>: `app/util.py:88`
182
- → score CAP a X/Y (N veto items). Veredicto: RECHAZADO.
183
- ```
184
- Si no hay: `### VETO ITEMS DETECTADOS\n- Ninguno`.
185
- 4. **El cap no se levanta por negociación**. Solo se levanta cuando se
186
- demuestra remediación (commit + test que prueba la corrección) y el revisor
187
- re-ejecuta la auditoría.
188
- 5. **Un veto item siempre referencia una regla global**. Si el revisor cree
189
- que algo "debería ser veto" pero no hay regla que lo respalde, primero
190
- actualiza la regla, luego agrega el veto.
191
-
192
- ### Aplicabilidad
193
-
194
- Revisores SWL que DEBEN implementar veto items:
195
-
196
- - `revisor-seguridad-swl` (10 veto items: secret hardcodeado, SQL injection,
197
- eval con input, path traversal, CVE crítico, etc.)
198
- - `revisor-codigo-swl` (10 veto items: función >100 líneas, complejidad >15,
199
- console.log en prod, dependencia circular, DRY mayor, etc.)
200
-
201
- Revisores específicos de lenguaje (`revisor-typescript-swl`, `revisor-react-swl`,
202
- `revisor-rust-swl`, etc.) PUEDEN agregar veto items adicionales propios de su
203
- dominio, pero deben heredar los del revisor base correspondiente.
204
-
205
- Plantilla reusable: `plantillas/auditor-veto-template.md`.
206
-
207
- ### Anti-patrones
208
-
209
- - **Veto inventado sin regla**: "código feo" no es veto válido — necesita
210
- regla global que lo prohíba.
211
- - **Veto suavizado por presión de entrega**: bajar de "veto" a "menor" porque
212
- el equipo dispute es invalidación del sistema.
213
- - **Veto sin evidencia**: cada veto item reportado debe citar archivo:línea.
214
- - **Veto que no se persiste**: si el cap se levanta sin re-revisión y commit
215
- de corrección, el sistema pierde su valor.
216
-
217
- ---
218
-
219
- ## Control de cambios del sistema
220
-
221
- ### Versionado
222
-
223
- Todo cambio al sistema SWL sigue SemVer estricto:
224
-
225
- | Tipo de cambio | Versión |
226
- |----------------|---------|
227
- | Regla nueva marcada como obligatoria | MAJOR |
228
- | Cambio breaking en schema de agentes o skills | MAJOR |
229
- | Agente nuevo, skill nuevo, comando nuevo | MINOR |
230
- | Feature en agente o skill existente | MINOR |
231
- | Bug fix, corrección de typo, actualización de ejemplo | PATCH |
232
- | Mejora de descripción sin cambio de comportamiento | PATCH |
233
-
234
- El comando `/swl:release` maneja el versionado automáticamente.
235
-
236
- ### Rollback
237
-
238
- Ante un cambio que degrada el sistema:
239
-
240
- - La versión anterior debe permanecer disponible (via git) por al menos 1 semana
241
- antes de considerarse obsoleta.
242
- - Los hooks nuevos pueden desactivarse individualmente via variable de entorno
243
- `SWL_DISABLED_HOOKS=nombre-hook` sin afectar el resto del sistema.
244
- - Los agentes nuevos NO reemplazan a los existentes sin un período de transición
245
- documentado. Durante la transición, ambas versiones coexisten.
246
- - Si `/swl:status salud` baja su score tras un cambio: revertir antes de continuar.
247
-
248
- ### Freeze de cambios pre-release
249
-
250
- Durante las 24 horas previas a un release:
251
-
252
- - Solo se permiten bug fixes críticos (PATCH).
253
- - No se agregan features ni reglas nuevas.
254
- - El comando `/swl:status salud` debe pasar sin advertencias antes de publicar.
18
+ - El ejecutor (Write/Edit/Bash) NUNCA emite veredicto de aprobación sobre su propio trabajo reporta completitud; el revisor valida.
19
+ - El revisor (solo lectura) NUNCA modifica código de producción — emite veredicto `Fail` con instrucciones específicas (archivo, línea, qué cambiar; "mejorar el código" no es instrucción válida).
20
+ - Revisor y ejecutor son agentes distintos o invocaciones independientes con contexto separado; el ejecutor sigue las instrucciones sin inventar mejoras no solicitadas; máximo 2 intentos del loop de reparación antes de escalar a humano.
255
21
 
256
- ---
22
+ ## Veto items y cap enforcement
257
23
 
258
- ## Plugins de terceros
24
+ - Cada revisor declara una lista finita y específica de veto items mapeados a reglas del sistema (nunca criterios ad-hoc), cada uno con evidencia archivo:línea.
25
+ - Cualquier veto detectado → score CAP a "no aprobado" (`60/100` o `6.0/10`; 2+ vetos → `30/100` o `3.0/10`) y veredicto RECHAZADO o APROBADO CON CORRECCIONES — nunca APROBADO limpio. El cap NO se compensa con scores altos en otras dimensiones.
26
+ - El cap no se levanta por negociación: solo con remediación demostrada (commit + test que prueba la corrección) y re-auditoría del revisor.
259
27
 
260
- Los plugins instalados via `/swl:plugins install` tienen restricciones adicionales:
28
+ ## Control de cambios
261
29
 
262
- - No pueden modificar componentes del sistema base (`agentes/`, `habilidades/`,
263
- `reglas/`, `hooks/` en la raíz).
264
- - Sus hooks con `blocking: true` requieren revisión explícita antes de activarse.
265
- - Si un plugin no recibe actualizaciones en 6 meses y tiene issues conocidos:
266
- marcarlo como deprecado en `.planning/PLUGINS.md`.
267
- - Los plugins de fuentes no verificadas no se instalan sin auditoría de su código.
30
+ - **SemVer estricto**: MAJOR = regla obligatoria nueva o breaking en schemas de agentes/skills; MINOR = agente/skill/comando nuevo o feature en existente; PATCH = bug fix, typo, mejora de descripción sin cambio de comportamiento. `/swl:release` lo maneja.
31
+ - **Rollback**: la versión anterior queda disponible ≥1 semana vía git; hooks nuevos desactivables individualmente (`SWL_DISABLED_HOOKS`); agentes nuevos coexisten con los existentes durante transición documentada; si `/swl:status salud` baja su score tras un cambio → revertir antes de continuar.
32
+ - **Freeze pre-release** (24 horas previas): solo bug fixes críticos (PATCH), sin features ni reglas nuevas; `/swl:status salud` sin advertencias antes de publicar.
33
+ - **Plugins de terceros**: no modifican componentes del sistema base; sus hooks `blocking: true` requieren revisión explícita antes de activarse; sin actualizaciones en 6 meses + issues conocidos → deprecado en `.planning/PLUGINS.md`; fuentes no verificadas exigen auditoría de código previa.
268
34
 
269
- ---
35
+ ## Anti-patrones
270
36
 
271
- ## Checklist de gobernanza antes de release
37
+ - "Revisé mi propio código y se ve bien" — viola la separación revisor/ejecutor.
38
+ - Revisor que aplica el fix directamente en lugar de emitir instrucciones; ejecutor que ignora el veredicto y marca la tarea como completada.
39
+ - Veto inventado sin regla que lo respalde, suavizado por presión de entrega, reportado sin evidencia archivo:línea, o levantado sin re-auditoría y commit de corrección.
272
40
 
273
- - [ ] Todos los cambios de alto riesgo tienen aprobación documentada en AUDITORIA.md
274
- - [ ] Los skills auto-generados fueron validados en al menos 3 sesiones
275
- - [ ] Ninguna supresión de hook activa sin justificación documentada
276
- - [ ] El CHANGELOG.md está actualizado con todos los cambios observables
277
- - [ ] Los schemas de validación pasan para todos los manifiestos modificados
278
- - [ ] El comando `/swl:status salud` pasa sin errores ni advertencias críticas
279
- - [ ] La versión en `package.json` refleja el tipo de cambio realizado
280
- - [ ] Los plugins de terceros instalados siguen siendo compatibles con la versión nueva
41
+ Detalle extendido (formatos de log, plantilla de veto, mapeos a agentes SWL, checklists): `Skill("meta-reglas-extendido")` → `recursos/gobernanza.md`.