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,215 @@
1
+ # Expert Routing - Cuándo Consultar Expertos
2
+
3
+ ## Principio
4
+
5
+ Los expertos (`/experts`) validan código crítico. No todo código necesita revisión de expertos.
6
+
7
+ ## Cuándo Consultar
8
+
9
+ ### SIEMPRE Consultar
10
+
11
+ | Área | Expertos | Por qué |
12
+ |------|----------|---------|
13
+ | **Finanzas** | Security, Architecture | Dinero real, dual-write requerido |
14
+ | **Autenticación** | Security, Architecture | Seguridad crítica |
15
+ | **Schema DB** | Database, Architecture | Cambios irreversibles |
16
+ | **Pagos externos** | Security, Performance | Integraciones sensibles |
17
+
18
+ ```bash
19
+ # Ejemplos de rutas críticas
20
+ src/server/api/routers/finances/**
21
+ src/server/api/routers/auth/**
22
+ src/server/schema/**
23
+ drizzle/migrations/**
24
+ ```
25
+
26
+ ### CONSIDERAR Consultar
27
+
28
+ | Área | Expertos | Cuándo |
29
+ |------|----------|--------|
30
+ | **APIs** | Performance, Architecture | Si es nueva o cambia contrato |
31
+ | **Componentes UI** | UX, Performance | Si es core o afecta muchos usuarios |
32
+ | **Refactoring** | Architecture | Si toca múltiples dominios |
33
+
34
+ ### NO Consultar
35
+
36
+ - Typos y fixes menores
37
+ - Documentación
38
+ - Tests
39
+ - Código experimental/WIP
40
+ - Generado automáticamente
41
+
42
+ ## Proceso de Consulta
43
+
44
+ ```
45
+ 1. Identificar cambios críticos
46
+
47
+ 2. Ejecutar /experts [archivos]
48
+
49
+ 3. Esperar consenso
50
+
51
+ 4. Si APPROVED → continuar
52
+ Si REJECTED → aplicar feedback → volver a 2
53
+ ```
54
+
55
+ ## Decisiones por Experto
56
+
57
+ ### Security Expert
58
+
59
+ **Consultar cuando:**
60
+ - Input de usuario no validado
61
+ - Queries a base de datos
62
+ - Operaciones financieras
63
+ - Cambios de permisos
64
+
65
+ **Busca:**
66
+ - SQL injection
67
+ - XSS vulnerabilities
68
+ - Missing Zod validation
69
+ - Finance dual-write violations
70
+
71
+ ### Performance Expert
72
+
73
+ **Consultar cuando:**
74
+ - Loops con await
75
+ - Queries en componentes
76
+ - Imports de librerías pesadas
77
+ - Cambios en data fetching
78
+
79
+ **Busca:**
80
+ - N+1 queries
81
+ - API waterfalls
82
+ - Missing lazy loading
83
+ - Unnecessary re-renders
84
+
85
+ ### Architecture Expert
86
+
87
+ **Consultar cuando:**
88
+ - Nuevos módulos/dominios
89
+ - Cambios de estructura
90
+ - Tipos compartidos
91
+ - Imports cross-domain
92
+
93
+ **Busca:**
94
+ - Type inference chain breaks
95
+ - Circular dependencies
96
+ - SOLID violations
97
+ - ADR misalignment
98
+
99
+ ### Database Expert
100
+
101
+ **Consultar cuando:**
102
+ - Cambios de schema
103
+ - Nuevas migraciones
104
+ - Queries complejas
105
+ - Relaciones entre tablas
106
+
107
+ **Busca:**
108
+ - Missing constraints
109
+ - Type sync issues
110
+ - Unsafe migrations
111
+ - N+1 patterns
112
+
113
+ ### UX Expert
114
+
115
+ **Consultar cuando:**
116
+ - Componentes de formulario
117
+ - Navegación
118
+ - Modales/overlays
119
+ - Responsive design
120
+
121
+ **Busca:**
122
+ - Missing ARIA
123
+ - Touch target size
124
+ - Hardcoded colors
125
+ - i18n issues
126
+
127
+ ## Reglas de Consenso
128
+
129
+ ### Código Crítico (Unanimidad)
130
+
131
+ Todos los expertos deben aprobar:
132
+
133
+ ```
134
+ ✅ Security: APPROVE
135
+ ✅ Architecture: APPROVE
136
+ ✅ Database: APPROVE
137
+ ⊝ Memory: ABSTAIN
138
+
139
+ Result: APPROVED (3/3 voting approved)
140
+ ```
141
+
142
+ ### Código Normal (Mayoría)
143
+
144
+ ≥3 de 5 expertos aprueban:
145
+
146
+ ```
147
+ ✅ Security: APPROVE
148
+ ✅ Architecture: APPROVE
149
+ ❌ Performance: REJECT
150
+ ✅ UX: APPROVE
151
+ ⊝ Memory: ABSTAIN
152
+
153
+ Result: APPROVED (3/4 voting approved, 1 rejected)
154
+ ```
155
+
156
+ ## Integración en Workflow
157
+
158
+ ```markdown
159
+ ## Después de implementar
160
+
161
+ 1. Verificar si cambios son críticos:
162
+ - ¿Toca finanzas/auth/schema?
163
+ - ¿Nuevo dominio o refactoring grande?
164
+
165
+ 2. Si es crítico:
166
+ /experts [archivos modificados]
167
+
168
+ 3. Esperar resultado:
169
+ - APPROVED → commit
170
+ - REJECTED → aplicar fixes → volver a consultar
171
+ ```
172
+
173
+ ## Memory Expert (Especial)
174
+
175
+ El Memory Expert **nunca rechaza** - su rol es aprender:
176
+
177
+ - Detecta patrones repetidos (3+ = auto-improve)
178
+ - Genera reglas ESLint automáticamente
179
+ - Crea memorias de gotchas
180
+ - Propone ADRs para decisiones
181
+
182
+ Siempre vota ABSTAIN pero captura aprendizajes.
183
+
184
+ ## Comandos Rápidos
185
+
186
+ ```bash
187
+ # Review archivos específicos
188
+ /experts src/server/api/routers/finances/expenses.ts
189
+
190
+ # Review directorio
191
+ /experts src/server/api/routers/finances/
192
+
193
+ # Solo expertos específicos
194
+ /experts src/file.ts --only security,architecture
195
+
196
+ # Modo verbose
197
+ /experts src/file.ts --verbose
198
+ ```
199
+
200
+ ## Ejemplo de Flujo
201
+
202
+ ```
203
+ Tarea: Agregar endpoint de pago
204
+
205
+ 1. Implementar endpoint
206
+ 2. Detectar: es código financiero → CRÍTICO
207
+ 3. Ejecutar: /experts src/server/api/routers/payments/...
208
+ 4. Resultado:
209
+ ❌ REJECTED - Security Expert
210
+ "Missing LedgerService.createEntry() for dual-write"
211
+ 5. Aplicar fix
212
+ 6. Re-ejecutar: /experts ...
213
+ 7. ✅ APPROVED
214
+ 8. Commit
215
+ ```
@@ -0,0 +1,86 @@
1
+ # Estándares de Calidad de Código
2
+
3
+ ## TypeScript
4
+
5
+ ### Tipos
6
+ - **NO usar `any`** - Usar tipos específicos o `unknown` con validación
7
+ - **NO usar `as` casting** innecesario - Preferir type guards
8
+ - **Inferir tipos** cuando sea posible - No duplicar tipos manualmente
9
+
10
+ ```typescript
11
+ // MAL
12
+ const data: any = await fetch(...)
13
+ const user = response as User
14
+
15
+ // BIEN
16
+ const data: unknown = await fetch(...)
17
+ if (isUser(data)) {
18
+ // data es User aquí
19
+ }
20
+ ```
21
+
22
+ ### Imports
23
+ - Usar **barrel exports** (`index.ts`)
24
+ - Imports **absolutos** con aliases (`@/components/...`)
25
+ - NO importar tipos con `import type` a menos que sea necesario para evitar ciclos
26
+
27
+ ### Async/Await
28
+ - **NO await en loops** - Usar `Promise.all` o `Promise.allSettled`
29
+ - Manejar errores con try/catch o `.catch()`
30
+
31
+ ```typescript
32
+ // MAL
33
+ for (const item of items) {
34
+ await processItem(item) // N+1 pattern
35
+ }
36
+
37
+ // BIEN
38
+ await Promise.all(items.map(item => processItem(item)))
39
+ ```
40
+
41
+ ## React
42
+
43
+ ### Componentes
44
+ - **Server Components por defecto** - Solo usar Client cuando necesites interactividad
45
+ - **NO inline functions en JSX** para event handlers
46
+ - Usar **hooks personalizados** para lógica reutilizable
47
+
48
+ ```tsx
49
+ // MAL
50
+ <Button onClick={() => setOpen(true)} />
51
+
52
+ // BIEN
53
+ const handleOpen = useCallback(() => setOpen(true), [])
54
+ <Button onClick={handleOpen} />
55
+ ```
56
+
57
+ ### Estado
58
+ - **Mínimo estado local** - Preferir server state (React Query/tRPC)
59
+ - **NO prop drilling** - Usar Context o composición
60
+
61
+ ## Base de Datos (Drizzle)
62
+
63
+ ### Queries
64
+ - Siempre **filtrar por sistema** en tablas compartidas
65
+ - Usar **transacciones** para operaciones múltiples
66
+ - Evitar **N+1 queries** - Usar joins o Promise.all
67
+
68
+ ```typescript
69
+ // MAL
70
+ const items = await db.select().from(devItems)
71
+
72
+ // BIEN
73
+ const items = await db.select().from(devItems)
74
+ .where(eq(devItems.system, 'MYPROJECT'))
75
+ ```
76
+
77
+ ### Migraciones
78
+ - **Nunca** modificar migraciones ya ejecutadas
79
+ - Siempre revisar el SQL generado antes de push
80
+ - Usar `tablesFilter` para no afectar tablas de otros proyectos
81
+
82
+ ## Tests
83
+
84
+ - Tests para **lógica crítica** (pagos, auth, cálculos)
85
+ - **NO tests para código trivial**
86
+ - Preferir **integration tests** sobre unit tests para APIs
@@ -0,0 +1,205 @@
1
+ # Uso de Memory
2
+
3
+ ## Filosofía
4
+
5
+ El sistema de memoria captura **conocimiento que persiste** entre sesiones:
6
+
7
+ - Tareas que estamos haciendo
8
+ - Aprendizajes del trabajo
9
+ - Patrones detectados
10
+ - Decisiones tomadas
11
+
12
+ ## Cuándo Registrar
13
+
14
+ ### Al Empezar Tarea
15
+
16
+ ```typescript
17
+ // Registrar tarea nueva
18
+ await taskTracker.startTask({
19
+ title: "Implementar feature X",
20
+ description: "Agregar funcionalidad para...",
21
+ userRequest: "mensaje original del usuario"
22
+ })
23
+ ```
24
+
25
+ ### Durante el Trabajo
26
+
27
+ ```typescript
28
+ // Capturar idea que surge
29
+ await ideaCollector.capture({
30
+ title: "Optimización posible",
31
+ description: "Podríamos cachear este query...",
32
+ category: "performance",
33
+ priority: "medium"
34
+ })
35
+ ```
36
+
37
+ ### Al Completar
38
+
39
+ ```typescript
40
+ // Registrar resultado
41
+ await taskTracker.completeTask(taskId, {
42
+ result: "Implementado con éxito",
43
+ lessonsLearned: ["Pattern X funcionó mejor que Y"]
44
+ })
45
+ ```
46
+
47
+ ### Al Aprender Algo Nuevo
48
+
49
+ ```typescript
50
+ // Crear memoria de conocimiento
51
+ await memoryClient.create({
52
+ type: 'memory',
53
+ title: "Pattern: Lazy loading de mapas",
54
+ body: "Para evitar errores de SSR...",
55
+ domain: "architecture",
56
+ tags: ["performance", "ssr", "maps"]
57
+ })
58
+ ```
59
+
60
+ ## Qué NO Registrar
61
+
62
+ - Información trivial
63
+ - Datos temporales de sesión
64
+ - Detalles de implementación obvios
65
+ - Código completo (solo referencias)
66
+
67
+ ## Tipos de Memoria
68
+
69
+ ### 1. Tasks
70
+
71
+ Trabajo en progreso:
72
+
73
+ ```typescript
74
+ {
75
+ type: 'task',
76
+ status: 'pending' | 'in_progress' | 'completed',
77
+ title: string,
78
+ description: string,
79
+ context: { /* datos relevantes */ }
80
+ }
81
+ ```
82
+
83
+ ### 2. Ideas
84
+
85
+ Insights capturados:
86
+
87
+ ```typescript
88
+ {
89
+ type: 'idea',
90
+ title: string,
91
+ description: string,
92
+ category: 'feature' | 'optimization' | 'fix' | 'research',
93
+ priority: 'low' | 'medium' | 'high'
94
+ }
95
+ ```
96
+
97
+ ### 3. Memories
98
+
99
+ Conocimiento persistente:
100
+
101
+ ```typescript
102
+ {
103
+ type: 'memory',
104
+ title: string,
105
+ body: string, // Markdown
106
+ domain: string, // 'architecture', 'performance', etc.
107
+ tags: string[],
108
+ importance: 'low' | 'normal' | 'critical'
109
+ }
110
+ ```
111
+
112
+ ### 4. Patterns
113
+
114
+ Patrones detectados:
115
+
116
+ ```typescript
117
+ {
118
+ type: 'pattern',
119
+ name: string,
120
+ description: string,
121
+ occurrences: number,
122
+ autoImprove: boolean // true si >= 3 ocurrencias
123
+ }
124
+ ```
125
+
126
+ ## Auto-Improvement
127
+
128
+ Cuando un patrón se detecta 3+ veces:
129
+
130
+ 1. Sistema genera regla ESLint
131
+ 2. Crea entrada en memoria (gotcha)
132
+ 3. Actualiza estándares locales
133
+
134
+ ```
135
+ Pattern detectado 3x: "await en loop"
136
+
137
+ ESLint rule: no-await-in-loop
138
+
139
+ Memory: "Usar Promise.all en lugar de await secuencial"
140
+
141
+ Próxima sesión: IDE muestra warning
142
+ ```
143
+
144
+ ## Búsqueda de Conocimiento
145
+
146
+ Antes de empezar tarea, buscar conocimiento previo:
147
+
148
+ ```typescript
149
+ // Buscar memorias relevantes
150
+ const relevant = await memoryClient.search({
151
+ query: "lazy loading components",
152
+ domain: "architecture",
153
+ limit: 5
154
+ })
155
+
156
+ // Aplicar conocimiento encontrado
157
+ for (const memory of relevant) {
158
+ console.log(`Conocimiento previo: ${memory.title}`)
159
+ }
160
+ ```
161
+
162
+ ## Integración con Workflow
163
+
164
+ ```
165
+ 1. EMPEZAR TAREA
166
+ └→ taskTracker.startTask()
167
+
168
+ 2. BUSCAR CONTEXTO
169
+ └→ memoryClient.search()
170
+
171
+ 3. TRABAJAR
172
+ └→ ideaCollector.capture() (si surge idea)
173
+
174
+ 4. COMPLETAR
175
+ └→ taskTracker.completeTask()
176
+ └→ memoryClient.create() (si aprendí algo)
177
+
178
+ 5. DETECTAR PATRONES
179
+ └→ patternDetector.scan()
180
+ └→ autoImprover.improve() (si 3+ ocurrencias)
181
+ ```
182
+
183
+ ## Comandos
184
+
185
+ ```bash
186
+ # Ver estado de memoria
187
+ claude-memory status
188
+
189
+ # Buscar en memoria
190
+ claude-memory search "query"
191
+
192
+ # Ver patrones detectados
193
+ claude-memory patterns
194
+
195
+ # Ejecutar auto-mejora
196
+ claude-memory improve
197
+ ```
198
+
199
+ ## Best Practices
200
+
201
+ 1. **Ser selectivo** - Solo registrar lo valioso
202
+ 2. **Títulos descriptivos** - Facilita búsqueda futura
203
+ 3. **Tags consistentes** - Usar vocabulario común
204
+ 4. **Actualizar, no duplicar** - Si existe, actualizar
205
+ 5. **Dominio correcto** - Clasificar apropiadamente