claude-code — flowmetrics/dashboard-v2 — /si:review + /si:promote + /si:extract
Agente de Auto-Mejora — Curación de Memoria
Proyecto: FlowMetrics / dashboard-v2  ·  Sesión: 2026-06-12 09:14 UTC  ·  Agente: memory-analyst v1.0
CULTIVA IA
Productividad › IA-Generativa
skill: agente-auto-mejora-memoria
/si:status
/si:review
/si:promote
/si:extract
5Limpieza
/si:status diagnóstico de salud de memoria
Líneas usadas
187 / 200
93.5 % — próximo al límite
Entradas obsoletas
6
Archivos o patrones eliminados
Candidatos promoción
4
Recurrentes en ≥ 3 sesiones
Skills extraíbles
2
Soluciones reutilizables
MEMORY.md — capacidad utilizada ⚠ Acción urgente: solo 13 líneas libres
0 150 — zona de alerta 200 — límite de carga
Topic files activos:
prisma-notes.md
salesforce-errors.md
testing-patterns.md
Estadísticas:
Sesiones registradas: 38
Última actualización: 08:52
Entradas con fecha: 71 %
Cobertura CLAUDE.md:
Reglas actuales: 12
Brechas detectadas: 3
Rules scoped (.claude/rules/): 0
/si:review análisis completo — 187 líneas procesadas por memory-analyst
Entradas clasificadas — 8 de 31 destacadas
Usar pnpm, nunca npm ni yarn
⬆ PROMOVER
"Este proyecto usa pnpm. Ejecutar pnpm install, no npm install. El lockfile es pnpm-lock.yaml."
Mover a CLAUDE.md §Toolchain como regla obligatoria
Variables de entorno en .env.local
⬆ PROMOVER
"Nunca editar .env directamente. Usar .env.local para overrides. El .env contiene defaults de CI."
Mover a .claude/rules/env-config.md con path: ["**/.env*"]
Prisma migrations en rama propia
⬆ PROMOVER
"Cada migration debe ir en rama feat/migration-* y pasar review de @cmartinez antes de merge."
Mover a .claude/rules/prisma.md con path: ["prisma/**"]
Patrón retry Salesforce con backoff
★ EXTRAER SKILL
"Salesforce devuelve 429 en ráfagas. Solución: exponential backoff con jitter, 3 reintentos, base 800ms."
Extraer como skill: salesforce-rate-limit-retry (TypeScript)
Mock Prisma en Vitest con mockDeep
★ EXTRAER SKILL
"Usar prisma-mock + vitest.mock('@prisma/client'). Patrón: mockDeep + beforeEach reset."
Extraer como skill: prisma-vitest-mock-pattern
3 notas dispersas sobre Tailwind
⊕ CONSOLIDAR
"v3.4 + @tailwindcss/forms" / "design tokens de tokens.ts" / "no usar clases arbitrarias []"
Fusionar en 1 entrada compacta — ahorro estimado: 8 líneas
Config webpack legacy (archivo borrado)
✕ OBSOLETA
"webpack.config.old.js tiene alias path que next.config.js no hereda automáticamente..."
Eliminar — webpack.config.old.js ya no existe en el repo
Feature flag BETA_CHARTS (eliminado)
✕ OBSOLETA
"NEXT_PUBLIC_BETA_CHARTS habilita el módulo gráficos. Por defecto false en staging."
Eliminar — feature flag ya no existe como toggle
/si:promote --pattern "pnpm-toolchain" --target CLAUDE.md graduando patrón a regla permanente
Diff aplicado — CLAUDE.md + MEMORY.md
CLAUDE.md — sección §Toolchain +3 líneas  |  -0 eliminadas
41 ## Toolchain
42
43 - Usar TypeScript strict en todos los archivos nuevos.
+- **Gestor de paquetes: pnpm exclusivamente.** Nunca `npm install` ni `yarn`.
+- Comprobar `pnpm-lock.yaml` antes de añadir dependencias nuevas.
+- En CI: `pnpm install --frozen-lockfile`.
44 - Formatear con Prettier antes de commit.
MEMORY.md — entrada eliminada tras promoción -4 líneas liberadas
13 <!-- sesión 2026-05-03 -->
14-## Toolchain pnpm
15-Este proyecto usa pnpm. Ejecutar pnpm install, no npm install.
16-El lockfile es pnpm-lock.yaml. Recordar en CI usar --frozen-lockfile.
17-<!-- visto sesiones: 8,14,19,22,27,31,36,38 -->
18 <!-- sesión 2026-05-10 -->
✓ Promoción completada — regla pnpm activa en CLAUDE.md. MEMORY.md liberó 4 líneas (187 → 183).
/si:promote --pattern "env-config" --target .claude/rules/env-config.md regla scoped solo para archivos .env*
.claude/rules/env-config.md — NUEVO ARCHIVO (regla scoped) +8 líneas
+---
+paths:
+ - "**/.env*"
+ - ".env.local"
+---
+- Nunca editar `.env` directamente — contiene defaults de CI.
+- Todos los overrides locales van en `.env.local` (ignorado por git).
+- Variables sensibles solo en Vercel Dashboard, nunca en el repo.
✓ Regla scoped creada — se cargará solo cuando Claude trabaje con archivos .env*. Overhead: cero en el resto del proyecto.
/si:extract --pattern "salesforce-rate-limit-retry" skill-extractor procesando salesforce-errors.md + MEMORY.md L89-103
Skill generada — lista para instalar en cualquier proyecto
salesforce-rate-limit-retry / SKILL.md generado por skill-extractor · 2026-06-12
--- name: salesforce-rate-limit-retry description: Exponential backoff con jitter para APIs Salesforce (HTTP 429). extraido-de: flowmetrics/dashboard-v2 · 4 sesiones observadas lenguaje: TypeScript --- # Salesforce Rate-Limit Retry ## El problema Salesforce Connected App devuelve HTTP 429 en sincronizaciones masivas (> 50 req/s). Sin manejo, las llamadas fallan en cascada. ## Solución probada en producción Exponential backoff con full-jitter: - Base wait : 800 ms - Max reintentos : 3 - Max wait cap : 10 s - Jitter : Math.random() * waitMs ## Implementación export async function withSalesforceRetry<T>( fn: () => Promise<T>, maxRetries = 3, baseMs = 800 ): Promise<T> { for (let attempt = 0; attempt <= maxRetries; attempt++) { try { return await fn(); } catch (err: any) { if (err?.status !== 429 || attempt === maxRetries) throw err; const wait = Math.min(baseMs * 2 ** attempt, 10_000); await new Promise(r => setTimeout(r, wait + Math.random() * wait)); } } } ## Uso const data = await withSalesforceRetry( () => sfClient.query(soql) ); ## Instalar clawhub install salesforce-rate-limit-retry
★ Skill extraída correctamente — guardada en .claude/skills/salesforce-rate-limit-retry/SKILL.md · MEMORY.md liberó 15 líneas adicionales (183 → 168).
Resumen de la sesión — impacto en el proyecto
-19
Líneas liberadas en MEMORY.md
187 → 168 (84 %)
3
Patrones promovidos a reglas
CLAUDE.md + 2 reglas scoped
1
Skill extraída y reutilizable
salesforce-rate-limit-retry
📋
Pendiente: consolidar notas Tailwind
3 entradas en líneas 52, 67, 88 → fusionar en 1 · ahorro estimado: 8 líneas
/si:remember --consolidate tailwind-config
Pendiente: extraer skill Prisma-Vitest
Patrón mockDeep visto en 6 sesiones — candidato de alto valor para otros proyectos Next.js
/si:extract --pattern "prisma-vitest-mock"
🗑
Pendiente: purgar entradas obsoletas
6 entradas obsoletas detectadas (webpack legacy, BETA_CHARTS, 4 más) · liberaría ~22 líneas
/si:review --purge-stale
Si ejecutas todo: MEMORY.md bajará a ~126 líneas
De 93.5 % → 63 % · margen holgado para las próximas 15-20 sesiones de desarrollo
objetivo: < 65 %