cmp-standards 2.0.1 → 2.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.
Files changed (110) hide show
  1. package/README.md +171 -101
  2. package/dist/cli/index.js +239 -7
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/dashboard/server.d.ts.map +1 -1
  5. package/dist/dashboard/server.js +203 -39
  6. package/dist/dashboard/server.js.map +1 -1
  7. package/dist/db/cloud.d.ts +174 -0
  8. package/dist/db/cloud.d.ts.map +1 -0
  9. package/dist/db/cloud.js +241 -0
  10. package/dist/db/cloud.js.map +1 -0
  11. package/dist/db/errors.d.ts +76 -0
  12. package/dist/db/errors.d.ts.map +1 -0
  13. package/dist/db/errors.js +135 -0
  14. package/dist/db/errors.js.map +1 -0
  15. package/dist/db/turso-client.d.ts +178 -0
  16. package/dist/db/turso-client.d.ts.map +1 -0
  17. package/dist/db/turso-client.js +455 -0
  18. package/dist/db/turso-client.js.map +1 -0
  19. package/dist/db/upstash-client.d.ts +161 -0
  20. package/dist/db/upstash-client.d.ts.map +1 -0
  21. package/dist/db/upstash-client.js +325 -0
  22. package/dist/db/upstash-client.js.map +1 -0
  23. package/dist/hooks/cloud-post-tool-use.d.ts +30 -0
  24. package/dist/hooks/cloud-post-tool-use.d.ts.map +1 -0
  25. package/dist/hooks/cloud-post-tool-use.js +116 -0
  26. package/dist/hooks/cloud-post-tool-use.js.map +1 -0
  27. package/dist/hooks/cloud-pre-tool-use.d.ts +19 -0
  28. package/dist/hooks/cloud-pre-tool-use.d.ts.map +1 -0
  29. package/dist/hooks/cloud-pre-tool-use.js +149 -0
  30. package/dist/hooks/cloud-pre-tool-use.js.map +1 -0
  31. package/dist/hooks/cloud-session-start.d.ts +20 -0
  32. package/dist/hooks/cloud-session-start.d.ts.map +1 -0
  33. package/dist/hooks/cloud-session-start.js +130 -0
  34. package/dist/hooks/cloud-session-start.js.map +1 -0
  35. package/dist/hooks/index.d.ts +3 -0
  36. package/dist/hooks/index.d.ts.map +1 -1
  37. package/dist/hooks/index.js +5 -0
  38. package/dist/hooks/index.js.map +1 -1
  39. package/dist/hooks/memory-checkpoint.d.ts.map +1 -1
  40. package/dist/hooks/memory-checkpoint.js +12 -20
  41. package/dist/hooks/memory-checkpoint.js.map +1 -1
  42. package/dist/hooks/pre-tool-use.d.ts +2 -8
  43. package/dist/hooks/pre-tool-use.d.ts.map +1 -1
  44. package/dist/hooks/pre-tool-use.js +7 -106
  45. package/dist/hooks/pre-tool-use.js.map +1 -1
  46. package/dist/hooks/session-start.d.ts.map +1 -1
  47. package/dist/hooks/session-start.js +15 -6
  48. package/dist/hooks/session-start.js.map +1 -1
  49. package/dist/index.d.ts +10 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +14 -1
  52. package/dist/index.js.map +1 -1
  53. package/dist/mcp/server.d.ts.map +1 -1
  54. package/dist/mcp/server.js +223 -0
  55. package/dist/mcp/server.js.map +1 -1
  56. package/dist/schema/tracking.d.ts +644 -0
  57. package/dist/schema/tracking.d.ts.map +1 -0
  58. package/dist/schema/tracking.js +204 -0
  59. package/dist/schema/tracking.js.map +1 -0
  60. package/dist/services/ProjectScaffold.d.ts.map +1 -1
  61. package/dist/services/ProjectScaffold.js +33 -5
  62. package/dist/services/ProjectScaffold.js.map +1 -1
  63. package/dist/services/TaskTracker.d.ts +1 -1
  64. package/dist/services/TaskTracker.d.ts.map +1 -1
  65. package/dist/services/TaskTracker.js +4 -8
  66. package/dist/services/TaskTracker.js.map +1 -1
  67. package/dist/services/WorkPlanManager.d.ts +1 -1
  68. package/dist/services/WorkPlanManager.d.ts.map +1 -1
  69. package/dist/services/WorkPlanManager.js +8 -14
  70. package/dist/services/WorkPlanManager.js.map +1 -1
  71. package/dist/services/auto-inject.d.ts +1 -0
  72. package/dist/services/auto-inject.d.ts.map +1 -1
  73. package/dist/services/auto-inject.js +12 -17
  74. package/dist/services/auto-inject.js.map +1 -1
  75. package/dist/services/cross-project-sync.d.ts +2 -0
  76. package/dist/services/cross-project-sync.d.ts.map +1 -1
  77. package/dist/services/cross-project-sync.js +26 -21
  78. package/dist/services/cross-project-sync.js.map +1 -1
  79. package/dist/services/memory-consolidation.d.ts.map +1 -1
  80. package/dist/services/memory-consolidation.js +30 -27
  81. package/dist/services/memory-consolidation.js.map +1 -1
  82. package/dist/utils/env-loader.d.ts +41 -0
  83. package/dist/utils/env-loader.d.ts.map +1 -0
  84. package/dist/utils/env-loader.js +78 -0
  85. package/dist/utils/env-loader.js.map +1 -0
  86. package/dist/utils/git.d.ts +52 -0
  87. package/dist/utils/git.d.ts.map +1 -0
  88. package/dist/utils/git.js +267 -0
  89. package/dist/utils/git.js.map +1 -0
  90. package/dist/utils/paths.d.ts +39 -5
  91. package/dist/utils/paths.d.ts.map +1 -1
  92. package/dist/utils/paths.js +88 -7
  93. package/dist/utils/paths.js.map +1 -1
  94. package/package.json +8 -2
  95. package/standards/README.md +50 -0
  96. package/standards/experts/expert-routing.md +215 -0
  97. package/standards/general/code-quality.md +86 -0
  98. package/standards/general/memory-usage.md +205 -0
  99. package/standards/general/sync-workflow.md +235 -0
  100. package/standards/general/workflow.md +82 -0
  101. package/standards/hooks/mandatory-tracking.md +446 -0
  102. package/standards/infrastructure/cloud-database.md +287 -0
  103. package/standards/mcp/server-design.md +243 -0
  104. package/standards/mcp/tool-patterns.md +354 -0
  105. package/standards/skills/skill-structure.md +286 -0
  106. package/standards/skills/workflow-design.md +323 -0
  107. package/standards/tools/tool-design.md +297 -0
  108. package/templates/claude-settings.json +72 -0
  109. package/templates/memory-config.json +2 -28
  110. package/templates/skills/continue.md +205 -0
@@ -0,0 +1,446 @@
1
+ # Sistema de Tracking Obligatorio
2
+
3
+ ## Filosofía
4
+
5
+ Todo agente de Claude Code **DEBE**:
6
+ 1. Registrar qué está haciendo (inicio de tarea)
7
+ 2. Mantener visible el plan actual y paso actual
8
+ 3. Al terminar, registrar mejoras para el futuro
9
+ 4. Todo con timestamp para continuidad
10
+
11
+ ## Flujo Obligatorio
12
+
13
+ ```
14
+ ┌─────────────────────────────────────────────────────────────┐
15
+ │ SESSION START │
16
+ ├─────────────────────────────────────────────────────────────┤
17
+ │ 1. Cargar tareas activas del usuario │
18
+ │ 2. Mostrar resumen: "Tienes 2 tareas en progreso..." │
19
+ │ 3. Cargar mejoras pendientes del área de trabajo │
20
+ │ 4. Inyectar contexto relevante │
21
+ └─────────────────────────────────────────────────────────────┘
22
+
23
+
24
+ ┌─────────────────────────────────────────────────────────────┐
25
+ │ TASK START (Obligatorio antes de trabajar) │
26
+ ├─────────────────────────────────────────────────────────────┤
27
+ │ Registrar en DB: │
28
+ │ { │
29
+ │ id: ulid(), │
30
+ │ type: 'task', │
31
+ │ status: 'in_progress', │
32
+ │ content: { │
33
+ │ title: "Implementar feature X", │
34
+ │ plan: ["Paso 1", "Paso 2", "Paso 3"], │
35
+ │ currentStep: 0, │
36
+ │ domain: "video-studio", │
37
+ │ userRequest: "mensaje original", │
38
+ │ startedAt: "2025-12-24T10:30:00Z", │
39
+ │ sessionId: "sess_xyz", │
40
+ │ agentId: "agent_abc" │
41
+ │ } │
42
+ │ } │
43
+ └─────────────────────────────────────────────────────────────┘
44
+
45
+
46
+ ┌─────────────────────────────────────────────────────────────┐
47
+ │ DURING WORK (Auto-tracking) │
48
+ ├─────────────────────────────────────────────────────────────┤
49
+ │ En cada Edit/Write significativo: │
50
+ │ - Actualizar currentStep │
51
+ │ - Registrar archivos modificados │
52
+ │ - Actualizar lastActivityAt │
53
+ │ │
54
+ │ Si el agente detecta mejora potencial: │
55
+ │ - Capturar inmediatamente en `improvements` array │
56
+ └─────────────────────────────────────────────────────────────┘
57
+
58
+
59
+ ┌─────────────────────────────────────────────────────────────┐
60
+ │ TASK COMPLETE (Obligatorio) │
61
+ ├─────────────────────────────────────────────────────────────┤
62
+ │ ANTES de marcar como completo, DEBE: │
63
+ │ │
64
+ │ 1. Registrar resultado: │
65
+ │ result: "Implementado con éxito" | "Parcial" | "Bloqueado"│
66
+ │ │
67
+ │ 2. Registrar mejoras detectadas (OBLIGATORIO): │
68
+ │ improvements: [ │
69
+ │ { │
70
+ │ area: "video-studio", │
71
+ │ title: "Cachear respuestas de Veo API", │
72
+ │ description: "Durante el trabajo noté que...", │
73
+ │ priority: "medium", │
74
+ │ detectedAt: "2025-12-24T11:45:00Z" │
75
+ │ } │
76
+ │ ] │
77
+ │ │
78
+ │ 3. Registrar lecciones aprendidas: │
79
+ │ lessons: ["Pattern X funcionó mejor que Y"] │
80
+ │ │
81
+ │ 4. Actualizar timestamps: │
82
+ │ completedAt: "2025-12-24T12:00:00Z" │
83
+ │ duration: "1h 30m" │
84
+ └─────────────────────────────────────────────────────────────┘
85
+
86
+ ## Estructura de Datos
87
+
88
+ ### Task (Tarea en Progreso)
89
+
90
+ ```typescript
91
+ interface TrackedTask {
92
+ id: string
93
+ type: 'task'
94
+ status: 'pending' | 'in_progress' | 'completed' | 'blocked'
95
+ system: string // 'SWARMSCALE', 'CHARTER', etc.
96
+
97
+ content: {
98
+ // Identificación
99
+ title: string
100
+ description: string
101
+ userRequest: string // Mensaje original del usuario
102
+
103
+ // Plan
104
+ plan: string[] // Pasos del plan
105
+ currentStep: number // Índice del paso actual
106
+
107
+ // Contexto
108
+ domain: string // Área del proyecto
109
+ files: string[] // Archivos tocados
110
+
111
+ // Tracking
112
+ sessionId: string
113
+ agentId: string
114
+
115
+ // Timestamps
116
+ startedAt: string
117
+ lastActivityAt: string
118
+ completedAt?: string
119
+
120
+ // Resultado (al completar)
121
+ result?: 'success' | 'partial' | 'blocked'
122
+ resultNotes?: string
123
+
124
+ // Mejoras detectadas (OBLIGATORIO al completar)
125
+ improvements: Improvement[]
126
+
127
+ // Lecciones
128
+ lessons: string[]
129
+ }
130
+ }
131
+ ```
132
+
133
+ ### Improvement (Mejora Detectada)
134
+
135
+ ```typescript
136
+ interface Improvement {
137
+ id: string
138
+ type: 'improvement'
139
+ status: 'pending' | 'implemented' | 'rejected'
140
+
141
+ content: {
142
+ // Qué mejorar
143
+ area: string // Dominio/área del proyecto
144
+ title: string
145
+ description: string
146
+
147
+ // Contexto
148
+ detectedInTask: string // ID de la tarea donde se detectó
149
+ detectedBy: string // agentId
150
+ detectedAt: string
151
+
152
+ // Prioridad
153
+ priority: 'low' | 'medium' | 'high' | 'critical'
154
+ effort: 'trivial' | 'small' | 'medium' | 'large'
155
+
156
+ // Implementación
157
+ implementedAt?: string
158
+ implementedInTask?: string
159
+ }
160
+ }
161
+ ```
162
+
163
+ ## Hooks Implementation
164
+
165
+ ### SessionStart Hook
166
+
167
+ ```typescript
168
+ // .claude/hooks/session-start-tracking.ts
169
+
170
+ export async function onSessionStart(event: SessionStartEvent) {
171
+ const db = await getDatabase()
172
+ const system = detectSystem(event.cwd)
173
+
174
+ // 1. Cargar tareas activas
175
+ const activeTasks = await db.query({
176
+ type: 'task',
177
+ status: 'in_progress',
178
+ system
179
+ })
180
+
181
+ // 2. Cargar mejoras pendientes del área
182
+ const pendingImprovements = await db.query({
183
+ type: 'improvement',
184
+ status: 'pending',
185
+ system
186
+ })
187
+
188
+ // 3. Generar contexto
189
+ let context = ''
190
+
191
+ if (activeTasks.length > 0) {
192
+ context += `\n## Tareas en Progreso\n`
193
+ for (const task of activeTasks) {
194
+ const t = task.content as TaskContent
195
+ context += `- **${t.title}** (paso ${t.currentStep + 1}/${t.plan.length})\n`
196
+ context += ` Iniciada: ${formatDate(t.startedAt)}\n`
197
+ context += ` Último paso: ${t.plan[t.currentStep]}\n`
198
+ }
199
+ context += `\nPuedes continuar con "/continue" o empezar algo nuevo.\n`
200
+ }
201
+
202
+ if (pendingImprovements.length > 0) {
203
+ context += `\n## Mejoras Pendientes (${pendingImprovements.length})\n`
204
+ const byArea = groupBy(pendingImprovements, i => i.content.area)
205
+ for (const [area, improvements] of Object.entries(byArea)) {
206
+ context += `- **${area}**: ${improvements.length} mejoras\n`
207
+ }
208
+ }
209
+
210
+ return {
211
+ contextInjection: context,
212
+ metadata: { activeTasks: activeTasks.length }
213
+ }
214
+ }
215
+ ```
216
+
217
+ ### PreToolUse Hook (Task Tool)
218
+
219
+ ```typescript
220
+ // .claude/hooks/pre-tool-use-task-tracking.ts
221
+
222
+ export async function onPreToolUse(event: PreToolUseEvent) {
223
+ // Solo para Task tool (cuando se lanzan agentes)
224
+ if (event.tool !== 'Task') return { proceed: true }
225
+
226
+ const db = await getDatabase()
227
+
228
+ // Verificar si hay tarea activa
229
+ const activeTask = await db.findFirst({
230
+ type: 'task',
231
+ status: 'in_progress',
232
+ 'content.sessionId': event.sessionId
233
+ })
234
+
235
+ if (!activeTask) {
236
+ // OBLIGAR a crear tarea primero
237
+ return {
238
+ proceed: false,
239
+ message: `⚠️ No hay tarea registrada para esta sesión.
240
+
241
+ Antes de continuar, registra la tarea:
242
+
243
+ \`\`\`
244
+ Tarea: [descripción breve]
245
+ Plan:
246
+ 1. [paso 1]
247
+ 2. [paso 2]
248
+ ...
249
+ \`\`\`
250
+
251
+ Esto permite continuidad si se cierra la sesión.`
252
+ }
253
+ }
254
+
255
+ // Actualizar actividad
256
+ await db.update(activeTask.id, {
257
+ 'content.lastActivityAt': new Date().toISOString()
258
+ })
259
+
260
+ return { proceed: true }
261
+ }
262
+ ```
263
+
264
+ ### PostToolUse Hook (Captura de Mejoras)
265
+
266
+ ```typescript
267
+ // .claude/hooks/post-tool-use-improvements.ts
268
+
269
+ export async function onPostToolUse(event: PostToolUseEvent) {
270
+ // Solo después de Write/Edit significativos
271
+ if (!['Write', 'Edit'].includes(event.tool)) return
272
+
273
+ const db = await getDatabase()
274
+ const activeTask = await getActiveTask(event.sessionId)
275
+
276
+ if (!activeTask) return
277
+
278
+ // Actualizar archivos modificados
279
+ const files = activeTask.content.files || []
280
+ if (!files.includes(event.params.file_path)) {
281
+ files.push(event.params.file_path)
282
+ await db.update(activeTask.id, {
283
+ 'content.files': files,
284
+ 'content.lastActivityAt': new Date().toISOString()
285
+ })
286
+ }
287
+ }
288
+ ```
289
+
290
+ ### Task Completion Guard
291
+
292
+ ```typescript
293
+ // .claude/hooks/task-completion-guard.md
294
+
295
+ ## Task Completion Requirements
296
+
297
+ Antes de marcar una tarea como completada, DEBES:
298
+
299
+ ### 1. Registrar Resultado
300
+ - `success`: Todo implementado correctamente
301
+ - `partial`: Implementación parcial, quedan pendientes
302
+ - `blocked`: No se pudo completar por bloqueadores
303
+
304
+ ### 2. Registrar Mejoras (OBLIGATORIO)
305
+ Responde estas preguntas:
306
+ - ¿Qué podría hacerse mejor en esta área?
307
+ - ¿Encontraste código que necesita refactoring?
308
+ - ¿Detectaste patrones repetitivos?
309
+ - ¿Hay oportunidades de optimización?
310
+
311
+ **Mínimo 1 mejora** debe registrarse por tarea.
312
+ Si genuinamente no hay mejoras, documenta por qué.
313
+
314
+ ### 3. Registrar Lecciones
315
+ - ¿Qué aprendiste durante esta tarea?
316
+ - ¿Qué harías diferente la próxima vez?
317
+
318
+ ### Formato de Registro
319
+
320
+ ```json
321
+ {
322
+ "result": "success",
323
+ "resultNotes": "Feature implementada correctamente",
324
+ "improvements": [
325
+ {
326
+ "area": "video-studio",
327
+ "title": "Cachear respuestas de Veo API",
328
+ "description": "Las llamadas a Veo son lentas (~3s). Podríamos cachear por prompt hash.",
329
+ "priority": "medium",
330
+ "effort": "small"
331
+ }
332
+ ],
333
+ "lessons": [
334
+ "El pattern de retry con backoff funciona mejor que retry simple"
335
+ ]
336
+ }
337
+ ```
338
+ ```
339
+
340
+ ## Skill: /continue
341
+
342
+ ```markdown
343
+ ---
344
+ name: continue
345
+ description: Continuar con una tarea en progreso
346
+ arguments:
347
+ - name: taskId
348
+ description: ID de la tarea (opcional, usa la más reciente)
349
+ required: false
350
+ ---
351
+
352
+ # Continuar Tarea
353
+
354
+ ## 1. Cargar Tarea
355
+
356
+ {{#if taskId}}
357
+ Cargar tarea específica: {{taskId}}
358
+ {{else}}
359
+ Cargar la tarea más reciente en progreso.
360
+ {{/if}}
361
+
362
+ ## 2. Mostrar Contexto
363
+
364
+ Mostrar al usuario:
365
+ - Título de la tarea
366
+ - Plan completo
367
+ - Paso actual (destacado)
368
+ - Archivos ya modificados
369
+ - Tiempo transcurrido
370
+ - Mejoras detectadas hasta ahora
371
+
372
+ ## 3. Retomar
373
+
374
+ Continuar desde el paso actual del plan.
375
+ Mantener el mismo taskId y sessionId.
376
+
377
+ ## Ejemplo de Output
378
+
379
+ ```
380
+ 📋 Continuando: "Implementar cache para Veo API"
381
+
382
+ Plan:
383
+ ✅ 1. Crear servicio de cache
384
+ ✅ 2. Integrar con VeoService
385
+ → 3. Agregar invalidación por TTL ← AQUÍ
386
+ 4. Escribir tests
387
+ 5. Documentar
388
+
389
+ Archivos modificados:
390
+ - src/services/cache/VeoCache.ts
391
+ - src/services/ai/VeoService.ts
392
+
393
+ Tiempo: 45 min (iniciada hace 2h)
394
+
395
+ Mejoras detectadas: 1 pendiente
396
+
397
+ Continuando con paso 3...
398
+ ```
399
+ ```
400
+
401
+ ## Queries Útiles
402
+
403
+ ### Ver tareas activas
404
+ ```sql
405
+ SELECT * FROM DEV_Items
406
+ WHERE type = 'task'
407
+ AND status = 'in_progress'
408
+ AND system = 'SWARMSCALE'
409
+ ORDER BY JSON_EXTRACT(content, '$.lastActivityAt') DESC
410
+ ```
411
+
412
+ ### Ver mejoras por área
413
+ ```sql
414
+ SELECT
415
+ JSON_EXTRACT(content, '$.area') as area,
416
+ COUNT(*) as count
417
+ FROM DEV_Items
418
+ WHERE type = 'improvement'
419
+ AND status = 'pending'
420
+ AND system = 'SWARMSCALE'
421
+ GROUP BY area
422
+ ORDER BY count DESC
423
+ ```
424
+
425
+ ### Ver historial de trabajo
426
+ ```sql
427
+ SELECT
428
+ JSON_EXTRACT(content, '$.title') as title,
429
+ JSON_EXTRACT(content, '$.startedAt') as started,
430
+ JSON_EXTRACT(content, '$.completedAt') as completed,
431
+ JSON_EXTRACT(content, '$.result') as result,
432
+ JSON_LENGTH(JSON_EXTRACT(content, '$.improvements')) as improvements
433
+ FROM DEV_Items
434
+ WHERE type = 'task'
435
+ AND system = 'SWARMSCALE'
436
+ ORDER BY JSON_EXTRACT(content, '$.startedAt') DESC
437
+ LIMIT 20
438
+ ```
439
+
440
+ ## Beneficios
441
+
442
+ 1. **Continuidad**: Cerrar IDE no pierde contexto
443
+ 2. **Mejora Continua**: Cada tarea genera insights
444
+ 3. **Visibilidad**: Saber qué se está trabajando
445
+ 4. **Historial**: Ver evolución del proyecto
446
+ 5. **Priorización**: Mejoras acumuladas por área