@saulwade/swl-ses 1.3.2 → 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +199 -199
- package/README.md +1 -1
- package/bin/swl-ses.js +77 -5
- package/comandos/swl/aprender.md +1 -1
- package/comandos/swl/claudemd.md +141 -136
- package/comandos/swl/configurar-ci.md +227 -227
- package/comandos/swl/evolucion-estado.md +1 -1
- package/comandos/swl/evolucionar.md +3 -3
- package/comandos/swl/inbox.md +1 -1
- package/comandos/swl/reflect-skills.md +1 -1
- package/comandos/swl/salud.md +7 -7
- package/comandos/swl/skill-search.md +4 -4
- package/manifiestos/perfiles.json +2 -1
- package/manifiestos/skills-lock.json +1093 -1093
- package/package.json +87 -87
- package/plugin.json +343 -343
- package/scripts/auditar-claudemd.js +297 -297
- package/scripts/bootstrap-instintos.js +1 -1
- package/scripts/cli/audit-agents-gaps.js +36 -0
- package/scripts/cli/audit-claudemd.js +43 -0
- package/scripts/cli/audit-coverage-frameworks.js +39 -0
- package/scripts/cli/bootstrap-instincts.js +38 -0
- package/scripts/cli/configure-branch-protection.js +42 -0
- package/scripts/cli/generate-skills-lock.js +31 -0
- package/scripts/cli/inbox-tmux-inject.js +49 -0
- package/scripts/cli/reflect-skills.js +40 -0
- package/scripts/cli/run-skill-evals.js +47 -0
- package/scripts/cli/skill-discovery.js +38 -0
- package/scripts/cli/verify-evolution.js +36 -0
- package/scripts/generar-skills-lock.js +190 -190
- package/scripts/inbox-tmux-inject.js +6 -0
- package/scripts/lib/skill-discovery.js +11 -3
- package/scripts/verificar-evolucion.js +1 -1
package/CLAUDE.md
CHANGED
|
@@ -1,199 +1,199 @@
|
|
|
1
|
-
# CLAUDE.md — @saulwade/swl-ses v1.3.
|
|
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
|
-
|
|
50
|
-
## Code style
|
|
51
|
-
|
|
52
|
-
- **Nombres**: kebab-case para archivos, agentes SWL en español, GSD en inglés
|
|
53
|
-
- **Zero-dependencies en `hooks/lib/`**: sin dependencias npm externas
|
|
54
|
-
- **Escrituras atómicas obligatorias**: usar `atomicWriteSync()` / `atomicWriteJSON()` de `hooks/lib/atomic-write.js`. NUNCA `fs.writeFileSync` directo en archivos del sistema
|
|
55
|
-
- **JSONL para alta frecuencia**: usar `fs.appendFileSync(ruta, JSON.stringify(evento) + '\n')` en hooks de telemetría/auditoría — no `atomicWriteJSON` que reescribe todo
|
|
56
|
-
- **YAML inline en frontmatter**: `tools: [Read, Write]`, `skillsInvocables: [skill-a]`. NUNCA CSV string ni mezcla con lista multilínea
|
|
57
|
-
- **Mensajes de commit**: imperativo en español, formato `<tipo>(<scope>): <descripción>`
|
|
58
|
-
- **Sin `console.log` en producción** — excepto en `scripts/`, `bin/`, `hooks/`, `gateway/` (CLIs y daemons)
|
|
59
|
-
- **`@latest` en npx**: todo mensaje del installer/docs usa `npx swl-ses@latest <comando>`. Sin `@latest`, npx cachea la primera versión y el usuario corre vieja sin saberlo
|
|
60
|
-
|
|
61
|
-
## Convenciones de arquitectura
|
|
62
|
-
|
|
63
|
-
- **Precedencia de capas**: Reglas base (`reglas/`) → Reglas por lenguaje (`reglas/{lang}/`) → Skills (`habilidades/`) → Instintos (`instintos/`). Cada capa puede especializar pero NUNCA contradecir las superiores
|
|
64
|
-
- **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`
|
|
65
|
-
- **Preservación de datos en actualización**: `.planning/sessions/`, `.planning/comms/`, `_userland/`, `instintos/proyecto.yaml`, `APRENDIZAJES.md` NUNCA se sobreescriben
|
|
66
|
-
- **Documentación obligatoria**: toda funcionalidad nueva DEBE documentarse en `MANUAL_USO.md`, `COMANDOS.md`, `CLAUDE.md` y `README.md` ANTES del commit
|
|
67
|
-
- **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)
|
|
68
|
-
- **Filtro primario al analizar `temp/`**: antes de evaluar arquitectura, verificar **compatibilidad de dominio**. Si es incompatible, veredicto NINGUNA aplicabilidad sin análisis adicional
|
|
69
|
-
- **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
|
|
70
|
-
- **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
|
|
71
|
-
- **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`
|
|
72
|
-
|
|
73
|
-
## Referencias a docs clave (cargar bajo demanda con `@`)
|
|
74
|
-
|
|
75
|
-
- `@README.md` — overview público y quickstart
|
|
76
|
-
- `@MANUAL_USO.md` — manual operacional completo
|
|
77
|
-
- `@INSTALACION.md` — instalación, perfiles, configuración
|
|
78
|
-
- `@COMANDOS.md` — referencia detallada de cada `/swl:*`
|
|
79
|
-
- `@AGENTS.md` — catálogo de agentes con capacidades
|
|
80
|
-
- `@INVENTARIO.md` — conteos oficiales (regenerado por script)
|
|
81
|
-
- `@CONTRIBUTING.md` — guía para colaboradores
|
|
82
|
-
- `@docs/variables-entorno.md` — variables opt-in completas
|
|
83
|
-
- `@docs/CI-CD-SETUP.md` — setup de pipelines
|
|
84
|
-
- `@.planning/adrs/README.md` — índice de decisiones arquitecturales
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## Qué es este repositorio
|
|
89
|
-
|
|
90
|
-
Sistema de ingeniería de software auto-evolutivo multi-runtime polyglot (SDLC completo).
|
|
91
|
-
11 lenguajes, 5 runtimes, 59 agentes, 155 skills, 43 comandos, 64 reglas, 41 hooks.
|
|
92
|
-
|
|
93
|
-
## Estructura del repositorio
|
|
94
|
-
|
|
95
|
-
```
|
|
96
|
-
agentes/ habilidades/ comandos/swl/ contextos/ instintos/
|
|
97
|
-
reglas/ hooks/ schemas/ manifiestos/ plantillas/
|
|
98
|
-
scripts/ bin/ _userland/ .claude/ .planning/
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## Flujos de trabajo
|
|
102
|
-
|
|
103
|
-
**Feature completa**: orquestador → discovery → PRD → arquitectura → plan → implementación (paralelo) → calidad (paralelo) → cierre
|
|
104
|
-
**Fases GSD**: discutir → planear → ejecutar → verificar
|
|
105
|
-
**Frontend**: investigador-ux → disenador-ui → accesibilidad → frontend-* → rendimiento
|
|
106
|
-
**Backend**: backend-api → backend-python/node → backend-workers → datos
|
|
107
|
-
**Mobile**: producto-prd → mobile-cross (decisión) → mobile-android/ios → tdd-qa
|
|
108
|
-
|
|
109
|
-
## Comandos del sistema (/swl:*)
|
|
110
|
-
|
|
111
|
-
Para la lista completa con descripción ver `@COMANDOS.md`. Comandos más usados:
|
|
112
|
-
|
|
113
|
-
| Comando | Propósito |
|
|
114
|
-
|---------|-----------|
|
|
115
|
-
| `/swl:nuevo-proyecto` | Iniciar proyecto nuevo desde cero con entrevista |
|
|
116
|
-
| `/swl:adoptar-proyecto` | Incorporar proyecto existente: análisis automático + entrevista corta |
|
|
117
|
-
| `/swl:discutir-fase` / `/swl:planear-fase` / `/swl:ejecutar-fase` / `/swl:verificar` | Ciclo GSD por fase |
|
|
118
|
-
| `/swl:checkpoint` / `/swl:compactar` | Anti-context-rot |
|
|
119
|
-
| `/swl:claudemd` | Auditar/refactorizar/inicializar CLAUDE.md (audit, refactor, init-user, check) |
|
|
120
|
-
| `/swl:aprender` / `/swl:evolucionar` / `/swl:autoresearch` | Aprendizaje y auto-evolución |
|
|
121
|
-
| `/swl:salud` / `/swl:metricas` / `/swl:dashboard` | Diagnóstico y observabilidad |
|
|
122
|
-
| `/swl:revisar` / `/swl:verificar` | Calidad de código (revisión por stack, verificación goal-backward) |
|
|
123
|
-
| `/swl:release` | Ciclo de release SemVer |
|
|
124
|
-
| `/swl:configurar-ci` | Workflows CI/CD para proyectos del usuario |
|
|
125
|
-
| `/swl:wiki` / `/swl:mapear-codebase` | Conocimiento de proyecto |
|
|
126
|
-
| `/swl:ayuda` | Catálogo interactivo de comandos |
|
|
127
|
-
|
|
128
|
-
## Reglas obligatorias (24 base + 40 por lenguaje)
|
|
129
|
-
|
|
130
|
-
Las reglas globales del usuario en `~/.claude/rules/` se cargan automáticamente
|
|
131
|
-
y aplican a todos los proyectos. Las reglas del sistema en `reglas/` se cargan
|
|
132
|
-
por matcher de archivos. Reglas de mayor uso:
|
|
133
|
-
|
|
134
|
-
| Regla | Carga cuando |
|
|
135
|
-
|-------|-------------|
|
|
136
|
-
| `brevedad-output.md` | Siempre — idioma español, uso obligatorio de SWL, eficiencia de tokens |
|
|
137
|
-
| `seguridad.md` / `seguridad-agentes.md` | `*.py`, `*.ts`, `auth/`, agentes autónomos |
|
|
138
|
-
| `arreglar-al-detectar.md` | Siempre — detectar → informar → arreglar en mismo turno |
|
|
139
|
-
| `analisis-previo-tareas-grandes.md` | Solicitudes >10 archivos / >500 LOC / cross-módulo |
|
|
140
|
-
| `usar-context7.md` | Al generar código que importe librerías externas |
|
|
141
|
-
| `git-workflow.md` | Siempre |
|
|
142
|
-
| `skills-estandar.md` / `fragmentos-compartidos.md` | Crear/auditar skills o fragmentos |
|
|
143
|
-
|
|
144
|
-
Catálogo completo y matchers en `@INVENTARIO.md` sección Reglas.
|
|
145
|
-
|
|
146
|
-
## Estrategia de modelos por nivel de criticidad (Model-Tier)
|
|
147
|
-
|
|
148
|
-
Asignar el modelo correcto a cada agente según la criticidad e irreversibilidad de la tarea.
|
|
149
|
-
|
|
150
|
-
| Nivel | Modelo | Campo en frontmatter | Agentes SWL | Criterio |
|
|
151
|
-
|-------|--------|---------------------|-------------|----------|
|
|
152
|
-
| **Crítico** | `claude-opus-4-7` | `model: claude-opus-4-7` | orquestador, arquitecto, revisor-seguridad, producto-prd | Decisiones irreversibles (arquitectura, seguridad, PRD) |
|
|
153
|
-
| **Estándar** | `claude-sonnet-4-6` | `model: claude-sonnet-4-6` | backend-*, frontend-*, mobile-*, tdd-qa, revisores de lenguaje | Implementación y revisión |
|
|
154
|
-
| **Ligero** | `claude-haiku-4-5-20251001` | `model: claude-haiku-4-5-20251001` | notificador, resolutor-build (búsquedas) | Operaciones deterministas rápidas |
|
|
155
|
-
| **Heredado** | (del padre) | `model: inherit` | Sub-agentes invocados por el orquestador | El padre decide |
|
|
156
|
-
|
|
157
|
-
**Reglas de asignación**: decisiones no reversibles → Opus; código → Sonnet; búsqueda/notificación → Haiku.
|
|
158
|
-
NUNCA usar Opus para tareas que Sonnet resuelve igual de bien.
|
|
159
|
-
|
|
160
|
-
**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`.
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
## Convenciones operacionales
|
|
165
|
-
|
|
166
|
-
- Score mínimo de calidad: **9.0/10** para aprobar trabajo
|
|
167
|
-
- Modos de desarrollo: `dev`, `review`, `research` (vía `/swl:contexto`)
|
|
168
|
-
- `respositorios-git/` y `temp/` son material de referencia — no modificar ni commitear
|
|
169
|
-
- Inventario completo: ver `@INVENTARIO.md` o `@.planning/ESTADO.md`
|
|
170
|
-
- **Limpieza de registros resueltos**: no dejar items completados en listas de pendientes
|
|
171
|
-
- **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
|
|
172
|
-
- **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**
|
|
173
|
-
- **`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
|
|
174
|
-
- **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
|
|
175
|
-
|
|
176
|
-
## Mapa de propagación de cambios
|
|
177
|
-
|
|
178
|
-
Al modificar un componente del sistema, verificar TODOS los archivos afectados.
|
|
179
|
-
|
|
180
|
-
| Tipo de cambio | Archivos a verificar |
|
|
181
|
-
|----------------|---------------------|
|
|
182
|
-
| **Agente** | `plugin.json`, `manifiestos/modulos.json`, `INVENTARIO.md`, `AGENTS.md`, `SALUD.md`, `.planning/REPORTE-GRAFO.md` |
|
|
183
|
-
| **Skill** | `plugin.json`, `manifiestos/modulos.json`, `INVENTARIO.md`, `CLAUDE.md` (si aplica al dominio) |
|
|
184
|
-
| **Hook** | `plugin.json`, `.claude/settings.json`, `manifiestos/hooks-config.json` (event+matcher), `manifiestos/modulos.json` (ruta), `INVENTARIO.md`, `SALUD.md`. **AMBOS manifiestos son obligatorios** |
|
|
185
|
-
| **Comando** | `COMANDOS.md`, `CLAUDE.md` (tabla de comandos), `INVENTARIO.md` |
|
|
186
|
-
| **Regla** | `CLAUDE.md` (tabla de reglas), `INVENTARIO.md`, `SALUD.md` |
|
|
187
|
-
| **Schema** | `INVENTARIO.md`, `SALUD.md` |
|
|
188
|
-
| **Bump de versión** | 15+ ubicaciones — checklist en `/swl:release` paso 6 |
|
|
189
|
-
| **CLAUDE.md (cualquier capa)** | Verificar con `/swl:claudemd audit` antes de commit |
|
|
190
|
-
| **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) |
|
|
191
|
-
|
|
192
|
-
Esta tabla es obligatoria. Omitir un archivo causa fallos en `/swl:salud`.
|
|
193
|
-
|
|
194
|
-
### Reglas auxiliares
|
|
195
|
-
|
|
196
|
-
- **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
|
|
197
|
-
- **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
|
|
198
|
-
- **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
|
|
199
|
-
- **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.3.3
|
|
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
|
+
|
|
50
|
+
## Code style
|
|
51
|
+
|
|
52
|
+
- **Nombres**: kebab-case para archivos, agentes SWL en español, GSD en inglés
|
|
53
|
+
- **Zero-dependencies en `hooks/lib/`**: sin dependencias npm externas
|
|
54
|
+
- **Escrituras atómicas obligatorias**: usar `atomicWriteSync()` / `atomicWriteJSON()` de `hooks/lib/atomic-write.js`. NUNCA `fs.writeFileSync` directo en archivos del sistema
|
|
55
|
+
- **JSONL para alta frecuencia**: usar `fs.appendFileSync(ruta, JSON.stringify(evento) + '\n')` en hooks de telemetría/auditoría — no `atomicWriteJSON` que reescribe todo
|
|
56
|
+
- **YAML inline en frontmatter**: `tools: [Read, Write]`, `skillsInvocables: [skill-a]`. NUNCA CSV string ni mezcla con lista multilínea
|
|
57
|
+
- **Mensajes de commit**: imperativo en español, formato `<tipo>(<scope>): <descripción>`
|
|
58
|
+
- **Sin `console.log` en producción** — excepto en `scripts/`, `bin/`, `hooks/`, `gateway/` (CLIs y daemons)
|
|
59
|
+
- **`@latest` en npx**: todo mensaje del installer/docs usa `npx swl-ses@latest <comando>`. Sin `@latest`, npx cachea la primera versión y el usuario corre vieja sin saberlo
|
|
60
|
+
|
|
61
|
+
## Convenciones de arquitectura
|
|
62
|
+
|
|
63
|
+
- **Precedencia de capas**: Reglas base (`reglas/`) → Reglas por lenguaje (`reglas/{lang}/`) → Skills (`habilidades/`) → Instintos (`instintos/`). Cada capa puede especializar pero NUNCA contradecir las superiores
|
|
64
|
+
- **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`
|
|
65
|
+
- **Preservación de datos en actualización**: `.planning/sessions/`, `.planning/comms/`, `_userland/`, `instintos/proyecto.yaml`, `APRENDIZAJES.md` NUNCA se sobreescriben
|
|
66
|
+
- **Documentación obligatoria**: toda funcionalidad nueva DEBE documentarse en `MANUAL_USO.md`, `COMANDOS.md`, `CLAUDE.md` y `README.md` ANTES del commit
|
|
67
|
+
- **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)
|
|
68
|
+
- **Filtro primario al analizar `temp/`**: antes de evaluar arquitectura, verificar **compatibilidad de dominio**. Si es incompatible, veredicto NINGUNA aplicabilidad sin análisis adicional
|
|
69
|
+
- **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
|
|
70
|
+
- **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
|
|
71
|
+
- **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`
|
|
72
|
+
|
|
73
|
+
## Referencias a docs clave (cargar bajo demanda con `@`)
|
|
74
|
+
|
|
75
|
+
- `@README.md` — overview público y quickstart
|
|
76
|
+
- `@MANUAL_USO.md` — manual operacional completo
|
|
77
|
+
- `@INSTALACION.md` — instalación, perfiles, configuración
|
|
78
|
+
- `@COMANDOS.md` — referencia detallada de cada `/swl:*`
|
|
79
|
+
- `@AGENTS.md` — catálogo de agentes con capacidades
|
|
80
|
+
- `@INVENTARIO.md` — conteos oficiales (regenerado por script)
|
|
81
|
+
- `@CONTRIBUTING.md` — guía para colaboradores
|
|
82
|
+
- `@docs/variables-entorno.md` — variables opt-in completas
|
|
83
|
+
- `@docs/CI-CD-SETUP.md` — setup de pipelines
|
|
84
|
+
- `@.planning/adrs/README.md` — índice de decisiones arquitecturales
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Qué es este repositorio
|
|
89
|
+
|
|
90
|
+
Sistema de ingeniería de software auto-evolutivo multi-runtime polyglot (SDLC completo).
|
|
91
|
+
11 lenguajes, 5 runtimes, 59 agentes, 155 skills, 43 comandos, 64 reglas, 41 hooks.
|
|
92
|
+
|
|
93
|
+
## Estructura del repositorio
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
agentes/ habilidades/ comandos/swl/ contextos/ instintos/
|
|
97
|
+
reglas/ hooks/ schemas/ manifiestos/ plantillas/
|
|
98
|
+
scripts/ bin/ _userland/ .claude/ .planning/
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Flujos de trabajo
|
|
102
|
+
|
|
103
|
+
**Feature completa**: orquestador → discovery → PRD → arquitectura → plan → implementación (paralelo) → calidad (paralelo) → cierre
|
|
104
|
+
**Fases GSD**: discutir → planear → ejecutar → verificar
|
|
105
|
+
**Frontend**: investigador-ux → disenador-ui → accesibilidad → frontend-* → rendimiento
|
|
106
|
+
**Backend**: backend-api → backend-python/node → backend-workers → datos
|
|
107
|
+
**Mobile**: producto-prd → mobile-cross (decisión) → mobile-android/ios → tdd-qa
|
|
108
|
+
|
|
109
|
+
## Comandos del sistema (/swl:*)
|
|
110
|
+
|
|
111
|
+
Para la lista completa con descripción ver `@COMANDOS.md`. Comandos más usados:
|
|
112
|
+
|
|
113
|
+
| Comando | Propósito |
|
|
114
|
+
|---------|-----------|
|
|
115
|
+
| `/swl:nuevo-proyecto` | Iniciar proyecto nuevo desde cero con entrevista |
|
|
116
|
+
| `/swl:adoptar-proyecto` | Incorporar proyecto existente: análisis automático + entrevista corta |
|
|
117
|
+
| `/swl:discutir-fase` / `/swl:planear-fase` / `/swl:ejecutar-fase` / `/swl:verificar` | Ciclo GSD por fase |
|
|
118
|
+
| `/swl:checkpoint` / `/swl:compactar` | Anti-context-rot |
|
|
119
|
+
| `/swl:claudemd` | Auditar/refactorizar/inicializar CLAUDE.md (audit, refactor, init-user, check) |
|
|
120
|
+
| `/swl:aprender` / `/swl:evolucionar` / `/swl:autoresearch` | Aprendizaje y auto-evolución |
|
|
121
|
+
| `/swl:salud` / `/swl:metricas` / `/swl:dashboard` | Diagnóstico y observabilidad |
|
|
122
|
+
| `/swl:revisar` / `/swl:verificar` | Calidad de código (revisión por stack, verificación goal-backward) |
|
|
123
|
+
| `/swl:release` | Ciclo de release SemVer |
|
|
124
|
+
| `/swl:configurar-ci` | Workflows CI/CD para proyectos del usuario |
|
|
125
|
+
| `/swl:wiki` / `/swl:mapear-codebase` | Conocimiento de proyecto |
|
|
126
|
+
| `/swl:ayuda` | Catálogo interactivo de comandos |
|
|
127
|
+
|
|
128
|
+
## Reglas obligatorias (24 base + 40 por lenguaje)
|
|
129
|
+
|
|
130
|
+
Las reglas globales del usuario en `~/.claude/rules/` se cargan automáticamente
|
|
131
|
+
y aplican a todos los proyectos. Las reglas del sistema en `reglas/` se cargan
|
|
132
|
+
por matcher de archivos. Reglas de mayor uso:
|
|
133
|
+
|
|
134
|
+
| Regla | Carga cuando |
|
|
135
|
+
|-------|-------------|
|
|
136
|
+
| `brevedad-output.md` | Siempre — idioma español, uso obligatorio de SWL, eficiencia de tokens |
|
|
137
|
+
| `seguridad.md` / `seguridad-agentes.md` | `*.py`, `*.ts`, `auth/`, agentes autónomos |
|
|
138
|
+
| `arreglar-al-detectar.md` | Siempre — detectar → informar → arreglar en mismo turno |
|
|
139
|
+
| `analisis-previo-tareas-grandes.md` | Solicitudes >10 archivos / >500 LOC / cross-módulo |
|
|
140
|
+
| `usar-context7.md` | Al generar código que importe librerías externas |
|
|
141
|
+
| `git-workflow.md` | Siempre |
|
|
142
|
+
| `skills-estandar.md` / `fragmentos-compartidos.md` | Crear/auditar skills o fragmentos |
|
|
143
|
+
|
|
144
|
+
Catálogo completo y matchers en `@INVENTARIO.md` sección Reglas.
|
|
145
|
+
|
|
146
|
+
## Estrategia de modelos por nivel de criticidad (Model-Tier)
|
|
147
|
+
|
|
148
|
+
Asignar el modelo correcto a cada agente según la criticidad e irreversibilidad de la tarea.
|
|
149
|
+
|
|
150
|
+
| Nivel | Modelo | Campo en frontmatter | Agentes SWL | Criterio |
|
|
151
|
+
|-------|--------|---------------------|-------------|----------|
|
|
152
|
+
| **Crítico** | `claude-opus-4-7` | `model: claude-opus-4-7` | orquestador, arquitecto, revisor-seguridad, producto-prd | Decisiones irreversibles (arquitectura, seguridad, PRD) |
|
|
153
|
+
| **Estándar** | `claude-sonnet-4-6` | `model: claude-sonnet-4-6` | backend-*, frontend-*, mobile-*, tdd-qa, revisores de lenguaje | Implementación y revisión |
|
|
154
|
+
| **Ligero** | `claude-haiku-4-5-20251001` | `model: claude-haiku-4-5-20251001` | notificador, resolutor-build (búsquedas) | Operaciones deterministas rápidas |
|
|
155
|
+
| **Heredado** | (del padre) | `model: inherit` | Sub-agentes invocados por el orquestador | El padre decide |
|
|
156
|
+
|
|
157
|
+
**Reglas de asignación**: decisiones no reversibles → Opus; código → Sonnet; búsqueda/notificación → Haiku.
|
|
158
|
+
NUNCA usar Opus para tareas que Sonnet resuelve igual de bien.
|
|
159
|
+
|
|
160
|
+
**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`.
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Convenciones operacionales
|
|
165
|
+
|
|
166
|
+
- Score mínimo de calidad: **9.0/10** para aprobar trabajo
|
|
167
|
+
- Modos de desarrollo: `dev`, `review`, `research` (vía `/swl:contexto`)
|
|
168
|
+
- `respositorios-git/` y `temp/` son material de referencia — no modificar ni commitear
|
|
169
|
+
- Inventario completo: ver `@INVENTARIO.md` o `@.planning/ESTADO.md`
|
|
170
|
+
- **Limpieza de registros resueltos**: no dejar items completados en listas de pendientes
|
|
171
|
+
- **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
|
|
172
|
+
- **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**
|
|
173
|
+
- **`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
|
|
174
|
+
- **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
|
|
175
|
+
|
|
176
|
+
## Mapa de propagación de cambios
|
|
177
|
+
|
|
178
|
+
Al modificar un componente del sistema, verificar TODOS los archivos afectados.
|
|
179
|
+
|
|
180
|
+
| Tipo de cambio | Archivos a verificar |
|
|
181
|
+
|----------------|---------------------|
|
|
182
|
+
| **Agente** | `plugin.json`, `manifiestos/modulos.json`, `INVENTARIO.md`, `AGENTS.md`, `SALUD.md`, `.planning/REPORTE-GRAFO.md` |
|
|
183
|
+
| **Skill** | `plugin.json`, `manifiestos/modulos.json`, `INVENTARIO.md`, `CLAUDE.md` (si aplica al dominio) |
|
|
184
|
+
| **Hook** | `plugin.json`, `.claude/settings.json`, `manifiestos/hooks-config.json` (event+matcher), `manifiestos/modulos.json` (ruta), `INVENTARIO.md`, `SALUD.md`. **AMBOS manifiestos son obligatorios** |
|
|
185
|
+
| **Comando** | `COMANDOS.md`, `CLAUDE.md` (tabla de comandos), `INVENTARIO.md` |
|
|
186
|
+
| **Regla** | `CLAUDE.md` (tabla de reglas), `INVENTARIO.md`, `SALUD.md` |
|
|
187
|
+
| **Schema** | `INVENTARIO.md`, `SALUD.md` |
|
|
188
|
+
| **Bump de versión** | 15+ ubicaciones — checklist en `/swl:release` paso 6 |
|
|
189
|
+
| **CLAUDE.md (cualquier capa)** | Verificar con `/swl:claudemd audit` antes de commit |
|
|
190
|
+
| **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) |
|
|
191
|
+
|
|
192
|
+
Esta tabla es obligatoria. Omitir un archivo causa fallos en `/swl:salud`.
|
|
193
|
+
|
|
194
|
+
### Reglas auxiliares
|
|
195
|
+
|
|
196
|
+
- **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
|
|
197
|
+
- **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
|
|
198
|
+
- **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
|
|
199
|
+
- **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)
|
package/README.md
CHANGED
package/bin/swl-ses.js
CHANGED
|
@@ -104,6 +104,17 @@ const COMANDOS = {
|
|
|
104
104
|
uninstall: '../scripts/desinstalar.js',
|
|
105
105
|
'check-update': '../scripts/check-update.js',
|
|
106
106
|
'install-git-hook': '../scripts/instalar-git-hook.js',
|
|
107
|
+
'audit-claudemd': '../scripts/cli/audit-claudemd.js',
|
|
108
|
+
'verify-evolution': '../scripts/cli/verify-evolution.js',
|
|
109
|
+
'bootstrap-instincts': '../scripts/cli/bootstrap-instincts.js',
|
|
110
|
+
'configure-branch-protection': '../scripts/cli/configure-branch-protection.js',
|
|
111
|
+
'run-skill-evals': '../scripts/cli/run-skill-evals.js',
|
|
112
|
+
'reflect-skills': '../scripts/cli/reflect-skills.js',
|
|
113
|
+
'inbox-tmux-inject': '../scripts/cli/inbox-tmux-inject.js',
|
|
114
|
+
'generate-skills-lock': '../scripts/cli/generate-skills-lock.js',
|
|
115
|
+
'audit-coverage-frameworks': '../scripts/cli/audit-coverage-frameworks.js',
|
|
116
|
+
'audit-agents-gaps': '../scripts/cli/audit-agents-gaps.js',
|
|
117
|
+
'skill-discovery': '../scripts/cli/skill-discovery.js',
|
|
107
118
|
};
|
|
108
119
|
|
|
109
120
|
// Comandos con subcomandos (nivel 2)
|
|
@@ -130,6 +141,38 @@ COMANDOS PRINCIPALES:
|
|
|
130
141
|
install-git-hook [--force] Instala pre-commit hook que avisa de nuevas versiones.
|
|
131
142
|
Útil para CLIs que no son Claude Code (Codex, Copilot,
|
|
132
143
|
Gemini, OpenCode) donde el hook UserPromptSubmit no aplica.
|
|
144
|
+
audit-claudemd [ruta] Audita CLAUDE.md según best practices (ADR-0016).
|
|
145
|
+
Soporta --json (output estructurado) y --strict (exit 1
|
|
146
|
+
si WARN). Usado por el slash command /swl:claudemd.
|
|
147
|
+
verify-evolution [archivos] Verifica que archivos evolucionables tengan version y
|
|
148
|
+
changelog actualizados respecto a HEAD. Flags:
|
|
149
|
+
--changed (solo archivos modificados), --since=<rev>.
|
|
150
|
+
Usado por /swl:aprender.
|
|
151
|
+
bootstrap-instincts Pobla instintos/proyecto.yaml desde APRENDIZAJES.md.
|
|
152
|
+
Flags: --dry-run, --force. Usado por /swl:evolucion-estado.
|
|
153
|
+
configure-branch-protection Configura branch protection en main del repo actual via
|
|
154
|
+
gh CLI (rulesets o classic). Flag: --dry-run.
|
|
155
|
+
Usado por /swl:configurar-ci.
|
|
156
|
+
run-skill-evals <skill> Ejecuta evals de un skill, lista, o registra baseline/after.
|
|
157
|
+
Flags: --list, --record-baseline, --record-after,
|
|
158
|
+
--score=<N>, --hypothesis=<texto>. Usado por /swl:evolucionar.
|
|
159
|
+
reflect-skills Analiza patrones de prompts del usuario en ventana N días
|
|
160
|
+
y sugiere skills nuevos. Flags: --ventana=<N>, --umbral=<N>,
|
|
161
|
+
--json. Usado por /swl:reflect-skills.
|
|
162
|
+
inbox-tmux-inject Daemon Linux/macOS opt-in que poll-ea .planning/inbox/ y
|
|
163
|
+
reinyecta a sesión tmux de Claude Code. Flags:
|
|
164
|
+
--session=<nombre>, --poll=<segundos>. Usado por /swl:inbox.
|
|
165
|
+
generate-skills-lock Regenera manifiestos/skills-lock.json (SHA256 de cada
|
|
166
|
+
SKILL.md). Flag: --check (exit 1 si difiere). Usado por
|
|
167
|
+
/swl:salud y /swl:release.
|
|
168
|
+
audit-coverage-frameworks Audita cobertura de NIST CSF/AI RMF, MITRE ATT&CK/ATLAS,
|
|
169
|
+
D3FEND en skills de seguridad. Flags: --resumen,
|
|
170
|
+
--framework=<id>, --save. Usado por /swl:salud.
|
|
171
|
+
audit-agents-gaps Audita gaps de metadata defensiva en agentes
|
|
172
|
+
(Exclusion Clauses, fragments). Flags: --resumen, --json.
|
|
173
|
+
Usado por /swl:salud.
|
|
174
|
+
skill-discovery [query] Descubre y busca skills SWL. Sin query lista todos.
|
|
175
|
+
Flag: --rebuild. Usado por /swl:skill-search.
|
|
133
176
|
info [--target <runtime>] Muestra información del sistema instalado
|
|
134
177
|
help Muestra esta ayuda (alias de --help)
|
|
135
178
|
list [--target <runtime>] Lista todos los agentes y skills instalados
|
|
@@ -314,19 +357,48 @@ function parsearOpciones(args) {
|
|
|
314
357
|
const opciones = { _args: [] };
|
|
315
358
|
let i = 0;
|
|
316
359
|
|
|
360
|
+
// Setea valor en ambas formas (con dashes y con underscores) para que
|
|
361
|
+
// los consumidores puedan acceder vía opciones['dry-run'] u opciones.dry_run
|
|
362
|
+
// indistintamente. Resuelve la categoría de bugs donde el parser convertía
|
|
363
|
+
// dashes a underscores solo para flags de whitelist, dejando otros con dashes
|
|
364
|
+
// — inconsistencia que llevaba a wrappers buscando la clave equivocada y a
|
|
365
|
+
// flags silenciosamente ignorados.
|
|
366
|
+
const setear = (clave, valor) => {
|
|
367
|
+
opciones[clave] = valor;
|
|
368
|
+
const conUnderscores = clave.replace(/-/g, '_');
|
|
369
|
+
if (conUnderscores !== clave) {
|
|
370
|
+
opciones[conUnderscores] = valor;
|
|
371
|
+
}
|
|
372
|
+
};
|
|
373
|
+
|
|
317
374
|
while (i < args.length) {
|
|
318
375
|
const arg = args[i];
|
|
319
376
|
|
|
320
377
|
if (arg.startsWith('--')) {
|
|
321
|
-
|
|
322
|
-
//
|
|
378
|
+
let clave = arg.slice(2);
|
|
379
|
+
// Soporta flags con valor integrado: --key=value
|
|
380
|
+
// Antes el parser dejaba 'session=claude' como nombre de flag completo,
|
|
381
|
+
// produciendo opciones['session=claude']=true en vez de opciones.session='claude'.
|
|
382
|
+
let valorIntegrado = null;
|
|
383
|
+
const idxIgual = clave.indexOf('=');
|
|
384
|
+
if (idxIgual !== -1) {
|
|
385
|
+
valorIntegrado = clave.slice(idxIgual + 1);
|
|
386
|
+
clave = clave.slice(0, idxIgual);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
// Opciones booleanas explícitas (whitelist) — siempre booleanas
|
|
323
390
|
if (['global', 'local', 'dry-run', 'force', 'verbose', 'all', 'all-langs', 'no-claudemd'].includes(clave)) {
|
|
324
|
-
|
|
391
|
+
setear(clave, true);
|
|
392
|
+
} else if (valorIntegrado !== null) {
|
|
393
|
+
// --key=value
|
|
394
|
+
setear(clave, valorIntegrado);
|
|
325
395
|
} else if (i + 1 < args.length && !args[i + 1].startsWith('--')) {
|
|
326
|
-
|
|
396
|
+
// --key value
|
|
397
|
+
setear(clave, args[i + 1]);
|
|
327
398
|
i++;
|
|
328
399
|
} else {
|
|
329
|
-
|
|
400
|
+
// --key (sin valor)
|
|
401
|
+
setear(clave, true);
|
|
330
402
|
}
|
|
331
403
|
} else if (arg.startsWith('-')) {
|
|
332
404
|
const clave = arg.slice(1);
|
package/comandos/swl/aprender.md
CHANGED
|
@@ -361,7 +361,7 @@ Antes de pasar al Paso 7, ejecutar OBLIGATORIAMENTE el verificador que valida qu
|
|
|
361
361
|
```bash
|
|
362
362
|
# Verifica archivos modificados desde el último commit del usuario
|
|
363
363
|
# (ajustar --since según el alcance de la sesión de aprender)
|
|
364
|
-
|
|
364
|
+
npx -y @saulwade/swl-ses@latest verify-evolution --changed --since=HEAD~1
|
|
365
365
|
```
|
|
366
366
|
|
|
367
367
|
El script revisa cada agente/skill modificado contra 4 criterios:
|