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
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  name: check-todos
3
3
  description: Ver y gestionar el todo list del proyecto
4
+ allowed-tools:
5
+ - TaskList
6
+ - TaskGet
7
+ - TaskUpdate
8
+ - Read
9
+ - AskUserQuestion
4
10
  ---
5
11
 
6
12
  # /elsabro:check-todos
@@ -9,7 +15,7 @@ description: Ver y gestionar el todo list del proyecto
9
15
 
10
16
  ## Propósito
11
17
 
12
- Revisar, filtrar y gestionar los TODOs del proyecto. Vista completa de tareas pendientes.
18
+ Revisar, filtrar y gestionar los TODOs del proyecto usando **Claude Code Tasks API**. Vista completa de tareas pendientes con capacidad de gestión directa.
13
19
 
14
20
  ## Cuándo Usar
15
21
 
@@ -45,7 +51,69 @@ Revisar, filtrar y gestionar los TODOs del proyecto. Vista completa de tareas pe
45
51
  /elsabro:check-todos --completed
46
52
  ```
47
53
 
48
- ## Vista Principal
54
+ ---
55
+
56
+ ## Implementación (Tasks API)
57
+
58
+ <implementation>
59
+ Cuando el usuario ejecuta `/elsabro:check-todos`:
60
+
61
+ ### 1. Obtener TODOs
62
+
63
+ ```javascript
64
+ // Listar todas las Tasks
65
+ const allTasks = TaskList();
66
+
67
+ // Filtrar por tipo "todo"
68
+ const todos = allTasks.filter(t => t.metadata?.type === "todo");
69
+ ```
70
+
71
+ ### 2. Aplicar Filtros
72
+
73
+ ```javascript
74
+ // Si --priority especificado
75
+ if (args.priority) {
76
+ todos = todos.filter(t => t.metadata?.priority === args.priority);
77
+ }
78
+
79
+ // Si --category especificado
80
+ if (args.category) {
81
+ todos = todos.filter(t => t.metadata?.category === args.category);
82
+ }
83
+
84
+ // Si --pending (default)
85
+ if (args.pending || !args.completed) {
86
+ todos = todos.filter(t => t.status !== "completed");
87
+ }
88
+
89
+ // Si --completed
90
+ if (args.completed) {
91
+ todos = todos.filter(t => t.status === "completed");
92
+ }
93
+
94
+ // Si --overdue
95
+ if (args.overdue) {
96
+ const now = new Date();
97
+ todos = todos.filter(t =>
98
+ t.metadata?.due_date &&
99
+ new Date(t.metadata.due_date) < now &&
100
+ t.status !== "completed"
101
+ );
102
+ }
103
+ ```
104
+
105
+ ### 3. Agrupar por Prioridad
106
+
107
+ ```javascript
108
+ const grouped = {
109
+ critical: todos.filter(t => t.metadata?.priority === "critical"),
110
+ high: todos.filter(t => t.metadata?.priority === "high"),
111
+ medium: todos.filter(t => t.metadata?.priority === "medium"),
112
+ low: todos.filter(t => t.metadata?.priority === "low")
113
+ };
114
+ ```
115
+
116
+ ### 4. Mostrar Vista
49
117
 
50
118
  ```
51
119
  ╔══════════════════════════════════════════════════╗
@@ -53,75 +121,144 @@ Revisar, filtrar y gestionar los TODOs del proyecto. Vista completa de tareas pe
53
121
  ╠══════════════════════════════════════════════════╣
54
122
  ║ ║
55
123
  ║ 🔴 CRITICAL (1) ║
56
- #1 Fix auth token refresh [bug]
124
+ #<ID> Fix auth token refresh [bug]
57
125
  ║ ║
58
126
  ║ 🟠 HIGH (3) ║
59
- #2 Update React to v18.3 [tech-debt]
60
- #3 Add loading states [ux]
61
- #4 Update error messages [ux]
127
+ #<ID> Update React to v18.3 [tech-debt]
128
+ #<ID> Add loading states [ux]
129
+ #<ID> Update error messages [ux]
62
130
  ║ ║
63
131
  ║ 🟡 MEDIUM (4) ║
64
- #5 Fix typo in README [docs]
65
- #6 Add error boundary [tech-debt]
66
- #7 Document API endpoints [docs]
67
- #8 Add unit tests for utils [test]
132
+ #<ID> Fix typo in README [docs]
133
+ #<ID> Add error boundary [tech-debt]
134
+ #<ID> Document API endpoints [docs]
135
+ #<ID> Add unit tests for utils [test]
68
136
  ║ ║
69
137
  ║ ⬜ LOW (2) ║
70
- #9 Investigate dark mode [idea]
71
- #10 Consider PWA support [idea]
138
+ #<ID> Investigate dark mode [idea]
139
+ #<ID> Consider PWA support [idea]
72
140
  ║ ║
73
141
  ╠══════════════════════════════════════════════════╣
74
142
  ║ Total: 10 | Completed today: 2 ║
75
143
  ╚══════════════════════════════════════════════════╝
76
144
  ```
145
+ </implementation>
146
+
147
+ ---
77
148
 
78
149
  ## Gestión de TODOs
79
150
 
80
- ### Marcar como completado
151
+ ### Marcar como Completado
81
152
 
82
153
  ```bash
83
- /elsabro:check-todos --complete=5
154
+ /elsabro:check-todos --complete=<task-id>
84
155
  ```
85
156
 
157
+ ```javascript
158
+ TaskUpdate({
159
+ taskId: "<task-id>",
160
+ status: "completed",
161
+ metadata: {
162
+ completed_at: new Date().toISOString()
163
+ }
164
+ });
86
165
  ```
87
- ✓ Completed: #5 "Fix typo in README"
166
+
167
+ Output:
168
+ ```
169
+ ✓ Completed: #<ID> "Fix typo in README"
88
170
  ```
89
171
 
90
- ### Cambiar prioridad
172
+ ### Cambiar Prioridad
91
173
 
92
174
  ```bash
93
- /elsabro:check-todos --prioritize=6 --to=high
175
+ /elsabro:check-todos --prioritize=<task-id> --to=high
176
+ ```
177
+
178
+ ```javascript
179
+ // Obtener task actual
180
+ const task = TaskGet({ taskId: "<task-id>" });
181
+
182
+ // Actualizar prioridad en metadata
183
+ TaskUpdate({
184
+ taskId: "<task-id>",
185
+ metadata: {
186
+ ...task.metadata,
187
+ priority: "high",
188
+ updated_at: new Date().toISOString()
189
+ }
190
+ });
94
191
  ```
95
192
 
193
+ Output:
96
194
  ```
97
- #6 "Add error boundary" priority: medium → high
195
+ #<ID> "Add error boundary" priority: medium → high
98
196
  ```
99
197
 
100
198
  ### Eliminar TODO
101
199
 
102
200
  ```bash
103
- /elsabro:check-todos --delete=9
201
+ /elsabro:check-todos --delete=<task-id>
202
+ ```
203
+
204
+ ```javascript
205
+ // Confirmar con usuario
206
+ AskUserQuestion({
207
+ questions: [{
208
+ question: `Delete #<ID> "${task.subject}"?`,
209
+ header: "Confirm",
210
+ options: [
211
+ { label: "Yes, delete", description: "Permanently remove this TODO" },
212
+ { label: "No, keep it", description: "Cancel deletion" }
213
+ ],
214
+ multiSelect: false
215
+ }]
216
+ });
217
+
218
+ // Si confirmado
219
+ TaskUpdate({ taskId: "<task-id>", status: "deleted" });
104
220
  ```
105
221
 
222
+ Output:
106
223
  ```
107
- Delete #9 "Investigate dark mode"? (y/n)
108
- > y
109
- ✓ Deleted
224
+ Deleted: #<ID> "Investigate dark mode"
110
225
  ```
111
226
 
112
227
  ### Editar TODO
113
228
 
114
229
  ```bash
115
- /elsabro:check-todos --edit=3
230
+ /elsabro:check-todos --edit=<task-id>
116
231
  ```
117
232
 
233
+ ```javascript
234
+ // Obtener task actual
235
+ const task = TaskGet({ taskId: "<task-id>" });
236
+
237
+ // Solicitar nueva descripción
238
+ AskUserQuestion({
239
+ questions: [{
240
+ question: `Current: "${task.subject}"\nNew description?`,
241
+ header: "Edit",
242
+ options: [
243
+ { label: "Keep current", description: "No changes" },
244
+ { label: "Modify", description: "Enter new description" }
245
+ ],
246
+ multiSelect: false
247
+ }]
248
+ });
249
+
250
+ // Si modifica
251
+ TaskUpdate({
252
+ taskId: "<task-id>",
253
+ subject: newSubject,
254
+ metadata: {
255
+ ...task.metadata,
256
+ updated_at: new Date().toISOString()
257
+ }
258
+ });
118
259
  ```
119
- Current: "Add loading states"
120
- New description (or Enter to keep):
121
- > Add loading states to all API calls
122
260
 
123
- ✓ Updated #3
124
- ```
261
+ ---
125
262
 
126
263
  ## Filtros
127
264
 
@@ -133,7 +270,7 @@ New description (or Enter to keep):
133
270
  --category=bug|tech-debt|docs|chore|idea|question
134
271
 
135
272
  # Por estado
136
- --pending # Solo pendientes
273
+ --pending # Solo pendientes (default)
137
274
  --completed # Solo completados
138
275
  --overdue # Con fecha vencida
139
276
 
@@ -145,12 +282,47 @@ New description (or Enter to keep):
145
282
  --milestone=M001
146
283
  ```
147
284
 
285
+ ---
286
+
148
287
  ## Estadísticas
149
288
 
150
289
  ```bash
151
290
  /elsabro:check-todos --stats
152
291
  ```
153
292
 
293
+ <stats_implementation>
294
+ ```javascript
295
+ const todos = TaskList().filter(t => t.metadata?.type === "todo");
296
+ const pending = todos.filter(t => t.status !== "completed");
297
+ const completed = todos.filter(t => t.status === "completed");
298
+
299
+ // Por prioridad
300
+ const byPriority = {
301
+ critical: pending.filter(t => t.metadata?.priority === "critical").length,
302
+ high: pending.filter(t => t.metadata?.priority === "high").length,
303
+ medium: pending.filter(t => t.metadata?.priority === "medium").length,
304
+ low: pending.filter(t => t.metadata?.priority === "low").length
305
+ };
306
+
307
+ // Por categoría
308
+ const byCategory = pending.reduce((acc, t) => {
309
+ const cat = t.metadata?.category || "uncategorized";
310
+ acc[cat] = (acc[cat] || 0) + 1;
311
+ return acc;
312
+ }, {});
313
+
314
+ // Completion rate (últimos 7 días)
315
+ const sevenDaysAgo = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000);
316
+ const recentlyCompleted = completed.filter(t =>
317
+ new Date(t.metadata?.completed_at) > sevenDaysAgo
318
+ );
319
+ const completionRate = Math.round(
320
+ (recentlyCompleted.length / (recentlyCompleted.length + pending.length)) * 100
321
+ );
322
+ ```
323
+ </stats_implementation>
324
+
325
+ Output:
154
326
  ```
155
327
  ╔══════════════════════════════════════════════════╗
156
328
  ║ TODO STATISTICS ║
@@ -172,6 +344,8 @@ New description (or Enter to keep):
172
344
  ╚══════════════════════════════════════════════════╝
173
345
  ```
174
346
 
347
+ ---
348
+
175
349
  ## Output Formatos
176
350
 
177
351
  ```bash
@@ -185,8 +359,13 @@ New description (or Enter to keep):
185
359
  /elsabro:check-todos --format=minimal
186
360
  ```
187
361
 
362
+ ---
363
+
188
364
  ## Integración
189
365
 
190
366
  - Add with `/elsabro:add-todo`
191
- - Syncs with `.planning/TODOS.md`
192
- - Can promote to phase with actions
367
+ - Backend: Claude Code Tasks API
368
+ - Persiste entre sesiones
369
+ - Soporta dependencias (`blocks/blockedBy`)
370
+ - Visible en `/elsabro:progress`
371
+ - Promovible a fase con `/elsabro:add-phase`
@@ -1,10 +1,29 @@
1
1
  ---
2
2
  name: complete-milestone
3
- description: Cerrar un milestone completado con retrospectiva y documentación de logros
3
+ description: Cerrar un milestone completado con retrospectiva y documentacion de logros
4
+ sync:
5
+ reads: [".elsabro/state.json"]
6
+ writes: [".elsabro/state.json", ".elsabro/context.md"]
4
7
  ---
5
8
 
6
9
  # /elsabro:complete-milestone
7
10
 
11
+ <state_sync>
12
+ ## SINCRONIZACION DE ESTADO
13
+
14
+ **IMPORTAR**: Ver `/references/state-sync.md` para protocolo completo.
15
+
16
+ ### Al Iniciar
17
+ - Leer `.elsabro/state.json`
18
+ - Verificar si hay flujo en progreso
19
+ - Actualizar `current_flow.command` con este comando
20
+
21
+ ### Al Completar
22
+ - Registrar en `history`
23
+ - Actualizar `context` con informacion del milestone
24
+ - Limpiar `current_flow`
25
+ </state_sync>
26
+
8
27
  <command-name>complete-milestone</command-name>
9
28
 
10
29
  ## Propósito
@@ -13,10 +13,29 @@ allowed-tools:
13
13
  - AskUserQuestion
14
14
  - mcp__plugin_context7_context7__*
15
15
  argument-hint: "[descripción del problema]"
16
+ sync:
17
+ reads: [".elsabro/state.json"]
18
+ writes: [".elsabro/state.json", ".elsabro/context.md"]
16
19
  ---
17
20
 
18
21
  # ELSABRO: Debug
19
22
 
23
+ <state_sync>
24
+ ## SINCRONIZACION DE ESTADO
25
+
26
+ **IMPORTAR**: Ver `/references/state-sync.md` para protocolo completo.
27
+
28
+ ### Al Iniciar
29
+ - Leer `.elsabro/state.json`
30
+ - Verificar si hay flujo en progreso
31
+ - Actualizar `current_flow.command` con este comando
32
+
33
+ ### Al Completar
34
+ - Registrar en `history`
35
+ - Actualizar `context` con informacion relevante
36
+ - Limpiar `current_flow`
37
+ </state_sync>
38
+
20
39
  <objective>
21
40
  Investigar y resolver bugs usando el método científico, no adivinando.
22
41
 
@@ -1,10 +1,27 @@
1
1
  ---
2
2
  name: discuss-phase
3
- description: Discusión colaborativa sobre una fase - clarificar scope, identificar riesgos, refinar approach
3
+ description: Discusion colaborativa sobre una fase - clarificar scope, identificar riesgos, refinar approach
4
+ sync:
5
+ reads: [".elsabro/state.json"]
6
+ writes: [".elsabro/state.json"]
4
7
  ---
5
8
 
6
9
  # /elsabro:discuss-phase
7
10
 
11
+ <state_sync>
12
+ ## SINCRONIZACION DE ESTADO
13
+
14
+ **IMPORTAR**: Ver `/references/state-sync.md` para protocolo completo.
15
+
16
+ ### Al Iniciar
17
+ - Leer `.elsabro/state.json`
18
+ - Verificar contexto actual del milestone/phase
19
+
20
+ ### Al Completar
21
+ - Registrar cambio en `history`
22
+ - Actualizar `context` si corresponde
23
+ </state_sync>
24
+
8
25
  <command-name>discuss-phase</command-name>
9
26
 
10
27
  ## Propósito