cmp-standards 2.0.0 → 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.
- package/README.md +171 -101
- package/dist/cli/index.js +239 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +203 -39
- package/dist/dashboard/server.js.map +1 -1
- package/dist/db/cloud.d.ts +174 -0
- package/dist/db/cloud.d.ts.map +1 -0
- package/dist/db/cloud.js +241 -0
- package/dist/db/cloud.js.map +1 -0
- package/dist/db/errors.d.ts +76 -0
- package/dist/db/errors.d.ts.map +1 -0
- package/dist/db/errors.js +135 -0
- package/dist/db/errors.js.map +1 -0
- package/dist/db/turso-client.d.ts +178 -0
- package/dist/db/turso-client.d.ts.map +1 -0
- package/dist/db/turso-client.js +455 -0
- package/dist/db/turso-client.js.map +1 -0
- package/dist/db/upstash-client.d.ts +161 -0
- package/dist/db/upstash-client.d.ts.map +1 -0
- package/dist/db/upstash-client.js +325 -0
- package/dist/db/upstash-client.js.map +1 -0
- package/dist/hooks/cloud-post-tool-use.d.ts +30 -0
- package/dist/hooks/cloud-post-tool-use.d.ts.map +1 -0
- package/dist/hooks/cloud-post-tool-use.js +116 -0
- package/dist/hooks/cloud-post-tool-use.js.map +1 -0
- package/dist/hooks/cloud-pre-tool-use.d.ts +19 -0
- package/dist/hooks/cloud-pre-tool-use.d.ts.map +1 -0
- package/dist/hooks/cloud-pre-tool-use.js +149 -0
- package/dist/hooks/cloud-pre-tool-use.js.map +1 -0
- package/dist/hooks/cloud-session-start.d.ts +20 -0
- package/dist/hooks/cloud-session-start.d.ts.map +1 -0
- package/dist/hooks/cloud-session-start.js +130 -0
- package/dist/hooks/cloud-session-start.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +5 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/memory-checkpoint.d.ts.map +1 -1
- package/dist/hooks/memory-checkpoint.js +12 -20
- package/dist/hooks/memory-checkpoint.js.map +1 -1
- package/dist/hooks/pre-tool-use.d.ts +2 -8
- package/dist/hooks/pre-tool-use.d.ts.map +1 -1
- package/dist/hooks/pre-tool-use.js +7 -106
- package/dist/hooks/pre-tool-use.js.map +1 -1
- package/dist/hooks/session-start.d.ts.map +1 -1
- package/dist/hooks/session-start.js +15 -6
- package/dist/hooks/session-start.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +223 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/schema/tracking.d.ts +644 -0
- package/dist/schema/tracking.d.ts.map +1 -0
- package/dist/schema/tracking.js +204 -0
- package/dist/schema/tracking.js.map +1 -0
- package/dist/services/ProjectScaffold.d.ts.map +1 -1
- package/dist/services/ProjectScaffold.js +33 -5
- package/dist/services/ProjectScaffold.js.map +1 -1
- package/dist/services/TaskTracker.d.ts +1 -1
- package/dist/services/TaskTracker.d.ts.map +1 -1
- package/dist/services/TaskTracker.js +4 -8
- package/dist/services/TaskTracker.js.map +1 -1
- package/dist/services/WorkPlanManager.d.ts +1 -1
- package/dist/services/WorkPlanManager.d.ts.map +1 -1
- package/dist/services/WorkPlanManager.js +8 -14
- package/dist/services/WorkPlanManager.js.map +1 -1
- package/dist/services/auto-inject.d.ts +1 -0
- package/dist/services/auto-inject.d.ts.map +1 -1
- package/dist/services/auto-inject.js +12 -17
- package/dist/services/auto-inject.js.map +1 -1
- package/dist/services/cross-project-sync.d.ts +2 -0
- package/dist/services/cross-project-sync.d.ts.map +1 -1
- package/dist/services/cross-project-sync.js +26 -21
- package/dist/services/cross-project-sync.js.map +1 -1
- package/dist/services/memory-consolidation.d.ts.map +1 -1
- package/dist/services/memory-consolidation.js +30 -27
- package/dist/services/memory-consolidation.js.map +1 -1
- package/dist/utils/env-loader.d.ts +41 -0
- package/dist/utils/env-loader.d.ts.map +1 -0
- package/dist/utils/env-loader.js +78 -0
- package/dist/utils/env-loader.js.map +1 -0
- package/dist/utils/git.d.ts +52 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +267 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/paths.d.ts +39 -5
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +88 -7
- package/dist/utils/paths.js.map +1 -1
- package/package.json +9 -4
- package/standards/README.md +50 -0
- package/standards/experts/expert-routing.md +215 -0
- package/standards/general/code-quality.md +86 -0
- package/standards/general/memory-usage.md +205 -0
- package/standards/general/sync-workflow.md +235 -0
- package/standards/general/workflow.md +82 -0
- package/standards/hooks/mandatory-tracking.md +446 -0
- package/standards/infrastructure/cloud-database.md +287 -0
- package/standards/mcp/server-design.md +243 -0
- package/standards/mcp/tool-patterns.md +354 -0
- package/standards/skills/skill-structure.md +286 -0
- package/standards/skills/workflow-design.md +323 -0
- package/standards/tools/tool-design.md +297 -0
- package/templates/claude-settings.json +72 -0
- package/templates/memory-config.json +2 -28
- 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
|