@saulwade/swl-ses 1.5.1 → 1.6.0

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 (155) hide show
  1. package/CLAUDE.md +225 -209
  2. package/README.md +578 -561
  3. package/agentes/arquitecto-swl.md +33 -1
  4. package/agentes/nemesis-auditor-swl.md +59 -19
  5. package/bin/swl-mcp-server.js +214 -214
  6. package/bin/swl-ses.js +49 -7
  7. package/comandos/swl/.evolved.json +22 -22
  8. package/comandos/swl/contribuir.md +233 -233
  9. package/comandos/swl/nemesis.md +230 -56
  10. package/gateway/lib/event-channel.js +191 -191
  11. package/habilidades/backend-production-resilience/SKILL.md +288 -288
  12. package/habilidades/benchmark-memoria/SKILL.md +186 -186
  13. package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
  14. package/habilidades/doubt-driven-review/SKILL.md +171 -171
  15. package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
  16. package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
  17. package/habilidades/eval-framework/SKILL.md +212 -212
  18. package/habilidades/feynman-auditor-swl/SKILL.md +123 -123
  19. package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -108
  20. package/habilidades/harness-claude-code/SKILL.md +299 -299
  21. package/habilidades/infra-github-actions/SKILL.md +166 -166
  22. package/habilidades/legacy-code-rescue/SKILL.md +267 -267
  23. package/habilidades/manejo-errores/.evolved.json +8 -8
  24. package/habilidades/meta-skills-estandar/SKILL.md +207 -4
  25. package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
  26. package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -163
  27. package/habilidades/nemesis-evaluacion-json/SKILL.md +266 -0
  28. package/habilidades/nemesis-redistribuir/SKILL.md +341 -0
  29. package/habilidades/node-experto/SKILL.md +94 -4
  30. package/habilidades/patrones-python/SKILL.md +229 -229
  31. package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
  32. package/habilidades/planear-fase/SKILL.md +319 -319
  33. package/habilidades/protocolo-revision-swl/SKILL.md +350 -276
  34. package/habilidades/release-semver/.evolved.json +8 -8
  35. package/habilidades/state-inconsistency-auditor-swl/SKILL.md +166 -166
  36. package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -147
  37. package/habilidades/tdd-workflow/SKILL.md +121 -4
  38. package/habilidades/testing-python/SKILL.md +340 -340
  39. package/habilidades/web-fetcher-routing/SKILL.md +75 -75
  40. package/hooks/check-update.js +31 -3
  41. package/hooks/claudemd-bloat-detector.js +161 -161
  42. package/hooks/extraccion-aprendizajes.js +11 -0
  43. package/hooks/lib/agent-routing.js +107 -107
  44. package/hooks/lib/auto-consolidator.js +335 -335
  45. package/hooks/lib/error-classifier.js +308 -308
  46. package/hooks/lib/merkle-audit.js +96 -96
  47. package/hooks/lib/provenance-tracker.js +191 -191
  48. package/hooks/lib/rate-limit-tracker.js +253 -253
  49. package/hooks/lib/resource-quota.js +122 -122
  50. package/hooks/lib/retry-jitter.js +165 -165
  51. package/hooks/lib/security-net.js +201 -201
  52. package/hooks/lib/skill-auditor.js +588 -588
  53. package/hooks/lib/sync-status.js +228 -228
  54. package/hooks/lib/taint-tracker.js +107 -107
  55. package/hooks/lib/text-similarity.js +241 -241
  56. package/hooks/lib/toon-compressor.js +245 -245
  57. package/hooks/registro-turnos.js +209 -209
  58. package/hooks/sugerir-regenerar-inventario.js +170 -170
  59. package/hooks/validar-formato-post-subagente.js +140 -140
  60. package/hooks/validar-memoria-hook.js +218 -218
  61. package/instintos/prompt-appendices.yaml +57 -57
  62. package/manifiestos/agent-output-schemas.json +57 -57
  63. package/manifiestos/modulos.json +1324 -1321
  64. package/manifiestos/skills-lock.json +1142 -1114
  65. package/package.json +5 -4
  66. package/plantillas/auditor-veto-template.md +105 -105
  67. package/plantillas/github-workflows/README.md +47 -47
  68. package/plantillas/github-workflows/release-please.yml +44 -44
  69. package/plantillas/github-workflows/swl-ci.yml +107 -107
  70. package/plantillas/github-workflows/swl-security.yml +51 -51
  71. package/plugin.json +355 -351
  72. package/reglas/analisis-previo-tareas-grandes.md +172 -172
  73. package/reglas/arreglar-al-detectar.md +147 -147
  74. package/reglas/fragmentos-compartidos.md +152 -152
  75. package/reglas/harness-claude-code.md +213 -213
  76. package/reglas/registro-componentes-nuevos.md +192 -0
  77. package/reglas/usar-context7.md +226 -226
  78. package/schemas/diary-entry.schema.json +80 -80
  79. package/scripts/actualizar.js +110 -1
  80. package/scripts/audit-tools/audit-history.js +330 -330
  81. package/scripts/audit-tools/bundle-tracker.js +290 -290
  82. package/scripts/audit-tools/canary-monitor.js +352 -352
  83. package/scripts/audit-tools/code-profiler.js +605 -605
  84. package/scripts/audit-tools/dep-doctor.js +320 -320
  85. package/scripts/audit-tools/env-validator.js +206 -206
  86. package/scripts/audit-tools/lib/fs-walk.js +48 -48
  87. package/scripts/audit-tools/lib/output.js +23 -23
  88. package/scripts/audit-tools/migration-checker.js +392 -392
  89. package/scripts/audit-tools/pentest-scanner.js +1436 -1436
  90. package/scripts/benchmark-memoria.js +167 -167
  91. package/scripts/configurar-branch-protection.js +418 -418
  92. package/scripts/derivar-feature-list.js +489 -489
  93. package/scripts/desinstalar.js +105 -24
  94. package/scripts/detectar-aprendizajes-duplicados.js +151 -151
  95. package/scripts/doctor.js +27 -0
  96. package/scripts/field-report.js +199 -199
  97. package/scripts/generar-checklists-consolidados.js +273 -273
  98. package/scripts/generar-inventario.js +420 -420
  99. package/scripts/generar-matriz-lenguajes.js +271 -271
  100. package/scripts/instalador.js +55 -4
  101. package/scripts/lib/artefactos-python.js +43 -43
  102. package/scripts/lib/benchmark-metrics.js +160 -160
  103. package/scripts/lib/budget-enforcer.js +252 -252
  104. package/scripts/lib/configurar-ci.js +380 -380
  105. package/scripts/lib/contadores-inventario.js +217 -217
  106. package/scripts/lib/detectar-stack-detallado.js +307 -307
  107. package/scripts/lib/diary-entry.js +234 -234
  108. package/scripts/lib/eval-metrics-store.js +218 -218
  109. package/scripts/lib/eval-quality.js +171 -171
  110. package/scripts/lib/eval-schemas.js +144 -144
  111. package/scripts/lib/eval-self-correct.js +106 -106
  112. package/scripts/lib/eval-validator.js +185 -185
  113. package/scripts/lib/expandir-targets.js +71 -71
  114. package/scripts/lib/jaccard-similarity.js +98 -98
  115. package/scripts/lib/longmemeval-runner.js +125 -125
  116. package/scripts/lib/mcp_config.py +127 -0
  117. package/scripts/lib/npm-version.js +261 -261
  118. package/scripts/lib/paquetes-conocidos.js +50 -50
  119. package/scripts/lib/parsear-opciones.js +3 -0
  120. package/scripts/lib/prompt-builder.js +264 -264
  121. package/scripts/lib/rrf-fusion.js +175 -175
  122. package/scripts/lib/scoring-instintos.js +277 -277
  123. package/scripts/lib/semantic-search.js +252 -252
  124. package/scripts/lib/toml-merge.js +204 -204
  125. package/scripts/lib/transformadores/codex.js +375 -375
  126. package/scripts/lib/transformadores/cursor.js +359 -359
  127. package/scripts/lib/ui.js +148 -22
  128. package/scripts/limpiar-artefactos-python.js +131 -131
  129. package/scripts/mcp-orchestrator.py +8 -18
  130. package/scripts/mcp-pool-manager.py +12 -23
  131. package/scripts/mcp-server/README.md +170 -170
  132. package/scripts/mcp-server/auth.js +105 -105
  133. package/scripts/mcp-server/cache.js +106 -106
  134. package/scripts/mcp-server/telemetry.js +78 -78
  135. package/scripts/migrar-csv-a-array.js +168 -168
  136. package/scripts/migrar-fase-dominio.js +201 -201
  137. package/scripts/publicar.js +511 -511
  138. package/scripts/run-eval.js +141 -141
  139. package/scripts/tui/componentes/selector-multi.js +189 -0
  140. package/scripts/tui/componentes/selector-unico.js +158 -0
  141. package/scripts/tui/ejecutores.js +375 -0
  142. package/scripts/tui/index.js +162 -0
  143. package/scripts/tui/lib/colores.js +129 -0
  144. package/scripts/tui/lib/render.js +264 -0
  145. package/scripts/tui/lib/teclas.js +113 -0
  146. package/scripts/tui/pantallas/inspect.js +173 -0
  147. package/scripts/tui/pantallas/install-wizard.js +334 -0
  148. package/scripts/tui/pantallas/menu-principal.js +52 -0
  149. package/scripts/tui/pantallas/progreso.js +274 -0
  150. package/scripts/tui/pantallas/resumen.js +132 -0
  151. package/scripts/tui/pantallas/uninstall-wizard.js +208 -0
  152. package/scripts/tui/pantallas/update-wizard.js +232 -0
  153. package/scripts/tui/pantallas/welcome.js +187 -0
  154. package/scripts/validar-userland-vacio.js +110 -110
  155. package/scripts/verificar-docs-vs-codigo.js +425 -0
package/CLAUDE.md CHANGED
@@ -1,209 +1,225 @@
1
- # CLAUDE.md — @saulwade/swl-ses v1.5.1
2
-
3
- ## Reglas de máxima prioridad (aplican SIEMPRE, sin excepción)
4
-
5
- ### Idioma obligatorio: español de México
6
- Todo contenido generado DEBE ser en español de México: respuestas, código comentado, mensajes de commit, descripciones de PR, documentación y comunicación con el usuario. Usar ortografía correcta con acentos, signos de puntuación y gramática normativa. Evitar anglicismos innecesarios y traducciones literales del inglés. Esta regla tiene prioridad sobre cualquier otra instrucción de idioma.
7
-
8
- ### Uso obligatorio del sistema SWL
9
- Toda tarea DEBE usar el sistema SWL completo: agentes especializados, habilidades, hooks y comandos `/swl:*`. NO hacer trabajo directo que un agente SWL especializado haría mejor. Para tareas complejas: `orquestador-swl`. Para implementación: `implementador-swl` o el agente de stack. Para debugging: `depurador-swl`. Para revisión: `revisor-codigo-swl`. Para planificación: `planificador-swl`. Cargar skills con `Skill("nombre")` antes de implementar.
10
-
11
- ### Investigar antes de editar
12
- Investigar el codebase ANTES de editar. NUNCA modificar código que no se ha leído primero. Leer el archivo completo, entender el contexto, y solo entonces hacer cambios.
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
- ---
22
-
23
- ## Stack del proyecto
24
-
25
- - **Runtime**: Node.js >=22.0.0 (ESM + CommonJS)
26
- - **Tipo**: Sistema de scripts CLI + plugin para Claude Code (multi-runtime: Claude / Copilot / OpenCode / Codex / Gemini)
27
- - **Formato fuente**: Markdown (agentes, skills, comandos, reglas) + JSON Schema (validación) + YAML (instintos)
28
- - **Distribución**: npm package (`@saulwade/swl-ses`) + plugin Claude Code (`plugin.json`)
29
- - **Dependencias runtime**: `docx ^9.6.1`, `pako ^2.1.0`, `readable-stream ^4.7.0` (mínimas; los hooks tienen zero-deps)
30
- - **Idioma de salida**: 100% español (México) para componentes SWL; skills oficiales de Anthropic en inglés
31
-
32
- ## Comandos del proyecto
33
-
34
- | Comando | Propósito |
35
- |---|---|
36
- | `npm test` | Tests unitarios (lib/, scripts/, hooks/) |
37
- | `npm run test:all` | test + validar.js + validar-manifest.js |
38
- | `npm run test:release` | test:all + test:userland + smoke (gate pre-publish) |
39
- | `npm run test:validate` | `node scripts/validar.js` — validación estructural completa |
40
- | `npm run test:manifest` | `node scripts/validar-manifest.js` coherencia modulos/hooks |
41
- | `npm run test:smoke` | Smoke test del instalador |
42
- | `npm run gen-checklists` | Regenera `docs/checklists-consolidados/` desde reglas |
43
- | `npm run gen-checklists:check` | Falla si hay drift (uso CI) |
44
- | `npm run generate:docs` | Regenera `INVENTARIO.md` desde directorios |
45
- | `npm run doctor` | Diagnóstico del sistema (`scripts/doctor.js`) |
46
- | `npm run publish:dry` | Dry-run de publicación a npm + GitHub |
47
- | `node scripts/verificar-release.js` | Gate pre-release: 15+ ubicaciones de versión, sincronización, AI-isms (si `SWL_AIISMS_GATE=1`) |
48
- | `node scripts/generar-inventario.js` | Regenera contadores oficiales (NUNCA contar a mano) |
49
- | `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:metricas fases`. |
50
-
51
- ## Code style
52
-
53
- - **Nombres**: kebab-case para archivos, agentes SWL en español, GSD en inglés
54
- - **Zero-dependencies en `hooks/lib/`**: sin dependencias npm externas
55
- - **Escrituras atómicas obligatorias**: usar `atomicWriteSync()` / `atomicWriteJSON()` de `hooks/lib/atomic-write.js`. NUNCA `fs.writeFileSync` directo en archivos del sistema
56
- - **JSONL para alta frecuencia**: usar `fs.appendFileSync(ruta, JSON.stringify(evento) + '\n')` en hooks de telemetría/auditoría no `atomicWriteJSON` que reescribe todo
57
- - **YAML inline en frontmatter**: `tools: [Read, Write]`, `skillsInvocables: [skill-a]`. NUNCA CSV string ni mezcla con lista multilínea
58
- - **Mensajes de commit**: imperativo en español, formato `<tipo>(<scope>): <descripción>`
59
- - **Sin `console.log` en producción** excepto en `scripts/`, `bin/`, `hooks/`, `gateway/` (CLIs y daemons)
60
- - **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
61
- - **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
62
- - **`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
63
- - **Secretos per-equipo van en `.claude/settings.local.json` (gitignored), no en `.claude/settings.json` (versionado)**: el archivo `settings.json` se sincroniza entre equipos vía git, así que NO puede contener valores per-máquina como apiKeys. Claude Code hace **deep merge** entre `settings.json` y `settings.local.json` el local sobrescribe solo las keys que define. Patrón obligatorio para `OBSIDIAN_API_KEY` y similares: `settings.json` declara el server MCP con `env: {}` vacío; `settings.local.json` (cada equipo el suyo) tiene `mcpServers.obsidian.env.OBSIDIAN_API_KEY` con el valor del plugin Local REST API de ESE equipo. **NUNCA** poner dos `OBSIDIAN_API_KEY` en el mismo `env` — produce JSON inválido (síntoma: ConnectionRefused o 40101 silenciosos). Origen: PR #19 sesión 2026-05-13 (bug detectado al cambiar de WISC a WISCLAP)
64
-
65
- ## Convenciones de arquitectura
66
-
67
- - **Precedencia de capas**: Reglas base (`reglas/`) → Reglas por lenguaje (`reglas/{lang}/`) → Skills (`habilidades/`) → Instintos (`instintos/`). Cada capa puede especializar pero NUNCA contradecir las superiores
68
- - **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`
69
- - **Preservación de datos en actualización**: `.planning/sessions/`, `.planning/comms/`, `_userland/`, `instintos/proyecto.yaml`, `APRENDIZAJES.md` NUNCA se sobreescriben
70
- - **Documentación obligatoria**: toda funcionalidad nueva DEBE documentarse en `MANUAL_USO.md`, `COMANDOS.md`, `CLAUDE.md` y `README.md` ANTES del commit
71
- - **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)
72
- - **Filtro primario al analizar `temp/`**: antes de evaluar arquitectura, verificar **compatibilidad de dominio**. Si es incompatible, veredicto NINGUNA aplicabilidad sin análisis adicional
73
- - **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
74
- - **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
75
- - **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`
76
- - **`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
77
-
78
- ## Referencias a docs clave (cargar bajo demanda con `@`)
79
-
80
- - `@README.md` overview público y quickstart
81
- - `@MANUAL_USO.md` — manual operacional completo
82
- - `@INSTALACION.md` instalación, perfiles, configuración
83
- - `@COMANDOS.md` referencia detallada de cada `/swl:*`
84
- - `@AGENTS.md` catálogo de agentes con capacidades
85
- - `@INVENTARIO.md` conteos oficiales (regenerado por script)
86
- - `@CONTRIBUTING.md` guía para colaboradores
87
- - `@docs/variables-entorno.md` variables opt-in completas
88
- - `@docs/CI-CD-SETUP.md` — setup de pipelines
89
- - `@.planning/adrs/README.md` índice de decisiones arquitecturales
90
-
91
- ---
92
-
93
- ## Qué es este repositorio
94
-
95
- Sistema de ingeniería de software auto-evolutivo multi-runtime polyglot (SDLC completo).
96
- 11 lenguajes, 7 runtimes (Claude, OpenClaude, OpenCode, Gemini, Cursor, Codex, Copilot), 60 agentes, 160 skills, 44 comandos, 65 reglas, 41 hooks.
97
-
98
- ## Estructura del repositorio
99
-
100
- ```
101
- agentes/ habilidades/ comandos/swl/ contextos/ instintos/
102
- reglas/ hooks/ schemas/ manifiestos/ plantillas/
103
- scripts/ bin/ _userland/ .claude/ .planning/
104
- ```
105
-
106
- ## Flujos de trabajo
107
-
108
- **Feature completa**: orquestador discovery → PRD → arquitectura → plan → implementación (paralelo) → calidad (paralelo) → cierre
109
- **Fases GSD**: discutir → planear → ejecutar → verificar
110
- **Frontend**: investigador-ux disenador-ui accesibilidad frontend-* rendimiento
111
- **Backend**: backend-api backend-python/node backend-workers datos
112
- **Mobile**: producto-prd → mobile-cross (decisión) → mobile-android/ios → tdd-qa
113
-
114
- ## Comandos del sistema (/swl:*)
115
-
116
- Para la lista completa con descripción ver `@COMANDOS.md`. Comandos más usados:
117
-
118
- | Comando | Propósito |
119
- |---------|-----------|
120
- | `/swl:nuevo-proyecto` | Iniciar proyecto nuevo desde cero con entrevista |
121
- | `/swl:adoptar-proyecto` | Incorporar proyecto existente: análisis automático + entrevista corta |
122
- | `/swl:discutir-fase` / `/swl:planear-fase` / `/swl:ejecutar-fase` / `/swl:verificar` | Ciclo GSD por fase. `discutir-fase` empieza con discovery routing (5 paths: extender / sin-fase / nueva / decomposición / mixto). `ejecutar-fase --iterative` activa modo per-task con review adversarial. `verificar` clasifica claims (TASK/FIX/TEST_OR_BUILD/FEATURE_GO) para evidencia proporcional. |
123
- | `/swl:checkpoint` / `/swl:compactar` | Anti-context-rot |
124
- | `/swl:claudemd` | Auditar/refactorizar/inicializar CLAUDE.md (audit, refactor, init-user, check) |
125
- | `/swl:aprender` / `/swl:evolucionar` / `/swl:autoresearch` | Aprendizaje y auto-evolución |
126
- | `/swl:salud` / `/swl:metricas` / `/swl:dashboard` | Diagnóstico y observabilidad |
127
- | `/swl:revisar` / `/swl:verificar` | Calidad de código (revisión por stack, verificación goal-backward). `/swl:verificar --full` activa parallel scorecard con 4 audits paralelos |
128
- | `/swl:nemesis` | Auditoría iterativa Feynman + State Inconsistency (loop hasta convergencia, ADR-0018). Flags: `--pass1`, `--pass2`, `--continue`, `--modulo <ruta>` |
129
- | `/swl:release` | Ciclo de release SemVer |
130
- | `/swl:configurar-ci` | Workflows CI/CD para proyectos del usuario |
131
- | `/swl:wiki` / `/swl:mapear-codebase` | Conocimiento de proyecto |
132
- | `/swl:ayuda` | Catálogo interactivo de comandos |
133
-
134
- ## Reglas obligatorias (25 base + 40 por lenguaje)
135
-
136
- Las reglas globales del usuario en `~/.claude/rules/` se cargan automáticamente
137
- y aplican a todos los proyectos. Las reglas del sistema en `reglas/` se cargan
138
- por matcher de archivos o vía `@reglas/<nombre>.md` desde el CLAUDE.md del
139
- proyecto. Reglas de mayor uso:
140
-
141
- | Regla | Carga cuando |
142
- |-------|-------------|
143
- | `usar-sistema-swl.md` | Siempre matriz operacional: tarea componente SWL obligatorio |
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
-
152
- Catálogo completo y matchers en `@INVENTARIO.md` sección Reglas.
153
-
154
- @reglas/usar-sistema-swl.md
155
-
156
- ## Estrategia de modelos por nivel de criticidad (Model-Tier)
157
-
158
- Asignar el modelo correcto a cada agente según la criticidad e irreversibilidad de la tarea.
159
-
160
- | Nivel | Modelo | Campo en frontmatter | Agentes SWL | Criterio |
161
- |-------|--------|---------------------|-------------|----------|
162
- | **Crítico** | `claude-opus-4-7` | `model: claude-opus-4-7` | orquestador, arquitecto, revisor-seguridad, producto-prd | Decisiones irreversibles (arquitectura, seguridad, PRD) |
163
- | **Estándar** | `claude-sonnet-4-6` | `model: claude-sonnet-4-6` | backend-*, frontend-*, mobile-*, tdd-qa, revisores de lenguaje | Implementación y revisión |
164
- | **Ligero** | `claude-haiku-4-5-20251001` | `model: claude-haiku-4-5-20251001` | notificador, resolutor-build (búsquedas) | Operaciones deterministas rápidas |
165
- | **Heredado** | (del padre) | `model: inherit` | Sub-agentes invocados por el orquestador | El padre decide |
166
-
167
- **Reglas de asignación**: decisiones no reversibles → Opus; código → Sonnet; búsqueda/notificación → Haiku.
168
- NUNCA usar Opus para tareas que Sonnet resuelve igual de bien.
169
-
170
- **Workflow Opus 4.7**: tratar como ingeniero al que se delega (spec completa: intent + constraints + acceptance criteria + file locations). Sigue instrucciones literalmente — eliminar ambigüedad. Effort levels nativos: `high | xhigh | max`.
171
-
172
- ---
173
-
174
- ## Convenciones operacionales
175
-
176
- - Score mínimo de calidad: **9.0/10** para aprobar trabajo
177
- - Modos de desarrollo: `dev`, `review`, `research` (vía `/swl:contexto`)
178
- - `respositorios-git/` y `temp/` son material de referencia no modificar ni commitear
179
- - Inventario completo: ver `@INVENTARIO.md` o `@.planning/ESTADO.md`
180
- - **Limpieza de registros resueltos**: no dejar items completados en listas de pendientes
181
- - **Dependencias externas educativas son opt-in NO-dependencia**: cuando se documenta un recurso externo (MCPs opcionales, plantillas comunitarias, indexadores externos) marcarlo explícitamente como **"NO es dependencia técnica de swl-ses"**. El sistema debe seguir funcionando sin ese recurso
182
- - **Patrón "validar antes de invocar"**: cualquier invocación a herramienta externa opt-in (markitdown, MinerU, gh, etc.) DEBE verificar primero (`command -v <bin>` / `try/catch execSync('<bin> --version')`) y, si no está disponible, **continuar con el flujo nativo de SWL sin emitir error al usuario**
183
- - **`skillsInvocables` requiere `Skill` en `tools:`**: si un agente declara `skillsInvocables: [...]` Y su cuerpo usa `Skill("nombre")`, debe incluir `Skill` en `tools:`. Verificar con `grep -c 'Skill(' agentes/X.md` >0
184
- - **Criterio gitignore para JSONL runtime vs baseline**: runtime telemetry (alta frecuencia, recreable) → gitignore. Baseline auditable (histórico crítico, decisiones, evidencia gobernanza) → trackear. Pregunta filtro: *si borro este archivo, ¿se pierde info que el sistema necesita reconstruir desde otra fuente?* Sí → trackear
185
-
186
- ## Mapa de propagación de cambios
187
-
188
- Al modificar un componente del sistema, verificar TODOS los archivos afectados.
189
-
190
- | Tipo de cambio | Archivos a verificar |
191
- |----------------|---------------------|
192
- | **Agente** | `plugin.json`, `manifiestos/modulos.json`, `INVENTARIO.md`, `AGENTS.md`, `SALUD.md`, `.planning/REPORTE-GRAFO.md` |
193
- | **Skill** | `plugin.json`, `manifiestos/modulos.json`, `INVENTARIO.md`, `CLAUDE.md` (si aplica al dominio) |
194
- | **Hook** | `plugin.json`, `.claude/settings.json`, `manifiestos/hooks-config.json` (event+matcher), `manifiestos/modulos.json` (ruta), `INVENTARIO.md`, `SALUD.md`. **AMBOS manifiestos son obligatorios** |
195
- | **Comando** | `COMANDOS.md`, `CLAUDE.md` (tabla de comandos), `INVENTARIO.md` |
196
- | **Regla** | `CLAUDE.md` (tabla de reglas), `INVENTARIO.md`, `SALUD.md` |
197
- | **Schema** | `INVENTARIO.md`, `SALUD.md` |
198
- | **Bump de versión** | 15+ ubicaciones checklist en `/swl:release` paso 6 |
199
- | **CLAUDE.md (cualquier capa)** | Verificar con `/swl:claudemd audit` antes de commit |
200
- | **Cualquier `npm publish`** | Ejecutar `node scripts/verificar-release.js` ANTES, no solo en release formal. Detecta discrepancias de contadores y versiones invisibles al ojo humano (caso real v1.3.0: 18 discrepancias detectadas) |
201
-
202
- Esta tabla es obligatoria. Omitir un archivo causa fallos en `/swl:salud`.
203
-
204
- ### Reglas auxiliares
205
-
206
- - **Regenerar inventario, nunca contar a mano**: antes de modificar contadores en CLAUDE.md/README.md/SALUD.md/AGENTS.md/package.json/plugin.json, ejecutar `node scripts/generar-inventario.js`. El script es la fuente de verdad
207
- - **Checklists consolidados se regeneran**: archivos en `docs/checklists-consolidados/` son derivados. Editar la regla origen y `npm run gen-checklists`. NO editar manualmente los generados
208
- - **Modelo por defecto headless**: scripts/bots externos invocan `claude -p --model claude-haiku-4-5-20251001 --effort low --max-budget-usd 0.50 --dangerously-skip-permissions`. Haiku 4.5 cuesta 5× menos
209
- - **File-based queue sobre PTY injection**: control remoto via `gateway/command-relay.js` → `.planning/inbox/cmd-*.json` `/swl:inbox`. Tmux solo opt-in avanzado (`scripts/inbox-tmux-inject.js` Linux/macOS)
1
+ # CLAUDE.md — @saulwade/swl-ses v1.6.0
2
+
3
+ ## Reglas de máxima prioridad (aplican SIEMPRE, sin excepción)
4
+
5
+ ### Idioma obligatorio: español de México
6
+ Todo contenido generado DEBE ser en español de México: respuestas, código comentado, mensajes de commit, descripciones de PR, documentación y comunicación con el usuario. Usar ortografía correcta con acentos, signos de puntuación y gramática normativa. Evitar anglicismos innecesarios y traducciones literales del inglés. Esta regla tiene prioridad sobre cualquier otra instrucción de idioma.
7
+
8
+ ### Uso obligatorio del sistema SWL
9
+ Toda tarea DEBE usar el sistema SWL completo: agentes especializados, habilidades, hooks y comandos `/swl:*`. NO hacer trabajo directo que un agente SWL especializado haría mejor. Para tareas complejas: `orquestador-swl`. Para implementación: `implementador-swl` o el agente de stack. Para debugging: `depurador-swl`. Para revisión: `revisor-codigo-swl`. Para planificación: `planificador-swl`. Cargar skills con `Skill("nombre")` antes de implementar.
10
+
11
+ ### Investigar antes de editar
12
+ Investigar el codebase ANTES de editar. NUNCA modificar código que no se ha leído primero. Leer el archivo completo, entender el contexto, y solo entonces hacer cambios.
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 ("este cambio sugiere MINOR"), pero la **decisión final del número es del usuario**.
23
+
24
+ Comportamiento correcto:
25
+ - Recomendar: "feature opt-in nuevo sugiere bump MINOR (v1.5.1 → v1.6.0)."
26
+ - Esperar autorización: "¿confirmas el bump?"
27
+ - Aplicar solo lo autorizado: usuario dice "v1.5.2", aplicar v1.5.2.
28
+
29
+ Comportamiento prohibido:
30
+ - Escribir "v1.6.0" en ADR/CHANGELOG/manifiestos basado en juicio propio del agente.
31
+ - Asumir que SemVer estricto sustituye la autorización del usuario.
32
+ - Sincronizar las 15+ ubicaciones de versión sin que el usuario confirme el número.
33
+
34
+ Origen: sesión 2026-05-16, ADR-0021. El agente asumió v1.6.0; el usuario eligió v1.5.2 al considerar que el cambio cerraba un bug observado con backward-compat estricta — decisión legítima del usuario que el agente no anticipó. Documentado como aprendizaje HIGH en APRENDIZAJES.md.
35
+
36
+ ---
37
+
38
+ ## Stack del proyecto
39
+
40
+ - **Runtime**: Node.js >=22.0.0 (ESM + CommonJS)
41
+ - **Tipo**: Sistema de scripts CLI + plugin para Claude Code (multi-runtime: Claude / Copilot / OpenCode / Codex / Gemini)
42
+ - **Formato fuente**: Markdown (agentes, skills, comandos, reglas) + JSON Schema (validación) + YAML (instintos)
43
+ - **Distribución**: npm package (`@saulwade/swl-ses`) + plugin Claude Code (`plugin.json`)
44
+ - **Dependencias runtime**: `docx ^9.6.1`, `pako ^2.1.0`, `readable-stream ^4.7.0` (mínimas; los hooks tienen zero-deps)
45
+ - **Idioma de salida**: 100% español (México) para componentes SWL; skills oficiales de Anthropic en inglés
46
+
47
+ ## Comandos del proyecto
48
+
49
+ | Comando | Propósito |
50
+ |---|---|
51
+ | `npm test` | Tests unitarios (lib/, scripts/, hooks/) |
52
+ | `npm run test:all` | test + validar.js + validar-manifest.js |
53
+ | `npm run test:release` | test:all + test:userland + smoke (gate pre-publish) |
54
+ | `npm run test:validate` | `node scripts/validar.js` validación estructural completa |
55
+ | `npm run test:manifest` | `node scripts/validar-manifest.js` coherencia modulos/hooks |
56
+ | `npm run test:smoke` | Smoke test del instalador |
57
+ | `npm run gen-checklists` | Regenera `docs/checklists-consolidados/` desde reglas |
58
+ | `npm run gen-checklists:check` | Falla si hay drift (uso CI) |
59
+ | `npm run generate:docs` | Regenera `INVENTARIO.md` desde directorios |
60
+ | `npm run doctor` | Diagnóstico del sistema (`scripts/doctor.js`) |
61
+ | `npm run publish:dry` | Dry-run de publicación a npm + GitHub |
62
+ | `node scripts/verificar-release.js` | Gate pre-release: 15+ ubicaciones de versión, sincronización, AI-isms (si `SWL_AIISMS_GATE=1`) |
63
+ | `node scripts/generar-inventario.js` | Regenera contadores oficiales (NUNCA contar a mano) |
64
+ | `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:metricas fases`. |
65
+
66
+ ## Code style
67
+
68
+ - **Nombres**: kebab-case para archivos, agentes SWL en español, GSD en inglés
69
+ - **Zero-dependencies en `hooks/lib/`**: sin dependencias npm externas
70
+ - **Escrituras atómicas obligatorias**: usar `atomicWriteSync()` / `atomicWriteJSON()` de `hooks/lib/atomic-write.js`. NUNCA `fs.writeFileSync` directo en archivos del sistema
71
+ - **JSONL para alta frecuencia**: usar `fs.appendFileSync(ruta, JSON.stringify(evento) + '\n')` en hooks de telemetría/auditoría no `atomicWriteJSON` que reescribe todo
72
+ - **YAML inline en frontmatter**: `tools: [Read, Write]`, `skillsInvocables: [skill-a]`. NUNCA CSV string ni mezcla con lista multilínea
73
+ - **Mensajes de commit**: imperativo en español, formato `<tipo>(<scope>): <descripción>`
74
+ - **Sin `console.log` en producción** excepto en `scripts/`, `bin/`, `hooks/`, `gateway/` (CLIs y daemons)
75
+ - **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
76
+ - **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
77
+ - **`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
78
+ - **Secretos per-equipo van en `.claude/settings.local.json` (gitignored), no en `.claude/settings.json` (versionado)**: el archivo `settings.json` se sincroniza entre equipos vía git, así que NO puede contener valores per-máquina como apiKeys. Claude Code hace **deep merge** entre `settings.json` y `settings.local.json` — el local sobrescribe solo las keys que define. Patrón obligatorio para `OBSIDIAN_API_KEY` y similares: `settings.json` declara el server MCP con `env: {}` vacío; `settings.local.json` (cada equipo el suyo) tiene `mcpServers.obsidian.env.OBSIDIAN_API_KEY` con el valor del plugin Local REST API de ESE equipo. **NUNCA** poner dos `OBSIDIAN_API_KEY` en el mismo `env` — produce JSON inválido (síntoma: ConnectionRefused o 40101 silenciosos). Origen: PR #19 sesión 2026-05-13 (bug detectado al cambiar de WISC a WISCLAP)
79
+
80
+ ## Convenciones de arquitectura
81
+
82
+ - **Precedencia de capas**: Reglas base (`reglas/`) Reglas por lenguaje (`reglas/{lang}/`) → Skills (`habilidades/`) → Instintos (`instintos/`). Cada capa puede especializar pero NUNCA contradecir las superiores
83
+ - **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`
84
+ - **Preservación de datos en actualización**: `.planning/sessions/`, `.planning/comms/`, `_userland/`, `instintos/proyecto.yaml`, `APRENDIZAJES.md` NUNCA se sobreescriben
85
+ - **Documentación obligatoria**: toda funcionalidad nueva DEBE documentarse en `MANUAL_USO.md`, `COMANDOS.md`, `CLAUDE.md` y `README.md` ANTES del commit
86
+ - **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)
87
+ - **Filtro primario al analizar `temp/`**: antes de evaluar arquitectura, verificar **compatibilidad de dominio**. Si es incompatible, veredicto NINGUNA aplicabilidad sin análisis adicional
88
+ - **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
89
+ - **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
90
+ - **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`
91
+ - **`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
92
+
93
+ ## Referencias a docs clave (cargar bajo demanda con `@`)
94
+
95
+ - `@README.md` overview público y quickstart
96
+ - `@MANUAL_USO.md` manual operacional completo
97
+ - `@INSTALACION.md` — instalación, perfiles, configuración
98
+ - `@COMANDOS.md` referencia detallada de cada `/swl:*`
99
+ - `@AGENTS.md` — catálogo de agentes con capacidades
100
+ - `@INVENTARIO.md` — conteos oficiales (regenerado por script)
101
+ - `@CONTRIBUTING.md` — guía para colaboradores
102
+ - `@docs/variables-entorno.md` — variables opt-in completas
103
+ - `@docs/CI-CD-SETUP.md` — setup de pipelines
104
+ - `@.planning/adrs/README.md` — índice de decisiones arquitecturales
105
+
106
+ ---
107
+
108
+ ## Qué es este repositorio
109
+
110
+ Sistema de ingeniería de software auto-evolutivo multi-runtime polyglot (SDLC completo).
111
+ 11 lenguajes, 7 runtimes (Claude, OpenClaude, OpenCode, Gemini, Cursor, Codex, Copilot), 60 agentes, 162 skills, 44 comandos, 66 reglas, 41 hooks.
112
+
113
+ ## Estructura del repositorio
114
+
115
+ ```
116
+ agentes/ habilidades/ comandos/swl/ contextos/ instintos/
117
+ reglas/ hooks/ schemas/ manifiestos/ plantillas/
118
+ scripts/ bin/ _userland/ .claude/ .planning/
119
+ ```
120
+
121
+ ## Flujos de trabajo
122
+
123
+ **Feature completa**: orquestador discovery PRD → arquitectura → plan → implementación (paralelo) → calidad (paralelo) → cierre
124
+ **Fases GSD**: discutir planear ejecutar verificar
125
+ **Frontend**: investigador-ux disenador-ui accesibilidad frontend-* rendimiento
126
+ **Backend**: backend-api backend-python/node backend-workers datos
127
+ **Mobile**: producto-prd mobile-cross (decisión) mobile-android/ios tdd-qa
128
+
129
+ ## Comandos del sistema (/swl:*)
130
+
131
+ Para la lista completa con descripción ver `@COMANDOS.md`. Comandos más usados:
132
+
133
+ | Comando | Propósito |
134
+ |---------|-----------|
135
+ | `/swl:nuevo-proyecto` | Iniciar proyecto nuevo desde cero con entrevista |
136
+ | `/swl:adoptar-proyecto` | Incorporar proyecto existente: análisis automático + entrevista corta |
137
+ | `/swl:discutir-fase` / `/swl:planear-fase` / `/swl:ejecutar-fase` / `/swl:verificar` | Ciclo GSD por fase. `discutir-fase` empieza con discovery routing (5 paths: extender / sin-fase / nueva / decomposición / mixto). `ejecutar-fase --iterative` activa modo per-task con review adversarial. `verificar` clasifica claims (TASK/FIX/TEST_OR_BUILD/FEATURE_GO) para evidencia proporcional. |
138
+ | `/swl:checkpoint` / `/swl:compactar` | Anti-context-rot |
139
+ | `/swl:claudemd` | Auditar/refactorizar/inicializar CLAUDE.md (audit, refactor, init-user, check) |
140
+ | `/swl:aprender` / `/swl:evolucionar` / `/swl:autoresearch` | Aprendizaje y auto-evolución |
141
+ | `/swl:salud` / `/swl:metricas` / `/swl:dashboard` | Diagnóstico y observabilidad |
142
+ | `/swl:revisar` / `/swl:verificar` | Calidad de código (revisión por stack, verificación goal-backward). `/swl:verificar --full` activa parallel scorecard con 4 audits paralelos |
143
+ | `/swl:nemesis` | Auditoría iterativa Feynman + State Inconsistency (loop hasta convergencia, ADR-0018). Flags: `--pass1`, `--pass2`, `--continue`, `--modulo <ruta>` |
144
+ | `/swl:release` | Ciclo de release SemVer |
145
+ | `/swl:configurar-ci` | Workflows CI/CD para proyectos del usuario |
146
+ | `/swl:wiki` / `/swl:mapear-codebase` | Conocimiento de proyecto |
147
+ | `/swl:ayuda` | Catálogo interactivo de comandos |
148
+
149
+ ## Reglas obligatorias (25 base + 40 por lenguaje)
150
+
151
+ Las reglas globales del usuario en `~/.claude/rules/` se cargan automáticamente
152
+ y aplican a todos los proyectos. Las reglas del sistema en `reglas/` se cargan
153
+ por matcher de archivos o vía `@reglas/<nombre>.md` desde el CLAUDE.md del
154
+ proyecto. Reglas de mayor uso:
155
+
156
+ | Regla | Carga cuando |
157
+ |-------|-------------|
158
+ | `usar-sistema-swl.md` | Siempre matriz operacional: tarea componente SWL obligatorio |
159
+ | `brevedad-output.md` | Siempre — idioma español, eficiencia de tokens |
160
+ | `seguridad.md` / `seguridad-agentes.md` | `*.py`, `*.ts`, `auth/`, agentes autónomos |
161
+ | `arreglar-al-detectar.md` | Siempre — detectar → informar → arreglar en mismo turno |
162
+ | `analisis-previo-tareas-grandes.md` | Solicitudes >10 archivos / >500 LOC / cross-módulo |
163
+ | `usar-context7.md` | Al generar código que importe librerías externas |
164
+ | `git-workflow.md` | Siempre |
165
+ | `skills-estandar.md` / `fragmentos-compartidos.md` | Crear/auditar skills o fragmentos |
166
+ | `registro-componentes-nuevos.md` | Crear cualquier componente nuevo (agente/skill/comando/hook/regla) — registro obligatorio en manifiestos + plugin.json + INVENTARIO en mismo commit |
167
+
168
+ Catálogo completo y matchers en `@INVENTARIO.md` sección Reglas.
169
+
170
+ @reglas/usar-sistema-swl.md
171
+
172
+ ## Estrategia de modelos por nivel de criticidad (Model-Tier)
173
+
174
+ Asignar el modelo correcto a cada agente según la criticidad e irreversibilidad de la tarea.
175
+
176
+ | Nivel | Modelo | Campo en frontmatter | Agentes SWL | Criterio |
177
+ |-------|--------|---------------------|-------------|----------|
178
+ | **Crítico** | `claude-opus-4-7` | `model: claude-opus-4-7` | orquestador, arquitecto, revisor-seguridad, producto-prd | Decisiones irreversibles (arquitectura, seguridad, PRD) |
179
+ | **Estándar** | `claude-sonnet-4-6` | `model: claude-sonnet-4-6` | backend-*, frontend-*, mobile-*, tdd-qa, revisores de lenguaje | Implementación y revisión |
180
+ | **Ligero** | `claude-haiku-4-5-20251001` | `model: claude-haiku-4-5-20251001` | notificador, resolutor-build (búsquedas) | Operaciones deterministas rápidas |
181
+ | **Heredado** | (del padre) | `model: inherit` | Sub-agentes invocados por el orquestador | El padre decide |
182
+
183
+ **Reglas de asignación**: decisiones no reversibles Opus; código Sonnet; búsqueda/notificación Haiku.
184
+ NUNCA usar Opus para tareas que Sonnet resuelve igual de bien.
185
+
186
+ **Workflow Opus 4.7**: tratar como ingeniero al que se delega (spec completa: intent + constraints + acceptance criteria + file locations). Sigue instrucciones literalmente — eliminar ambigüedad. Effort levels nativos: `high | xhigh | max`.
187
+
188
+ ---
189
+
190
+ ## Convenciones operacionales
191
+
192
+ - Score mínimo de calidad: **9.0/10** para aprobar trabajo
193
+ - Modos de desarrollo: `dev`, `review`, `research` (vía `/swl:contexto`)
194
+ - `respositorios-git/` y `temp/` son material de referencia no modificar ni commitear
195
+ - Inventario completo: ver `@INVENTARIO.md` o `@.planning/ESTADO.md`
196
+ - **Limpieza de registros resueltos**: no dejar items completados en listas de pendientes
197
+ - **Dependencias externas educativas son opt-in NO-dependencia**: cuando se documenta un recurso externo (MCPs opcionales, plantillas comunitarias, indexadores externos) marcarlo explícitamente como **"NO es dependencia técnica de swl-ses"**. El sistema debe seguir funcionando sin ese recurso
198
+ - **Patrón "validar antes de invocar"**: cualquier invocación a herramienta externa opt-in (markitdown, MinerU, gh, etc.) DEBE verificar primero (`command -v <bin>` / `try/catch execSync('<bin> --version')`) y, si no está disponible, **continuar con el flujo nativo de SWL sin emitir error al usuario**
199
+ - **`skillsInvocables` requiere `Skill` en `tools:`**: si un agente declara `skillsInvocables: [...]` Y su cuerpo usa `Skill("nombre")`, debe incluir `Skill` en `tools:`. Verificar con `grep -c 'Skill(' agentes/X.md` >0
200
+ - **Criterio gitignore para JSONL runtime vs baseline**: runtime telemetry (alta frecuencia, recreable) → gitignore. Baseline auditable (histórico crítico, decisiones, evidencia gobernanza) trackear. Pregunta filtro: *si borro este archivo, ¿se pierde info que el sistema necesita reconstruir desde otra fuente?* Sí → trackear
201
+
202
+ ## Mapa de propagación de cambios
203
+
204
+ Al modificar un componente del sistema, verificar TODOS los archivos afectados.
205
+
206
+ | Tipo de cambio | Archivos a verificar |
207
+ |----------------|---------------------|
208
+ | **Agente** | `plugin.json`, `manifiestos/modulos.json`, `INVENTARIO.md`, `AGENTS.md`, `SALUD.md`, `.planning/REPORTE-GRAFO.md` |
209
+ | **Skill** | `plugin.json`, `manifiestos/modulos.json`, `INVENTARIO.md`, `CLAUDE.md` (si aplica al dominio) |
210
+ | **Hook** | `plugin.json`, `.claude/settings.json`, `manifiestos/hooks-config.json` (event+matcher), `manifiestos/modulos.json` (ruta), `INVENTARIO.md`, `SALUD.md`. **AMBOS manifiestos son obligatorios** |
211
+ | **Comando** | `COMANDOS.md`, `CLAUDE.md` (tabla de comandos), `INVENTARIO.md` |
212
+ | **Regla** | `CLAUDE.md` (tabla de reglas), `INVENTARIO.md`, `SALUD.md` |
213
+ | **Schema** | `INVENTARIO.md`, `SALUD.md` |
214
+ | **Bump de versión** | 15+ ubicaciones — checklist en `/swl:release` paso 6 |
215
+ | **CLAUDE.md (cualquier capa)** | Verificar con `/swl:claudemd audit` antes de commit |
216
+ | **Cualquier `npm publish`** | Ejecutar `node scripts/verificar-release.js` ANTES, no solo en release formal. Detecta discrepancias de contadores y versiones invisibles al ojo humano (caso real v1.3.0: 18 discrepancias detectadas) |
217
+
218
+ Esta tabla es obligatoria. Omitir un archivo causa fallos en `/swl:salud`.
219
+
220
+ ### Reglas auxiliares
221
+
222
+ - **Regenerar inventario, nunca contar a mano**: antes de modificar contadores en CLAUDE.md/README.md/SALUD.md/AGENTS.md/package.json/plugin.json, ejecutar `node scripts/generar-inventario.js`. El script es la fuente de verdad
223
+ - **Checklists consolidados se regeneran**: archivos en `docs/checklists-consolidados/` son derivados. Editar la regla origen y `npm run gen-checklists`. NO editar manualmente los generados
224
+ - **Modelo por defecto headless**: scripts/bots externos invocan `claude -p --model claude-haiku-4-5-20251001 --effort low --max-budget-usd 0.50 --dangerously-skip-permissions`. Haiku 4.5 cuesta 5× menos
225
+ - **File-based queue sobre PTY injection**: control remoto via `gateway/command-relay.js` → `.planning/inbox/cmd-*.json` → `/swl:inbox`. Tmux solo opt-in avanzado (`scripts/inbox-tmux-inject.js` Linux/macOS)