@saulwade/swl-ses 1.3.7 → 1.4.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 +12 -4
- package/README.md +1 -1
- package/bin/swl-mcp-server.js +187 -187
- package/bin/swl-webhook-server.js +198 -0
- package/comandos/swl/.evolved.json +22 -22
- package/comandos/swl/adoptar-proyecto.md +21 -1
- package/comandos/swl/claudemd.md +14 -1
- package/comandos/swl/contribuir.md +233 -233
- package/comandos/swl/exportar-vault.md +207 -7
- package/comandos/swl/nuevo-proyecto.md +24 -2
- package/gateway/adapters/base.js +109 -0
- package/gateway/adapters/discord.js +167 -0
- package/gateway/adapters/email.js +221 -0
- package/gateway/adapters/slack.js +192 -0
- package/gateway/adapters/telegram.js +183 -0
- package/gateway/adapters/webhook.js +113 -0
- package/gateway/adapters/whatsapp.js +214 -0
- package/gateway/agent-executor.js +322 -0
- package/gateway/command-relay.js +271 -0
- package/gateway/cron/jobs.js +263 -0
- package/gateway/cron/scheduler.js +322 -0
- package/gateway/cron/store.js +335 -0
- package/gateway/index.js +320 -0
- package/gateway/lib/event-channel.js +191 -0
- package/gateway/session.js +131 -0
- package/gateway/webhook-server.js +324 -0
- package/habilidades/backend-production-resilience/SKILL.md +288 -288
- package/habilidades/benchmark-memoria/SKILL.md +186 -186
- package/habilidades/build-errors-nextjs/SKILL.md +55 -1
- package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
- package/habilidades/doubt-driven-review/SKILL.md +171 -171
- package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
- package/habilidades/eval-framework/SKILL.md +212 -212
- package/habilidades/extractor-de-aprendizajes/SKILL.md +24 -10
- package/habilidades/harness-claude-code/SKILL.md +299 -299
- package/habilidades/infra-github-actions/SKILL.md +166 -166
- package/habilidades/legacy-code-rescue/SKILL.md +267 -267
- package/habilidades/manejo-errores/.evolved.json +8 -8
- package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
- package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -163
- package/habilidades/nextjs-testing/SKILL.md +89 -5
- package/habilidades/node-experto/SKILL.md +37 -1
- package/habilidades/patrones-python/SKILL.md +229 -229
- package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
- package/habilidades/planear-fase/SKILL.md +319 -319
- package/habilidades/react-experto/SKILL.md +45 -4
- package/habilidades/release-semver/.evolved.json +8 -8
- package/habilidades/swl-claudemd/SKILL.md +15 -1
- package/habilidades/tdd-workflow/SKILL.md +36 -4
- package/habilidades/testing-python/SKILL.md +340 -340
- package/hooks/claudemd-bloat-detector.js +161 -161
- package/hooks/inyeccion-contexto.js +8 -3
- package/hooks/lib/agent-routing.js +107 -107
- package/hooks/lib/auto-consolidator.js +335 -335
- package/hooks/lib/error-classifier.js +308 -308
- package/hooks/lib/merkle-audit.js +96 -96
- package/hooks/lib/provenance-tracker.js +191 -191
- package/hooks/lib/rate-limit-ip.js +177 -0
- package/hooks/lib/rate-limit-tracker.js +253 -253
- package/hooks/lib/resource-quota.js +122 -122
- package/hooks/lib/retry-jitter.js +165 -165
- package/hooks/lib/skill-auditor.js +588 -588
- package/hooks/lib/sync-status.js +228 -228
- package/hooks/lib/taint-tracker.js +107 -107
- package/hooks/lib/text-similarity.js +241 -241
- package/hooks/lib/toon-compressor.js +245 -245
- package/hooks/lib/webhook-dedup.js +184 -0
- package/hooks/lib/webhook-verify.js +123 -0
- package/hooks/proteccion-rutas.js +120 -15
- package/hooks/registro-turnos.js +209 -209
- package/hooks/sugerir-regenerar-inventario.js +170 -170
- package/hooks/validar-formato-post-subagente.js +140 -140
- package/hooks/validar-memoria-hook.js +218 -218
- package/instintos/prompt-appendices.yaml +57 -57
- package/manifiestos/agent-output-schemas.json +57 -57
- package/manifiestos/modulos.json +1 -0
- package/manifiestos/skills-lock.json +37 -37
- package/package.json +5 -3
- package/plantillas/auditor-veto-template.md +105 -105
- package/plantillas/github-workflows/README.md +47 -47
- package/plantillas/github-workflows/release-please.yml +44 -44
- package/plantillas/github-workflows/swl-ci.yml +107 -107
- package/plantillas/github-workflows/swl-security.yml +51 -51
- package/plugin.json +1 -1
- package/reglas/analisis-previo-tareas-grandes.md +172 -172
- package/reglas/arreglar-al-detectar.md +147 -147
- package/reglas/fragmentos-compartidos.md +152 -152
- package/reglas/harness-claude-code.md +213 -213
- package/reglas/usar-context7.md +226 -226
- package/reglas/usar-sistema-swl.md +251 -0
- package/schemas/diary-entry.schema.json +80 -80
- package/scripts/benchmark-memoria.js +167 -167
- package/scripts/comandos/skills.js +251 -2
- package/scripts/configurar-branch-protection.js +418 -418
- package/scripts/detectar-aprendizajes-duplicados.js +151 -151
- package/scripts/field-report.js +199 -199
- package/scripts/generar-checklists-consolidados.js +273 -273
- package/scripts/generar-inventario.js +420 -420
- package/scripts/generar-matriz-lenguajes.js +271 -271
- package/scripts/lib/artefactos-python.js +43 -43
- package/scripts/lib/benchmark-metrics.js +160 -160
- package/scripts/lib/budget-enforcer.js +252 -252
- package/scripts/lib/configurar-ci.js +380 -380
- package/scripts/lib/contadores-inventario.js +217 -217
- package/scripts/lib/detectar-stack-detallado.js +307 -307
- package/scripts/lib/diary-entry.js +234 -234
- package/scripts/lib/eval-metrics-store.js +218 -218
- package/scripts/lib/eval-quality.js +171 -171
- package/scripts/lib/eval-schemas.js +144 -144
- package/scripts/lib/eval-self-correct.js +106 -106
- package/scripts/lib/eval-validator.js +185 -185
- package/scripts/lib/jaccard-similarity.js +98 -98
- package/scripts/lib/longmemeval-runner.js +125 -125
- package/scripts/lib/npm-version.js +261 -261
- package/scripts/lib/paquetes-conocidos.js +50 -50
- package/scripts/lib/prompt-builder.js +264 -264
- package/scripts/lib/rrf-fusion.js +175 -175
- package/scripts/lib/scoring-instintos.js +277 -277
- package/scripts/lib/semantic-search.js +252 -252
- package/scripts/limpiar-artefactos-python.js +131 -131
- package/scripts/mcp-server/README.md +128 -128
- package/scripts/mcp-server/handlers.js +206 -206
- package/scripts/migrar-csv-a-array.js +168 -168
- package/scripts/migrar-fase-dominio.js +201 -201
- package/scripts/publicar.js +511 -511
- package/scripts/run-eval.js +141 -141
- package/scripts/validar-manifest.js +195 -195
- package/scripts/validar-userland-vacio.js +110 -110
- package/scripts/verificar-release.js +110 -0
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
# Regla: Uso obligatorio del sistema SWL
|
|
2
|
+
|
|
3
|
+
Esta regla es **OBLIGATORIA** y aplica a todo trabajo de Claude dentro de
|
|
4
|
+
cualquier proyecto donde el sistema SWL esté instalado (presencia de
|
|
5
|
+
`agentes/`, `habilidades/`, `comandos/swl/`, `reglas/` o `plugin.json` con
|
|
6
|
+
`name: "@saulwade/swl-ses"`).
|
|
7
|
+
|
|
8
|
+
Tiene prioridad sobre la inercia natural del modelo a hacer trabajo directo
|
|
9
|
+
con Read/Write/Edit/Bash cuando existe un agente, skill o comando SWL
|
|
10
|
+
específico para la tarea.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Por qué existe esta regla
|
|
15
|
+
|
|
16
|
+
El sistema SWL se instaló específicamente para que Claude **no haga trabajo
|
|
17
|
+
directo cuando hay un componente especializado**. El patrón recurrente que
|
|
18
|
+
esta regla cierra es:
|
|
19
|
+
|
|
20
|
+
- Implementar con Read/Write/Edit en vez de invocar `implementador-swl` o el
|
|
21
|
+
agente de stack (`backend-python-swl`, `frontend-react-swl`, etc.).
|
|
22
|
+
- Hacer commits sin invocar `revisor-codigo-swl` ni `revisor-seguridad-swl`.
|
|
23
|
+
- Escribir código sin cargar el skill de stack correspondiente
|
|
24
|
+
(`fastapi-experto`, `react-experto`, `angular-moderno`).
|
|
25
|
+
- Implementar features sin pasar por `/swl:discutir-fase` → `/swl:planear-fase`
|
|
26
|
+
→ `/swl:ejecutar-fase` cuando el alcance lo justifica.
|
|
27
|
+
- Diferir scope (entregar read-only cuando el plan decía CRUD) sin invocar al
|
|
28
|
+
planificador ni crear DA formal — viola `arreglar-al-detectar.md`.
|
|
29
|
+
|
|
30
|
+
El patrón es costoso y reproducible. La regla `arreglar-al-detectar.md`
|
|
31
|
+
prohíbe la deuda silenciosa; esta regla cierra la causa raíz: saltarse el
|
|
32
|
+
flujo SWL desde el inicio.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Principio
|
|
37
|
+
|
|
38
|
+
> Cuando exista un agente, skill o comando SWL aplicable a la tarea actual,
|
|
39
|
+
> **usarlo es obligatorio**. Hacer trabajo directo con herramientas básicas
|
|
40
|
+
> (Read/Write/Edit/Bash/Grep/Glob) cuando un componente especializado lo
|
|
41
|
+
> cubre mejor es violación de esta regla.
|
|
42
|
+
|
|
43
|
+
El sistema SWL es la herramienta del usuario — saltársela sin justificación
|
|
44
|
+
es decisión que la regla `debatir-antes-de-aceptar.md` exige debatir antes
|
|
45
|
+
de ejecutar.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Matriz operacional: cuándo usar qué
|
|
50
|
+
|
|
51
|
+
### Para tareas de desarrollo
|
|
52
|
+
|
|
53
|
+
| Tarea | Componente SWL obligatorio | Componente directo NO basta porque |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| Feature nueva > 50 LOC o multi-archivo | `/swl:discutir-fase` → `/swl:planear-fase` → `/swl:ejecutar-fase` o `orquestador-swl` | Sin discovery el scope queda implícito y diverge en ejecución |
|
|
56
|
+
| Implementación backend Python/Node/Java/Go/Rust/C# | `backend-python-swl` / `backend-node-swl` / etc. + `Skill("<framework>-experto")` | El skill carga gotchas críticos (ej: MissingGreenlet en SQLAlchemy async) |
|
|
57
|
+
| Implementación frontend React/Angular/Vue/Svelte | `frontend-react-swl` / `frontend-angular-swl` / `frontend-swl` + skill correspondiente | Los skills traen patrones modernos (signals, RSC, Suspense) que el modelo no actualiza solo |
|
|
58
|
+
| Implementación mobile Android/iOS/RN/Flutter | `mobile-android-swl` / `mobile-ios-swl` / `mobile-cross-swl` | Casos edge de plataforma (Core Data, baseline profiles) |
|
|
59
|
+
| Bug con stack trace o reproducible | `depurador-swl` con método científico | Saltar al fix sin hipótesis aislada falla con frecuencia |
|
|
60
|
+
| Refactor masivo o migración schema | `migrador-swl` | Exige plan de rollback + expand-contract, no improvisar |
|
|
61
|
+
|
|
62
|
+
### Para tareas de calidad
|
|
63
|
+
|
|
64
|
+
| Tarea | Componente SWL obligatorio |
|
|
65
|
+
|---|---|
|
|
66
|
+
| Pre-merge a main | `/swl:revisar` o `revisor-codigo-swl` + `revisor-seguridad-swl` |
|
|
67
|
+
| Verificación post-fase | `/swl:verificar` con `Skill("verificar-trabajo")` (goal-backward 4 niveles) |
|
|
68
|
+
| Auditoría de calidad | `Skill("checklist-calidad")` con score ≥9.0 |
|
|
69
|
+
| Tests nuevos | `tdd-qa-swl` (ciclo RED→GREEN→REFACTOR) |
|
|
70
|
+
| Auditoría de seguridad | `Skill("checklist-seguridad")` (OWASP Top 10 + A11) |
|
|
71
|
+
| Detectar funcionalidad duplicada | `Skill("swl-revisar-impacto")` o `revisor-codigo-swl` con veto DRY mayor |
|
|
72
|
+
|
|
73
|
+
### Para tareas de proceso
|
|
74
|
+
|
|
75
|
+
| Tarea | Componente SWL obligatorio |
|
|
76
|
+
|---|---|
|
|
77
|
+
| Cierre de sesión productiva | `/swl:compactar` + `/swl:aprender` |
|
|
78
|
+
| Capturar aprendizaje recurrente | `/swl:aprender` → APRENDIZAJES.md → posible promoción a regla/skill |
|
|
79
|
+
| Release con bump de versión | `/swl:release` (sincronización de ubicaciones de versión) |
|
|
80
|
+
| Documentación viva post-feature | `documentador-swl` |
|
|
81
|
+
| Diagnóstico del sistema | `/swl:salud` |
|
|
82
|
+
|
|
83
|
+
### Para tareas de búsqueda y contexto
|
|
84
|
+
|
|
85
|
+
| Tarea | Componente SWL obligatorio |
|
|
86
|
+
|---|---|
|
|
87
|
+
| Contexto de dominio previo | `Skill("memoria-busqueda")` sobre `.planning/sessions/` y APRENDIZAJES.md |
|
|
88
|
+
| Investigación tecnológica | `investigador-swl` con WebSearch/WebFetch + `Skill("agent-browser")` |
|
|
89
|
+
| Verificar dependencia externa | Consultar Context7 (regla `usar-context7.md`) |
|
|
90
|
+
| Decisiones repetibles del proyecto | Revisar `.planning/adrs/`, APRENDIZAJES.md, `instintos/proyecto.yaml` ANTES de proponer solución |
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Excepciones legítimas
|
|
95
|
+
|
|
96
|
+
NO aplicar esta regla cuando:
|
|
97
|
+
|
|
98
|
+
1. **Tarea trivial de 1-2 archivos**: rename, fix de typo, ajuste de comentario,
|
|
99
|
+
formato. El overhead de invocar agente supera el valor.
|
|
100
|
+
2. **Pregunta de lectura pura**: "¿qué hace este archivo?", "¿dónde se define
|
|
101
|
+
X?". Usar Read/Grep directos.
|
|
102
|
+
3. **Comando de shell puro**: `git status`, `npm install`, `gh pr list`.
|
|
103
|
+
4. **Sesión exploratoria explícita**: el usuario pidió "explora", "echa un
|
|
104
|
+
vistazo", "investiga sin tocar nada".
|
|
105
|
+
5. **Override explícito del usuario**: "no uses agentes, hazlo directo".
|
|
106
|
+
Respetar la instrucción explícita; registrar la excepción si tiene impacto
|
|
107
|
+
en flujo posterior.
|
|
108
|
+
6. **Fix urgente de producción** con incidente activo: aplicar fix mínimo,
|
|
109
|
+
el agente puede esperar al post-mortem.
|
|
110
|
+
7. **Proyecto sin SWL instalado**: si no hay `plugin.json` ni `agentes/` en
|
|
111
|
+
el proyecto, la regla no aplica.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Anti-patrones explícitos
|
|
116
|
+
|
|
117
|
+
### Anti-patrón 1: implementar feature compleja con Read+Write directo
|
|
118
|
+
|
|
119
|
+
❌ **MAL**: el usuario pide "agrega CRUD para entidad X", Claude empieza a
|
|
120
|
+
escribir el modelo + endpoint + frontend + tests con Read+Write secuenciales,
|
|
121
|
+
sin pasar por `/swl:planear-fase` ni invocar `backend-python-swl`.
|
|
122
|
+
|
|
123
|
+
✅ **BIEN**: invocar `/swl:discutir-fase` para extraer decisiones,
|
|
124
|
+
`/swl:planear-fase` para descomponer en tareas atómicas, `/swl:ejecutar-fase`
|
|
125
|
+
que delega a `implementador-swl` o agente de stack con skill cargado.
|
|
126
|
+
|
|
127
|
+
### Anti-patrón 2: commit sin revisión
|
|
128
|
+
|
|
129
|
+
❌ **MAL**: terminar implementación y hacer `git add . && git commit` sin
|
|
130
|
+
pasar por `revisor-codigo-swl` ni `revisor-seguridad-swl`.
|
|
131
|
+
|
|
132
|
+
✅ **BIEN**: `/swl:revisar` antes del commit. Score ≥ 9.0 obligatorio. Si
|
|
133
|
+
hay veto items, corregir antes de mergear.
|
|
134
|
+
|
|
135
|
+
### Anti-patrón 3: divergir del plan sin reconfirmar scope
|
|
136
|
+
|
|
137
|
+
❌ **MAL**: plan decía "CRUD completo", entregar read-only documentando en
|
|
138
|
+
commit "la edición se agrega en iteración posterior". Es deuda silenciosa
|
|
139
|
+
prohibida por `arreglar-al-detectar.md`.
|
|
140
|
+
|
|
141
|
+
✅ **BIEN**: si durante ejecución se detecta que el scope original es muy
|
|
142
|
+
grande, pausar, invocar `planificador-swl` para re-planificar, o crear DA
|
|
143
|
+
formal con trigger verificable. NUNCA diferir scope en commit silencioso.
|
|
144
|
+
|
|
145
|
+
### Anti-patrón 4: implementar con framework sin cargar el skill correspondiente
|
|
146
|
+
|
|
147
|
+
❌ **MAL**: escribir FastAPI con SQLAlchemy async sin cargar
|
|
148
|
+
`Skill("fastapi-experto")` — alta probabilidad de incurrir en MissingGreenlet
|
|
149
|
+
por lazy loading.
|
|
150
|
+
|
|
151
|
+
✅ **BIEN**: cargar el skill ANTES de la primera línea. El skill trae los
|
|
152
|
+
gotchas específicos que el modelo no recuerda solo.
|
|
153
|
+
|
|
154
|
+
### Anti-patrón 5: detectar funcionalidad duplicada y commitearla igual
|
|
155
|
+
|
|
156
|
+
❌ **MAL**: durante implementación detectar que `/catalogos` ya tiene lo
|
|
157
|
+
mismo que se está agregando en `/catalogos-contratacion` pero commitearlo
|
|
158
|
+
porque "el plan decía implementarlo aquí". Pérdida de DRY.
|
|
159
|
+
|
|
160
|
+
✅ **BIEN**: pausar, invocar `revisor-codigo-swl` o `Skill("swl-revisar-impacto")`,
|
|
161
|
+
reportar la duplicación al usuario, esperar decisión de scope.
|
|
162
|
+
|
|
163
|
+
### Anti-patrón 6: usar agente especializado como "etiqueta cosmética"
|
|
164
|
+
|
|
165
|
+
❌ **MAL**: decir "estoy invocando implementador-swl" pero seguir trabajando
|
|
166
|
+
con Read+Write+Edit personalmente sin lanzar el Agent tool.
|
|
167
|
+
|
|
168
|
+
✅ **BIEN**: invocación real con el tool Agent. El sub-agente recibe contexto
|
|
169
|
+
acotado, opera con sus permisos declarados y devuelve resultado.
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Checklist antes de empezar cualquier tarea
|
|
174
|
+
|
|
175
|
+
Antes de la primera tool call sustantiva:
|
|
176
|
+
|
|
177
|
+
- [ ] **PASO 0 — Consultar memoria previa** (`Skill("memoria-busqueda")`,
|
|
178
|
+
APRENDIZAJES.md, `.planning/adrs/`, vault Obsidian si aplica). El
|
|
179
|
+
proyecto tiene decisiones ya tomadas y patrones validados que se
|
|
180
|
+
repiten. Empezar sin consultar es reabrir decisiones cerradas.
|
|
181
|
+
- [ ] ¿La tarea cabe en alguna fila de la **matriz operacional**?
|
|
182
|
+
- [ ] Si sí: ¿identifiqué el agente, skill o comando SWL correspondiente?
|
|
183
|
+
- [ ] ¿Cargué el skill relevante con `Skill("nombre")` antes de implementar?
|
|
184
|
+
- [ ] Si la tarea es no trivial: ¿pasó por el flujo discutir → planear → ejecutar?
|
|
185
|
+
- [ ] Si voy a hacer trabajo directo: ¿estoy dentro de las **excepciones
|
|
186
|
+
legítimas**? Si no, esta regla me obliga a usar el componente SWL.
|
|
187
|
+
- [ ] Antes de commit: ¿pasé por revisor de código + seguridad?
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Cómo recuperarse si ya empecé directo
|
|
192
|
+
|
|
193
|
+
Si avancé con trabajo directo y al revisar esta regla detecto que debí usar
|
|
194
|
+
un componente SWL:
|
|
195
|
+
|
|
196
|
+
1. **Trabajo trivial y reversible**: aceptar el atajo, registrar la
|
|
197
|
+
excepción mentalmente, terminar.
|
|
198
|
+
2. **Trabajo sustantivo pero sin commit**: invocar el componente SWL ahora
|
|
199
|
+
(revisor / verificar / planificador retrospectivo) antes del commit. Aún
|
|
200
|
+
se gana cobertura.
|
|
201
|
+
3. **Ya se commiteó**: ejecutar `/swl:verificar` post-hoc. Si encuentra
|
|
202
|
+
hallazgos, corregir en commit siguiente bajo `arreglar-al-detectar.md`.
|
|
203
|
+
4. **El patrón se repite en la sesión**: invocar `/swl:aprender` para
|
|
204
|
+
capturar el feedback explícitamente y reforzar el comportamiento futuro.
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Aplicabilidad
|
|
209
|
+
|
|
210
|
+
Aplica a:
|
|
211
|
+
|
|
212
|
+
- Claude Code (CLI, Desktop, IDE) operando dentro de proyectos con SWL
|
|
213
|
+
instalado.
|
|
214
|
+
- Sesiones de implementación, debugging, refactor, revisión, planning.
|
|
215
|
+
- Cualquier ciclo GSD (Goal-Seeking Development).
|
|
216
|
+
|
|
217
|
+
NO aplica a:
|
|
218
|
+
|
|
219
|
+
- Proyectos sin SWL instalado.
|
|
220
|
+
- Repos de terceros, exploración de código ajeno (`temp/`, dependencias
|
|
221
|
+
npm/pip).
|
|
222
|
+
- Tareas administrativas puras del sistema (instalar SWL, configurar Claude
|
|
223
|
+
Code).
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## Relación con otras reglas
|
|
228
|
+
|
|
229
|
+
- `arreglar-al-detectar.md` — la deuda silenciosa de scope (anti-patrón 3
|
|
230
|
+
aquí) es exactamente lo que prohíbe esa regla.
|
|
231
|
+
- `debatir-antes-de-aceptar.md` — saltarse SWL sin justificación es decisión
|
|
232
|
+
que choca con regla documentada → exige debate, no ejecución silenciosa.
|
|
233
|
+
- `brevedad-output.md` — cubre idioma y eficiencia de tokens; esta regla
|
|
234
|
+
cubre flujo de trabajo.
|
|
235
|
+
- `skills-estandar.md` — cubre cómo escribir skills (autor); esta regla
|
|
236
|
+
cubre cómo usarlos (consumidor).
|
|
237
|
+
- `usar-context7.md` — regla hermana: consultar documentación de librerías
|
|
238
|
+
externas antes de implementar.
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## Checklist de auto-verificación al final del turno
|
|
243
|
+
|
|
244
|
+
Al cerrar un turno con trabajo sustantivo:
|
|
245
|
+
|
|
246
|
+
- [ ] ¿Invoqué los agentes/skills/comandos SWL aplicables o estuve dentro
|
|
247
|
+
de las excepciones legítimas?
|
|
248
|
+
- [ ] Si hice trabajo directo: ¿la decisión está justificada por una
|
|
249
|
+
excepción concreta, no por inercia?
|
|
250
|
+
- [ ] Si detecto que omití un componente que debí usar: ¿lo invoco
|
|
251
|
+
retrospectivamente antes del commit final?
|
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://swl-ses.dev/schemas/diary-entry.json",
|
|
4
|
-
"title": "SWL Diary Entry",
|
|
5
|
-
"description": "Diario estructurado por sesion. Captura logros, decisiones, challenges y aprendizajes clave en formato consumible por /swl:aprender.",
|
|
6
|
-
"type": "object",
|
|
7
|
-
"required": ["id", "sessionId", "date", "createdAt"],
|
|
8
|
-
"properties": {
|
|
9
|
-
"id": {
|
|
10
|
-
"type": "string",
|
|
11
|
-
"pattern": "^diary-\\d{8}-[a-f0-9]+$",
|
|
12
|
-
"description": "ID unico del diario: diary-YYYYMMDD-{hash}"
|
|
13
|
-
},
|
|
14
|
-
"sessionId": {
|
|
15
|
-
"type": "string",
|
|
16
|
-
"minLength": 1,
|
|
17
|
-
"description": "ID de la sesion de Claude Code que origina el diario"
|
|
18
|
-
},
|
|
19
|
-
"agent": {
|
|
20
|
-
"type": ["string", "null"],
|
|
21
|
-
"description": "Agente principal de la sesion (si aplica)"
|
|
22
|
-
},
|
|
23
|
-
"date": {
|
|
24
|
-
"type": "string",
|
|
25
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
26
|
-
"description": "Fecha de la sesion en formato YYYY-MM-DD"
|
|
27
|
-
},
|
|
28
|
-
"startTime": {
|
|
29
|
-
"type": ["string", "null"],
|
|
30
|
-
"format": "date-time",
|
|
31
|
-
"description": "Inicio de la sesion en ISO 8601"
|
|
32
|
-
},
|
|
33
|
-
"endTime": {
|
|
34
|
-
"type": ["string", "null"],
|
|
35
|
-
"format": "date-time",
|
|
36
|
-
"description": "Fin de la sesion en ISO 8601 (null si esta abierta)"
|
|
37
|
-
},
|
|
38
|
-
"accomplishments": {
|
|
39
|
-
"type": "array",
|
|
40
|
-
"maxItems": 20,
|
|
41
|
-
"items": { "type": "string", "maxLength": 500 },
|
|
42
|
-
"description": "Logros concretos de la sesion"
|
|
43
|
-
},
|
|
44
|
-
"decisions": {
|
|
45
|
-
"type": "array",
|
|
46
|
-
"maxItems": 20,
|
|
47
|
-
"items": { "type": "string", "maxLength": 500 },
|
|
48
|
-
"description": "Decisiones tomadas con su justificacion breve"
|
|
49
|
-
},
|
|
50
|
-
"challenges": {
|
|
51
|
-
"type": "array",
|
|
52
|
-
"maxItems": 20,
|
|
53
|
-
"items": { "type": "string", "maxLength": 500 },
|
|
54
|
-
"description": "Bloqueos o problemas encontrados"
|
|
55
|
-
},
|
|
56
|
-
"keyLearnings": {
|
|
57
|
-
"type": "array",
|
|
58
|
-
"maxItems": 20,
|
|
59
|
-
"items": { "type": "string", "maxLength": 500 },
|
|
60
|
-
"description": "Aprendizajes clave que alimentan APRENDIZAJES.md o instintos"
|
|
61
|
-
},
|
|
62
|
-
"tags": {
|
|
63
|
-
"type": "array",
|
|
64
|
-
"maxItems": 20,
|
|
65
|
-
"items": { "type": "string", "maxLength": 500 },
|
|
66
|
-
"description": "Etiquetas para clasificacion y busqueda"
|
|
67
|
-
},
|
|
68
|
-
"sourceAgents": {
|
|
69
|
-
"type": "array",
|
|
70
|
-
"uniqueItems": true,
|
|
71
|
-
"items": { "type": "string" },
|
|
72
|
-
"description": "Agentes que contribuyeron a la sesion (cross-agent enrichment)"
|
|
73
|
-
},
|
|
74
|
-
"createdAt": {
|
|
75
|
-
"type": "string",
|
|
76
|
-
"format": "date-time",
|
|
77
|
-
"description": "Timestamp de creacion del diario"
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://swl-ses.dev/schemas/diary-entry.json",
|
|
4
|
+
"title": "SWL Diary Entry",
|
|
5
|
+
"description": "Diario estructurado por sesion. Captura logros, decisiones, challenges y aprendizajes clave en formato consumible por /swl:aprender.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["id", "sessionId", "date", "createdAt"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"id": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"pattern": "^diary-\\d{8}-[a-f0-9]+$",
|
|
12
|
+
"description": "ID unico del diario: diary-YYYYMMDD-{hash}"
|
|
13
|
+
},
|
|
14
|
+
"sessionId": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"minLength": 1,
|
|
17
|
+
"description": "ID de la sesion de Claude Code que origina el diario"
|
|
18
|
+
},
|
|
19
|
+
"agent": {
|
|
20
|
+
"type": ["string", "null"],
|
|
21
|
+
"description": "Agente principal de la sesion (si aplica)"
|
|
22
|
+
},
|
|
23
|
+
"date": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
26
|
+
"description": "Fecha de la sesion en formato YYYY-MM-DD"
|
|
27
|
+
},
|
|
28
|
+
"startTime": {
|
|
29
|
+
"type": ["string", "null"],
|
|
30
|
+
"format": "date-time",
|
|
31
|
+
"description": "Inicio de la sesion en ISO 8601"
|
|
32
|
+
},
|
|
33
|
+
"endTime": {
|
|
34
|
+
"type": ["string", "null"],
|
|
35
|
+
"format": "date-time",
|
|
36
|
+
"description": "Fin de la sesion en ISO 8601 (null si esta abierta)"
|
|
37
|
+
},
|
|
38
|
+
"accomplishments": {
|
|
39
|
+
"type": "array",
|
|
40
|
+
"maxItems": 20,
|
|
41
|
+
"items": { "type": "string", "maxLength": 500 },
|
|
42
|
+
"description": "Logros concretos de la sesion"
|
|
43
|
+
},
|
|
44
|
+
"decisions": {
|
|
45
|
+
"type": "array",
|
|
46
|
+
"maxItems": 20,
|
|
47
|
+
"items": { "type": "string", "maxLength": 500 },
|
|
48
|
+
"description": "Decisiones tomadas con su justificacion breve"
|
|
49
|
+
},
|
|
50
|
+
"challenges": {
|
|
51
|
+
"type": "array",
|
|
52
|
+
"maxItems": 20,
|
|
53
|
+
"items": { "type": "string", "maxLength": 500 },
|
|
54
|
+
"description": "Bloqueos o problemas encontrados"
|
|
55
|
+
},
|
|
56
|
+
"keyLearnings": {
|
|
57
|
+
"type": "array",
|
|
58
|
+
"maxItems": 20,
|
|
59
|
+
"items": { "type": "string", "maxLength": 500 },
|
|
60
|
+
"description": "Aprendizajes clave que alimentan APRENDIZAJES.md o instintos"
|
|
61
|
+
},
|
|
62
|
+
"tags": {
|
|
63
|
+
"type": "array",
|
|
64
|
+
"maxItems": 20,
|
|
65
|
+
"items": { "type": "string", "maxLength": 500 },
|
|
66
|
+
"description": "Etiquetas para clasificacion y busqueda"
|
|
67
|
+
},
|
|
68
|
+
"sourceAgents": {
|
|
69
|
+
"type": "array",
|
|
70
|
+
"uniqueItems": true,
|
|
71
|
+
"items": { "type": "string" },
|
|
72
|
+
"description": "Agentes que contribuyeron a la sesion (cross-agent enrichment)"
|
|
73
|
+
},
|
|
74
|
+
"createdAt": {
|
|
75
|
+
"type": "string",
|
|
76
|
+
"format": "date-time",
|
|
77
|
+
"description": "Timestamp de creacion del diario"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|