@saulwade/swl-ses 2.4.3 → 2.5.2

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 (200) 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 +1043 -52
  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 +49 -56
  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 +101 -0
  161. package/scripts/field-report.js +18 -2
  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/instalar-git-hook.js +8 -1
  167. package/scripts/lib/configurar-ci.js +10 -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 +228 -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/index.js +10 -1
  189. package/scripts/tui/pantallas/inspect.js +175 -175
  190. package/scripts/tui/pantallas/install-wizard.js +21 -8
  191. package/scripts/tui/pantallas/uninstall-wizard.js +210 -210
  192. package/scripts/tui/pantallas/update-wizard.js +234 -234
  193. package/scripts/tui/pantallas/welcome.js +188 -189
  194. package/habilidades/paid-media-tracking/SKILL.md +0 -269
  195. package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +0 -220
  196. package/habilidades/paid-media-tracking/recursos/google-ads-api.md +0 -215
  197. package/habilidades/tracking-measurement/SKILL.md +0 -239
  198. package/habilidades/tracking-measurement/recursos/consent-mode.md +0 -231
  199. package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +0 -216
  200. package/habilidades/tracking-measurement/recursos/meta-capi.md +0 -262
package/CLAUDE.md CHANGED
@@ -1,242 +1,195 @@
1
- # CLAUDE.md — @saulwade/swl-ses v2.4.3
2
-
3
- ## Reglas de máxima prioridad (aplican SIEMPRE, sin excepción)
4
-
5
- ### Idioma y estilo de output
6
- Aplican las reglas globales `@~/.claude/rules/brevedad-output.md` (español de México, brevedad, sin AI-isms) y `@~/.claude/rules/git-coauthor.md` (sin co-autores en commits) — cargadas automáticamente en cada sesión. NO duplicar su contenido inline en este archivo (regla `@reglas/sin-duplicacion-reglas-globales.md`).
7
-
8
- ### Uso obligatorio del sistema SWL
9
- Aplica la regla global `@~/.claude/rules/usar-sistema-swl.md` — matriz operacional completa (qué agente/skill/comando usar por tipo de tarea, excepciones legítimas, anti-patrones). Cargar skills con `Skill("nombre")` antes de implementar.
10
-
11
- ### Cuatro principios de implementación (Karpathy)
12
- Antes de implementar, refactorizar o corregir bugs: (1) **pensar antes de codificar** (no asumir en silencio), (2) **simplicidad primero** (sin abstracciones especulativas), (3) **cambios quirúrgicos** (leer archivo completo antes de editar, no refactor de oportunidad), (4) **ejecución orientada a metas** (criterios verificables, test que reproduce bugs antes del fix). Tabla operativa + mapeo a agentes SWL en `@docs/karpathy-principios.md`. Detalle + 9 ejemplos MAL→BIEN: `Skill("prevencion-sobreingenieria")` + `recursos/EXAMPLES.md`.
13
-
14
- ### Lectura de documentos Office y Jupyter
15
- Cuando necesites leer el **contenido** de un archivo `.docx`, `.xlsx`, `.xls`, `.pptx` o `.ipynb`, NUNCA uses el Read tool directamente (no soporta esos formatos). Usa:
16
- ```bash
17
- python scripts/vendor/markitdown/cli.py <ruta-al-archivo>
18
- ```
19
- El Read tool sigue siendo correcto para `.pdf` (≤20 páginas), `.md`, `.txt` y código fuente. Para más opciones y casos de uso consultar `Skill("swl-markitdown")`.
20
-
21
- ### Versión SemVer del próximo release: decisión exclusiva del usuario
22
- NUNCA asumir, sugerir como hecho consumado, ni escribir en ADRs/manifiestos/CHANGELOG el número del próximo release sin autorización explícita del usuario en la conversación actual. El agente puede **recomendar** el bump apropiado según SemVer estricto, pero la **decisión final del número es del usuario**. Detalle y origen del aprendizaje en `.planning/APRENDIZAJES.md` sesión 2026-05-16 (ADR-0021).
23
-
24
- ---
25
-
26
- ## Stack del proyecto
27
-
28
- - **Runtime**: Node.js >=22.0.0 (ESM + CommonJS)
29
- - **Tipo**: Sistema de scripts CLI + plugin para Claude Code (multi-runtime: Claude / Copilot / OpenCode / Codex / Gemini)
30
- - **Formato fuente**: Markdown (agentes, skills, comandos, reglas) + JSON Schema (validación) + YAML (instintos)
31
- - **Distribución**: npm package (`@saulwade/swl-ses`) + plugin Claude Code (`plugin.json`)
32
- - **Dependencias runtime**: 1 directa (`docx ^9.6.1`; `pako` y `readable-stream` son transitivas de docx/jszip, no directas). Hooks y scripts/lib son zero-deps
33
- - **Idioma de salida**: 100% español (México) para componentes SWL; skills oficiales de Anthropic en inglés
34
- - **MCP del proyecto**: `code-review-graph` disponible vía `.mcp.json` (requiere `uvx`). Comportamiento: `@~/.claude/rules/usar-code-review-graph.md`
35
-
36
- ## Comandos del proyecto
37
-
38
- | Comando | Propósito |
39
- |---|---|
40
- | `npm test` | Tests unitarios (lib/, scripts/, hooks/) |
41
- | `npm run test:all` | test + validar.js + validar-manifest.js |
42
- | `npm run test:release` | test:all + test:userland + smoke (gate pre-publish) |
43
- | `npm run test:validate` | `node scripts/validar.js` — validación estructural completa |
44
- | `npm run test:manifest` | `node scripts/validar-manifest.js` — coherencia modulos/hooks |
45
- | `npm run test:smoke` | Smoke test del instalador |
46
- | `npm run gen-checklists` | Regenera `docs/checklists-consolidados/` desde reglas |
47
- | `npm run gen-checklists:check` | Falla si hay drift (uso CI) |
48
- | `npm run generate:docs` | Regenera `INVENTARIO.md` desde directorios |
49
- | `npm run doctor` | Diagnóstico del sistema (`scripts/doctor.js`) |
50
- | `npm run publish:dry` | Dry-run de publicación a npm + GitHub |
51
- | `node scripts/verificar-release.js` | Gate pre-release: 15+ ubicaciones de versión, sincronización, AI-isms (si `SWL_AIISMS_GATE=1`) |
52
- | `node scripts/generar-inventario.js` | Regenera contadores oficiales (NUNCA contar a mano) |
53
- | `node scripts/derivar-feature-list.js` | Genera `.planning/feature-list.json` (derivado de `HOJA-RUTA.md`, gitignored, regenerable). Modo `--check` exit 2 si drift detectado. Consumido por `/swl:status metricas fases`. |
54
-
55
- ## Code style
56
-
57
- - **Nombres**: kebab-case para archivos; agentes SWL y vocabulario GSD (comandos `*-fase`, dir `.planning/fases/`) en español; paths runtime/técnicos de `.planning/` en inglés (`evolution/`, `auto-evolution/`, `user-profile/`, `archive/`, `traces/`, `sessions/`, `audit/`). Ver `@~/.claude/rules/analizar-directorios-antes-de-escribir.md § Eje técnico-runtime`
58
- - **Zero-dependencies en `hooks/lib/`**: sin dependencias npm externas
59
- - **Escrituras atómicas obligatorias**: usar `atomicWriteSync()` / `atomicWriteJSON()` de `hooks/lib/atomic-write.js`. NUNCA `fs.writeFileSync` directo en archivos del sistema
60
- - **JSONL para alta frecuencia**: usar `fs.appendFileSync(ruta, JSON.stringify(evento) + '\n')` en hooks de telemetría/auditoría no `atomicWriteJSON` que reescribe todo
61
- - **YAML inline en frontmatter**: `tools: [Read, Write]`, `skillsInvocables: [skill-a]`. NUNCA CSV string ni mezcla con lista multilínea
62
- - **Mensajes de commit**: imperativo en español, formato `<tipo>(<scope>): <descripción>`
63
- - **Sin `console.log` en producción** excepto en `scripts/`, `bin/`, `hooks/`, `gateway/` (CLIs y daemons)
64
- - **Nombre completo del paquete en npx**: todo mensaje del installer/docs usa `npx -y @saulwade/swl-ses@latest <comando>`. **NUNCA** `npx swl-ses@latest <comando>` sin el scope `@saulwade/` eso resuelve al paquete legacy DEPRECATED (v5.13.1) que aún existe en npm tras el rebrand de 2026-04-30. El `@latest` es indispensable: sin él npx reutiliza la primera versión cacheada y el usuario corre código viejo sin saberlo. El `-y` evita la prompt de confirmación en CI/scripts
65
- - **Fixtures `secret`/`token` en tests deben ser en español** (`secreto`, `tokenBearer`, `clave-test`). El hook `calidad-pre-commit.js` matchea `\bsecret\s*[=:]\s*["'][^"'\s]{4,}["']` y `\btoken\s*[=:]\s*["'][^"'\s]{8,}["']` — `const secret = "valor"` se bloquea como credencial hardcodeada aunque sea fixture legítimo. Renombrar a español elude el regex sin bypass (alternativas reconocidas por el hook: `placeholder`, `example`, `fake_`, `dummy_`, `os.environ`/`process.env`). Coherente con regla global de idioma. Origen: PR #11 sesión 2026-05-13
66
- - **Scopes de runtime SIEMPRE vía `scopesReales()` de `scripts/lib/detectar-runtime.js`** — NUNCA el patrón manual `[runtime.global, path.resolve(runtime.local)]`: desde el HOME el local relativo resuelve al global propio (duplicados) o al de OTRO runtime (scope "proyecto" fantasma el local de OpenClaude es el global de Claude Code; un uninstall de ese fantasma borraría el global). 8 sitios corregidos el 2026-07-03 (doctor ×5, actualizar ×2, TUI ×4)
67
- - **`git add archivo && git commit -m "..."` en un solo comando bash NO actualiza el index antes del PreToolUse hook**: el hook `calidad-pre-commit.js` evalúa el contenido staged previo al `&&`, no el actualizado en la misma línea. Síntoma: commit bloqueado por contenido que ya corregiste vía Write/Edit pero seguía staged en versión antigua. Fix: separar en dos calls Bash (`git add archivo` → ver resultado → `git commit -m "..."`). NUNCA usar `--no-verify` para bypassear. Origen: PR #11 sesión 2026-05-13
68
- - **Secretos compartidos entre clientes MCP viven como variables de entorno persistentes del SO, NO en archivos JSON** [v2 — 2026-05-18]: un MCP usado desde Cursor + Claude Code + VS Code tiene un config JSON POR cliente; duplicar `OBSIDIAN_API_KEY` en N archivos genera drift al regenerar la apiKey. Patrón: `setx OBSIDIAN_API_KEY <key>` (o `[Environment]::SetEnvironmentVariable(..., "User")` en PS7) → escribe a `HKCU\Environment` → todos los clientes la heredan al spawnear el binario. Los JSON OMITEN la clave `env` por completo (NO `env: {}` vacío — pasa literal a `child_process.spawn` y REEMPLAZA el env del padre, rompiendo la herencia). Regenerar apiKey = un `setx` + reiniciar clientes, sin tocar JSONs. Origen: 2026-05-18, 6h de errores 40101 por 3 configs descoordinados.
69
-
70
- ## Convenciones de arquitectura
71
-
72
- - **Precedencia de capas**: Reglas base (`reglas/`) Reglas por lenguaje (`reglas/{lang}/`) Skills (`habilidades/`) Instintos (`instintos/`). Cada capa puede especializar pero NUNCA contradecir las superiores
73
- - **`reglas/` es la FUENTE; `~/.claude/rules/` son copias INSTALADAS** por el instalador: todo cambio a reglas base va en la fuente y se sincroniza editar solo las copias es deuda volátil (el install las sobreescribe). Incluye las reglas globales personales del usuario (decisión 2026-06-12, commit `2f6b8de` las 37 base viajan en `reglas-core`). Origen: Fase 09 (APRENDIZAJES 2026-06-11)
74
- - **Privilegio mínimo de agentes**: un agente delegado NUNCA excede los permisos declarados en su propio frontmatter. La cadena de delegación no escala privilegios. Ver `@reglas/seguridad-agentes.md`
75
- - **Preservación de datos en actualización**: `.planning/sessions/`, `.planning/comms/`, `_userland/`, `instintos/proyecto.yaml`, `APRENDIZAJES.md` NUNCA se sobreescriben
76
- - **Documentación obligatoria**: toda funcionalidad nueva DEBE documentarse en `MANUAL_USO.md`, `COMANDOS.md`, `CLAUDE.md` y `README.md` ANTES del commit
77
- - **Criterio dominio para incorporar skills externos**: solo si dominio = ingeniería de software general. Pregunta de filtro: *¿le sirve esto a un ingeniero de software en cualquier proyecto de software?* (ML Ops, Data Science, finanzas, etc. → descartar)
78
- - **Filtro primario al analizar `temp/`**: antes de evaluar arquitectura, verificar **compatibilidad de dominio**. Si es incompatible, veredicto NINGUNA aplicabilidad sin análisis adicional
79
- - **Variables de entorno opt-in enterprise**: ver `@docs/variables-entorno.md` (catálogo completo). Patrón obligatorio: `if (!process.env.VAR) return` — zero-config por defecto
80
- - **Hooks SWL que invocan auditores Node deben cargar el auditor como módulo (`require()`), no como subproceso**: ~10× más rápido, errores estructurados (no parsing de stdout), tests directos del módulo. Excepción legítima: cuando el auditor es Python o Bash (`spawnSync`). Ejemplo aplicado en `hooks/claudemd-bloat-detector.js` que usa `require('./scripts/auditar-claudemd.js')` directamente. Antipatrón evitado: `spawnSync('node', [auditorPath, ...])` agrega ~50ms por invocación y obliga a parsear JSON de stdout
81
- - **npm v10+ NO escribe debug logs cuando falla un script invocado** (`prepublishOnly`, `prepack`, etc.) — solo cuando falla npm-mismo (network, registry, auth). El default `loglevel=notice` mantiene `_logs/` vacío para errores de scripts. Para diagnóstico de `npm run publish:all` que falla en script propio, capturar stdout+stderr con redirección: PowerShell `npm run publish:all *>&1 | Tee-Object .planning/logs/publish-$(Get-Date -Format yyyyMMdd-HHmmss).log` o Bash `2>&1 | tee`. Alternativa permanente: `npm config set loglevel verbose`
82
- - **`package.json#files` debe incluir TODOS los directorios referenciados por `bin/`, `hooks/`, `scripts/` o `comandos/`**: si un binario hace `require('./gateway/foo')` pero `gateway/` no está listado en `files`, **el módulo se omite del tarball npm y el binario falla con MODULE_NOT_FOUND tras instalación pública** — aunque la suite local pase. Bug latente histórico: `/swl:cron`, `/swl:gateway` e `/swl:inbox` instruyen `require('./gateway/...')` y rompían en npm porque `gateway/` no estaba en `files` desde versiones previas. Revelado al agregar `bin/swl-webhook-server` (v1.4.0). Verificar antes de cada release: `npm pack --dry-run | grep -E "^npm notice [0-9].*[Bb] (bin|gateway|hooks|scripts|comandos)/"` debe listar todos los directorios reales referenciados. Gate automatizable en `scripts/verificar-release.js`. Origen: PR #15 sesión 2026-05-13
83
- - **Comandos `/swl:*` invocan vía CLI cross-scope, NUNCA rutas relativas al proyecto**: dentro de fenced code blocks de `comandos/swl/*.md` usar `swl-ses <sub>` (resolución: repo madre bin en PATH `npx -y @saulwade/swl-ses@latest <sub>`), no `node scripts/...` ni `require('./hooks/...')` — esas rutas rompen en instalación global/downstream (gates SDD G0/G1, telemetría, CI). Gate bloqueante en `scripts/validar.js §7b` (`auditar-invocaciones-comandos.js`); excluye SELF_DEV `{release, contribuir, evaluar-skill, reflect-skills}`. Wrappers en `scripts/cli/` se distribuyen SOLO vía npm (`package.json#files`), NO se cuentan en INVENTARIO ni en `modulos.json`; registro único en `bin/swl-ses.js`. Detalle: `@docs/invocacion-cli-cross-scope.md`. Origen: v2.2.0
84
- - **Componentes evolucionados: merge, no overwrite (invariante)**: el instalador NUNCA sobrescribe un componente con evolución del usuario (global o proyecto) — usa merge (preserve + `.evolved-diff.txt`). Distingue evolución de usuario (A) de shipped-evolved de fábrica (B) por hash del cuerpo canónico (`manifiestos/canonical-hashes.json`); el fuente NO porta marcadores `evolved` (gate inverso en `validar.js`). Detalle: ADR-0040. Origen: Fase 16
85
-
86
- ## Referencias a docs clave (cargar bajo demanda con `@`)
87
-
88
- - `@README.md` — overview público y quickstart
89
- - `@MANUAL_USO.md` — manual operacional completo
90
- - `@INSTALACION.md` instalación, perfiles, configuración
91
- - `@COMANDOS.md` — referencia detallada de cada `/swl:*`
92
- - `@AGENTS.md` catálogo de agentes con capacidades
93
- - `@INVENTARIO.md` — conteos oficiales (regenerado por script)
94
- - `@docs/variables-entorno.md` — variables opt-in completas
1
+ # CLAUDE.md — @saulwade/swl-ses v2.5.2
2
+
3
+ ## Reglas de máxima prioridad (aplican SIEMPRE, sin excepción)
4
+
5
+ ### Idioma y estilo de output
6
+ Aplican las reglas globales `@~/.claude/rules/brevedad-output.md` (español de México, brevedad, sin AI-isms) y `@~/.claude/rules/git-coauthor.md` (sin co-autores en commits) — cargadas automáticamente en cada sesión. NO duplicar su contenido inline en este archivo (regla `@reglas/sin-duplicacion-reglas-globales.md`).
7
+
8
+ ### Uso obligatorio del sistema SWL
9
+ Aplica la regla global `@~/.claude/rules/usar-sistema-swl.md` — matriz operacional completa (qué agente/skill/comando usar por tipo de tarea, excepciones legítimas, anti-patrones). Cargar skills con `Skill("nombre")` antes de implementar.
10
+
11
+ ### Cuatro principios de implementación (Karpathy)
12
+ Antes de implementar, refactorizar o corregir bugs: (1) **pensar antes de codificar** (no asumir en silencio), (2) **simplicidad primero** (sin abstracciones especulativas), (3) **cambios quirúrgicos** (leer archivo completo antes de editar, no refactor de oportunidad), (4) **ejecución orientada a metas** (criterios verificables, test que reproduce bugs antes del fix). Tabla operativa + mapeo a agentes SWL en `@docs/karpathy-principios.md`. Detalle + 9 ejemplos MAL→BIEN: `Skill("prevencion-sobreingenieria")` + `recursos/EXAMPLES.md`.
13
+
14
+ ### Lectura de documentos Office
15
+ Cuando necesites leer el **contenido** de un archivo `.docx`, `.xlsx`, `.xls` o `.pptx`, NUNCA uses el Read tool directamente (no soporta esos formatos). Usa:
16
+ ```bash
17
+ python scripts/vendor/markitdown/cli.py <ruta-al-archivo>
18
+ ```
19
+ El Read tool sigue siendo correcto para `.pdf` (≤20 páginas), `.ipynb` (Claude Code actual lee notebooks nativamente: celdas + outputs), `.md`, `.txt` y código fuente. Para más opciones y casos de uso consultar `Skill("swl-markitdown")`.
20
+
21
+ ### Versión SemVer del próximo release: decisión exclusiva del usuario
22
+ NUNCA asumir, sugerir como hecho consumado, ni escribir en ADRs/manifiestos/CHANGELOG el número del próximo release sin autorización explícita del usuario en la conversación actual. El agente puede **recomendar** el bump apropiado según SemVer estricto, pero la **decisión final del número es del usuario**. Detalle y origen del aprendizaje en `.planning/APRENDIZAJES.md` sesión 2026-05-16 (ADR-0021).
23
+
24
+ ---
25
+
26
+ ## Stack del proyecto
27
+
28
+ - **Runtime**: Node.js >=22.0.0 (ESM + CommonJS)
29
+ - **Tipo**: Sistema de scripts CLI + plugin para Claude Code (multi-runtime: Claude / Copilot / OpenCode / Codex / Gemini)
30
+ - **Formato fuente**: Markdown (agentes, skills, comandos, reglas) + JSON Schema (validación) + YAML (instintos)
31
+ - **Distribución**: npm package (`@saulwade/swl-ses`) + plugin Claude Code (`plugin.json`)
32
+ - **Dependencias runtime**: 1 directa (`docx ^9.6.1`; `pako` y `readable-stream` son transitivas de docx/jszip, no directas). Hooks y scripts/lib son zero-deps
33
+ - **Idioma de salida**: 100% español (México) para componentes SWL; skills oficiales de Anthropic en inglés
34
+ - **MCP del proyecto**: `code-review-graph` disponible vía `.mcp.json` (requiere `uvx`). Comportamiento: `@~/.claude/rules/usar-code-review-graph.md`
35
+
36
+ ## Comandos del proyecto
37
+
38
+ | Comando | Propósito |
39
+ |---|---|
40
+ | `npm test` | Tests unitarios (lib/, scripts/, hooks/) |
41
+ | `npm run test:all` | test + validar.js + validar-manifest.js |
42
+ | `npm run test:release` | test:all + test:userland + smoke (gate pre-publish) |
43
+ | `npm run test:validate` | `node scripts/validar.js` — validación estructural completa |
44
+ | `npm run test:manifest` | `node scripts/validar-manifest.js` — coherencia modulos/hooks |
45
+ | `npm run test:smoke` | Smoke test del instalador |
46
+ | `npm run gen-checklists` | Regenera `docs/checklists-consolidados/` desde reglas |
47
+ | `npm run gen-checklists:check` | Falla si hay drift (uso CI) |
48
+ | `npm run generate:docs` | Regenera `INVENTARIO.md` desde directorios |
49
+ | `npm run doctor` | Diagnóstico del sistema (`scripts/doctor.js`) |
50
+ | `npm run publish:dry` | Dry-run de publicación a npm + GitHub |
51
+ | `node scripts/verificar-release.js` | Gate pre-release: 15+ ubicaciones de versión, sincronización, AI-isms (si `SWL_AIISMS_GATE=1`) |
52
+ | `node scripts/generar-inventario.js` | Regenera contadores oficiales + catálogos de INVENTARIO/SALUD/llms.txt (NUNCA contar a mano) |
53
+ | `npm run gen-comandos` | Regenera los bloques `CATALOGO-COMANDOS` de COMANDOS.md y AGENTS.md desde frontmatter; `--check` (en test:all) detecta drift |
54
+ | `node scripts/auditar-clases-conocidas.js` | Gate anti-reincidencia de clases de bug documentadas (C1 fecha UTC, C2 comparación sin normalizar EOL, C3 bloqueo ciego en hooks). En test:all |
55
+ | `node scripts/canario-hooks.js [--smoke]` | Canario de hooks: grafo de requires distribuido en modulos.json (clase check-update); --smoke ejecuta los 49 en sandbox (en test:release) |
56
+ | `node scripts/derivar-feature-list.js` | Genera `.planning/feature-list.json` (derivado de `HOJA-RUTA.md`, gitignored, regenerable). Modo `--check` exit 2 si drift detectado. Consumido por `/swl:status metricas fases`. |
57
+
58
+ ## Code style
59
+
60
+ - **Nombres**: kebab-case para archivos; agentes SWL y vocabulario GSD (comandos `*-fase`, dir `.planning/fases/`) en español; paths runtime/técnicos de `.planning/` en inglés (`evolution/`, `auto-evolution/`, `user-profile/`, `archive/`, `traces/`, `sessions/`, `audit/`). Ver `@~/.claude/rules/analizar-directorios-antes-de-escribir.md § Eje técnico-runtime`
61
+ - **Zero-dependencies en `hooks/lib/`**: sin dependencias npm externas
62
+ - **Escrituras atómicas obligatorias**: usar `atomicWriteSync()` / `atomicWriteJSON()` de `hooks/lib/atomic-write.js`. NUNCA `fs.writeFileSync` directo en archivos del sistema
63
+ - **JSONL para alta frecuencia**: usar `fs.appendFileSync(ruta, JSON.stringify(evento) + '\n')` en hooks de telemetría/auditoría no `atomicWriteJSON` que reescribe todo
64
+ - **Fechas de artefactos generados SIEMPRE locales**: `toLocaleDateString('sv')`, NUNCA `toISOString().slice(0,10)`desde México la tarde ya es "mañana" en UTC (x7 sitios corregidos 2026-07-08)
65
+ - **Reemplazos con backticks/regex vía `node -e` en bash mangean escapes en silencio** ("aplica" sin aplicar): usar heredoc `node <<'EOF'` + `String.raw` (x3 incidentes 2026-07-08)
66
+ - **`plugin.json#agents`/`#skills` son alfabéticos**: insertar en posiciónningún gate valida el orden
67
+ - **YAML inline en frontmatter**: `tools: [Read, Write]`, `skillsInvocables: [skill-a]`. NUNCA CSV string ni mezcla con lista multilínea
68
+ - **Mensajes de commit**: imperativo en español, formato `<tipo>(<scope>): <descripción>`
69
+ - **Sin `console.log` en producción** — excepto en `scripts/`, `bin/`, `hooks/`, `gateway/` (CLIs y daemons)
70
+ - **Nombre completo del paquete en npx**: todo mensaje del installer/docs usa `npx -y @saulwade/swl-ses@latest <comando>`. **NUNCA** `npx swl-ses@latest <comando>` sin el scope `@saulwade/` — eso resuelve al paquete legacy DEPRECATED (v5.13.1) que aún existe en npm tras el rebrand de 2026-04-30. El `@latest` es indispensable: sin él npx reutiliza la primera versión cacheada y el usuario corre código viejo sin saberlo. El `-y` evita la prompt de confirmación en CI/scripts
71
+ - **Fixtures `secret`/`token` en tests deben ser en español** (`secreto`, `tokenBearer`, `clave-test`). El hook `calidad-pre-commit.js` matchea `\bsecret\s*[=:]\s*["'][^"'\s]{4,}["']` y `\btoken\s*[=:]\s*["'][^"'\s]{8,}["']` — `const secret = "valor"` se bloquea como credencial hardcodeada aunque sea fixture legítimo. Renombrar a español elude el regex sin bypass (alternativas reconocidas por el hook: `placeholder`, `example`, `fake_`, `dummy_`, `os.environ`/`process.env`). Coherente con regla global de idioma. Origen: PR #11 sesión 2026-05-13
72
+ - **Scopes de runtime SIEMPRE vía `scopesReales()` de `scripts/lib/detectar-runtime.js`** NUNCA el patrón manual `[runtime.global, path.resolve(runtime.local)]`: desde el HOME el local relativo resuelve al global propio (duplicados) o al de OTRO runtime (scope "proyecto" fantasma — el local de OpenClaude es el global de Claude Code; un uninstall de ese fantasma borraría el global). 8 sitios corregidos el 2026-07-03 (doctor ×5, actualizar ×2, TUI ×4)
73
+ - **`git add archivo && git commit -m "..."` en un solo comando bash NO actualiza el index antes del PreToolUse hook**: el hook `calidad-pre-commit.js` evalúa el contenido staged previo al `&&`, no el actualizado en la misma línea. Síntoma: commit bloqueado por contenido que ya corregiste vía Write/Edit pero seguía staged en versión antigua. Fix: separar en dos calls Bash (`git add archivo` ver resultado `git commit -m "..."`). NUNCA usar `--no-verify` para bypassear. Origen: PR #11 sesión 2026-05-13
74
+ - **Secretos compartidos entre clientes MCP viven como variables de entorno persistentes del SO, NO en archivos JSON** [v2 — 2026-05-18]: un MCP usado desde Cursor + Claude Code + VS Code tiene un config JSON POR cliente; duplicar `OBSIDIAN_API_KEY` en N archivos genera drift al regenerar la apiKey. Patrón: `setx OBSIDIAN_API_KEY <key>` (o `[Environment]::SetEnvironmentVariable(..., "User")` en PS7) → escribe a `HKCU\Environment` → todos los clientes la heredan al spawnear el binario. Los JSON OMITEN la clave `env` por completo (NO `env: {}` vacío — pasa literal a `child_process.spawn` y REEMPLAZA el env del padre, rompiendo la herencia). Regenerar apiKey = un `setx` + reiniciar clientes, sin tocar JSONs. Origen: 2026-05-18, 6h de errores 40101 por 3 configs descoordinados.
75
+
76
+ ## Convenciones de arquitectura
77
+
78
+ - **Precedencia de capas**: Reglas base (`reglas/`) Reglas por lenguaje (`reglas/{lang}/`) Skills (`habilidades/`) Instintos (`instintos/`). Cada capa puede especializar pero NUNCA contradecir las superiores
79
+ - **`reglas/` es la FUENTE; `~/.claude/rules/` son copias INSTALADAS** por el instalador: todo cambio a reglas base va en la fuente y se sincroniza — editar solo las copias es deuda volátil (el install las sobreescribe). Incluye las reglas globales personales del usuario (decisión 2026-06-12, commit `2f6b8de`las 37 base viajan en `reglas-core`). Origen: Fase 09 (APRENDIZAJES 2026-06-11)
80
+ - **Privilegio mínimo de agentes**: un agente delegado NUNCA excede los permisos declarados en su propio frontmatter. La cadena de delegación no escala privilegios. Ver `@reglas/seguridad-agentes.md`
81
+ - **Preservación de datos en actualización**: `.planning/sessions/`, `.planning/comms/`, `_userland/`, `instintos/proyecto.yaml`, `APRENDIZAJES.md` NUNCA se sobreescriben
82
+ - **Documentación obligatoria**: toda funcionalidad nueva DEBE documentarse en `MANUAL_USO.md`, `COMANDOS.md`, `CLAUDE.md` y `README.md` ANTES del commit
83
+ - **Criterio dominio para incorporar skills externos**: solo si dominio = ingeniería de software general. Pregunta de filtro: *¿le sirve esto a un ingeniero de software en cualquier proyecto de software?* (ML Ops, Data Science, finanzas, etc. descartar)
84
+ - **Filtro primario al analizar `temp/`**: antes de evaluar arquitectura, verificar **compatibilidad de dominio**. Si es incompatible, veredicto NINGUNA aplicabilidad sin análisis adicional
85
+ - **Variables de entorno opt-in enterprise**: ver `@docs/variables-entorno.md` (catálogo completo). Patrón obligatorio: `if (!process.env.VAR) return` — zero-config por defecto
86
+ - **Hooks SWL que invocan auditores Node deben cargar el auditor como módulo (`require()`), no como subproceso**: ~10× más rápido, errores estructurados (no parsing de stdout), tests directos del módulo. Excepción legítima: cuando el auditor es Python o Bash (`spawnSync`). Ejemplo aplicado en `hooks/claudemd-bloat-detector.js` que usa `require('./scripts/auditar-claudemd.js')` directamente. Antipatrón evitado: `spawnSync('node', [auditorPath, ...])` agrega ~50ms por invocación y obliga a parsear JSON de stdout
87
+ - **npm v10+ NO escribe debug logs cuando falla un script invocado** (`prepublishOnly`, `prepack`, etc.) — solo cuando falla npm-mismo (network, registry, auth). El default `loglevel=notice` mantiene `_logs/` vacío para errores de scripts. Para diagnóstico de `npm run publish:all` que falla en script propio, capturar stdout+stderr con redirección: PowerShell `npm run publish:all *>&1 | Tee-Object .planning/logs/publish-$(Get-Date -Format yyyyMMdd-HHmmss).log` o Bash `2>&1 | tee`. Alternativa permanente: `npm config set loglevel verbose`
88
+ - **`package.json#files` debe incluir TODOS los directorios referenciados por `bin/`, `hooks/`, `scripts/` o `comandos/`**: si un binario hace `require('./gateway/foo')` pero `gateway/` no está listado en `files`, **el módulo se omite del tarball npm y el binario falla con MODULE_NOT_FOUND tras instalación pública** aunque la suite local pase. Bug latente histórico: `/swl:cron`, `/swl:gateway` e `/swl:inbox` instruyen `require('./gateway/...')` y rompían en npm porque `gateway/` no estaba en `files` desde versiones previas. Revelado al agregar `bin/swl-webhook-server` (v1.4.0). Verificar antes de cada release: `npm pack --dry-run | grep -E "^npm notice [0-9].*[Bb] (bin|gateway|hooks|scripts|comandos)/"` debe listar todos los directorios reales referenciados. Gate automatizable en `scripts/verificar-release.js`. Origen: PR #15 sesión 2026-05-13
89
+ - **Comandos `/swl:*` invocan vía CLI cross-scope, NUNCA rutas relativas al proyecto**: dentro de fenced code blocks de `comandos/swl/*.md` usar `swl-ses <sub>` (resolución: repo madre → bin en PATH → `npx -y @saulwade/swl-ses@latest <sub>`), no `node scripts/...` ni `require('./hooks/...')` esas rutas rompen en instalación global/downstream (gates SDD G0/G1, telemetría, CI). Gate bloqueante en `scripts/validar.js §7b` (`auditar-invocaciones-comandos.js`); excluye SELF_DEV `{release, contribuir, evaluar-skill, reflect-skills}`. Wrappers en `scripts/cli/` se distribuyen SOLO vía npm (`package.json#files`), NO se cuentan en INVENTARIO ni en `modulos.json`; registro único en `bin/swl-ses.js`. Detalle: `@docs/invocacion-cli-cross-scope.md`. Origen: v2.2.0
90
+ - **Componentes evolucionados: merge, no overwrite (invariante)**: el instalador NUNCA sobrescribe un componente con evolución del usuario (global o proyecto) — usa merge (preserve + `.evolved-diff.txt`). Distingue evolución de usuario (A) de shipped-evolved de fábrica (B) por hash del cuerpo canónico (`manifiestos/canonical-hashes.json`); el fuente NO porta marcadores `evolved` (gate inverso en `validar.js`). Detalle: ADR-0040. Origen: Fase 16
91
+
92
+ ## Referencias a docs clave (cargar bajo demanda con `@`)
93
+
94
+ - `@README.md` — overview público y quickstart
95
+ - `@MANUAL_USO.md` — manual operacional completo
96
+ - `@INSTALACION.md` — instalación, perfiles, configuración
97
+ - `@COMANDOS.md` — referencia detallada de cada `/swl:*`
98
+ - `@AGENTS.md` — catálogo de agentes con capacidades
99
+ - `@INVENTARIO.md` — conteos oficiales (regenerado por script)
100
+ - `@docs/variables-entorno.md` — variables opt-in completas
95
101
  - `@docs/CI-CD-SETUP.md` — setup de pipelines
96
- - `@.planning/adrs/README.md` — índice de decisiones arquitecturales
97
-
98
- ---
99
-
100
- ## Qué es este repositorio
101
-
102
- Sistema de ingeniería de software auto-evolutivo multi-runtime polyglot (SDLC completo).
103
- 11 lenguajes, 7 runtimes (Claude, OpenClaude, OpenCode, Gemini, Cursor, Codex, Copilot), 60 agentes, 182 skills, 45 comandos, 77 reglas, 49 hooks.
104
-
105
- ## Estructura del repositorio
106
-
107
- ```
108
- agentes/ habilidades/ comandos/swl/ contextos/ instintos/
109
- reglas/ hooks/ schemas/ manifiestos/ plantillas/
110
- scripts/ bin/ _userland/ .claude/ .planning/
111
- ```
112
-
113
- ## Flujos de trabajo
114
-
115
- **Feature completa**: orquestador → discovery → PRD → arquitectura → plan → implementación (paralelo) → calidad (paralelo) → cierre
116
- **Fases GSD**: discutirplanearejecutarverificar
117
- **Frontend**: investigador-uxdisenador-uiaccesibilidadfrontend-* → rendimiento
118
- **Backend**: backend-apibackend-python/nodebackend-workersdatos
119
- **Mobile**: producto-prdmobile-cross (decisión) mobile-android/iostdd-qa
120
-
121
- ## Comandos del sistema (/swl:*)
122
-
123
- Catálogo completo de 45 comandos `/swl:*` en `@COMANDOS.md`. Atajos mentales por categoría:
124
-
125
- - **Ciclo GSD por fase**: `discutir-fase` → `planear-fase` → `ejecutar-fase` → `verificar` (con discovery routing, modo iterativo `--iterative` y `--until-converge`).
126
- - **Anti-context-rot**: `checkpoint`, `compactar`.
127
- - **Aprendizaje**: `aprender`, `evolucionar`, `autoresearch`, `reflect-skills`.
128
- - **Calidad**: `revisar`, `verificar`, `nemesis` (auditoría Feynman + State, opcional `--remediar`), `deuda-codigo` (cosecha de marcadores `simplificado:`).
129
- - **Diagnóstico**: `salud`, `metricas`, `dashboard`, `evolucion-estado`.
130
- - **Release**: `release`, `configurar-ci`.
131
- - **Conocimiento**: `wiki`, `mapear-codebase`, `skill-search`, `ayuda`.
132
-
133
- Para flags exactos y semántica de cada comando ver `@COMANDOS.md` y `@MANUAL_USO.md`.
134
-
135
- ## Reglas obligatorias (37 base + 40 por lenguaje)
136
-
137
- Las reglas globales del usuario en `~/.claude/rules/` se cargan automáticamente
138
- y aplican a todos los proyectos. Las reglas del sistema en `reglas/` se cargan
139
- por matcher de archivos o vía `@reglas/<nombre>.md` desde el CLAUDE.md del
140
- proyecto. Reglas de mayor uso:
141
-
142
- | Regla | Carga cuando |
143
- |-------|-------------|
144
- | `brevedad-output.md` | Siempre — idioma español, eficiencia de tokens |
145
- | `seguridad.md` / `seguridad-agentes.md` | `*.py`, `*.ts`, `auth/`, agentes autónomos |
146
- | `arreglar-al-detectar.md` | Siempre detectar informar → arreglar en mismo turno |
147
- | `analisis-previo-tareas-grandes.md` | Solicitudes >10 archivos / >500 LOC / cross-módulo |
148
- | `usar-context7.md` | Al generar código que importe librerías externas |
149
- | `git-workflow.md` | Siempre |
150
- | `skills-estandar.md` / `fragmentos-compartidos.md` | Crear/auditar skills o fragmentos |
151
- | `registro-componentes-nuevos.md` | Crear cualquier componente nuevo (agente/skill/comando/hook/regla) registro obligatorio en manifiestos + plugin.json + INVENTARIO en mismo commit |
152
- | `auditorias-documentales-estructurales.md` | Ejecutar verificadores docs/release/manifestgates de profundidad y cobertura completa (no muestra). Aplica reglas anti-cosméticas a auditorías |
153
-
154
- Catálogo completo y matchers en `@INVENTARIO.md` sección Reglas.
155
-
156
- <!-- La regla de la sección "Uso obligatorio del sistema SWL" NO se importa con @: la copia global ya carga sola; el @import duplicaba ~250 líneas/sesión. Depurado Fase 09 (commit 7273c9e). -->
157
-
158
- ## Estrategia de modelos por nivel de criticidad (Model-Tier)
159
-
160
- Asignar el modelo correcto a cada agente según la criticidad e irreversibilidad de la tarea.
161
-
162
- | Nivel | Alias (resuelve a) | Campo en frontmatter | Agentes SWL | Criterio |
163
- |-------|--------|---------------------|-------------|----------|
164
- | **Frontier** | `fable` (hoy Fable 5) | `model: fable` | orquestador (alterno: `opus`) | Coordinación central multi-agente: routing, scope, gates HITL — las decisiones más caras de corregir |
165
- | **Crítico** | `opus` (hoy Opus 4.8) | `model: opus` | arquitecto, revisor-seguridad, producto-prd | Decisiones irreversibles (arquitectura, seguridad, PRD) |
166
- | **Estándar** | `sonnet` (hoy Sonnet 5) | `model: sonnet` | backend-*, frontend-*, mobile-*, tdd-qa, revisores de lenguaje | Implementación y revisión |
167
- | **Ligero** | `haiku` (hoy Haiku 4.5) | `model: haiku` | notificador, resolutor-build (búsquedas) | Operaciones deterministas rápidas |
168
- | **Heredado** | (del padre) | `model: inherit` | Sub-agentes invocados por el orquestador | El padre decide |
169
-
170
- **Por qué alias y no ID pineado**: el frontmatter usa alias (`fable`/`opus`/`sonnet`/`haiku`), no IDs completos. El alias *resuelve al modelo vigente de su familia y se actualiza solo* ([doc oficial](https://code.claude.com/docs/en/model-config): "aliases point to the recommended version and update over time"). Esto elimina la migración manual en cada release de modelo (antes: opus 4.7→4.8, sonnet 4.6→5). En Bedrock/Vertex el alias resuelve al modelo que ese proveedor sí ofrece, evitando IDs inexistentes; y degrada limpio en versiones antiguas de Claude Code. **Caveat**: los alias son un constructo de Claude Code, no de la API cruda — el código que llama a la API/SDK directamente (`gateway/agent-executor.js`, tablas de precios/telemetría) sí usa el ID completo (`claude-sonnet-5`).
171
-
172
- **Reglas de asignación**: coordinación central (solo orquestador) Fable; decisiones no reversibles → Opus; código → Sonnet; búsqueda/notificación → Haiku.
173
- NUNCA usar un tier superior para tareas que el inferior resuelve igual de bien (Fable no se propaga a sub-agentes).
174
-
175
- **Workflow Opus 4.8 / Sonnet 5**: tratar como ingeniero al que se delega (spec completa: intent + constraints + acceptance criteria + file locations). Sigue instrucciones literalmente — eliminar ambigüedad. Effort levels nativos: `low | medium | high | xhigh | max` (Sonnet 5 y Opus 4.8; Sonnet 4.6 no soportaba `xhigh`).
176
-
177
- ---
178
-
179
- ## Convenciones operacionales
180
-
181
- Detalle completo en `@docs/convenciones-operacionales.md`. Resumen mínimo:
182
-
183
- - **Score mínimo de calidad**: **9.0/10** para aprobar trabajo.
184
- - **Modos de desarrollo**: `dev`, `review`, `research` (vía `/swl:contexto`).
185
- - **`respositorios-git/` y `temp/` son material de referencia** — no modificar ni commitear.
186
- - **Dependencias externas educativas son opt-in NO-dependencia** el sistema funciona sin ellas.
187
- - **Patrón "validar antes de invocar"** para herramientas externas opt-in (markitdown, MinerU, gh).
188
- - **`skillsInvocables` requiere `Skill` en `tools:`** del agente.
189
-
190
- ## Mapa de propagación de cambios
191
-
192
- Al modificar o agregar cualquier componente del sistema, **invocar
193
- `Skill("doc-sync")` antes del commit final** para cargar el protocolo
194
- proactivo completo. La tabla y checklist completos viven en
195
- `@docs/mapa-propagacion.md` para mantener este archivo bajo el umbral
196
- de 200 líneas (regla `auditar-claudemd.js`).
197
-
198
- Resumen mínimo para uso inmediato:
199
-
200
- - Cualquier componente nuevo o modificado (agente / skill / comando / hook / regla / schema / variable `SWL_*` / ADR / dependencia opt-in): consultar tabla completa en `@docs/mapa-propagacion.md` para saber qué archivos tocar.
201
- - **Skill responsable**: `Skill("doc-sync") § Protocolo proactivo` (sub-secciones Tipo 1 a Tipo 8) tiene el detalle prescriptivo.
202
- - **Antes de commit estructural**: regenerar inventario, validar manifiestos, verificar evolución (si tocó skill/agente), correr verificador docs-vs-código, suite completa, gate de release. Checklist exacto en `@docs/mapa-propagacion.md § Checklist único`.
203
- - Si cualquier gate falla, **NO commitear** hasta corregir. Regla `arreglar-al-detectar.md` exige resolver en mismo turno.
204
-
205
- <!-- code-review-graph MCP tools -->
206
- ## MCP Tools: code-review-graph
207
-
208
- **IMPORTANT: This project has a knowledge graph. ALWAYS use the
209
- code-review-graph MCP tools BEFORE using Grep/Glob/Read to explore
210
- the codebase.** The graph is faster, cheaper (fewer tokens), and gives
211
- you structural context (callers, dependents, test coverage) that file
212
- scanning cannot.
213
-
214
- ### When to use graph tools FIRST
215
-
216
- - **Exploring code**: `semantic_search_nodes` or `query_graph` instead of Grep
217
- - **Understanding impact**: `get_impact_radius` instead of manually tracing imports
218
- - **Code review**: `detect_changes` + `get_review_context` instead of reading entire files
219
- - **Finding relationships**: `query_graph` with callers_of/callees_of/imports_of/tests_for
220
- - **Architecture questions**: `get_architecture_overview` + `list_communities`
221
-
222
- Fall back to Grep/Glob/Read **only** when the graph doesn't cover what you need.
223
-
224
- ### Key Tools
225
-
226
- | Tool | Use when |
227
- |------|----------|
228
- | `detect_changes` | Reviewing code changes — gives risk-scored analysis |
229
- | `get_review_context` | Need source snippets for review — token-efficient |
230
- | `get_impact_radius` | Understanding blast radius of a change |
231
- | `get_affected_flows` | Finding which execution paths are impacted |
232
- | `query_graph` | Tracing callers, callees, imports, tests, dependencies |
233
- | `semantic_search_nodes` | Finding functions/classes by name or keyword |
234
- | `get_architecture_overview` | Understanding high-level codebase structure |
235
- | `refactor_tool` | Planning renames, finding dead code |
236
-
237
- ### Workflow
238
-
239
- 1. The graph auto-updates on file changes (via hooks).
240
- 2. Use `detect_changes` for code review.
241
- 3. Use `get_affected_flows` to understand impact.
242
- 4. Use `query_graph` pattern="tests_for" to check coverage.
102
+ - `@docs/evidencia-valor.md` — medición de valor en campo (`swl-ses valor`), frontera de datos downstream↔repo madre
103
+ - `@.planning/adrs/README.md` — índice de decisiones arquitecturales
104
+
105
+ ---
106
+
107
+ ## Qué es este repositorio
108
+
109
+ Sistema de ingeniería de software auto-evolutivo multi-runtime polyglot (SDLC completo).
110
+ 11 lenguajes, 7 runtimes (Claude, OpenClaude, OpenCode, Gemini, Cursor, Codex, Copilot), 61 agentes, 181 skills, 47 comandos, 77 reglas, 49 hooks.
111
+
112
+ ## Estructura del repositorio
113
+
114
+ ```
115
+ agentes/ habilidades/ comandos/swl/ contextos/ instintos/
116
+ reglas/ hooks/ schemas/ manifiestos/ plantillas/
117
+ scripts/ bin/ _userland/ .claude/ .planning/
118
+ ```
119
+
120
+ ## Flujos de trabajo
121
+
122
+ **Feature completa**: orquestadordiscoveryPRDarquitectura → plan → implementación (paralelo) → calidad (paralelo) → cierre
123
+ **Fases GSD**: discutirplanearejecutarverificar
124
+ **Frontend**: investigador-uxdisenador-uiaccesibilidadfrontend-* → rendimiento
125
+ **Backend**: backend-apibackend-python/nodebackend-workersdatos
126
+ **Mobile**: producto-prd → mobile-cross (decisión) → mobile-android/ios → tdd-qa
127
+
128
+ ## Comandos del sistema (/swl:*)
129
+
130
+ Catálogo completo de 47 comandos `/swl:*` en `@COMANDOS.md`. Atajos mentales por categoría:
131
+
132
+ - **Ciclo GSD por fase**: `discutir-fase` → `planear-fase` `ejecutar-fase` `verificar` (con discovery routing, modo iterativo `--iterative` y `--until-converge`).
133
+ - **Anti-context-rot**: `checkpoint`, `compactar`.
134
+ - **Aprendizaje**: `aprender`, `evolucionar`, `autoresearch`, `reflect-skills`.
135
+ - **Calidad**: `revisar`, `verificar`, `nemesis` (auditoría Feynman + State, opcional `--remediar`), `deuda-codigo` (cosecha de marcadores `simplificado:`), `seguridad` (postura del proyecto completo), `fix` (triage y despacho de reparaciones), `predecir` (panel pre-implementación; `--abogado-diablo` critica la decisión).
136
+ - **Diagnóstico**: `salud`, `metricas`, `dashboard`, `evolucion-estado`.
137
+ - **Release**: `release`, `configurar-ci`.
138
+ - **Conocimiento**: `wiki`, `mapear-codebase`, `skill-search`, `ayuda`.
139
+
140
+ Para flags exactos y semántica de cada comando ver `@COMANDOS.md` y `@MANUAL_USO.md`.
141
+
142
+ ## Reglas obligatorias (37 base + 40 por lenguaje)
143
+
144
+ Las reglas globales del usuario en `~/.claude/rules/` se cargan automáticamente
145
+ y aplican a todos los proyectos. Las reglas del sistema en `reglas/` se cargan
146
+ por matcher de archivos o vía `@reglas/<nombre>.md` desde el CLAUDE.md del
147
+ proyecto. Reglas de mayor uso:
148
+
149
+ | Regla | Carga cuando |
150
+ |-------|-------------|
151
+ | `brevedad-output.md` | Siempre idioma español, eficiencia de tokens |
152
+ | `seguridad.md` / `seguridad-agentes.md` | `*.py`, `*.ts`, `auth/`, agentes autónomos |
153
+ | `arreglar-al-detectar.md` | Siempre detectar informar arreglar en mismo turno |
154
+ | `analisis-previo-tareas-grandes.md` | Solicitudes >10 archivos / >500 LOC / cross-módulo |
155
+ | `usar-context7.md` | Al generar código que importe librerías externas |
156
+ | `git-workflow.md` | Siempre |
157
+ | `skills-estandar.md` / `fragmentos-compartidos.md` | Crear/auditar skills o fragmentos |
158
+ | `registro-componentes-nuevos.md` | Crear cualquier componente nuevo (agente/skill/comando/hook/regla)registro obligatorio en manifiestos + plugin.json + INVENTARIO en mismo commit |
159
+ | `auditorias-documentales-estructurales.md` | Ejecutar verificadores docs/release/manifest — gates de profundidad y cobertura completa (no muestra). Aplica reglas anti-cosméticas a auditorías |
160
+
161
+ Catálogo completo y matchers en `@INVENTARIO.md` sección Reglas.
162
+
163
+ <!-- La regla de la sección "Uso obligatorio del sistema SWL" NO se importa con @: la copia global ya carga sola; el @import duplicaba ~250 líneas/sesión. Depurado Fase 09 (commit 7273c9e). -->
164
+
165
+ ## Estrategia de modelos (Model-Tier)
166
+
167
+ Tiers por alias (se actualizan solos, NUNCA ID pineado en frontmatter): `fable` solo orquestador (coordinación central); `opus` decisiones irreversibles (arquitecto, revisor-seguridad, producto-prd, abogado-diablo); `sonnet` implementación y revisión; `haiku` operaciones deterministas; `inherit` sub-agentes del orquestador. NUNCA un tier superior para lo que el inferior resuelve igual. Detalle (alias vs API cruda, workflow de delegación, effort levels): `@docs/model-tier.md`.
168
+
169
+ ---
170
+
171
+ ## Convenciones operacionales
172
+
173
+ Detalle completo en `@docs/convenciones-operacionales.md`. Resumen mínimo:
174
+
175
+ - **Score mínimo de calidad**: **9.0/10** para aprobar trabajo.
176
+ - **Modos de desarrollo**: `dev`, `review`, `research` (vía `/swl:contexto`).
177
+ - **`respositorios-git/` y `temp/` son material de referencia** — no modificar ni commitear.
178
+ - **Dependencias externas educativas son opt-in NO-dependencia** el sistema funciona sin ellas.
179
+ - **Patrón "validar antes de invocar"** para herramientas externas opt-in (markitdown, MinerU, gh).
180
+ - **`skillsInvocables` requiere `Skill` en `tools:`** del agente.
181
+
182
+ ## Mapa de propagación de cambios
183
+
184
+ Al modificar o agregar cualquier componente del sistema, **invocar
185
+ `Skill("doc-sync")` antes del commit final** para cargar el protocolo
186
+ proactivo completo. La tabla y checklist completos viven en
187
+ `@docs/mapa-propagacion.md` para mantener este archivo bajo el umbral
188
+ de 200 líneas (regla `auditar-claudemd.js`).
189
+
190
+ Resumen mínimo para uso inmediato:
191
+
192
+ - Cualquier componente nuevo o modificado (agente / skill / comando / hook / regla / schema / variable `SWL_*` / ADR / dependencia opt-in): consultar tabla completa en `@docs/mapa-propagacion.md` para saber qué archivos tocar.
193
+ - **Skill responsable**: `Skill("doc-sync") § Protocolo proactivo` (sub-secciones Tipo 1 a Tipo 8) tiene el detalle prescriptivo.
194
+ - **Antes de commit estructural**: regenerar inventario, validar manifiestos, verificar evolución (si tocó skill/agente), correr verificador docs-vs-código, suite completa, gate de release. Checklist exacto en `@docs/mapa-propagacion.md § Checklist único`.
195
+ - Si cualquier gate falla, **NO commitear** hasta corregir. Regla `arreglar-al-detectar.md` exige resolver en mismo turno.