elsabro 2.0.1 → 2.2.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/commands/elsabro/add-phase.md +17 -0
- package/commands/elsabro/add-todo.md +111 -53
- package/commands/elsabro/audit-milestone.md +19 -0
- package/commands/elsabro/check-todos.md +210 -31
- package/commands/elsabro/complete-milestone.md +20 -1
- package/commands/elsabro/debug.md +19 -0
- package/commands/elsabro/discuss-phase.md +18 -1
- package/commands/elsabro/execute.md +496 -52
- package/commands/elsabro/insert-phase.md +18 -1
- package/commands/elsabro/list-phase-assumptions.md +17 -0
- package/commands/elsabro/new-milestone.md +19 -0
- package/commands/elsabro/new.md +19 -0
- package/commands/elsabro/pause-work.md +75 -0
- package/commands/elsabro/plan-milestone-gaps.md +20 -1
- package/commands/elsabro/plan.md +264 -36
- package/commands/elsabro/progress.md +203 -79
- package/commands/elsabro/quick.md +19 -0
- package/commands/elsabro/remove-phase.md +17 -0
- package/commands/elsabro/research-phase.md +18 -1
- package/commands/elsabro/resume-work.md +130 -2
- package/commands/elsabro/start.md +365 -98
- package/commands/elsabro/verify-work.md +271 -12
- package/package.json +1 -1
- package/references/SYSTEM_INDEX.md +241 -0
- package/references/command-flow.md +352 -0
- package/references/enforcement-rules.md +331 -0
- package/references/error-handling-instructions.md +26 -12
- package/references/state-sync.md +381 -0
- package/references/task-dispatcher.md +388 -0
- package/references/tasks-integration.md +380 -0
- package/skills/api-microservice.md +765 -0
- package/skills/api-setup.md +76 -3
- package/skills/auth-setup.md +46 -6
- package/skills/chrome-extension.md +584 -0
- package/skills/cicd-setup.md +1206 -0
- package/skills/cli-tool.md +884 -0
- package/skills/database-setup.md +41 -5
- package/skills/desktop-app.md +1351 -0
- package/skills/expo-app.md +35 -2
- package/skills/full-stack-app.md +543 -0
- package/skills/mobile-app.md +813 -0
- package/skills/nextjs-app.md +33 -2
- package/skills/payments-setup.md +76 -1
- package/skills/saas-starter.md +639 -0
- package/skills/sentry-setup.md +41 -7
- package/skills/testing-setup.md +1218 -0
|
@@ -1,10 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: add-phase
|
|
3
3
|
description: Agregar una nueva fase al final del milestone actual
|
|
4
|
+
sync:
|
|
5
|
+
reads: [".elsabro/state.json"]
|
|
6
|
+
writes: [".elsabro/state.json"]
|
|
4
7
|
---
|
|
5
8
|
|
|
6
9
|
# /elsabro:add-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>add-phase</command-name>
|
|
9
26
|
|
|
10
27
|
## Propósito
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: add-todo
|
|
3
3
|
description: Agregar un item al todo list del proyecto actual
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- TaskCreate
|
|
6
|
+
- TaskList
|
|
7
|
+
- Read
|
|
8
|
+
- AskUserQuestion
|
|
4
9
|
---
|
|
5
10
|
|
|
6
11
|
# /elsabro:add-todo
|
|
@@ -9,7 +14,7 @@ description: Agregar un item al todo list del proyecto actual
|
|
|
9
14
|
|
|
10
15
|
## Propósito
|
|
11
16
|
|
|
12
|
-
Agregar tareas rápidas al todo list del proyecto. Para items que no merecen ser una fase o story completa.
|
|
17
|
+
Agregar tareas rápidas al todo list del proyecto usando **Claude Code Tasks API** como backend. Para items que no merecen ser una fase o story completa.
|
|
13
18
|
|
|
14
19
|
## Cuándo Usar
|
|
15
20
|
|
|
@@ -63,96 +68,149 @@ Agregar tareas rápidas al todo list del proyecto. Para items que no merecen ser
|
|
|
63
68
|
| `medium` | Normal (default) |
|
|
64
69
|
| `low` | Cuando haya tiempo |
|
|
65
70
|
|
|
66
|
-
|
|
71
|
+
---
|
|
67
72
|
|
|
68
|
-
|
|
73
|
+
## Implementación (Tasks API)
|
|
69
74
|
|
|
70
|
-
|
|
71
|
-
|
|
75
|
+
<implementation>
|
|
76
|
+
Cuando el usuario ejecuta `/elsabro:add-todo`:
|
|
72
77
|
|
|
73
|
-
|
|
74
|
-
- [ ] Fix authentication token refresh (#123)
|
|
78
|
+
### 1. Parse Arguments
|
|
75
79
|
|
|
76
|
-
|
|
77
|
-
-
|
|
78
|
-
|
|
80
|
+
```
|
|
81
|
+
INPUT: /elsabro:add-todo "Fix typo in README" --priority=high --category=docs
|
|
82
|
+
PARSE:
|
|
83
|
+
- description: "Fix typo in README"
|
|
84
|
+
- priority: "high" (default: "medium")
|
|
85
|
+
- category: "docs" (default: "chore")
|
|
86
|
+
- due: null (opcional)
|
|
87
|
+
- milestone: null (opcional)
|
|
88
|
+
```
|
|
79
89
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
90
|
+
### 2. Crear Task
|
|
91
|
+
|
|
92
|
+
```javascript
|
|
93
|
+
TaskCreate({
|
|
94
|
+
subject: "Fix typo in README",
|
|
95
|
+
description: "User-created TODO: Fix typo in README\n\nCategory: docs\nPriority: high",
|
|
96
|
+
activeForm: "Working on: Fix typo in README",
|
|
97
|
+
metadata: {
|
|
98
|
+
type: "todo",
|
|
99
|
+
priority: "high",
|
|
100
|
+
category: "docs",
|
|
101
|
+
due_date: null,
|
|
102
|
+
milestone_id: null,
|
|
103
|
+
created_by: "user",
|
|
104
|
+
source_command: "add-todo",
|
|
105
|
+
created_at: "ISO-8601 timestamp"
|
|
106
|
+
}
|
|
107
|
+
})
|
|
108
|
+
```
|
|
84
109
|
|
|
85
|
-
|
|
86
|
-
- [ ] Investigate dark mode (idea)
|
|
87
|
-
- [ ] Consider adding PWA support (idea)
|
|
110
|
+
### 3. Output
|
|
88
111
|
|
|
89
|
-
## Completed ✅
|
|
90
|
-
- [x] Set up CI pipeline (2024-01-18)
|
|
91
|
-
- [x] Add basic tests (2024-01-19)
|
|
92
112
|
```
|
|
113
|
+
✓ TODO added (Task #<ID>)
|
|
93
114
|
|
|
94
|
-
|
|
115
|
+
Subject: Fix typo in README
|
|
116
|
+
Priority: high
|
|
117
|
+
Category: docs
|
|
118
|
+
Due: -
|
|
95
119
|
|
|
96
|
-
|
|
97
|
-
/elsabro:add-todo
|
|
120
|
+
View all: /elsabro:check-todos
|
|
98
121
|
```
|
|
99
122
|
|
|
123
|
+
### 4. Contar TODOs existentes
|
|
124
|
+
|
|
125
|
+
```javascript
|
|
126
|
+
// Listar todos los tasks tipo "todo"
|
|
127
|
+
TaskList()
|
|
128
|
+
.filter(t => t.metadata?.type === "todo" && t.status !== "completed")
|
|
129
|
+
|
|
130
|
+
// Mostrar conteo por prioridad
|
|
131
|
+
Total TODOs: 8 (2 high, 4 medium, 2 low)
|
|
100
132
|
```
|
|
101
|
-
|
|
133
|
+
</implementation>
|
|
102
134
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
Due date (optional):
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Modo Interactivo
|
|
107
138
|
|
|
108
|
-
|
|
139
|
+
```bash
|
|
140
|
+
/elsabro:add-todo
|
|
109
141
|
```
|
|
110
142
|
|
|
143
|
+
Si no se proporciona descripción, usar AskUserQuestion:
|
|
144
|
+
|
|
145
|
+
```javascript
|
|
146
|
+
AskUserQuestion({
|
|
147
|
+
questions: [
|
|
148
|
+
{
|
|
149
|
+
question: "What TODO do you want to add?",
|
|
150
|
+
header: "Description",
|
|
151
|
+
options: [
|
|
152
|
+
{ label: "Bug fix", description: "Minor bug to fix" },
|
|
153
|
+
{ label: "Tech debt", description: "Code improvement" },
|
|
154
|
+
{ label: "Documentation", description: "Docs to write" },
|
|
155
|
+
{ label: "Other", description: "Custom description" }
|
|
156
|
+
],
|
|
157
|
+
multiSelect: false
|
|
158
|
+
}
|
|
159
|
+
]
|
|
160
|
+
})
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
111
165
|
## Opciones
|
|
112
166
|
|
|
113
167
|
```bash
|
|
114
168
|
--priority, -p # critical/high/medium/low
|
|
115
169
|
--category, -c # Category tag
|
|
116
|
-
--due, -d # Due date
|
|
117
|
-
--milestone, -m # Link to milestone
|
|
118
|
-
--phase # Link to phase
|
|
170
|
+
--due, -d # Due date (ISO-8601)
|
|
171
|
+
--milestone, -m # Link to milestone ID
|
|
172
|
+
--phase # Link to phase ID
|
|
119
173
|
```
|
|
120
174
|
|
|
121
|
-
## Quick Add
|
|
175
|
+
## Quick Add (Batch)
|
|
122
176
|
|
|
123
|
-
Para agregar múltiples todos
|
|
177
|
+
Para agregar múltiples todos:
|
|
124
178
|
|
|
125
179
|
```bash
|
|
126
180
|
/elsabro:add-todo --batch
|
|
127
181
|
```
|
|
128
182
|
|
|
183
|
+
```javascript
|
|
184
|
+
// Crear múltiples Tasks en paralelo
|
|
185
|
+
TaskCreate({ subject: "Fix button alignment", metadata: {...} })
|
|
186
|
+
TaskCreate({ subject: "Add form validation", metadata: {...} })
|
|
187
|
+
TaskCreate({ subject: "Update user docs", metadata: {...} })
|
|
129
188
|
```
|
|
130
|
-
Enter TODOs (one per line, empty to finish):
|
|
131
|
-
> Fix button alignment
|
|
132
|
-
> Add form validation
|
|
133
|
-
> Update user docs
|
|
134
|
-
>
|
|
135
189
|
|
|
136
|
-
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
## Output
|
|
190
|
+
---
|
|
140
191
|
|
|
192
|
+
## Metadata Schema
|
|
193
|
+
|
|
194
|
+
```json
|
|
195
|
+
{
|
|
196
|
+
"type": "todo",
|
|
197
|
+
"priority": "critical|high|medium|low",
|
|
198
|
+
"category": "bug|tech-debt|docs|chore|idea|question",
|
|
199
|
+
"due_date": "ISO-8601 | null",
|
|
200
|
+
"milestone_id": "M001 | null",
|
|
201
|
+
"phase_id": "P001 | null",
|
|
202
|
+
"created_by": "user|system",
|
|
203
|
+
"source_command": "add-todo",
|
|
204
|
+
"created_at": "ISO-8601"
|
|
205
|
+
}
|
|
141
206
|
```
|
|
142
|
-
✓ TODO added
|
|
143
207
|
|
|
144
|
-
|
|
145
|
-
Priority: medium
|
|
146
|
-
Category: docs
|
|
147
|
-
Due: -
|
|
148
|
-
|
|
149
|
-
Total TODOs: 8 (2 high, 4 medium, 2 low)
|
|
150
|
-
|
|
151
|
-
View all: /elsabro:check-todos
|
|
152
|
-
```
|
|
208
|
+
---
|
|
153
209
|
|
|
154
210
|
## Integración
|
|
155
211
|
|
|
156
212
|
- View with `/elsabro:check-todos`
|
|
157
213
|
- Referenced in `/elsabro:progress`
|
|
158
214
|
- Can be promoted to phase task with `/elsabro:add-phase`
|
|
215
|
+
- Persists across sessions via Tasks API
|
|
216
|
+
- Supports dependencies with `blocks/blockedBy`
|
|
@@ -1,10 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: audit-milestone
|
|
3
3
|
description: Auditar el estado actual de un milestone - progreso, riesgos y recomendaciones
|
|
4
|
+
sync:
|
|
5
|
+
reads: [".elsabro/state.json"]
|
|
6
|
+
writes: [".elsabro/state.json", ".elsabro/context.md"]
|
|
4
7
|
---
|
|
5
8
|
|
|
6
9
|
# /elsabro:audit-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>audit-milestone</command-name>
|
|
9
28
|
|
|
10
29
|
## Propósito
|
|
@@ -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
|
|
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
|
-
|
|
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
|
-
║
|
|
124
|
+
║ #<ID> Fix auth token refresh [bug] ║
|
|
57
125
|
║ ║
|
|
58
126
|
║ 🟠 HIGH (3) ║
|
|
59
|
-
║
|
|
60
|
-
║
|
|
61
|
-
║
|
|
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
|
-
║
|
|
65
|
-
║
|
|
66
|
-
║
|
|
67
|
-
║
|
|
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
|
-
║
|
|
71
|
-
║
|
|
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
|
|
151
|
+
### Marcar como Completado
|
|
81
152
|
|
|
82
153
|
```bash
|
|
83
|
-
/elsabro:check-todos --complete
|
|
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
|
-
|
|
166
|
+
|
|
167
|
+
Output:
|
|
168
|
+
```
|
|
169
|
+
✓ Completed: #<ID> "Fix typo in README"
|
|
88
170
|
```
|
|
89
171
|
|
|
90
|
-
### Cambiar
|
|
172
|
+
### Cambiar Prioridad
|
|
91
173
|
|
|
92
174
|
```bash
|
|
93
|
-
/elsabro:check-todos --prioritize
|
|
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
|
-
✓
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
-
|
|
192
|
-
-
|
|
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
|
|
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
|
|