elsabro 2.1.0 → 2.3.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 (64) hide show
  1. package/agents/elsabro-orchestrator.md +113 -0
  2. package/commands/elsabro/add-phase.md +17 -0
  3. package/commands/elsabro/add-todo.md +111 -53
  4. package/commands/elsabro/audit-milestone.md +19 -0
  5. package/commands/elsabro/check-todos.md +210 -31
  6. package/commands/elsabro/complete-milestone.md +20 -1
  7. package/commands/elsabro/debug.md +19 -0
  8. package/commands/elsabro/discuss-phase.md +18 -1
  9. package/commands/elsabro/execute.md +511 -58
  10. package/commands/elsabro/insert-phase.md +18 -1
  11. package/commands/elsabro/list-phase-assumptions.md +17 -0
  12. package/commands/elsabro/new-milestone.md +19 -0
  13. package/commands/elsabro/new.md +19 -0
  14. package/commands/elsabro/pause-work.md +19 -0
  15. package/commands/elsabro/plan-milestone-gaps.md +20 -1
  16. package/commands/elsabro/plan.md +264 -36
  17. package/commands/elsabro/progress.md +203 -79
  18. package/commands/elsabro/quick.md +19 -0
  19. package/commands/elsabro/remove-phase.md +17 -0
  20. package/commands/elsabro/research-phase.md +18 -1
  21. package/commands/elsabro/resume-work.md +19 -0
  22. package/commands/elsabro/start.md +399 -98
  23. package/commands/elsabro/verify-work.md +138 -5
  24. package/hooks/confirm-destructive.sh +145 -0
  25. package/hooks/hooks-config.json +81 -0
  26. package/hooks/lint-check.sh +238 -0
  27. package/hooks/post-edit-test.sh +189 -0
  28. package/package.json +3 -2
  29. package/references/SYSTEM_INDEX.md +241 -0
  30. package/references/command-flow.md +352 -0
  31. package/references/enforcement-rules.md +331 -0
  32. package/references/error-contracts-tests.md +1171 -0
  33. package/references/error-contracts.md +3102 -0
  34. package/references/error-handling-instructions.md +26 -12
  35. package/references/parallel-worktrees.md +293 -0
  36. package/references/state-sync.md +381 -0
  37. package/references/task-dispatcher.md +388 -0
  38. package/references/tasks-integration.md +380 -0
  39. package/scripts/setup-parallel-worktrees.sh +319 -0
  40. package/skills/api-microservice.md +765 -0
  41. package/skills/api-setup.md +76 -3
  42. package/skills/auth-setup.md +46 -6
  43. package/skills/chrome-extension.md +584 -0
  44. package/skills/cicd-setup.md +1206 -0
  45. package/skills/cli-tool.md +884 -0
  46. package/skills/database-setup.md +41 -5
  47. package/skills/desktop-app.md +1351 -0
  48. package/skills/expo-app.md +35 -2
  49. package/skills/full-stack-app.md +543 -0
  50. package/skills/memory-update.md +207 -0
  51. package/skills/mobile-app.md +813 -0
  52. package/skills/nextjs-app.md +33 -2
  53. package/skills/payments-setup.md +76 -1
  54. package/skills/review.md +331 -0
  55. package/skills/saas-starter.md +639 -0
  56. package/skills/sentry-setup.md +41 -7
  57. package/skills/techdebt.md +289 -0
  58. package/skills/testing-setup.md +1218 -0
  59. package/skills/tutor.md +219 -0
  60. package/templates/.planning/notes/.gitkeep +0 -0
  61. package/templates/CLAUDE.md.template +48 -0
  62. package/templates/error-handling-config.json +79 -2
  63. package/templates/mistakes.md.template +52 -0
  64. package/templates/patterns.md.template +114 -0
@@ -0,0 +1,219 @@
1
+ ---
2
+ name: tutor
3
+ description: Modo tutor socratico - aprendizaje guiado con tecnicas de Feynman y analisis de errores
4
+ trigger: /elsabro:tutor
5
+ allowed-tools:
6
+ - Read
7
+ - Grep
8
+ - Glob
9
+ - Bash
10
+ - Task
11
+ argument-hint: "[tema] - tema a aprender (ej: useEffect, async/await, React hooks)"
12
+ ---
13
+
14
+ # ELSABRO: Socratic Tutor
15
+
16
+ <objective>
17
+ Activar modo de aprendizaje socratico. En lugar de dar respuestas directamente,
18
+ guiar al usuario a descubrir las respuestas por si mismo mediante preguntas
19
+ estrategicas y tecnicas de refuerzo.
20
+ </objective>
21
+
22
+ <task_integration>
23
+ ## Integracion con Tasks API
24
+
25
+ Al iniciar sesion de tutoria, crear tarea para tracking:
26
+
27
+ ```
28
+ TaskCreate:
29
+ description: "Sesion de tutoria: [tema]"
30
+ status: in_progress
31
+ ```
32
+
33
+ Actualizar progreso con checkpoints de confianza del usuario.
34
+ Al finalizar sesion, marcar como completada con resumen de aprendizaje.
35
+ </task_integration>
36
+
37
+ <core_rules>
38
+ ## Reglas Fundamentales (OBLIGATORIAS)
39
+
40
+ 1. **NUNCA dar la respuesta inmediatamente** - Hacer que el usuario trabaje por ella
41
+ 2. **Explicar paso a paso SOLO cuando lo pida** - No sobre-explicar
42
+ 3. **Hacer preguntas estilo Socratico** - Para que piense y descubra
43
+ 4. **Quiz frecuente** - Mezclar multiple choice, respuesta corta, y "explicame esto"
44
+ 5. **Cuando se equivoque** - Mostrar el gap suavemente y pedir que intente de nuevo
45
+ 6. **Rating de confianza** - Pedir que califique su confianza (1-10) despues de cada tema
46
+ </core_rules>
47
+
48
+ <techniques>
49
+ ## Tecnicas Avanzadas
50
+
51
+ ### Feynman Checks
52
+ Pedir que explique conceptos como si fuera principiante:
53
+
54
+ ```
55
+ "Antes de continuar, explicame [concepto] como si yo nunca hubiera programado"
56
+ ```
57
+
58
+ Esto revela si realmente entiende vs. pattern matching superficial.
59
+
60
+ ### Make Connections
61
+ Vincular conceptos nuevos con conocimiento previo:
62
+
63
+ ```
64
+ "Como se relaciona esto con [X que vimos antes]?"
65
+ "En que se parece/diferencia de [concepto similar]?"
66
+ ```
67
+
68
+ ### Predict Before Reveal
69
+ Antes de mostrar como funciona algo:
70
+
71
+ ```
72
+ "Que crees que va a pasar cuando ejecutemos esto?"
73
+ "Por que crees que funciona de esa manera?"
74
+ ```
75
+
76
+ ### Error Analysis
77
+ Cuando cometa un error, no solo corregir:
78
+
79
+ ```
80
+ "Interesante respuesta. Por que pensaste eso?"
81
+ "Que te llevo a esa conclusion?"
82
+ "Puedes identificar donde se desvio tu razonamiento?"
83
+ ```
84
+
85
+ ### Summarization Checkpoints
86
+ Periodicamente pedir resumenes:
87
+
88
+ ```
89
+ "Pausa. Resume lo que hemos aprendido hasta ahora en tus propias palabras."
90
+ "Si tuvieras que explicar esto en un tweet, que dirias?"
91
+ ```
92
+
93
+ ### Spaced Callbacks
94
+ Volver a conceptos anteriores inesperadamente:
95
+
96
+ ```
97
+ "Por cierto, recuerdas lo que vimos sobre [tema anterior]? Como aplicaria aqui?"
98
+ ```
99
+ </techniques>
100
+
101
+ <session_flow>
102
+ ## Flujo de Sesion
103
+
104
+ ### Inicio
105
+ ```
106
+ Usuario: /elsabro:tutor useEffect
107
+
108
+ Claude: [Crea tarea de tutoria en Tasks]
109
+
110
+ "Vamos a explorar useEffect. Antes de profundizar, respondeme:
111
+
112
+ 1. Que CREES que hace useEffect? No busques, dime lo que piensas.
113
+ 2. En que situaciones lo has usado o visto usado?
114
+
115
+ Cuando tengas respuestas, continuamos."
116
+ ```
117
+
118
+ ### Durante
119
+ ```
120
+ - Preguntas guiadas (no respuestas)
121
+ - Checkpoints de confianza cada 2-3 conceptos
122
+ - Feynman checks cuando el usuario "cree entender"
123
+ - Error analysis sin juicio cuando falla
124
+ ```
125
+
126
+ ### Cierre
127
+ ```
128
+ Claude: "Antes de terminar:
129
+
130
+ 1. Resume en 2-3 oraciones que aprendiste hoy sobre [tema]
131
+ 2. Como calificarias tu confianza ahora (1-10)?
132
+ 3. Que pregunta te queda pendiente?
133
+
134
+ [Actualiza tarea con resumen de sesion]"
135
+ ```
136
+ </session_flow>
137
+
138
+ <example_flow>
139
+ ## Ejemplo de Flujo Completo
140
+
141
+ ```
142
+ Usuario: /elsabro:tutor useEffect
143
+
144
+ Claude: "Vamos a explorar useEffect. Antes de profundizar, respondeme:
145
+ Que CREES que hace useEffect? No busques, dime lo que piensas."
146
+
147
+ Usuario: "Creo que ejecuta codigo cuando el componente se monta"
148
+
149
+ Claude: "Casi. Solo cuando se monta? Que pasa si cambio una variable de estado?"
150
+
151
+ Usuario: "Hmm... se vuelve a ejecutar?"
152
+
153
+ Claude: "Correcto. Ahora, CUANDO se vuelve a ejecutar exactamente?
154
+ Pista: tiene que ver con el segundo argumento."
155
+
156
+ [continua guiando con preguntas...]
157
+
158
+ Claude: "Checkpoint de confianza: Como calificarias tu entendimiento
159
+ sobre cuando se ejecuta useEffect? (1-10)"
160
+
161
+ Usuario: "Un 6"
162
+
163
+ Claude: "Ok, sigamos practicando hasta que llegues a 8+.
164
+ Ahora, explicame el array de dependencias como si yo fuera
165
+ alguien que nunca ha usado React..."
166
+ ```
167
+ </example_flow>
168
+
169
+ <confidence_tracking>
170
+ ## Tracking de Confianza
171
+
172
+ Mantener registro durante la sesion:
173
+
174
+ | Concepto | Confianza Inicial | Confianza Final |
175
+ |----------|-------------------|-----------------|
176
+ | useEffect basico | 4 | 7 |
177
+ | Dependencies array | 2 | 8 |
178
+ | Cleanup function | 1 | 6 |
179
+
180
+ **Meta**: Todos los conceptos en 7+ antes de cerrar sesion.
181
+ </confidence_tracking>
182
+
183
+ <exit_modes>
184
+ ## Salir del Modo Tutor
185
+
186
+ El usuario puede salir diciendo:
187
+ - "Salir de modo tutor"
188
+ - "Ya entendi, continua normal"
189
+ - `/elsabro:tutor off`
190
+ - "Modo normal"
191
+
192
+ Al salir, guardar resumen en la tarea y marcar como completada.
193
+ </exit_modes>
194
+
195
+ <adaptation>
196
+ ## Adaptacion Dinamica
197
+
198
+ - Si responde correctamente 3 veces seguidas: aumentar dificultad
199
+ - Si falla 2 veces seguidas: dar pistas mas directas
200
+ - Si confianza < 5: volver a lo basico
201
+ - Si confianza > 8: introducir edge cases y complejidad
202
+ - Si usuario frustrado: ofrecer explicacion directa como opcion
203
+ </adaptation>
204
+
205
+ <integration_memory>
206
+ ## Integracion con Memoria ELSABRO
207
+
208
+ Al detectar gaps de conocimiento recurrentes:
209
+
210
+ ```
211
+ "He notado que [concepto X] te cuesta. Quieres que agregue
212
+ ejercicios de repaso a tu proxima sesion?"
213
+ ```
214
+
215
+ Guardar en `.planning/notes/learning.md`:
216
+ - Temas dominados
217
+ - Temas que necesitan refuerzo
218
+ - Progreso historico
219
+ </integration_memory>
File without changes
@@ -0,0 +1,48 @@
1
+ # [NOMBRE_PROYECTO] - Memoria de Claude
2
+
3
+ ## Stack Tecnologico
4
+ <!-- Descomenta y personaliza segun tu proyecto -->
5
+ <!-- - Frontend: React/Next.js/Vue -->
6
+ <!-- - Backend: Node/Python/Go -->
7
+ <!-- - Database: PostgreSQL/MongoDB -->
8
+ <!-- - Deploy: Vercel/AWS/Docker -->
9
+
10
+ ## Reglas de Codigo (OBLIGATORIAS)
11
+
12
+ ### Estilo
13
+ - Preferir TypeScript sobre JavaScript
14
+ - Componentes funcionales con hooks
15
+ - Imports especificos, no `import *`
16
+ - Async/await sobre .then()
17
+
18
+ ### Patrones
19
+ - Composicion sobre herencia
20
+ - Funciones puras cuando sea posible
21
+ - Early returns para reducir anidamiento
22
+ - Error handling explicito
23
+
24
+ ### Naming
25
+ - camelCase para variables y funciones
26
+ - PascalCase para componentes y clases
27
+ - SCREAMING_SNAKE para constantes
28
+ - Nombres descriptivos, no abreviados
29
+
30
+ ## NO HACER (Errores Aprendidos)
31
+
32
+ **Ver archivo completo:** `.planning/mistakes.md`
33
+
34
+ <!-- Errores criticos se documentan aqui como resumen -->
35
+
36
+ ## Contexto del Proyecto
37
+
38
+ ### Arquitectura
39
+ <!-- Describir arquitectura de alto nivel -->
40
+
41
+ ### Decisiones Importantes
42
+ <!-- Documentar decisiones arquitectonicas y por que -->
43
+
44
+ ## Referencias
45
+
46
+ - Errores detallados: `.planning/mistakes.md`
47
+ - Patrones preferidos: `.planning/patterns.md`
48
+ - Notas por feature: `.planning/notes/`
@@ -70,12 +70,14 @@
70
70
  }
71
71
  },
72
72
  "continue_all": {
73
- "description": "Continúa siempre, reporta fallos al final",
73
+ "description": "Continúa siempre si al menos 1 agente tiene éxito, reporta fallos al final",
74
74
  "useWhen": "Todos los agentes son independientes",
75
75
  "behavior": {
76
76
  "onFirstFailure": "continue",
77
77
  "waitForRunning": true,
78
- "successThreshold": 0
78
+ "successThreshold": 0,
79
+ "minSuccessCount": 1,
80
+ "abortOnTotalFailure": true
79
81
  }
80
82
  },
81
83
  "critical_path": {
@@ -134,5 +136,80 @@
134
136
  "severity": "HIGH",
135
137
  "suggestedAction": "Reintentar o verificar conectividad"
136
138
  }
139
+ },
140
+
141
+ "contracts": {
142
+ "registryValidator": {
143
+ "enabled": true,
144
+ "fallbacksEnabled": true,
145
+ "cacheTimeMs": 300000
146
+ },
147
+ "taskLifecycle": {
148
+ "enabled": true,
149
+ "validStates": ["INIT", "ACTIVE", "COMPLETE", "FAILED", "ROLLED_BACK", "DELETED"],
150
+ "validTransitions": {
151
+ "INIT": ["ACTIVE", "FAILED", "DELETED"],
152
+ "ACTIVE": ["COMPLETE", "FAILED", "ROLLED_BACK"],
153
+ "COMPLETE": ["ROLLED_BACK"],
154
+ "FAILED": ["ACTIVE", "DELETED"],
155
+ "ROLLED_BACK": ["INIT"],
156
+ "DELETED": []
157
+ }
158
+ },
159
+ "timeoutHandler": {
160
+ "enabled": true,
161
+ "defaultTimeoutMs": 1800000,
162
+ "healthCheckIntervalMs": 5000,
163
+ "warningThresholds": [80, 95],
164
+ "maxExtensions": 2
165
+ },
166
+ "retryPolicy": {
167
+ "enabled": true,
168
+ "maxAttempts": 3,
169
+ "baseDelayMs": 1000,
170
+ "maxDelayMs": 10000,
171
+ "backoffMultiplier": 2,
172
+ "timeoutPerAttemptMs": 30000,
173
+ "totalTimeoutMs": 120000,
174
+ "retryablePatterns": [
175
+ "timeout|ETIMEDOUT",
176
+ "ECONNREFUSED|ENOTFOUND",
177
+ "temporary|transient",
178
+ "503|429",
179
+ "network|connection"
180
+ ]
181
+ },
182
+ "errorAggregator": {
183
+ "enabled": true,
184
+ "defaultPolicy": "quorum",
185
+ "policies": {
186
+ "fail_fast": { "successThreshold": 1.0, "waitForAll": false },
187
+ "quorum": { "successThreshold": 0.5, "waitForAll": true },
188
+ "continue_all": { "successThreshold": 0.0, "waitForAll": true },
189
+ "critical_path": { "successThreshold": null, "waitForAll": true }
190
+ }
191
+ },
192
+ "severityClassifier": {
193
+ "enabled": true,
194
+ "patterns": {
195
+ "CRITICAL": ["state.*missing", "corrupted", "CONFLICT", "permission.*denied"],
196
+ "HIGH": ["test.*fail", "build.*fail", "timeout", "api.*error"],
197
+ "MEDIUM": ["lint.*warning", "deprecat", "coverage.*low"],
198
+ "LOW": ["info", "log", "note"]
199
+ }
200
+ },
201
+ "sessionValidator": {
202
+ "enabled": true,
203
+ "requiredFields": ["version", "createdAt", "status", "context.milestone"],
204
+ "stalenessWarningDays": 7,
205
+ "stalenessErrorDays": 30,
206
+ "healthCheckIntervalMs": 30000
207
+ }
208
+ },
209
+
210
+ "notificationSettings": {
211
+ "immediateNotification": ["CRITICAL"],
212
+ "summaryAtEnd": ["HIGH", "MEDIUM", "LOW"],
213
+ "displayFormat": "ascii_box"
137
214
  }
138
215
  }
@@ -0,0 +1,52 @@
1
+ # Errores Corregidos
2
+
3
+ > Este archivo contiene errores que Claude ha cometido y NO debe repetir.
4
+ > Claude lee este archivo automaticamente al iniciar cada sesion.
5
+
6
+ ## Como Agregar Errores
7
+
8
+ Cuando corrijas a Claude, di:
9
+ - "No, hazlo asi..."
10
+ - "Siempre usa X en lugar de Y"
11
+ - "Guarda esto en tu memoria"
12
+
13
+ Claude detectara la correccion y la agregara aqui automaticamente.
14
+
15
+ ---
16
+
17
+ ## TypeScript / Tipos
18
+
19
+ <!-- Errores de tipado -->
20
+
21
+ ## Imports / Modulos
22
+
23
+ <!-- Errores de imports -->
24
+
25
+ ## React / Hooks
26
+
27
+ <!-- Errores de React -->
28
+
29
+ ## API / Backend
30
+
31
+ <!-- Errores de backend -->
32
+
33
+ ## Testing
34
+
35
+ <!-- Errores en tests -->
36
+
37
+ ## Git / Workflow
38
+
39
+ <!-- Errores de git -->
40
+
41
+ ---
42
+
43
+ ## Estadisticas
44
+
45
+ | Categoria | Errores | Ultima Actualizacion |
46
+ |-----------|---------|---------------------|
47
+ | TypeScript | 0 | - |
48
+ | Imports | 0 | - |
49
+ | React | 0 | - |
50
+ | API | 0 | - |
51
+ | Testing | 0 | - |
52
+ | Git | 0 | - |
@@ -0,0 +1,114 @@
1
+ # Patrones Preferidos
2
+
3
+ > Este archivo contiene patrones de codigo que el proyecto prefiere.
4
+ > Claude usa estos patrones como referencia al escribir codigo nuevo.
5
+
6
+ ## Componentes React
7
+
8
+ ```tsx
9
+ // Estructura preferida de componente
10
+ interface Props {
11
+ // Props tipadas
12
+ }
13
+
14
+ export function ComponentName({ prop1, prop2 }: Props) {
15
+ // Hooks primero
16
+ const [state, setState] = useState<Type>(initial);
17
+
18
+ // Efectos despues
19
+ useEffect(() => {
20
+ // ...
21
+ }, [deps]);
22
+
23
+ // Handlers
24
+ const handleClick = () => {
25
+ // ...
26
+ };
27
+
28
+ // Early returns para casos edge
29
+ if (!data) return <Loading />;
30
+
31
+ // Render principal
32
+ return (
33
+ <div>
34
+ {/* ... */}
35
+ </div>
36
+ );
37
+ }
38
+ ```
39
+
40
+ ## Custom Hooks
41
+
42
+ ```tsx
43
+ // Estructura preferida de hook
44
+ export function useCustomHook(param: Type) {
45
+ const [state, setState] = useState<Type>(initial);
46
+
47
+ useEffect(() => {
48
+ // Efecto
49
+ return () => {
50
+ // Cleanup
51
+ };
52
+ }, [param]);
53
+
54
+ return { state, actions };
55
+ }
56
+ ```
57
+
58
+ ## API Calls
59
+
60
+ ```tsx
61
+ // Patron preferido para fetch
62
+ async function fetchData<T>(url: string): Promise<T> {
63
+ const response = await fetch(url);
64
+
65
+ if (!response.ok) {
66
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
67
+ }
68
+
69
+ return response.json();
70
+ }
71
+ ```
72
+
73
+ ## Error Handling
74
+
75
+ ```tsx
76
+ // Patron preferido para errores
77
+ try {
78
+ const result = await riskyOperation();
79
+ return { success: true, data: result };
80
+ } catch (error) {
81
+ console.error('[Context]:', error);
82
+ return { success: false, error: error.message };
83
+ }
84
+ ```
85
+
86
+ ## Testing
87
+
88
+ ```tsx
89
+ // Estructura preferida de test
90
+ describe('ComponentName', () => {
91
+ it('should render correctly', () => {
92
+ render(<ComponentName />);
93
+ expect(screen.getByRole('button')).toBeInTheDocument();
94
+ });
95
+
96
+ it('should handle user interaction', async () => {
97
+ const user = userEvent.setup();
98
+ render(<ComponentName />);
99
+
100
+ await user.click(screen.getByRole('button'));
101
+
102
+ expect(/* resultado */).toBe(/* esperado */);
103
+ });
104
+ });
105
+ ```
106
+
107
+ ---
108
+
109
+ ## Como Agregar Patrones
110
+
111
+ Cuando quieras que Claude use un patron especifico, di:
112
+ - "Siempre usa este patron para..."
113
+ - "Prefiero que los componentes se vean asi..."
114
+ - "Guarda este patron en tu memoria"