@saulwade/swl-ses 1.7.3 → 1.8.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.
- package/CLAUDE.md +196 -196
- package/README.md +578 -578
- package/agentes/auto-evolucion-swl.md +7 -7
- package/agentes/disenador-ui-swl.md +12 -0
- package/agentes/investigador-ux-swl.md +9 -0
- package/agentes/perfilador-usuario-swl.md +2 -2
- package/agentes/ux-disenador-swl.md +6 -0
- package/comandos/swl/evaluar-skill.md +1 -1
- package/comandos/swl/evolucion-estado.md +5 -5
- package/comandos/swl/evolucionar.md +2 -2
- package/comandos/swl/inbox.md +1 -1
- package/comandos/swl/reflect-skills.md +2 -2
- package/comandos/swl/salud.md +1 -1
- package/habilidades/ai-runtime-security/SKILL.md +2 -2
- package/habilidades/auto-evolucion-protocolo/SKILL.md +2 -2
- package/habilidades/benchmark-memoria/SKILL.md +2 -2
- package/habilidades/drift-detection/SKILL.md +3 -3
- package/habilidades/eval-framework/SKILL.md +1 -1
- package/habilidades/guardrail-semantico/SKILL.md +4 -4
- package/habilidades/proceso-ddia-streaming/SKILL.md +4 -4
- package/habilidades/swl-claudemd/SKILL.md +2 -2
- package/habilidades/testing-python/SKILL.md +1 -1
- package/habilidades/tracing-processor/SKILL.md +1 -1
- package/hooks/actualizar-perfil-usuario.js +2 -2
- package/hooks/aiisms-detector.js +2 -2
- package/hooks/auto-evolucion.js +1 -1
- package/hooks/captura-feedback-usuario.js +2 -2
- package/hooks/claudemd-bloat-detector.js +2 -2
- package/hooks/claudemd-duplicacion-detector.js +1 -1
- package/hooks/guardrail-modelo.js +2 -2
- package/hooks/lib/memory-search.js +1 -1
- package/hooks/lib/nudge-tracker.js +1 -1
- package/hooks/metricas-evolucion.js +3 -3
- package/hooks/rotar-audit-auto.js +2 -2
- package/hooks/validar-formato-post-subagente.js +2 -2
- package/hooks/validar-intent-spec.js +1 -1
- package/hooks/validar-planning-paths.js +134 -0
- package/manifiestos/hooks-config.json +20 -11
- package/manifiestos/modulos.json +1352 -1351
- package/manifiestos/planning-paths.json +44 -0
- package/manifiestos/skills-lock.json +13 -13
- package/package.json +92 -92
- package/plugin.json +372 -372
- package/reglas/gobernanza.md +1 -1
- package/reglas/harness-claude-code.md +39 -0
- package/reglas/memoria-consolidada.md +7 -7
- package/reglas/sin-duplicacion-reglas-globales.md +1 -1
- package/scripts/auditar-agentes-gaps.js +1 -1
- package/scripts/auditar-cobertura-frameworks.js +2 -2
- package/scripts/auditar-skills-gaps.js +2 -2
- package/scripts/benchmark-memoria.js +3 -3
- package/scripts/inferir-herramientas-permitidas.js +1 -1
- package/scripts/instalador.js +48 -0
- package/scripts/lib/dashboard-widgets.js +3 -3
- package/scripts/lib/drift-detector.js +3 -3
- package/scripts/lib/eval-metrics-store.js +3 -3
- package/scripts/lib/gitignore-manifest.js +3 -3
- package/scripts/mcp-server/README.md +1 -1
- package/scripts/mcp-server/telemetry.js +2 -2
- package/scripts/reflect-skills.js +4 -4
- package/scripts/rotar-audit-logs.js +2 -2
- package/scripts/run-skill-evals.js +2 -2
package/CLAUDE.md
CHANGED
|
@@ -1,196 +1,196 @@
|
|
|
1
|
-
# CLAUDE.md — @saulwade/swl-ses v1.
|
|
2
|
-
|
|
3
|
-
## Reglas de máxima prioridad (aplican SIEMPRE, sin excepción)
|
|
4
|
-
|
|
5
|
-
### Idioma y estilo de output
|
|
6
|
-
Aplican las reglas globales `@~/.claude/rules/brevedad-output.md` (español de México, brevedad, sin AI-isms) y `@~/.claude/rules/git-coauthor.md` (sin co-autores en commits) — cargadas automáticamente en cada sesión. NO duplicar su contenido inline en este archivo (regla `@reglas/sin-duplicacion-reglas-globales.md`).
|
|
7
|
-
|
|
8
|
-
### Uso obligatorio del sistema SWL
|
|
9
|
-
Aplica la regla global `@~/.claude/rules/usar-sistema-swl.md` — matriz operacional completa (qué agente/skill/comando usar por tipo de tarea, excepciones legítimas, anti-patrones). Cargar skills con `Skill("nombre")` antes de implementar.
|
|
10
|
-
|
|
11
|
-
### Cuatro principios de implementación (Karpathy)
|
|
12
|
-
Antes de implementar, refactorizar o corregir bugs: (1) **pensar antes de codificar** (no asumir en silencio), (2) **simplicidad primero** (sin abstracciones especulativas), (3) **cambios quirúrgicos** (leer archivo completo antes de editar, no refactor de oportunidad), (4) **ejecución orientada a metas** (criterios verificables, test que reproduce bugs antes del fix). Tabla operativa + mapeo a agentes SWL en `@docs/karpathy-principios.md`. Detalle + 9 ejemplos MAL→BIEN: `Skill("prevencion-sobreingenieria")` + `recursos/EXAMPLES.md`.
|
|
13
|
-
|
|
14
|
-
### Lectura de documentos Office y Jupyter
|
|
15
|
-
Cuando necesites leer el **contenido** de un archivo `.docx`, `.xlsx`, `.xls`, `.pptx` o `.ipynb`, NUNCA uses el Read tool directamente (no soporta esos formatos). Usa:
|
|
16
|
-
```bash
|
|
17
|
-
python scripts/vendor/markitdown/cli.py <ruta-al-archivo>
|
|
18
|
-
```
|
|
19
|
-
El Read tool sigue siendo correcto para `.pdf` (≤20 páginas), `.md`, `.txt` y código fuente. Para más opciones y casos de uso consultar `Skill("swl-markitdown")`.
|
|
20
|
-
|
|
21
|
-
### Versión SemVer del próximo release: decisión exclusiva del usuario
|
|
22
|
-
NUNCA asumir, sugerir como hecho consumado, ni escribir en ADRs/manifiestos/CHANGELOG el número del próximo release sin autorización explícita del usuario en la conversación actual. El agente puede **recomendar** el bump apropiado según SemVer estricto, pero la **decisión final del número es del usuario**. Detalle y origen del aprendizaje en `.planning/APRENDIZAJES.md` sesión 2026-05-16 (ADR-0021).
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Stack del proyecto
|
|
27
|
-
|
|
28
|
-
- **Runtime**: Node.js >=22.0.0 (ESM + CommonJS)
|
|
29
|
-
- **Tipo**: Sistema de scripts CLI + plugin para Claude Code (multi-runtime: Claude / Copilot / OpenCode / Codex / Gemini)
|
|
30
|
-
- **Formato fuente**: Markdown (agentes, skills, comandos, reglas) + JSON Schema (validación) + YAML (instintos)
|
|
31
|
-
- **Distribución**: npm package (`@saulwade/swl-ses`) + plugin Claude Code (`plugin.json`)
|
|
32
|
-
- **Dependencias runtime**: `docx ^9.6.1`, `pako ^2.1.0`, `readable-stream ^4.7.0` (mínimas; los hooks tienen zero-deps)
|
|
33
|
-
- **Idioma de salida**: 100% español (México) para componentes SWL; skills oficiales de Anthropic en inglés
|
|
34
|
-
|
|
35
|
-
## Comandos del proyecto
|
|
36
|
-
|
|
37
|
-
| Comando | Propósito |
|
|
38
|
-
|---|---|
|
|
39
|
-
| `npm test` | Tests unitarios (lib/, scripts/, hooks/) |
|
|
40
|
-
| `npm run test:all` | test + validar.js + validar-manifest.js |
|
|
41
|
-
| `npm run test:release` | test:all + test:userland + smoke (gate pre-publish) |
|
|
42
|
-
| `npm run test:validate` | `node scripts/validar.js` — validación estructural completa |
|
|
43
|
-
| `npm run test:manifest` | `node scripts/validar-manifest.js` — coherencia modulos/hooks |
|
|
44
|
-
| `npm run test:smoke` | Smoke test del instalador |
|
|
45
|
-
| `npm run gen-checklists` | Regenera `docs/checklists-consolidados/` desde reglas |
|
|
46
|
-
| `npm run gen-checklists:check` | Falla si hay drift (uso CI) |
|
|
47
|
-
| `npm run generate:docs` | Regenera `INVENTARIO.md` desde directorios |
|
|
48
|
-
| `npm run doctor` | Diagnóstico del sistema (`scripts/doctor.js`) |
|
|
49
|
-
| `npm run publish:dry` | Dry-run de publicación a npm + GitHub |
|
|
50
|
-
| `node scripts/verificar-release.js` | Gate pre-release: 15+ ubicaciones de versión, sincronización, AI-isms (si `SWL_AIISMS_GATE=1`) |
|
|
51
|
-
| `node scripts/generar-inventario.js` | Regenera contadores oficiales (NUNCA contar a mano) |
|
|
52
|
-
| `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`. |
|
|
53
|
-
|
|
54
|
-
## Code style
|
|
55
|
-
|
|
56
|
-
- **Nombres**: kebab-case para archivos
|
|
57
|
-
- **Zero-dependencies en `hooks/lib/`**: sin dependencias npm externas
|
|
58
|
-
- **Escrituras atómicas obligatorias**: usar `atomicWriteSync()` / `atomicWriteJSON()` de `hooks/lib/atomic-write.js`. NUNCA `fs.writeFileSync` directo en archivos del sistema
|
|
59
|
-
- **JSONL para alta frecuencia**: usar `fs.appendFileSync(ruta, JSON.stringify(evento) + '\n')` en hooks de telemetría/auditoría — no `atomicWriteJSON` que reescribe todo
|
|
60
|
-
- **YAML inline en frontmatter**: `tools: [Read, Write]`, `skillsInvocables: [skill-a]`. NUNCA CSV string ni mezcla con lista multilínea
|
|
61
|
-
- **Mensajes de commit**: imperativo en español, formato `<tipo>(<scope>): <descripción>`
|
|
62
|
-
- **Sin `console.log` en producción** — excepto en `scripts/`, `bin/`, `hooks/`, `gateway/` (CLIs y daemons)
|
|
63
|
-
- **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
|
|
64
|
-
- **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
|
|
65
|
-
- **`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
|
|
66
|
-
- **Secretos compartidos entre múltiples clientes MCP viven como variables de entorno persistentes del SO, NO en archivos JSON** [v2 — 2026-05-18 supersede patrón anterior]: cuando un MCP server (ej. Obsidian) se usa simultáneamente desde **Cursor + Claude Code CLI + VS Code**, cada cliente tiene SU PROPIO config (`~/.cursor/mcp.json` vs `~/.claude/settings.json` vs `~/AppData/Roaming/Code/User/mcp.json`). Duplicar `OBSIDIAN_API_KEY` en N archivos JSON genera drift al regenerar la apiKey con Reset Crypto del plugin. Patrón correcto: `setx OBSIDIAN_API_KEY <key>` (CMD) o `[Environment]::SetEnvironmentVariable("OBSIDIAN_API_KEY","<key>","User")` (PowerShell 7) → escribe a `HKCU\Environment` → todos los clientes heredan al spawnear el binario. Los configs JSON OMITEN la clave `env` por completo (NO `env: {}` vacío — eso pasa literal a `child_process.spawn` y REEMPLAZA el env del padre, rompiendo la herencia). Regenerar apiKey = un solo `setx` + reiniciar Cursor, sin tocar JSONs. Origen: sesión 2026-05-18 tras 6h peleando con 40101 a través de 3 configs descoordinados.
|
|
67
|
-
|
|
68
|
-
## Convenciones de arquitectura
|
|
69
|
-
|
|
70
|
-
- **Precedencia de capas**: Reglas base (`reglas/`) → Reglas por lenguaje (`reglas/{lang}/`) → Skills (`habilidades/`) → Instintos (`instintos/`). Cada capa puede especializar pero NUNCA contradecir las superiores
|
|
71
|
-
- **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`
|
|
72
|
-
- **Preservación de datos en actualización**: `.planning/sessions/`, `.planning/comms/`, `_userland/`, `instintos/proyecto.yaml`, `APRENDIZAJES.md` NUNCA se sobreescriben
|
|
73
|
-
- **Documentación obligatoria**: toda funcionalidad nueva DEBE documentarse en `MANUAL_USO.md`, `COMANDOS.md`, `CLAUDE.md` y `README.md` ANTES del commit
|
|
74
|
-
- **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)
|
|
75
|
-
- **Filtro primario al analizar `temp/`**: antes de evaluar arquitectura, verificar **compatibilidad de dominio**. Si es incompatible, veredicto NINGUNA aplicabilidad sin análisis adicional
|
|
76
|
-
- **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
|
|
77
|
-
- **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
|
|
78
|
-
- **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`
|
|
79
|
-
- **`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
|
|
80
|
-
|
|
81
|
-
## Referencias a docs clave (cargar bajo demanda con `@`)
|
|
82
|
-
|
|
83
|
-
- `@README.md` — overview público y quickstart
|
|
84
|
-
- `@MANUAL_USO.md` — manual operacional completo
|
|
85
|
-
- `@INSTALACION.md` — instalación, perfiles, configuración
|
|
86
|
-
- `@COMANDOS.md` — referencia detallada de cada `/swl:*`
|
|
87
|
-
- `@AGENTS.md` — catálogo de agentes con capacidades
|
|
88
|
-
- `@INVENTARIO.md` — conteos oficiales (regenerado por script)
|
|
89
|
-
- `@docs/variables-entorno.md` — variables opt-in completas
|
|
90
|
-
- `@docs/CI-CD-SETUP.md` — setup de pipelines
|
|
91
|
-
- `@.planning/adrs/README.md` — índice de decisiones arquitecturales
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
## Qué es este repositorio
|
|
96
|
-
|
|
97
|
-
Sistema de ingeniería de software auto-evolutivo multi-runtime polyglot (SDLC completo).
|
|
98
|
-
11 lenguajes, 7 runtimes (Claude, OpenClaude, OpenCode, Gemini, Cursor, Codex, Copilot), 61 agentes, 178 skills, 44 comandos, 71 reglas,
|
|
99
|
-
|
|
100
|
-
## Estructura del repositorio
|
|
101
|
-
|
|
102
|
-
```
|
|
103
|
-
agentes/ habilidades/ comandos/swl/ contextos/ instintos/
|
|
104
|
-
reglas/ hooks/ schemas/ manifiestos/ plantillas/
|
|
105
|
-
scripts/ bin/ _userland/ .claude/ .planning/
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
## Flujos de trabajo
|
|
109
|
-
|
|
110
|
-
**Feature completa**: orquestador → discovery → PRD → arquitectura → plan → implementación (paralelo) → calidad (paralelo) → cierre
|
|
111
|
-
**Fases GSD**: discutir → planear → ejecutar → verificar
|
|
112
|
-
**Frontend**: investigador-ux → disenador-ui → accesibilidad → frontend-* → rendimiento
|
|
113
|
-
**Backend**: backend-api → backend-python/node → backend-workers → datos
|
|
114
|
-
**Mobile**: producto-prd → mobile-cross (decisión) → mobile-android/ios → tdd-qa
|
|
115
|
-
|
|
116
|
-
## Comandos del sistema (/swl:*)
|
|
117
|
-
|
|
118
|
-
Catálogo completo de 44 comandos `/swl:*` en `@COMANDOS.md`. Atajos mentales por categoría:
|
|
119
|
-
|
|
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`.
|
|
129
|
-
|
|
130
|
-
## Reglas obligatorias (25 base + 40 por lenguaje)
|
|
131
|
-
|
|
132
|
-
Las reglas globales del usuario en `~/.claude/rules/` se cargan automáticamente
|
|
133
|
-
y aplican a todos los proyectos. Las reglas del sistema en `reglas/` se cargan
|
|
134
|
-
por matcher de archivos o vía `@reglas/<nombre>.md` desde el CLAUDE.md del
|
|
135
|
-
proyecto. Reglas de mayor uso:
|
|
136
|
-
|
|
137
|
-
| Regla | Carga cuando |
|
|
138
|
-
|-------|-------------|
|
|
139
|
-
| `usar-sistema-swl.md` | Siempre — matriz operacional: tarea → componente SWL obligatorio |
|
|
140
|
-
| `brevedad-output.md` | Siempre — idioma español, eficiencia de tokens |
|
|
141
|
-
| `seguridad.md` / `seguridad-agentes.md` | `*.py`, `*.ts`, `auth/`, agentes autónomos |
|
|
142
|
-
| `arreglar-al-detectar.md` | Siempre — detectar → informar → arreglar en mismo turno |
|
|
143
|
-
| `analisis-previo-tareas-grandes.md` | Solicitudes >10 archivos / >500 LOC / cross-módulo |
|
|
144
|
-
| `usar-context7.md` | Al generar código que importe librerías externas |
|
|
145
|
-
| `git-workflow.md` | Siempre |
|
|
146
|
-
| `skills-estandar.md` / `fragmentos-compartidos.md` | Crear/auditar skills o fragmentos |
|
|
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 |
|
|
149
|
-
|
|
150
|
-
Catálogo completo y matchers en `@INVENTARIO.md` sección Reglas.
|
|
151
|
-
|
|
152
|
-
@reglas/usar-sistema-swl.md
|
|
153
|
-
|
|
154
|
-
## Estrategia de modelos por nivel de criticidad (Model-Tier)
|
|
155
|
-
|
|
156
|
-
Asignar el modelo correcto a cada agente según la criticidad e irreversibilidad de la tarea.
|
|
157
|
-
|
|
158
|
-
| Nivel | Modelo | Campo en frontmatter | Agentes SWL | Criterio |
|
|
159
|
-
|-------|--------|---------------------|-------------|----------|
|
|
160
|
-
| **Crítico** | `claude-opus-4-7` | `model: claude-opus-4-7` | orquestador, arquitecto, revisor-seguridad, producto-prd | Decisiones irreversibles (arquitectura, seguridad, PRD) |
|
|
161
|
-
| **Estándar** | `claude-sonnet-4-6` | `model: claude-sonnet-4-6` | backend-*, frontend-*, mobile-*, tdd-qa, revisores de lenguaje | Implementación y revisión |
|
|
162
|
-
| **Ligero** | `claude-haiku-4-5-20251001` | `model: claude-haiku-4-5-20251001` | notificador, resolutor-build (búsquedas) | Operaciones deterministas rápidas |
|
|
163
|
-
| **Heredado** | (del padre) | `model: inherit` | Sub-agentes invocados por el orquestador | El padre decide |
|
|
164
|
-
|
|
165
|
-
**Reglas de asignación**: decisiones no reversibles → Opus; código → Sonnet; búsqueda/notificación → Haiku.
|
|
166
|
-
NUNCA usar Opus para tareas que Sonnet resuelve igual de bien.
|
|
167
|
-
|
|
168
|
-
**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`.
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
## Convenciones operacionales
|
|
173
|
-
|
|
174
|
-
Detalle completo en `@docs/convenciones-operacionales.md`. Resumen mínimo:
|
|
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
|
-
- **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.
|
|
182
|
-
|
|
183
|
-
## Mapa de propagación de cambios
|
|
184
|
-
|
|
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`).
|
|
190
|
-
|
|
191
|
-
Resumen mínimo para uso inmediato:
|
|
192
|
-
|
|
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.
|
|
1
|
+
# CLAUDE.md — @saulwade/swl-ses v1.8.0
|
|
2
|
+
|
|
3
|
+
## Reglas de máxima prioridad (aplican SIEMPRE, sin excepción)
|
|
4
|
+
|
|
5
|
+
### Idioma y estilo de output
|
|
6
|
+
Aplican las reglas globales `@~/.claude/rules/brevedad-output.md` (español de México, brevedad, sin AI-isms) y `@~/.claude/rules/git-coauthor.md` (sin co-autores en commits) — cargadas automáticamente en cada sesión. NO duplicar su contenido inline en este archivo (regla `@reglas/sin-duplicacion-reglas-globales.md`).
|
|
7
|
+
|
|
8
|
+
### Uso obligatorio del sistema SWL
|
|
9
|
+
Aplica la regla global `@~/.claude/rules/usar-sistema-swl.md` — matriz operacional completa (qué agente/skill/comando usar por tipo de tarea, excepciones legítimas, anti-patrones). Cargar skills con `Skill("nombre")` antes de implementar.
|
|
10
|
+
|
|
11
|
+
### Cuatro principios de implementación (Karpathy)
|
|
12
|
+
Antes de implementar, refactorizar o corregir bugs: (1) **pensar antes de codificar** (no asumir en silencio), (2) **simplicidad primero** (sin abstracciones especulativas), (3) **cambios quirúrgicos** (leer archivo completo antes de editar, no refactor de oportunidad), (4) **ejecución orientada a metas** (criterios verificables, test que reproduce bugs antes del fix). Tabla operativa + mapeo a agentes SWL en `@docs/karpathy-principios.md`. Detalle + 9 ejemplos MAL→BIEN: `Skill("prevencion-sobreingenieria")` + `recursos/EXAMPLES.md`.
|
|
13
|
+
|
|
14
|
+
### Lectura de documentos Office y Jupyter
|
|
15
|
+
Cuando necesites leer el **contenido** de un archivo `.docx`, `.xlsx`, `.xls`, `.pptx` o `.ipynb`, NUNCA uses el Read tool directamente (no soporta esos formatos). Usa:
|
|
16
|
+
```bash
|
|
17
|
+
python scripts/vendor/markitdown/cli.py <ruta-al-archivo>
|
|
18
|
+
```
|
|
19
|
+
El Read tool sigue siendo correcto para `.pdf` (≤20 páginas), `.md`, `.txt` y código fuente. Para más opciones y casos de uso consultar `Skill("swl-markitdown")`.
|
|
20
|
+
|
|
21
|
+
### Versión SemVer del próximo release: decisión exclusiva del usuario
|
|
22
|
+
NUNCA asumir, sugerir como hecho consumado, ni escribir en ADRs/manifiestos/CHANGELOG el número del próximo release sin autorización explícita del usuario en la conversación actual. El agente puede **recomendar** el bump apropiado según SemVer estricto, pero la **decisión final del número es del usuario**. Detalle y origen del aprendizaje en `.planning/APRENDIZAJES.md` sesión 2026-05-16 (ADR-0021).
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Stack del proyecto
|
|
27
|
+
|
|
28
|
+
- **Runtime**: Node.js >=22.0.0 (ESM + CommonJS)
|
|
29
|
+
- **Tipo**: Sistema de scripts CLI + plugin para Claude Code (multi-runtime: Claude / Copilot / OpenCode / Codex / Gemini)
|
|
30
|
+
- **Formato fuente**: Markdown (agentes, skills, comandos, reglas) + JSON Schema (validación) + YAML (instintos)
|
|
31
|
+
- **Distribución**: npm package (`@saulwade/swl-ses`) + plugin Claude Code (`plugin.json`)
|
|
32
|
+
- **Dependencias runtime**: `docx ^9.6.1`, `pako ^2.1.0`, `readable-stream ^4.7.0` (mínimas; los hooks tienen zero-deps)
|
|
33
|
+
- **Idioma de salida**: 100% español (México) para componentes SWL; skills oficiales de Anthropic en inglés
|
|
34
|
+
|
|
35
|
+
## Comandos del proyecto
|
|
36
|
+
|
|
37
|
+
| Comando | Propósito |
|
|
38
|
+
|---|---|
|
|
39
|
+
| `npm test` | Tests unitarios (lib/, scripts/, hooks/) |
|
|
40
|
+
| `npm run test:all` | test + validar.js + validar-manifest.js |
|
|
41
|
+
| `npm run test:release` | test:all + test:userland + smoke (gate pre-publish) |
|
|
42
|
+
| `npm run test:validate` | `node scripts/validar.js` — validación estructural completa |
|
|
43
|
+
| `npm run test:manifest` | `node scripts/validar-manifest.js` — coherencia modulos/hooks |
|
|
44
|
+
| `npm run test:smoke` | Smoke test del instalador |
|
|
45
|
+
| `npm run gen-checklists` | Regenera `docs/checklists-consolidados/` desde reglas |
|
|
46
|
+
| `npm run gen-checklists:check` | Falla si hay drift (uso CI) |
|
|
47
|
+
| `npm run generate:docs` | Regenera `INVENTARIO.md` desde directorios |
|
|
48
|
+
| `npm run doctor` | Diagnóstico del sistema (`scripts/doctor.js`) |
|
|
49
|
+
| `npm run publish:dry` | Dry-run de publicación a npm + GitHub |
|
|
50
|
+
| `node scripts/verificar-release.js` | Gate pre-release: 15+ ubicaciones de versión, sincronización, AI-isms (si `SWL_AIISMS_GATE=1`) |
|
|
51
|
+
| `node scripts/generar-inventario.js` | Regenera contadores oficiales (NUNCA contar a mano) |
|
|
52
|
+
| `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`. |
|
|
53
|
+
|
|
54
|
+
## Code style
|
|
55
|
+
|
|
56
|
+
- **Nombres**: kebab-case para archivos; agentes SWL y vocabulario GSD (comandos `*-fase`, dir `.planning/fases/`) en español; paths runtime/técnicos de `.planning/` en inglés (`evolution/`, `auto-evolution/`, `user-profile/`, `archive/`, `traces/`, `sessions/`, `audit/`). Ver `@~/.claude/rules/analizar-directorios-antes-de-escribir.md § Eje técnico-runtime`
|
|
57
|
+
- **Zero-dependencies en `hooks/lib/`**: sin dependencias npm externas
|
|
58
|
+
- **Escrituras atómicas obligatorias**: usar `atomicWriteSync()` / `atomicWriteJSON()` de `hooks/lib/atomic-write.js`. NUNCA `fs.writeFileSync` directo en archivos del sistema
|
|
59
|
+
- **JSONL para alta frecuencia**: usar `fs.appendFileSync(ruta, JSON.stringify(evento) + '\n')` en hooks de telemetría/auditoría — no `atomicWriteJSON` que reescribe todo
|
|
60
|
+
- **YAML inline en frontmatter**: `tools: [Read, Write]`, `skillsInvocables: [skill-a]`. NUNCA CSV string ni mezcla con lista multilínea
|
|
61
|
+
- **Mensajes de commit**: imperativo en español, formato `<tipo>(<scope>): <descripción>`
|
|
62
|
+
- **Sin `console.log` en producción** — excepto en `scripts/`, `bin/`, `hooks/`, `gateway/` (CLIs y daemons)
|
|
63
|
+
- **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
|
|
64
|
+
- **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
|
|
65
|
+
- **`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
|
|
66
|
+
- **Secretos compartidos entre múltiples clientes MCP viven como variables de entorno persistentes del SO, NO en archivos JSON** [v2 — 2026-05-18 supersede patrón anterior]: cuando un MCP server (ej. Obsidian) se usa simultáneamente desde **Cursor + Claude Code CLI + VS Code**, cada cliente tiene SU PROPIO config (`~/.cursor/mcp.json` vs `~/.claude/settings.json` vs `~/AppData/Roaming/Code/User/mcp.json`). Duplicar `OBSIDIAN_API_KEY` en N archivos JSON genera drift al regenerar la apiKey con Reset Crypto del plugin. Patrón correcto: `setx OBSIDIAN_API_KEY <key>` (CMD) o `[Environment]::SetEnvironmentVariable("OBSIDIAN_API_KEY","<key>","User")` (PowerShell 7) → escribe a `HKCU\Environment` → todos los clientes heredan al spawnear el binario. Los configs JSON OMITEN la clave `env` por completo (NO `env: {}` vacío — eso pasa literal a `child_process.spawn` y REEMPLAZA el env del padre, rompiendo la herencia). Regenerar apiKey = un solo `setx` + reiniciar Cursor, sin tocar JSONs. Origen: sesión 2026-05-18 tras 6h peleando con 40101 a través de 3 configs descoordinados.
|
|
67
|
+
|
|
68
|
+
## Convenciones de arquitectura
|
|
69
|
+
|
|
70
|
+
- **Precedencia de capas**: Reglas base (`reglas/`) → Reglas por lenguaje (`reglas/{lang}/`) → Skills (`habilidades/`) → Instintos (`instintos/`). Cada capa puede especializar pero NUNCA contradecir las superiores
|
|
71
|
+
- **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`
|
|
72
|
+
- **Preservación de datos en actualización**: `.planning/sessions/`, `.planning/comms/`, `_userland/`, `instintos/proyecto.yaml`, `APRENDIZAJES.md` NUNCA se sobreescriben
|
|
73
|
+
- **Documentación obligatoria**: toda funcionalidad nueva DEBE documentarse en `MANUAL_USO.md`, `COMANDOS.md`, `CLAUDE.md` y `README.md` ANTES del commit
|
|
74
|
+
- **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)
|
|
75
|
+
- **Filtro primario al analizar `temp/`**: antes de evaluar arquitectura, verificar **compatibilidad de dominio**. Si es incompatible, veredicto NINGUNA aplicabilidad sin análisis adicional
|
|
76
|
+
- **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
|
|
77
|
+
- **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
|
|
78
|
+
- **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`
|
|
79
|
+
- **`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
|
|
80
|
+
|
|
81
|
+
## Referencias a docs clave (cargar bajo demanda con `@`)
|
|
82
|
+
|
|
83
|
+
- `@README.md` — overview público y quickstart
|
|
84
|
+
- `@MANUAL_USO.md` — manual operacional completo
|
|
85
|
+
- `@INSTALACION.md` — instalación, perfiles, configuración
|
|
86
|
+
- `@COMANDOS.md` — referencia detallada de cada `/swl:*`
|
|
87
|
+
- `@AGENTS.md` — catálogo de agentes con capacidades
|
|
88
|
+
- `@INVENTARIO.md` — conteos oficiales (regenerado por script)
|
|
89
|
+
- `@docs/variables-entorno.md` — variables opt-in completas
|
|
90
|
+
- `@docs/CI-CD-SETUP.md` — setup de pipelines
|
|
91
|
+
- `@.planning/adrs/README.md` — índice de decisiones arquitecturales
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Qué es este repositorio
|
|
96
|
+
|
|
97
|
+
Sistema de ingeniería de software auto-evolutivo multi-runtime polyglot (SDLC completo).
|
|
98
|
+
11 lenguajes, 7 runtimes (Claude, OpenClaude, OpenCode, Gemini, Cursor, Codex, Copilot), 61 agentes, 178 skills, 44 comandos, 71 reglas, 44 hooks.
|
|
99
|
+
|
|
100
|
+
## Estructura del repositorio
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
agentes/ habilidades/ comandos/swl/ contextos/ instintos/
|
|
104
|
+
reglas/ hooks/ schemas/ manifiestos/ plantillas/
|
|
105
|
+
scripts/ bin/ _userland/ .claude/ .planning/
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Flujos de trabajo
|
|
109
|
+
|
|
110
|
+
**Feature completa**: orquestador → discovery → PRD → arquitectura → plan → implementación (paralelo) → calidad (paralelo) → cierre
|
|
111
|
+
**Fases GSD**: discutir → planear → ejecutar → verificar
|
|
112
|
+
**Frontend**: investigador-ux → disenador-ui → accesibilidad → frontend-* → rendimiento
|
|
113
|
+
**Backend**: backend-api → backend-python/node → backend-workers → datos
|
|
114
|
+
**Mobile**: producto-prd → mobile-cross (decisión) → mobile-android/ios → tdd-qa
|
|
115
|
+
|
|
116
|
+
## Comandos del sistema (/swl:*)
|
|
117
|
+
|
|
118
|
+
Catálogo completo de 44 comandos `/swl:*` en `@COMANDOS.md`. Atajos mentales por categoría:
|
|
119
|
+
|
|
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`.
|
|
129
|
+
|
|
130
|
+
## Reglas obligatorias (25 base + 40 por lenguaje)
|
|
131
|
+
|
|
132
|
+
Las reglas globales del usuario en `~/.claude/rules/` se cargan automáticamente
|
|
133
|
+
y aplican a todos los proyectos. Las reglas del sistema en `reglas/` se cargan
|
|
134
|
+
por matcher de archivos o vía `@reglas/<nombre>.md` desde el CLAUDE.md del
|
|
135
|
+
proyecto. Reglas de mayor uso:
|
|
136
|
+
|
|
137
|
+
| Regla | Carga cuando |
|
|
138
|
+
|-------|-------------|
|
|
139
|
+
| `usar-sistema-swl.md` | Siempre — matriz operacional: tarea → componente SWL obligatorio |
|
|
140
|
+
| `brevedad-output.md` | Siempre — idioma español, eficiencia de tokens |
|
|
141
|
+
| `seguridad.md` / `seguridad-agentes.md` | `*.py`, `*.ts`, `auth/`, agentes autónomos |
|
|
142
|
+
| `arreglar-al-detectar.md` | Siempre — detectar → informar → arreglar en mismo turno |
|
|
143
|
+
| `analisis-previo-tareas-grandes.md` | Solicitudes >10 archivos / >500 LOC / cross-módulo |
|
|
144
|
+
| `usar-context7.md` | Al generar código que importe librerías externas |
|
|
145
|
+
| `git-workflow.md` | Siempre |
|
|
146
|
+
| `skills-estandar.md` / `fragmentos-compartidos.md` | Crear/auditar skills o fragmentos |
|
|
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 |
|
|
149
|
+
|
|
150
|
+
Catálogo completo y matchers en `@INVENTARIO.md` sección Reglas.
|
|
151
|
+
|
|
152
|
+
@reglas/usar-sistema-swl.md
|
|
153
|
+
|
|
154
|
+
## Estrategia de modelos por nivel de criticidad (Model-Tier)
|
|
155
|
+
|
|
156
|
+
Asignar el modelo correcto a cada agente según la criticidad e irreversibilidad de la tarea.
|
|
157
|
+
|
|
158
|
+
| Nivel | Modelo | Campo en frontmatter | Agentes SWL | Criterio |
|
|
159
|
+
|-------|--------|---------------------|-------------|----------|
|
|
160
|
+
| **Crítico** | `claude-opus-4-7` | `model: claude-opus-4-7` | orquestador, arquitecto, revisor-seguridad, producto-prd | Decisiones irreversibles (arquitectura, seguridad, PRD) |
|
|
161
|
+
| **Estándar** | `claude-sonnet-4-6` | `model: claude-sonnet-4-6` | backend-*, frontend-*, mobile-*, tdd-qa, revisores de lenguaje | Implementación y revisión |
|
|
162
|
+
| **Ligero** | `claude-haiku-4-5-20251001` | `model: claude-haiku-4-5-20251001` | notificador, resolutor-build (búsquedas) | Operaciones deterministas rápidas |
|
|
163
|
+
| **Heredado** | (del padre) | `model: inherit` | Sub-agentes invocados por el orquestador | El padre decide |
|
|
164
|
+
|
|
165
|
+
**Reglas de asignación**: decisiones no reversibles → Opus; código → Sonnet; búsqueda/notificación → Haiku.
|
|
166
|
+
NUNCA usar Opus para tareas que Sonnet resuelve igual de bien.
|
|
167
|
+
|
|
168
|
+
**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`.
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Convenciones operacionales
|
|
173
|
+
|
|
174
|
+
Detalle completo en `@docs/convenciones-operacionales.md`. Resumen mínimo:
|
|
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
|
+
- **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.
|
|
182
|
+
|
|
183
|
+
## Mapa de propagación de cambios
|
|
184
|
+
|
|
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`).
|
|
190
|
+
|
|
191
|
+
Resumen mínimo para uso inmediato:
|
|
192
|
+
|
|
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.
|