@saulwade/swl-ses 1.3.8 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/CLAUDE.md +15 -6
  2. package/README.md +15 -14
  3. package/agentes/nemesis-auditor-swl.md +161 -0
  4. package/bin/swl-mcp-server.js +187 -187
  5. package/bin/swl-webhook-server.js +198 -0
  6. package/comandos/swl/.evolved.json +22 -22
  7. package/comandos/swl/adoptar-proyecto.md +21 -1
  8. package/comandos/swl/claudemd.md +14 -1
  9. package/comandos/swl/contribuir.md +233 -233
  10. package/comandos/swl/exportar-vault.md +108 -0
  11. package/comandos/swl/nemesis.md +122 -0
  12. package/comandos/swl/nuevo-proyecto.md +24 -2
  13. package/comandos/swl/salud.md +34 -0
  14. package/comandos/swl/verificar.md +45 -0
  15. package/gateway/adapters/base.js +109 -0
  16. package/gateway/adapters/discord.js +167 -0
  17. package/gateway/adapters/email.js +221 -0
  18. package/gateway/adapters/slack.js +192 -0
  19. package/gateway/adapters/telegram.js +183 -0
  20. package/gateway/adapters/webhook.js +113 -0
  21. package/gateway/adapters/whatsapp.js +214 -0
  22. package/gateway/agent-executor.js +322 -0
  23. package/gateway/command-relay.js +271 -0
  24. package/gateway/cron/jobs.js +263 -0
  25. package/gateway/cron/scheduler.js +322 -0
  26. package/gateway/cron/store.js +335 -0
  27. package/gateway/index.js +320 -0
  28. package/gateway/lib/event-channel.js +191 -0
  29. package/gateway/session.js +131 -0
  30. package/gateway/webhook-server.js +324 -0
  31. package/habilidades/backend-production-resilience/SKILL.md +288 -288
  32. package/habilidades/benchmark-memoria/SKILL.md +186 -186
  33. package/habilidades/build-errors-nextjs/SKILL.md +55 -1
  34. package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
  35. package/habilidades/doubt-driven-review/SKILL.md +171 -171
  36. package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
  37. package/habilidades/eval-framework/SKILL.md +212 -212
  38. package/habilidades/extractor-de-aprendizajes/SKILL.md +20 -10
  39. package/habilidades/feynman-auditor-swl/SKILL.md +123 -0
  40. package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -0
  41. package/habilidades/harness-claude-code/SKILL.md +299 -299
  42. package/habilidades/infra-github-actions/SKILL.md +166 -166
  43. package/habilidades/legacy-code-rescue/SKILL.md +267 -267
  44. package/habilidades/manejo-errores/.evolved.json +8 -8
  45. package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
  46. package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -163
  47. package/habilidades/nextjs-testing/SKILL.md +89 -5
  48. package/habilidades/node-experto/SKILL.md +37 -1
  49. package/habilidades/patrones-python/SKILL.md +229 -229
  50. package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
  51. package/habilidades/planear-fase/SKILL.md +319 -319
  52. package/habilidades/react-experto/SKILL.md +45 -4
  53. package/habilidades/release-semver/.evolved.json +8 -8
  54. package/habilidades/state-inconsistency-auditor-swl/SKILL.md +166 -0
  55. package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -0
  56. package/habilidades/tdd-workflow/SKILL.md +36 -4
  57. package/habilidades/testing-python/SKILL.md +340 -340
  58. package/habilidades/web-fetcher-routing/SKILL.md +75 -0
  59. package/hooks/claudemd-bloat-detector.js +161 -161
  60. package/hooks/inyeccion-contexto.js +8 -3
  61. package/hooks/lib/agent-routing.js +107 -107
  62. package/hooks/lib/auto-consolidator.js +335 -335
  63. package/hooks/lib/error-classifier.js +308 -308
  64. package/hooks/lib/merkle-audit.js +96 -96
  65. package/hooks/lib/provenance-tracker.js +191 -191
  66. package/hooks/lib/rate-limit-ip.js +177 -0
  67. package/hooks/lib/rate-limit-tracker.js +253 -253
  68. package/hooks/lib/resource-quota.js +122 -122
  69. package/hooks/lib/retry-jitter.js +165 -165
  70. package/hooks/lib/security-net.js +201 -0
  71. package/hooks/lib/skill-auditor.js +588 -588
  72. package/hooks/lib/sync-status.js +228 -228
  73. package/hooks/lib/taint-tracker.js +107 -107
  74. package/hooks/lib/text-similarity.js +241 -241
  75. package/hooks/lib/toon-compressor.js +245 -245
  76. package/hooks/lib/webhook-dedup.js +184 -0
  77. package/hooks/lib/webhook-verify.js +123 -0
  78. package/hooks/proteccion-rutas.js +120 -15
  79. package/hooks/registro-turnos.js +209 -209
  80. package/hooks/sugerir-regenerar-inventario.js +170 -170
  81. package/hooks/validar-formato-post-subagente.js +140 -140
  82. package/hooks/validar-memoria-hook.js +218 -218
  83. package/instintos/prompt-appendices.yaml +57 -57
  84. package/manifiestos/agent-output-schemas.json +57 -57
  85. package/manifiestos/modulos.json +31 -0
  86. package/manifiestos/skills-lock.json +1114 -1093
  87. package/package.json +6 -4
  88. package/plantillas/auditor-veto-template.md +105 -105
  89. package/plantillas/github-workflows/README.md +47 -47
  90. package/plantillas/github-workflows/release-please.yml +44 -44
  91. package/plantillas/github-workflows/swl-ci.yml +107 -107
  92. package/plantillas/github-workflows/swl-security.yml +51 -51
  93. package/plugin.json +2 -2
  94. package/reglas/analisis-previo-tareas-grandes.md +172 -172
  95. package/reglas/arreglar-al-detectar.md +147 -147
  96. package/reglas/fragmentos-compartidos.md +152 -152
  97. package/reglas/harness-claude-code.md +213 -213
  98. package/reglas/usar-context7.md +226 -226
  99. package/reglas/usar-sistema-swl.md +251 -0
  100. package/schemas/diary-entry.schema.json +80 -80
  101. package/scripts/audit-tools/audit-history.js +330 -0
  102. package/scripts/audit-tools/bundle-tracker.js +290 -0
  103. package/scripts/audit-tools/canary-monitor.js +352 -0
  104. package/scripts/audit-tools/code-profiler.js +605 -0
  105. package/scripts/audit-tools/dep-doctor.js +320 -0
  106. package/scripts/audit-tools/env-validator.js +206 -0
  107. package/scripts/audit-tools/lib/fs-walk.js +48 -0
  108. package/scripts/audit-tools/lib/output.js +23 -0
  109. package/scripts/audit-tools/migration-checker.js +392 -0
  110. package/scripts/audit-tools/pentest-scanner.js +1436 -0
  111. package/scripts/benchmark-memoria.js +167 -167
  112. package/scripts/comandos/skills.js +251 -2
  113. package/scripts/configurar-branch-protection.js +418 -418
  114. package/scripts/detectar-aprendizajes-duplicados.js +151 -151
  115. package/scripts/field-report.js +199 -199
  116. package/scripts/generar-checklists-consolidados.js +273 -273
  117. package/scripts/generar-inventario.js +420 -420
  118. package/scripts/generar-matriz-lenguajes.js +271 -271
  119. package/scripts/lib/artefactos-python.js +43 -43
  120. package/scripts/lib/benchmark-metrics.js +160 -160
  121. package/scripts/lib/budget-enforcer.js +252 -252
  122. package/scripts/lib/configurar-ci.js +380 -380
  123. package/scripts/lib/contadores-inventario.js +217 -217
  124. package/scripts/lib/detectar-stack-detallado.js +307 -307
  125. package/scripts/lib/diary-entry.js +234 -234
  126. package/scripts/lib/eval-metrics-store.js +218 -218
  127. package/scripts/lib/eval-quality.js +171 -171
  128. package/scripts/lib/eval-schemas.js +144 -144
  129. package/scripts/lib/eval-self-correct.js +106 -106
  130. package/scripts/lib/eval-validator.js +185 -185
  131. package/scripts/lib/jaccard-similarity.js +98 -98
  132. package/scripts/lib/longmemeval-runner.js +125 -125
  133. package/scripts/lib/npm-version.js +261 -261
  134. package/scripts/lib/paquetes-conocidos.js +50 -50
  135. package/scripts/lib/prompt-builder.js +264 -264
  136. package/scripts/lib/rrf-fusion.js +175 -175
  137. package/scripts/lib/scoring-instintos.js +277 -277
  138. package/scripts/lib/semantic-search.js +252 -252
  139. package/scripts/limpiar-artefactos-python.js +131 -131
  140. package/scripts/mcp-server/README.md +128 -128
  141. package/scripts/mcp-server/handlers.js +206 -206
  142. package/scripts/migrar-csv-a-array.js +168 -168
  143. package/scripts/migrar-fase-dominio.js +201 -201
  144. package/scripts/publicar.js +511 -511
  145. package/scripts/run-eval.js +141 -141
  146. package/scripts/validar-manifest.js +195 -195
  147. package/scripts/validar-userland-vacio.js +110 -110
  148. 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
+ }