@saulwade/swl-ses 1.6.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +32 -61
- package/README.md +2 -2
- package/agentes/datos-swl.md +1 -1
- package/agentes/frontend-angular-swl.md +7 -7
- package/agentes/frontend-css-swl.md +4 -4
- package/agentes/frontend-react-swl.md +7 -7
- package/agentes/frontend-swl.md +9 -9
- package/agentes/frontend-tailwind-swl.md +4 -4
- package/agentes/rendimiento-swl.md +2 -2
- package/comandos/swl/brainstorm.md +1 -0
- package/comandos/swl/compactar.md +1 -1
- package/comandos/swl/discutir-fase.md +15 -1
- package/comandos/swl/mapear-codebase.md +1 -1
- package/comandos/swl/nemesis.md +29 -0
- package/comandos/swl/planear-fase.md +2 -2
- package/comandos/swl/verificar.md +4 -4
- package/habilidades/aprendizaje-continuo/SKILL.md +7 -1
- package/habilidades/diseno-herramientas-agente/SKILL.md +1 -0
- package/habilidades/doc-sync/SKILL.md +441 -1
- package/habilidades/doubt-driven-review/SKILL.md +177 -171
- package/habilidades/feynman-auditor-swl/SKILL.md +129 -123
- package/habilidades/infra-github-actions/SKILL.md +172 -166
- package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -163
- package/habilidades/nemesis-evaluacion-json/SKILL.md +5 -0
- package/habilidades/nemesis-redistribuir/SKILL.md +5 -0
- package/habilidades/node-experto/SKILL.md +197 -3
- package/habilidades/prevencion-racionalizacion/SKILL.md +1 -0
- package/habilidades/privacy-memoria/SKILL.md +1 -0
- package/habilidades/sre-patrones/SKILL.md +1 -1
- package/habilidades/state-inconsistency-auditor-swl/SKILL.md +172 -166
- package/habilidades/tdd-workflow/SKILL.md +178 -3
- package/habilidades/verificacion-evidencia/SKILL.md +1 -0
- package/habilidades/web-fetcher-routing/SKILL.md +81 -75
- package/habilidades/workflow-claude-code/SKILL.md +2 -2
- package/manifiestos/modulos.json +2 -1
- package/manifiestos/skills-lock.json +1142 -1142
- package/package.json +5 -3
- package/plugin.json +2 -2
- package/reglas/auditorias-documentales-estructurales.md +205 -0
- package/schemas/agent-frontmatter.schema.json +1 -1
- package/scripts/generar-inventario.js +450 -420
- package/scripts/verificar-docs-vs-codigo.js +654 -425
- package/scripts/verificar-evolucion.js +19 -3
package/CLAUDE.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# CLAUDE.md — @saulwade/swl-ses v1.6.
|
|
1
|
+
# CLAUDE.md — @saulwade/swl-ses v1.6.1
|
|
2
2
|
|
|
3
3
|
## Reglas de máxima prioridad (aplican SIEMPRE, sin excepción)
|
|
4
4
|
|
|
@@ -19,19 +19,7 @@ python scripts/vendor/markitdown/cli.py <ruta-al-archivo>
|
|
|
19
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
20
|
|
|
21
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
|
|
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.
|
|
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).
|
|
35
23
|
|
|
36
24
|
---
|
|
37
25
|
|
|
@@ -98,7 +86,6 @@ Origen: sesión 2026-05-16, ADR-0021. El agente asumió v1.6.0; el usuario eligi
|
|
|
98
86
|
- `@COMANDOS.md` — referencia detallada de cada `/swl:*`
|
|
99
87
|
- `@AGENTS.md` — catálogo de agentes con capacidades
|
|
100
88
|
- `@INVENTARIO.md` — conteos oficiales (regenerado por script)
|
|
101
|
-
- `@CONTRIBUTING.md` — guía para colaboradores
|
|
102
89
|
- `@docs/variables-entorno.md` — variables opt-in completas
|
|
103
90
|
- `@docs/CI-CD-SETUP.md` — setup de pipelines
|
|
104
91
|
- `@.planning/adrs/README.md` — índice de decisiones arquitecturales
|
|
@@ -108,7 +95,7 @@ Origen: sesión 2026-05-16, ADR-0021. El agente asumió v1.6.0; el usuario eligi
|
|
|
108
95
|
## Qué es este repositorio
|
|
109
96
|
|
|
110
97
|
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,
|
|
98
|
+
11 lenguajes, 7 runtimes (Claude, OpenClaude, OpenCode, Gemini, Cursor, Codex, Copilot), 60 agentes, 162 skills, 44 comandos, 67 reglas, 41 hooks.
|
|
112
99
|
|
|
113
100
|
## Estructura del repositorio
|
|
114
101
|
|
|
@@ -128,23 +115,17 @@ scripts/ bin/ _userland/ .claude/ .planning/
|
|
|
128
115
|
|
|
129
116
|
## Comandos del sistema (/swl:*)
|
|
130
117
|
|
|
131
|
-
|
|
118
|
+
Catálogo completo de 44 comandos `/swl:*` en `@COMANDOS.md`. Atajos mentales por categoría:
|
|
132
119
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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 |
|
|
120
|
+
- **Ciclo GSD por fase**: `discutir-fase` → `planear-fase` → `ejecutar-fase` → `verificar` (con discovery routing, modo iterativo `--iterative` y `--until-converge`).
|
|
121
|
+
- **Anti-context-rot**: `checkpoint`, `compactar`.
|
|
122
|
+
- **Aprendizaje**: `aprender`, `evolucionar`, `autoresearch`, `reflect-skills`.
|
|
123
|
+
- **Calidad**: `revisar`, `verificar`, `nemesis` (auditoría Feynman + State, opcional `--remediar`).
|
|
124
|
+
- **Diagnóstico**: `salud`, `metricas`, `dashboard`, `evolucion-estado`.
|
|
125
|
+
- **Release**: `release`, `configurar-ci`.
|
|
126
|
+
- **Conocimiento**: `wiki`, `mapear-codebase`, `skill-search`, `ayuda`.
|
|
127
|
+
|
|
128
|
+
Para flags exactos y semántica de cada comando ver `@COMANDOS.md` y `@MANUAL_USO.md`.
|
|
148
129
|
|
|
149
130
|
## Reglas obligatorias (25 base + 40 por lenguaje)
|
|
150
131
|
|
|
@@ -164,6 +145,7 @@ proyecto. Reglas de mayor uso:
|
|
|
164
145
|
| `git-workflow.md` | Siempre |
|
|
165
146
|
| `skills-estandar.md` / `fragmentos-compartidos.md` | Crear/auditar skills o fragmentos |
|
|
166
147
|
| `registro-componentes-nuevos.md` | Crear cualquier componente nuevo (agente/skill/comando/hook/regla) — registro obligatorio en manifiestos + plugin.json + INVENTARIO en mismo commit |
|
|
148
|
+
| `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 |
|
|
167
149
|
|
|
168
150
|
Catálogo completo y matchers en `@INVENTARIO.md` sección Reglas.
|
|
169
151
|
|
|
@@ -189,37 +171,26 @@ NUNCA usar Opus para tareas que Sonnet resuelve igual de bien.
|
|
|
189
171
|
|
|
190
172
|
## Convenciones operacionales
|
|
191
173
|
|
|
192
|
-
|
|
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
|
|
174
|
+
Detalle completo en `@docs/convenciones-operacionales.md`. Resumen mínimo:
|
|
203
175
|
|
|
204
|
-
|
|
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
|
+
- **Dependencias externas educativas son opt-in NO-dependencia** — el sistema funciona sin ellas.
|
|
180
|
+
- **Patrón "validar antes de invocar"** para herramientas externas opt-in (markitdown, MinerU, gh).
|
|
181
|
+
- **`skillsInvocables` requiere `Skill` en `tools:`** del agente.
|
|
205
182
|
|
|
206
|
-
|
|
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) |
|
|
183
|
+
## Mapa de propagación de cambios
|
|
217
184
|
|
|
218
|
-
|
|
185
|
+
Al modificar o agregar cualquier componente del sistema, **invocar
|
|
186
|
+
`Skill("doc-sync")` antes del commit final** para cargar el protocolo
|
|
187
|
+
proactivo completo. La tabla y checklist completos viven en
|
|
188
|
+
`@docs/mapa-propagacion.md` para mantener este archivo bajo el umbral
|
|
189
|
+
de 200 líneas (regla `auditar-claudemd.js`).
|
|
219
190
|
|
|
220
|
-
|
|
191
|
+
Resumen mínimo para uso inmediato:
|
|
221
192
|
|
|
222
|
-
-
|
|
223
|
-
- **
|
|
224
|
-
- **
|
|
225
|
-
-
|
|
193
|
+
- 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.
|
|
194
|
+
- **Skill responsable**: `Skill("doc-sync") § Protocolo proactivo` (sub-secciones Tipo 1 a Tipo 8) tiene el detalle prescriptivo.
|
|
195
|
+
- **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`.
|
|
196
|
+
- Si cualquier gate falla, **NO commitear** hasta corregir. Regla `arreglar-al-detectar.md` exige resolver en mismo turno.
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# swl-ses v1.6.
|
|
1
|
+
# swl-ses v1.6.1
|
|
2
2
|
|
|
3
3
|
> El paquete anterior `@saulwadeleon/swl-software-engineering-system` está deprecado. Migrar a `@saulwade/swl-ses` (npmjs.org canónico) o `@saul-wade/swl-ses` (mirror en GitHub Packages) — el CLI `swl-ses` no cambia.
|
|
4
4
|
|
|
@@ -195,7 +195,7 @@ claude
|
|
|
195
195
|
| `mobile` | Android + iOS + React Native/Flutter + UX |
|
|
196
196
|
| `devops` | CI/CD + cloud + observabilidad + releases + seguridad |
|
|
197
197
|
| `polyglot` | Todos los lenguajes: 11 lenguajes + revisores + build resolvers |
|
|
198
|
-
| `completo` | Todo: 60 agentes + 162 habilidades + 44 comandos +
|
|
198
|
+
| `completo` | Todo: 60 agentes + 162 habilidades + 44 comandos + 67 reglas + 41 hooks |
|
|
199
199
|
|
|
200
200
|
### Targets soportados
|
|
201
201
|
|
package/agentes/datos-swl.md
CHANGED
|
@@ -62,7 +62,7 @@ Responsabilidades concretas:
|
|
|
62
62
|
ANTES de diseñar cualquier pipeline o modelo de datos:
|
|
63
63
|
|
|
64
64
|
1. Leer CLAUDE.md del proyecto para entender el stack de datos existente.
|
|
65
|
-
2. Invocar `Skill("postgresql-
|
|
65
|
+
2. Invocar `Skill("postgresql-experto")` y `Skill("sql-optimizacion")`.
|
|
66
66
|
3. Identificar las fuentes de datos: sistemas origen, formatos, frecuencia de actualización.
|
|
67
67
|
4. Estimar el volumen: filas por tabla, tasa de crecimiento, tamaño en GB/TB.
|
|
68
68
|
5. Verificar qué herramientas de orquestación están disponibles (Airflow, Prefect, dbt, etc.).
|
|
@@ -100,13 +100,13 @@ Grep("@if|@for") → confirmar uso de block syntax
|
|
|
100
100
|
|
|
101
101
|
| Caso de uso | Skills a invocar |
|
|
102
102
|
|-------------|-----------------|
|
|
103
|
-
| Componentes Angular | `Skill("angular-
|
|
104
|
-
| Formularios Angular | + `Skill("angular-
|
|
105
|
-
| Build / CLI / configuración | + `Skill("angular-
|
|
106
|
-
| Estilos con Tailwind | `Skill("tailwind-
|
|
107
|
-
| TypeScript complejo | `Skill("typescript-
|
|
108
|
-
| Tests Angular |
|
|
109
|
-
| Patrones de diseño UI | `Skill("frontend-design")` + `Skill("frontend-
|
|
103
|
+
| Componentes Angular | `Skill("angular-moderno")` + `Skill("angular-moderno")` |
|
|
104
|
+
| Formularios Angular | + `Skill("angular-moderno")` |
|
|
105
|
+
| Build / CLI / configuración | + `Skill("angular-moderno")` |
|
|
106
|
+
| Estilos con Tailwind | `Skill("tailwind-experto")` + `Skill("diseno-responsivo")` |
|
|
107
|
+
| TypeScript complejo | `Skill("typescript-avanzado")` |
|
|
108
|
+
| Tests Angular | (sin skill dedicado — usar `@angular/core/testing` directo) |
|
|
109
|
+
| Patrones de diseño UI | `Skill("frontend-design")` + `Skill("frontend-avanzado")` |
|
|
110
110
|
|
|
111
111
|
**REGLA**: Invoca AL MENOS 1 skill antes de implementar. Si la UI-SPEC.md lista
|
|
112
112
|
skills requeridos, invoca TODOS los listados.
|
|
@@ -90,10 +90,10 @@ Read("src/styles/tokens.css") → sistema de tokens
|
|
|
90
90
|
|
|
91
91
|
| Caso de uso | Skills a invocar |
|
|
92
92
|
|-------------|-----------------|
|
|
93
|
-
| Responsive design | `Skill("
|
|
94
|
-
| Design system y tokens | `Skill("tailwind-
|
|
95
|
-
| Patrones de UI/UX | `Skill("frontend-design")` + `Skill("frontend-
|
|
96
|
-
| Accesibilidad visual | `Skill("
|
|
93
|
+
| Responsive design | `Skill("diseno-responsivo")` |
|
|
94
|
+
| Design system y tokens | `Skill("tailwind-experto")` |
|
|
95
|
+
| Patrones de UI/UX | `Skill("frontend-design")` + `Skill("frontend-avanzado")` |
|
|
96
|
+
| Accesibilidad visual | `Skill("ux-diseno")` |
|
|
97
97
|
|
|
98
98
|
## Arquitectura de @layer — el estándar moderno
|
|
99
99
|
|
|
@@ -103,13 +103,13 @@ Grep("useQuery|useSWR|fetch") → patrones de data fetching en uso
|
|
|
103
103
|
|
|
104
104
|
| Caso de uso | Skills a invocar |
|
|
105
105
|
|-------------|-----------------|
|
|
106
|
-
| Componentes React / Next.js | `Skill("
|
|
107
|
-
| Estilos con Tailwind | `Skill("tailwind-
|
|
108
|
-
| TypeScript complejo | `Skill("typescript-
|
|
109
|
-
| Tests React |
|
|
110
|
-
| React Native | `Skill("react-native
|
|
111
|
-
| React Native + Expo | + `Skill("
|
|
112
|
-
| UX y patrones de diseño | `Skill("frontend-design")` + `Skill("frontend-
|
|
106
|
+
| Componentes React / Next.js | `Skill("nextjs-experto")` |
|
|
107
|
+
| Estilos con Tailwind | `Skill("tailwind-experto")` + `Skill("diseno-responsivo")` |
|
|
108
|
+
| TypeScript complejo | `Skill("typescript-avanzado")` |
|
|
109
|
+
| Tests React | (sin skill dedicado — usar Vitest/Jest + React Testing Library directo) |
|
|
110
|
+
| React Native | `Skill("mobile-react-native")` |
|
|
111
|
+
| React Native + Expo | + `Skill("mobile-react-native")` |
|
|
112
|
+
| UX y patrones de diseño | `Skill("frontend-design")` + `Skill("frontend-avanzado")` |
|
|
113
113
|
|
|
114
114
|
**REGLA**: Invoca AL MENOS 1 skill antes de implementar. Si la UI-SPEC.md lista
|
|
115
115
|
skills requeridos, invoca TODOS los listados.
|
package/agentes/frontend-swl.md
CHANGED
|
@@ -75,15 +75,15 @@ Antes de escribir la primera línea de código, invoca los skills del framework
|
|
|
75
75
|
|
|
76
76
|
| Framework | Skills a invocar |
|
|
77
77
|
|-----------|-----------------|
|
|
78
|
-
| Angular | `Skill("angular-
|
|
79
|
-
| Angular + formularios | + `Skill("angular-
|
|
80
|
-
| Angular + build/CLI | + `Skill("angular-
|
|
81
|
-
| React (Next.js/Vercel) | `Skill("
|
|
82
|
-
| React Native | `Skill("react-native
|
|
83
|
-
| React Native + Expo | + `Skill("
|
|
84
|
-
| Cualquier framework + estilos | `Skill("tailwind-
|
|
85
|
-
| TypeScript complejo | `Skill("typescript-
|
|
86
|
-
| Tests JS/TS |
|
|
78
|
+
| Angular | `Skill("angular-moderno")` + `Skill("angular-moderno")` |
|
|
79
|
+
| Angular + formularios | + `Skill("angular-moderno")` |
|
|
80
|
+
| Angular + build/CLI | + `Skill("angular-moderno")` |
|
|
81
|
+
| React (Next.js/Vercel) | `Skill("nextjs-experto")` |
|
|
82
|
+
| React Native | `Skill("mobile-react-native")` |
|
|
83
|
+
| React Native + Expo | + `Skill("mobile-react-native")` |
|
|
84
|
+
| Cualquier framework + estilos | `Skill("tailwind-experto")` + `Skill("diseno-responsivo")` |
|
|
85
|
+
| TypeScript complejo | `Skill("typescript-avanzado")` |
|
|
86
|
+
| Tests JS/TS | (sin skill dedicado — usar Vitest/Jest directo) |
|
|
87
87
|
|
|
88
88
|
**REGLA**: Invoca AL MENOS 1 skill antes de escribir código.
|
|
89
89
|
Si la UI-SPEC.md lista skills requeridos, invoca TODOS los listados.
|
|
@@ -94,10 +94,10 @@ Read("package.json") → versión exacta de Tailwind
|
|
|
94
94
|
|
|
95
95
|
| Caso de uso | Skills a invocar |
|
|
96
96
|
|-------------|-----------------|
|
|
97
|
-
| Design system | `Skill("tailwind-
|
|
98
|
-
| Responsive design | `Skill("
|
|
99
|
-
| Patrones de UI | `Skill("frontend-design")` + `Skill("frontend-
|
|
100
|
-
| Accesibilidad | `Skill("
|
|
97
|
+
| Design system | `Skill("tailwind-experto")` |
|
|
98
|
+
| Responsive design | `Skill("diseno-responsivo")` |
|
|
99
|
+
| Patrones de UI | `Skill("frontend-design")` + `Skill("frontend-avanzado")` |
|
|
100
|
+
| Accesibilidad | `Skill("ux-diseno")` |
|
|
101
101
|
|
|
102
102
|
**REGLA**: Invoca AL MENOS 1 skill antes de implementar.
|
|
103
103
|
|
|
@@ -70,8 +70,8 @@ Responsabilidades concretas:
|
|
|
70
70
|
ANTES de cualquier optimización:
|
|
71
71
|
|
|
72
72
|
1. Leer CLAUDE.md del proyecto para entender el stack y las dependencias.
|
|
73
|
-
2. Invocar `Skill("sql-
|
|
74
|
-
3. Invocar `Skill("async-python
|
|
73
|
+
2. Invocar `Skill("sql-optimizacion")` si hay optimización de queries.
|
|
74
|
+
3. Invocar `Skill("async-python")` si hay optimización de código async.
|
|
75
75
|
4. Establecer el contexto del problema: ¿qué es lento?, ¿cuándo empezó?, ¿cuántos usuarios afecta?
|
|
76
76
|
5. Obtener datos de rendimiento actuales (logs, APM, métricas de observabilidad).
|
|
77
77
|
6. Establecer la línea base medible antes de cualquier cambio.
|
|
@@ -24,7 +24,7 @@ Este comando es diferente de `/swl:checkpoint`: mientras checkpoint guarda estad
|
|
|
24
24
|
Skill("compactacion-contexto")
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
Si no existe, busca alternativas
|
|
27
|
+
Si no existe, busca alternativas en `~/.claude/skills/` (skills oficiales de Anthropic) o procede sin skill auxiliar — el algoritmo de 5 fases es zero-deps. Documenta lo que cargaste o que procediste sin skill.
|
|
28
28
|
|
|
29
29
|
## Paso 1 — Auditoría del contexto activo
|
|
30
30
|
|
|
@@ -17,13 +17,27 @@ Eres un analista funcional y técnico experto. Tu trabajo es convertir los objet
|
|
|
17
17
|
|
|
18
18
|
El argumento `<n>` es el número de la fase a discutir.
|
|
19
19
|
|
|
20
|
+
## Discovery routing (5 paths) — primer paso antes del cuestionario
|
|
21
|
+
|
|
22
|
+
Antes del cuestionario adaptativo completo, el agente clasifica la petición en uno de **5 rutas posibles** y ejecuta solo lo relevante. Origen: ADR-0020 sub-fase 1.
|
|
23
|
+
|
|
24
|
+
| Ruta | Cuándo aplica | Acción |
|
|
25
|
+
|------|--------------|--------|
|
|
26
|
+
| **RUTA_A** — Extender fase existente | La petición agrega tareas a una fase ya planeada. | Saltar cuestionario; cargar el CONTEXTO.md existente y agregar tareas. |
|
|
27
|
+
| **RUTA_B** — Sin fase formal | Fix trivial o tarea de <2 horas sin impacto cross-módulo. | Saltar cuestionario; proceder con `/swl:ejecutar-fase` directamente. |
|
|
28
|
+
| **RUTA_C** — Nueva fase single-scope | Petición nueva, no encaja en fases existentes, single-domain. | Ejecutar cuestionario completo (Bloques 1-4). |
|
|
29
|
+
| **RUTA_D** — Nueva fase multi-domain | Petición nueva, requiere decomposición en sub-tareas paralelas. | Cuestionario completo + planificación de paralelización. |
|
|
30
|
+
| **RUTA_E** — Mixto | La petición combina: extensión + nueva fase + posiblemente fix trivial. | Presentar decomposición propuesta y confirmar antes de proceder. |
|
|
31
|
+
|
|
32
|
+
El agente identifica la ruta en la primera respuesta al cargar `Skill("discutir-fase")` analizando: la petición textual, el estado de `.planning/HOJA-RUTA.md` y el último `RESUMEN.md`. Solo si la ruta es C o D se ejecuta el cuestionario completo descrito a continuación.
|
|
33
|
+
|
|
20
34
|
## Paso 0 — Carga de habilidades
|
|
21
35
|
|
|
22
36
|
```
|
|
23
37
|
Skill("discutir-fase")
|
|
24
38
|
```
|
|
25
39
|
|
|
26
|
-
Si no existe, intenta `Skill("
|
|
40
|
+
Si no existe, intenta `Skill("planear-fase")` o `Skill("api-rest-diseno")`. Documenta qué cargaste.
|
|
27
41
|
|
|
28
42
|
## Paso 1 — Lectura de contexto previo
|
|
29
43
|
|
|
@@ -16,7 +16,7 @@ Carga la habilidad de análisis antes de comenzar:
|
|
|
16
16
|
Skill("mapear-codebase")
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
Si no existe en el proyecto,
|
|
19
|
+
Si no existe en el proyecto, procede sin skill auxiliar — la lógica de mapeo del comando es zero-deps. Documenta que procediste sin skill.
|
|
20
20
|
|
|
21
21
|
## Paso 1 — Verificación del entorno
|
|
22
22
|
|
package/comandos/swl/nemesis.md
CHANGED
|
@@ -247,6 +247,35 @@ Cada `evaluacion.json` sigue el schema `nemesis-evaluacion-json` v1.0.0.
|
|
|
247
247
|
El costo del modo `--remediar` es 3-5× el del modo solo auditar. Es opt-in
|
|
248
248
|
deliberado del usuario, no default.
|
|
249
249
|
|
|
250
|
+
### Calibración para módulos pequeños con alta densidad de control de flujo
|
|
251
|
+
|
|
252
|
+
Aunque la tabla estima 12-18 turnos para `--remediar` sobre módulo pequeño
|
|
253
|
+
(< 500 LOC), el valor agregado es desproporcionadamente alto cuando el
|
|
254
|
+
módulo concentra **lógica de control de flujo** (event handlers,
|
|
255
|
+
callbacks, `setTimeout`/`setInterval`, readline, promises, race conditions).
|
|
256
|
+
La densidad de bugs latentes en este tipo de código es alta, y nemesis los
|
|
257
|
+
detecta donde la revisión one-shot no.
|
|
258
|
+
|
|
259
|
+
**Patrón confirmado en swl-ses v1.6.0** (sesión 2026-05-16): `--remediar`
|
|
260
|
+
sobre `scripts/lib/ui.js` (~300 LOC con spinner + readline + prompts)
|
|
261
|
+
convergió en iter-2 con 15 turnos totales. Iter-1 detectó dos hallazgos
|
|
262
|
+
adicionales que el fix manual no había detectado:
|
|
263
|
+
|
|
264
|
+
- **F-1 (ALTO)**: listener leak de `process.once('exit')` acumulándose
|
|
265
|
+
en loops que crean N spinners secuenciales → MaxListenersExceededWarning.
|
|
266
|
+
- **F-2 (MEDIO)**: `preguntarOpcion` llamaba `_pausarSpinnersActivos()`
|
|
267
|
+
DESPUÉS del primer `console.log` del menú, dejando una ventana donde
|
|
268
|
+
el tick del spinner sobrescribía la primera línea.
|
|
269
|
+
|
|
270
|
+
Iter-2 confirmó PASS tras aplicar ambos fixes. Ninguno habría sido
|
|
271
|
+
detectado por `/swl:revisar` o `revisor-codigo-swl` solos — ambos
|
|
272
|
+
requirieron el reasoning iterativo Feynman+State.
|
|
273
|
+
|
|
274
|
+
**Regla operativa**: tras commits de fix-only en módulos con alta densidad
|
|
275
|
+
de control de flujo (no en módulos CRUD puros), correr `--remediar`
|
|
276
|
+
acotado al módulo. La inversión de 15 turnos típicamente detecta 1-2
|
|
277
|
+
bugs adyacentes que el fix original no cubrió.
|
|
278
|
+
|
|
250
279
|
## Ejemplos de invocación
|
|
251
280
|
|
|
252
281
|
```bash
|
|
@@ -21,10 +21,10 @@ Eres el coordinador de planeación SWL. Tu trabajo es orquestar la generación d
|
|
|
21
21
|
Skill("planear-fase")
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
Si no existe, carga `Skill("python
|
|
24
|
+
Si no existe, carga `Skill("patrones-python")` si el stack es Python, o `Skill("angular-moderno")` si el stack es Angular/TS. Siempre carga también:
|
|
25
25
|
|
|
26
26
|
```
|
|
27
|
-
Skill("api-
|
|
27
|
+
Skill("api-rest-diseno")
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
## Paso 1 — Verificación de prerrequisitos
|
|
@@ -51,12 +51,12 @@ Skill("verificar-trabajo")
|
|
|
51
51
|
|
|
52
52
|
Carga también:
|
|
53
53
|
```
|
|
54
|
-
Skill("
|
|
55
|
-
Skill("
|
|
54
|
+
Skill("manejo-errores")
|
|
55
|
+
Skill("checklist-calidad")
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
-
Si el stack tiene Python: `Skill("
|
|
59
|
-
Si el stack tiene Angular: `
|
|
58
|
+
Si el stack tiene Python: `Skill("testing-python")`
|
|
59
|
+
Si el stack tiene Angular: usar `@angular/core/testing` directo (sin skill dedicado)
|
|
60
60
|
|
|
61
61
|
## Paso 1 — Determinación del alcance de verificación
|
|
62
62
|
|
|
@@ -6,7 +6,12 @@ description: >
|
|
|
6
6
|
tres scopes (proyecto/dominio/global), degradacion automatica por contradiccion,
|
|
7
7
|
promocion a skills/comandos/agentes, evolucion (merge, split, deprecate) y
|
|
8
8
|
proteccion contra contaminacion cross-proyecto.
|
|
9
|
-
version: "1.0.
|
|
9
|
+
version: "1.0.1"
|
|
10
|
+
evolved: true
|
|
11
|
+
evolved-from: "1.0.0"
|
|
12
|
+
evolved-at: "2026-05-16"
|
|
13
|
+
evolved-by: "aprender"
|
|
14
|
+
evolved-note: "v1.0.1 (PATCH): nuevo gotcha 'Filtro de exclusión de hooks debe cubrir tests/'. Origen: H3 sesión 2026-05-16 — el extractor de aprendizajes capturaba comentarios JSDoc de un test recién escrito (palabras 'bug', 'patrón', 'fix') y los promovía como entradas truncadas a APRENDIZAJES.md porque PATRONES_ARCHIVO_SWL_EXCLUIDO no incluía tests/."
|
|
10
15
|
herramientasPermitidas: [Read]
|
|
11
16
|
exclusiones:
|
|
12
17
|
- "No cargar para consultar instintos ya cargados en la sesión actual — si el perfil fue leído, re-cargarlo es desperdicio de contexto."
|
|
@@ -141,6 +146,7 @@ ver [recursos/referencia-instintos.md](recursos/referencia-instintos.md).
|
|
|
141
146
|
- **Hooks de observación con exit code != 0 interrumpen la sesión**: el hook `observe-pre.js` lanza una excepción y Claude Code detiene la tarea en curso. Causa: violación de la regla "los hooks de observación NUNCA deben producir exit code != 0". Solución: envolver toda la lógica del hook en `try/catch` y loggear el error al stderr sin propagarlo — la observabilidad nunca debe bloquear el trabajo productivo.
|
|
142
147
|
- **Duplicación de instintos entre `proyecto.yaml` y `APRENDIZAJES.md`**: el mismo anti-patrón existe en ambos canales con información inconsistente. Causa: el instinto se creó manualmente sin verificar si ya había una entrada en APRENDIZAJES.md. Solución: antes de crear un instinto nuevo, ejecutar `memoria-busqueda` para verificar si ya existe en otro canal; si existe, actualizar el canal correcto según `reglas/memoria-consolidada.md`.
|
|
143
148
|
- **Confianza llegando a 0.95 sin revisión humana**: el algoritmo suma 0.1 por evento y el instinto llega a 0.95 sin que nadie lo revise antes de la promoción. Causa: no se aplicó la restricción del último 5% (requiere revisión explícita). Solución: al llegar a 0.90, el sistema debe emitir un checkpoint `human-verify` antes de superar ese umbral — automatizar la vigilancia en `session-end.js`.
|
|
149
|
+
- **Filtro de exclusión de hooks de extracción no cubre `tests/`** [CONFIRMADO 2026-05-16]: el hook `hooks/extraccion-aprendizajes.js` capturaba comentarios JSDoc/docstring de tests recién escritos por el agente y los promovía como entradas truncadas a `APRENDIZAJES.md`. Caso real: al escribir `tests/lib/ui-spinner-prompt.test.js` con un comentario `/** Bug original: cuando un comando arrancaba un spinner y luego (dentro de la lógica...) */`, el hook detectaba la palabra "bug" y promovía una entrada con título cortado a mitad de frase. Causa: `PATRONES_ARCHIVO_SWL_EXCLUIDO` tenía `agentes/`, `habilidades/`, `comandos/swl/`, `hooks/`, `scripts/`, etc., pero **no incluía `tests/`**. Solución: cualquier filtro de exclusión que protege contra ruido auto-referente del agente DEBE incluir explícitamente todos los patrones de tests: `tests/`, `__tests__/`, `spec/`, `*.test.{js,ts,jsx,tsx,mjs,cjs}`, `test_*.py`, `_test.{py,go}`. Los comentarios de un test describen el SUT (System Under Test) — contienen las mismas keywords que un descubrimiento real ("bug", "patrón", "fix") pero NO son descubrimientos. Patrón general: al diseñar un filtro de exclusión para hooks de observación, listar **todas las convenciones de naming de tests del ecosistema target**, no solo los directorios. Verificado en commit `cb4332e` swl-ses v1.6.0.
|
|
144
150
|
|
|
145
151
|
## Anti-patrones
|
|
146
152
|
|
|
@@ -6,6 +6,7 @@ description: >
|
|
|
6
6
|
description como prompt engineering, naming MCP y diseno de mensajes de error.
|
|
7
7
|
Cargar cuando se disenan tools para agentes, se configura MCP, se definen
|
|
8
8
|
toolBudget en agentes SWL, o se evalua la coleccion de herramientas de un agente.
|
|
9
|
+
version: "1.0.0"
|
|
9
10
|
herramientasPermitidas: [Read, Grep]
|
|
10
11
|
exclusiones:
|
|
11
12
|
- "No cargar para implementar el hook que ejecuta los tools — este skill diseña la interfaz, no el handler; para implementar PreToolUse o PostToolUse cargar `hooks` o el agente correspondiente."
|