swl-ses 3.3.2

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 (177) hide show
  1. package/CLAUDE.md +425 -0
  2. package/_userland/agentes/.gitkeep +0 -0
  3. package/_userland/habilidades/.gitkeep +0 -0
  4. package/agentes/accesibilidad-wcag-swl.md +683 -0
  5. package/agentes/arquitecto-swl.md +210 -0
  6. package/agentes/auto-evolucion-swl.md +408 -0
  7. package/agentes/backend-api-swl.md +442 -0
  8. package/agentes/backend-node-swl.md +439 -0
  9. package/agentes/backend-python-swl.md +469 -0
  10. package/agentes/backend-workers-swl.md +444 -0
  11. package/agentes/cloud-infra-swl.md +466 -0
  12. package/agentes/consolidador-swl.md +487 -0
  13. package/agentes/datos-swl.md +568 -0
  14. package/agentes/depurador-swl.md +301 -0
  15. package/agentes/devops-ci-swl.md +352 -0
  16. package/agentes/disenador-ui-swl.md +546 -0
  17. package/agentes/documentador-swl.md +323 -0
  18. package/agentes/frontend-angular-swl.md +603 -0
  19. package/agentes/frontend-css-swl.md +700 -0
  20. package/agentes/frontend-react-swl.md +672 -0
  21. package/agentes/frontend-swl.md +483 -0
  22. package/agentes/frontend-tailwind-swl.md +808 -0
  23. package/agentes/implementador-swl.md +235 -0
  24. package/agentes/investigador-swl.md +274 -0
  25. package/agentes/investigador-ux-swl.md +482 -0
  26. package/agentes/migrador-swl.md +389 -0
  27. package/agentes/mobile-android-swl.md +473 -0
  28. package/agentes/mobile-cross-swl.md +501 -0
  29. package/agentes/mobile-ios-swl.md +464 -0
  30. package/agentes/notificador-swl.md +886 -0
  31. package/agentes/observabilidad-swl.md +408 -0
  32. package/agentes/orquestador-swl.md +490 -0
  33. package/agentes/planificador-swl.md +222 -0
  34. package/agentes/producto-prd-swl.md +565 -0
  35. package/agentes/release-manager-swl.md +545 -0
  36. package/agentes/rendimiento-swl.md +691 -0
  37. package/agentes/revisor-codigo-swl.md +254 -0
  38. package/agentes/revisor-seguridad-swl.md +316 -0
  39. package/agentes/tdd-qa-swl.md +323 -0
  40. package/agentes/ux-disenador-swl.md +498 -0
  41. package/bin/swl-ses.js +119 -0
  42. package/comandos/swl/actualizar.md +117 -0
  43. package/comandos/swl/aprender.md +348 -0
  44. package/comandos/swl/auditar-deps.md +390 -0
  45. package/comandos/swl/autoresearch.md +346 -0
  46. package/comandos/swl/checkpoint.md +296 -0
  47. package/comandos/swl/compactar.md +283 -0
  48. package/comandos/swl/crear-skill.md +609 -0
  49. package/comandos/swl/discutir-fase.md +230 -0
  50. package/comandos/swl/ejecutar-fase.md +302 -0
  51. package/comandos/swl/evolucionar.md +377 -0
  52. package/comandos/swl/instalar.md +220 -0
  53. package/comandos/swl/mapear-codebase.md +205 -0
  54. package/comandos/swl/nuevo-proyecto.md +154 -0
  55. package/comandos/swl/planear-fase.md +221 -0
  56. package/comandos/swl/release.md +405 -0
  57. package/comandos/swl/salud.md +382 -0
  58. package/comandos/swl/verificar.md +292 -0
  59. package/habilidades/accesibilidad-a11y/SKILL.md +584 -0
  60. package/habilidades/angular-avanzado/SKILL.md +491 -0
  61. package/habilidades/angular-moderno/SKILL.md +326 -0
  62. package/habilidades/api-rest-diseno/SKILL.md +302 -0
  63. package/habilidades/api-rest-diseno/recursos/openapi-template.yaml +506 -0
  64. package/habilidades/aprendizaje-continuo/SKILL.md +369 -0
  65. package/habilidades/async-python/SKILL.md +474 -0
  66. package/habilidades/auth-patrones/SKILL.md +488 -0
  67. package/habilidades/auto-evolucion-protocolo/SKILL.md +376 -0
  68. package/habilidades/autoresearch/SKILL.md +248 -0
  69. package/habilidades/autoresearch/recursos/checklist-template.md +191 -0
  70. package/habilidades/autoresearch/scripts/calcular-score.js +88 -0
  71. package/habilidades/checklist-calidad/SKILL.md +247 -0
  72. package/habilidades/checklist-calidad/recursos/quality-report-template.md +148 -0
  73. package/habilidades/checklist-seguridad/SKILL.md +224 -0
  74. package/habilidades/checkpoints-verificacion/SKILL.md +309 -0
  75. package/habilidades/checkpoints-verificacion/recursos/checkpoint-templates.md +360 -0
  76. package/habilidades/ci-cd-pipelines/SKILL.md +583 -0
  77. package/habilidades/ci-cd-pipelines/recursos/github-actions-template.yaml +403 -0
  78. package/habilidades/cloud-aws/SKILL.md +497 -0
  79. package/habilidades/compactacion-contexto/SKILL.md +201 -0
  80. package/habilidades/contenedores-docker/SKILL.md +453 -0
  81. package/habilidades/contenedores-docker/recursos/dockerfile-template.dockerfile +160 -0
  82. package/habilidades/css-moderno/SKILL.md +463 -0
  83. package/habilidades/datos-etl/SKILL.md +486 -0
  84. package/habilidades/dependencias-auditoria/SKILL.md +293 -0
  85. package/habilidades/deprecacion-migracion/SKILL.md +485 -0
  86. package/habilidades/design-tokens/SKILL.md +519 -0
  87. package/habilidades/discutir-fase/SKILL.md +167 -0
  88. package/habilidades/diseno-responsivo/SKILL.md +326 -0
  89. package/habilidades/django-experto/SKILL.md +395 -0
  90. package/habilidades/doc-sync/SKILL.md +259 -0
  91. package/habilidades/ejecutar-fase/SKILL.md +199 -0
  92. package/habilidades/estructura-proyecto-claude/SKILL.md +459 -0
  93. package/habilidades/estructura-proyecto-claude/recursos/claude-md-template.md +261 -0
  94. package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +213 -0
  95. package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +77 -0
  96. package/habilidades/estructura-proyecto-claude/recursos/variantes-por-stack.md +177 -0
  97. package/habilidades/event-driven/SKILL.md +580 -0
  98. package/habilidades/extractor-de-aprendizajes/SKILL.md +234 -0
  99. package/habilidades/fastapi-experto/SKILL.md +368 -0
  100. package/habilidades/frontend-avanzado/SKILL.md +555 -0
  101. package/habilidades/git-worktrees-paralelo/SKILL.md +246 -0
  102. package/habilidades/iam-secretos/SKILL.md +511 -0
  103. package/habilidades/instalar-sistema/SKILL.md +140 -0
  104. package/habilidades/kubernetes-orquestacion/SKILL.md +549 -0
  105. package/habilidades/manejo-errores/SKILL.md +512 -0
  106. package/habilidades/mapear-codebase/SKILL.md +199 -0
  107. package/habilidades/microservicios/SKILL.md +473 -0
  108. package/habilidades/mobile-flutter/SKILL.md +566 -0
  109. package/habilidades/mobile-react-native/SKILL.md +493 -0
  110. package/habilidades/monitoring-alertas/SKILL.md +447 -0
  111. package/habilidades/node-experto/SKILL.md +521 -0
  112. package/habilidades/notificaciones-multicanal/SKILL.md +448 -0
  113. package/habilidades/notificaciones-multicanal/recursos/config-template.json +115 -0
  114. package/habilidades/nuevo-proyecto/SKILL.md +183 -0
  115. package/habilidades/patrones-python/SKILL.md +381 -0
  116. package/habilidades/performance-baseline/SKILL.md +243 -0
  117. package/habilidades/planear-fase/SKILL.md +184 -0
  118. package/habilidades/postgresql-experto/SKILL.md +379 -0
  119. package/habilidades/react-experto/SKILL.md +434 -0
  120. package/habilidades/react-optimizacion/SKILL.md +328 -0
  121. package/habilidades/release-semver/SKILL.md +226 -0
  122. package/habilidades/release-semver/scripts/generar-changelog.sh +238 -0
  123. package/habilidades/sql-optimizacion/SKILL.md +314 -0
  124. package/habilidades/tailwind-experto/SKILL.md +412 -0
  125. package/habilidades/tdd-workflow/SKILL.md +267 -0
  126. package/habilidades/testing-python/SKILL.md +350 -0
  127. package/habilidades/threat-model-lite/SKILL.md +218 -0
  128. package/habilidades/typescript-avanzado/SKILL.md +454 -0
  129. package/habilidades/ux-diseno/SKILL.md +488 -0
  130. package/habilidades/validacion-ci-sistema/SKILL.md +543 -0
  131. package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +286 -0
  132. package/habilidades/verificar-trabajo/SKILL.md +208 -0
  133. package/habilidades/wireframes-flujos/SKILL.md +396 -0
  134. package/habilidades/workflow-claude-code/SKILL.md +359 -0
  135. package/hooks/calidad-pre-commit.js +578 -0
  136. package/hooks/escaneo-secretos.js +302 -0
  137. package/hooks/extraccion-aprendizajes.js +550 -0
  138. package/hooks/linea-estado.js +249 -0
  139. package/hooks/monitor-contexto.js +230 -0
  140. package/hooks/proteccion-rutas.js +249 -0
  141. package/manifiestos/hooks-config.json +41 -0
  142. package/manifiestos/modulos.json +318 -0
  143. package/manifiestos/perfiles.json +189 -0
  144. package/package.json +45 -0
  145. package/plantillas/PROJECT.md +122 -0
  146. package/plantillas/REQUIREMENTS.md +132 -0
  147. package/plantillas/ROADMAP.md +143 -0
  148. package/plantillas/STATE.md +109 -0
  149. package/plantillas/research/ARCHITECTURE.md +220 -0
  150. package/plantillas/research/FEATURES.md +175 -0
  151. package/plantillas/research/PITFALLS.md +299 -0
  152. package/plantillas/research/STACK.md +233 -0
  153. package/plantillas/research/SUMMARY.md +165 -0
  154. package/plugin.json +144 -0
  155. package/reglas/accesibilidad.md +269 -0
  156. package/reglas/api-diseno.md +400 -0
  157. package/reglas/arquitectura.md +183 -0
  158. package/reglas/cloud-infra.md +247 -0
  159. package/reglas/docs.md +245 -0
  160. package/reglas/estilo-codigo.md +179 -0
  161. package/reglas/git-workflow.md +186 -0
  162. package/reglas/performance.md +195 -0
  163. package/reglas/pruebas.md +159 -0
  164. package/reglas/seguridad.md +151 -0
  165. package/reglas/skills-estandar.md +473 -0
  166. package/scripts/actualizar.js +51 -0
  167. package/scripts/desinstalar.js +86 -0
  168. package/scripts/doctor.js +222 -0
  169. package/scripts/inicializar.js +89 -0
  170. package/scripts/instalador.js +333 -0
  171. package/scripts/lib/detectar-runtime.js +177 -0
  172. package/scripts/lib/estado.js +112 -0
  173. package/scripts/lib/hooks-settings.js +283 -0
  174. package/scripts/lib/manifiestos.js +138 -0
  175. package/scripts/lib/seguridad.js +160 -0
  176. package/scripts/publicar.js +209 -0
  177. package/scripts/validar.js +120 -0
@@ -0,0 +1,369 @@
1
+ ---
2
+ name: aprendizaje-continuo
3
+ description: Sistema de aprendizaje continuo v2 basado en instintos. Cubre observación de sesión via hooks, creación y gestión de instintos con niveles de confianza, scopes de proyecto vs global, promoción a skills/comandos/agentes, evolución (merge, split, deprecate) y protección contra contaminación cross-proyecto.
4
+ ---
5
+
6
+ # Aprendizaje Continuo v2 — Sistema de Instintos
7
+
8
+ ## Concepto Central
9
+
10
+ Un **instinto** es una unidad de conocimiento aprendido de la experiencia real de sesión.
11
+ A diferencia de las skills (conocimiento declarativo estático), los instintos son
12
+ conocimiento inductivo: emergen de observar patrones repetidos en el comportamiento
13
+ del agente y los resultados que produce.
14
+
15
+ El sistema tiene cuatro capas:
16
+
17
+ ```
18
+ Observación → Instinto (draft) → Instinto (consolidado) → Promoción
19
+ (hook) confianza<0.5 confianza≥0.5 skill/cmd/agente
20
+ ```
21
+
22
+ ---
23
+
24
+ ## 1. Observación via Hooks
25
+
26
+ ### Cobertura del 100% de actividad de sesión
27
+
28
+ Todo lo que el agente hace pasa por hooks instrumentados:
29
+
30
+ ```jsonc
31
+ // .claude/settings.json — hooks de observación
32
+ {
33
+ "hooks": {
34
+ "PreToolUse": [
35
+ {
36
+ "matcher": ".*",
37
+ "hooks": [{ "type": "command", "command": "node hooks/observe-pre.js" }]
38
+ }
39
+ ],
40
+ "PostToolUse": [
41
+ {
42
+ "matcher": ".*",
43
+ "hooks": [{ "type": "command", "command": "node hooks/observe-post.js" }]
44
+ }
45
+ ],
46
+ "Stop": [
47
+ {
48
+ "hooks": [{ "type": "command", "command": "node hooks/session-end.js" }]
49
+ }
50
+ ]
51
+ }
52
+ }
53
+ ```
54
+
55
+ ### Qué observar en cada evento
56
+
57
+ | Evento | Datos relevantes | Señal de instinto |
58
+ |--------|-----------------|-------------------|
59
+ | PreToolUse | tool_name, input | Herramienta usada antes de X |
60
+ | PostToolUse | tool_name, output, duration_ms | Herramienta exitosa/fallida |
61
+ | Stop | session_id, turn_count | Patrón de sesión completa |
62
+
63
+ ### Hook de observación mínimo (Node.js)
64
+
65
+ ```javascript
66
+ // hooks/observe-post.js
67
+ const fs = require('fs');
68
+
69
+ const input = JSON.parse(fs.readFileSync('/dev/stdin', 'utf8'));
70
+ const { tool_name, tool_input, tool_response } = input;
71
+
72
+ const event = {
73
+ ts: Date.now(),
74
+ tool: tool_name,
75
+ success: !tool_response?.error,
76
+ duration_ms: tool_response?.duration_ms ?? null,
77
+ project: process.env.PROJECT_NAME ?? 'global',
78
+ };
79
+
80
+ // Append al log de observaciones
81
+ const logPath = process.env.OBSERVATIONS_LOG ?? '.claude/observations.jsonl';
82
+ fs.appendFileSync(logPath, JSON.stringify(event) + '\n');
83
+
84
+ // Exit 0 obligatorio — nunca bloquear el flujo
85
+ process.exit(0);
86
+ ```
87
+
88
+ **Regla**: los hooks de observación NUNCA deben producir exit code != 0.
89
+ Un fallo de observación no debe interrumpir el trabajo del agente.
90
+
91
+ ---
92
+
93
+ ## 2. Formato de un Instinto
94
+
95
+ Cada instinto es un archivo Markdown con frontmatter YAML:
96
+
97
+ ```yaml
98
+ ---
99
+ id: instinto-20240315-001
100
+ titulo: "Siempre usar selectinload en queries con relaciones"
101
+ confianza: 0.75
102
+ scope: proyecto # "proyecto" | "global"
103
+ proyecto: sigaf-backend # solo si scope=proyecto
104
+ observaciones: 7 # cuántas veces se observó
105
+ primera_vez: "2024-03-10"
106
+ ultima_vez: "2024-03-15"
107
+ estado: activo # "draft" | "activo" | "deprecado" | "promovido"
108
+ promovido_a: null # "skill:fastapi-experto" | "comando:fix-selectin" | null
109
+ tags: [sqlalchemy, async, orm]
110
+ ---
111
+
112
+ ## Descripción
113
+
114
+ Al usar SQLAlchemy async, cada vez que se accede a una relación en la
115
+ serialización Pydantic sin `selectinload()` se produce `MissingGreenlet`.
116
+
117
+ ## Patrón observado
118
+
119
+ En 7 sesiones de trabajo con el modelo `fastapi-experto`, se detectó que
120
+ queries sin eager loading causaban errores en producción que no aparecían
121
+ en tests síncronos.
122
+
123
+ ## Acción correctiva
124
+
125
+ ```python
126
+ # SIEMPRE incluir selectinload para relaciones accedidas
127
+ stmt = select(Modelo).options(selectinload(Modelo.relacion))
128
+ ```
129
+
130
+ ## Condiciones de activación
131
+
132
+ - Proyecto usa SQLAlchemy async (detectado en requirements.txt)
133
+ - Se están escribiendo endpoints FastAPI con Pydantic
134
+
135
+ ## Evidencia
136
+
137
+ - Sesión 2024-03-10: error MissingGreenlet en endpoint /usuarios
138
+ - Sesión 2024-03-12: mismo error en endpoint /proyectos
139
+ - Sesión 2024-03-15: prevenido al aplicar selectinload preventivamente
140
+ ```
141
+
142
+ ---
143
+
144
+ ## 3. Niveles de Confianza
145
+
146
+ ### Escala de confianza (0.0 — 1.0)
147
+
148
+ | Rango | Estado | Significado |
149
+ |-------|--------|-------------|
150
+ | 0.0 – 0.29 | draft | Observado 1-2 veces, no fiable |
151
+ | 0.30 – 0.49 | draft | Patrón emergente, necesita confirmación |
152
+ | 0.50 – 0.69 | activo | Confiable para el scope actual |
153
+ | 0.70 – 0.89 | activo | Alta confianza, considerar promoción |
154
+ | 0.90 – 1.00 | activo | Candidato inmediato a skill/comando |
155
+
156
+ ### Algoritmo de actualización de confianza
157
+
158
+ ```
159
+ nueva_confianza = confianza_actual + (0.1 × peso_evento)
160
+
161
+ peso_evento:
162
+ confirmacion_exitosa = +1.0
163
+ confirmacion_prevencion = +0.8
164
+ excepcion_encontrada = -0.3
165
+ refutacion_directa = -0.5
166
+ ```
167
+
168
+ La confianza nunca supera 0.95 automáticamente — el último 5% requiere
169
+ revisión humana explícita antes de promoción.
170
+
171
+ ---
172
+
173
+ ## 4. Scope: Proyecto vs Global
174
+
175
+ ### Scope de proyecto
176
+
177
+ - El instinto aplica solo en el directorio del proyecto
178
+ - Se almacena en `.claude/instintos/`
179
+ - Se activa cuando `PROJECT_NAME` coincide
180
+ - Ejemplo: "En este proyecto, los modelos usan prefijo `tb_`"
181
+
182
+ ### Scope global
183
+
184
+ - El instinto aplica en cualquier proyecto
185
+ - Se almacena en `~/.claude/instintos/`
186
+ - Se activa siempre
187
+ - Ejemplo: "Nunca usar `except: pass` en Python"
188
+
189
+ ### Regla de promoción de scope
190
+
191
+ Un instinto de proyecto puede ascender a global si:
192
+ 1. Se observa en 3+ proyectos distintos con la misma estructura
193
+ 2. La confianza es >= 0.7 en todos los proyectos
194
+ 3. No contradice ningún instinto global existente
195
+
196
+ ```bash
197
+ # Comando para promover scope
198
+ node scripts/instinto-promover-scope.js \
199
+ --id instinto-20240315-001 \
200
+ --de proyecto \
201
+ --a global
202
+ ```
203
+
204
+ ---
205
+
206
+ ## 5. Promoción de Instintos
207
+
208
+ ### A Skill
209
+
210
+ Cuando un instinto tiene confianza >= 0.85 y cubre un dominio técnico bien definido:
211
+
212
+ ```bash
213
+ # Genera un borrador de SKILL.md a partir del instinto
214
+ node scripts/instinto-a-skill.js \
215
+ --instinto .claude/instintos/instinto-20240315-001.md \
216
+ --skill-dir habilidades/selectinload-sqlalchemy/
217
+ ```
218
+
219
+ El instinto se marca `estado: promovido` y `promovido_a: skill:selectinload-sqlalchemy`.
220
+
221
+ ### A Comando
222
+
223
+ Cuando el instinto describe una acción repetitiva que puede automatizarse:
224
+
225
+ ```bash
226
+ node scripts/instinto-a-comando.js \
227
+ --instinto .claude/instintos/instinto-20240318-003.md \
228
+ --comando-dir comandos/fix-missing-selectin/
229
+ ```
230
+
231
+ ### A Agente
232
+
233
+ Cuando el instinto describe un workflow completo y recurrente (confianza >= 0.90):
234
+
235
+ ```bash
236
+ node scripts/instinto-a-agente.js \
237
+ --instinto .claude/instintos/instinto-20240320-007.md \
238
+ --agente-dir agentes/revisor-sqlalchemy/
239
+ ```
240
+
241
+ ---
242
+
243
+ ## 6. Evolución de Instintos
244
+
245
+ ### Merge (fusión)
246
+
247
+ Dos instintos con patrones solapados se fusionan:
248
+
249
+ ```yaml
250
+ # merge-plan.yaml
251
+ fuente_a: instinto-20240310-001 # "usar selectinload"
252
+ fuente_b: instinto-20240312-003 # "lazy='selectin' en relaciones Usuario"
253
+ resultado: instinto-20240320-010 # "estrategia completa de eager loading async"
254
+ razon: "Ambos instintos cubren el mismo dominio desde ángulos complementarios"
255
+ ```
256
+
257
+ Regla: el instinto fusionado hereda `confianza = max(a, b) × 0.9` (penalty por fusión).
258
+
259
+ ### Split (división)
260
+
261
+ Un instinto demasiado genérico se divide en instintos más específicos:
262
+
263
+ ```yaml
264
+ # split-plan.yaml
265
+ fuente: instinto-20240301-001 # "buenas prácticas SQLAlchemy"
266
+ resultados:
267
+ - instinto-20240320-011 # "eager loading en queries async"
268
+ - instinto-20240320-012 # "session management en endpoints"
269
+ - instinto-20240320-013 # "commit solo en endpoint, nunca en service"
270
+ razon: "El instinto original era demasiado amplio para activación precisa"
271
+ ```
272
+
273
+ ### Deprecate (deprecación)
274
+
275
+ Un instinto se depreca cuando:
276
+ - La librería cambió y el patrón ya no aplica
277
+ - Se encontró una mejor práctica que lo reemplaza
278
+ - La confianza cayó por debajo de 0.2 tras múltiples refutaciones
279
+
280
+ ```yaml
281
+ estado: deprecado
282
+ deprecado_en: "2024-04-01"
283
+ razon: "SQLAlchemy 2.1 agregó lazy loading seguro en async por defecto"
284
+ reemplazado_por: instinto-20240401-020
285
+ ```
286
+
287
+ ---
288
+
289
+ ## 7. Protección contra Contaminación Cross-Proyecto
290
+
291
+ ### El problema
292
+
293
+ Si los instintos de un proyecto contaminan otro proyecto, se generan
294
+ sugerencias incorrectas. Ejemplo: el prefijo `tb_` de tablas de un proyecto
295
+ legacy no debe aplicarse en un proyecto nuevo con convención `snake_case`.
296
+
297
+ ### Mecanismo de aislamiento
298
+
299
+ ```javascript
300
+ // hooks/instinto-loader.js
301
+ const projectName = process.env.PROJECT_NAME;
302
+ const instintosGlobales = loadInstintos('~/.claude/instintos/');
303
+ const instintosProyecto = loadInstintos(`.claude/instintos/`);
304
+
305
+ // Los instintos de proyecto NUNCA se exportan a otros proyectos
306
+ const instintosActivos = [
307
+ ...instintosGlobales.filter(i => i.scope === 'global'),
308
+ ...instintosProyecto.filter(i => i.proyecto === projectName),
309
+ ];
310
+ ```
311
+
312
+ ### Cuarentena de instintos sospechosos
313
+
314
+ Cuando un instinto produce una sugerencia que el humano rechaza 3+ veces,
315
+ entra en cuarentena automática:
316
+
317
+ ```yaml
318
+ estado: cuarentena
319
+ cuarentena_inicio: "2024-03-20"
320
+ rechazos: 3
321
+ cuarentena_fin: "2024-03-27" # revisión en 7 días
322
+ ```
323
+
324
+ Durante la cuarentena, el instinto no se activa pero tampoco se borra —
325
+ se espera revisión humana.
326
+
327
+ ---
328
+
329
+ ## 8. Directorio de Instintos
330
+
331
+ Estructura recomendada en el proyecto:
332
+
333
+ ```
334
+ .claude/
335
+ └── instintos/
336
+ ├── index.yaml # índice de todos los instintos activos
337
+ ├── draft/ # instintos con confianza < 0.5
338
+ ├── activos/ # instintos con confianza >= 0.5
339
+ ├── cuarentena/ # instintos rechazados en revisión
340
+ └── promovidos/ # instintos ya convertidos a skill/cmd/agente
341
+ ```
342
+
343
+ ### index.yaml mínimo
344
+
345
+ ```yaml
346
+ version: 2
347
+ ultimo_update: "2024-03-20"
348
+ totales:
349
+ draft: 3
350
+ activos: 12
351
+ cuarentena: 1
352
+ promovidos: 5
353
+ instintos:
354
+ - id: instinto-20240315-001
355
+ titulo: "Siempre usar selectinload en queries con relaciones"
356
+ confianza: 0.75
357
+ scope: proyecto
358
+ estado: activo
359
+ ```
360
+
361
+ ---
362
+
363
+ ## Anti-patrones
364
+
365
+ - Crear instintos sin evidencia (mínimo 2 observaciones para pasar de draft)
366
+ - Instintos con scope global demasiado específicos a un framework de nicho
367
+ - No actualizar la confianza cuando el instinto previene un error (refuerzo positivo)
368
+ - Fusionar instintos de dominios distintos sin justificación clara
369
+ - Ignorar instintos en cuarentena — siempre revisarlos en la fecha programada