refacil-sdd-ai 3.0.2 → 3.1.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/README.md +398 -392
- package/bin/cli.js +400 -1407
- package/lib/commands/bus.js +499 -0
- package/lib/commands/compact.js +92 -0
- package/lib/hooks.js +107 -0
- package/lib/ignore-files.js +88 -0
- package/lib/installer.js +291 -0
- package/package.json +44 -41
- package/skills/archive/SKILL.md +191 -167
- package/skills/setup/SKILL.md +104 -91
package/README.md
CHANGED
|
@@ -1,392 +1,398 @@
|
|
|
1
|
-
# refacil-sdd-ai
|
|
2
|
-
|
|
3
|
-
Metodologia **SDD-AI** (Specification-Driven Development with AI) empaquetada como CLI.
|
|
4
|
-
|
|
5
|
-
Instala **skills** y **sub-agentes** para **Claude Code** y **Cursor** que guian al desarrollador por un flujo estructurado de desarrollo usando **OpenSpec** como base de especificaciones, mas un **bus local** para que los agentes de distintos repos se comuniquen entre si.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Requisitos
|
|
10
|
-
|
|
11
|
-
- **Node.js >= 20.19.0** (requerido por OpenSpec)
|
|
12
|
-
- **Claude Code >= 2.1.89** (requerido por el hook `compact-bash` para rewrite silencioso via `updatedInput`) o **Cursor**
|
|
13
|
-
|
|
14
|
-
`refacil-sdd-ai init` verifica la version de Claude Code y advierte si es inferior. Con version < 2.1.89 el resto de la metodologia funciona, pero `compact-bash` no tendra efecto.
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## Instalacion
|
|
19
|
-
|
|
20
|
-
Recomendado: instalar globalmente una sola vez, y correr `init` por repo.
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
# 1. Global (una vez)
|
|
24
|
-
npm install -g refacil-sdd-ai
|
|
25
|
-
|
|
26
|
-
# 2. En la raiz del repo
|
|
27
|
-
refacil-sdd-ai init
|
|
28
|
-
# Copia skills a .claude/ y .cursor/, crea CLAUDE.md + .cursorrules, configura hooks
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
#
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
refacil-sdd-ai
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
| `refacil-sdd-ai
|
|
66
|
-
| `refacil-sdd-ai
|
|
67
|
-
| `refacil-sdd-ai
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
| `refacil-sdd-ai check-
|
|
75
|
-
| `refacil-sdd-ai
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
| `refacil-sdd-ai compact
|
|
83
|
-
| `refacil-sdd-ai compact
|
|
84
|
-
| `refacil-sdd-ai compact
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
| `refacil-sdd-ai bus
|
|
92
|
-
| `refacil-sdd-ai bus
|
|
93
|
-
| `refacil-sdd-ai bus
|
|
94
|
-
| `refacil-sdd-ai bus
|
|
95
|
-
| `refacil-sdd-ai bus
|
|
96
|
-
| `refacil-sdd-ai bus
|
|
97
|
-
| `refacil-sdd-ai bus
|
|
98
|
-
| `refacil-sdd-ai bus
|
|
99
|
-
| `refacil-sdd-ai bus
|
|
100
|
-
| `refacil-sdd-ai bus
|
|
101
|
-
| `refacil-sdd-ai bus
|
|
102
|
-
| `refacil-sdd-ai bus
|
|
103
|
-
| `refacil-sdd-ai bus
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
| `/refacil:
|
|
119
|
-
| `/refacil:
|
|
120
|
-
| `/refacil:
|
|
121
|
-
| `/refacil:
|
|
122
|
-
| `/refacil:
|
|
123
|
-
| `/refacil:
|
|
124
|
-
| `/refacil:
|
|
125
|
-
| `/refacil:
|
|
126
|
-
| `/refacil:
|
|
127
|
-
| `/refacil:
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
| `/refacil:
|
|
137
|
-
| `/refacil:
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
| `/refacil:
|
|
149
|
-
| `/refacil:
|
|
150
|
-
| `/refacil:
|
|
151
|
-
| `/refacil:
|
|
152
|
-
| `/refacil:
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
-
|
|
162
|
-
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
│
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
- Para
|
|
222
|
-
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
|
233
|
-
|
|
234
|
-
| `check-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
│
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
│
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
**
|
|
271
|
-
|
|
272
|
-
**
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
|
279
|
-
|
|
280
|
-
| `
|
|
281
|
-
| `
|
|
282
|
-
| `
|
|
283
|
-
| `
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
|
292
|
-
|
|
293
|
-
| `
|
|
294
|
-
| `
|
|
295
|
-
| `
|
|
296
|
-
| `
|
|
297
|
-
| `
|
|
298
|
-
| `
|
|
299
|
-
|
|
|
300
|
-
| `
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
- **
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
**
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
.
|
|
373
|
-
.
|
|
374
|
-
|
|
375
|
-
.
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
1
|
+
# refacil-sdd-ai
|
|
2
|
+
|
|
3
|
+
Metodologia **SDD-AI** (Specification-Driven Development with AI) empaquetada como CLI.
|
|
4
|
+
|
|
5
|
+
Instala **skills** y **sub-agentes** para **Claude Code** y **Cursor** que guian al desarrollador por un flujo estructurado de desarrollo usando **OpenSpec** como base de especificaciones, mas un **bus local** para que los agentes de distintos repos se comuniquen entre si.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Requisitos
|
|
10
|
+
|
|
11
|
+
- **Node.js >= 20.19.0** (requerido por OpenSpec)
|
|
12
|
+
- **Claude Code >= 2.1.89** (requerido por el hook `compact-bash` para rewrite silencioso via `updatedInput`) o **Cursor**
|
|
13
|
+
|
|
14
|
+
`refacil-sdd-ai init` verifica la version de Claude Code y advierte si es inferior. Con version < 2.1.89 el resto de la metodologia funciona, pero `compact-bash` no tendra efecto.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Instalacion
|
|
19
|
+
|
|
20
|
+
Recomendado: instalar globalmente una sola vez, y correr `init` por repo.
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# 1. Global (una vez)
|
|
24
|
+
npm install -g refacil-sdd-ai
|
|
25
|
+
|
|
26
|
+
# 2. En la raiz del repo
|
|
27
|
+
refacil-sdd-ai init
|
|
28
|
+
# Copia skills a .claude/ y .cursor/, crea CLAUDE.md + .cursorrules, configura hooks
|
|
29
|
+
# Crea/actualiza .claudeignore y .cursorignore con exclusiones base
|
|
30
|
+
|
|
31
|
+
# 3. Reiniciar sesion de Claude Code o Cursor
|
|
32
|
+
# (las skills nuevas no se detectan hasta reiniciar)
|
|
33
|
+
|
|
34
|
+
# 4. En el IDE
|
|
35
|
+
/refacil:setup
|
|
36
|
+
# Instala OpenSpec, inicializa openspec/ y genera AGENTS.md
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Actualizar
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm update -g refacil-sdd-ai
|
|
43
|
+
refacil-sdd-ai update # en cada repo donde se use
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
En Claude Code el hook `check-update` hace esto automaticamente al iniciar sesion.
|
|
47
|
+
|
|
48
|
+
### Desinstalar
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
refacil-sdd-ai clean # en el repo (elimina skills + hooks SDD-AI)
|
|
52
|
+
npm uninstall -g refacil-sdd-ai
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
> **Nota**: `openspec init` tambien instala sus comandos `opsx:*`. Coexisten sin conflicto con los `refacil:*`. Usar siempre `refacil:*` como interfaz principal.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Comandos del CLI
|
|
60
|
+
|
|
61
|
+
### Gestion del paquete
|
|
62
|
+
|
|
63
|
+
| Comando | Descripcion |
|
|
64
|
+
|---|---|
|
|
65
|
+
| `refacil-sdd-ai init` | Instala skills y hooks en el repo actual |
|
|
66
|
+
| `refacil-sdd-ai update` | Re-copia skills y hooks a la ultima version |
|
|
67
|
+
| `refacil-sdd-ai clean` | Elimina skills y hooks SDD-AI del repo |
|
|
68
|
+
| `refacil-sdd-ai help` | Ver ayuda |
|
|
69
|
+
|
|
70
|
+
### Hooks internos (invocados automaticamente, no manual)
|
|
71
|
+
|
|
72
|
+
| Comando | Descripcion |
|
|
73
|
+
|---|---|
|
|
74
|
+
| `refacil-sdd-ai check-update` | Verifica nueva version + sincroniza `compact-guidance` en AGENTS.md |
|
|
75
|
+
| `refacil-sdd-ai check-review` | Bloquea `git push` si falta `.review-passed` en algun cambio activo |
|
|
76
|
+
| `refacil-sdd-ai compact-bash` | Reescribe comandos Bash bare via `updatedInput` |
|
|
77
|
+
|
|
78
|
+
### Control del rewrite de comandos (`compact-bash`)
|
|
79
|
+
|
|
80
|
+
| Comando | Descripcion |
|
|
81
|
+
|---|---|
|
|
82
|
+
| `refacil-sdd-ai compact stats` | Estadisticas (hook + ya-compacto) + tokens y USD estimados |
|
|
83
|
+
| `refacil-sdd-ai compact enable` | Reactiva el rewrite |
|
|
84
|
+
| `refacil-sdd-ai compact disable` | Desactiva el rewrite sin desinstalar |
|
|
85
|
+
| `refacil-sdd-ai compact clear-log` | Limpia `~/.refacil-sdd-ai/compact.log` |
|
|
86
|
+
|
|
87
|
+
### Bus de agentes (`bus`)
|
|
88
|
+
|
|
89
|
+
| Comando | Descripcion |
|
|
90
|
+
|---|---|
|
|
91
|
+
| `refacil-sdd-ai bus start` | Arranca el broker local (auto-spawn detached) |
|
|
92
|
+
| `refacil-sdd-ai bus stop` | Detiene el broker |
|
|
93
|
+
| `refacil-sdd-ai bus status` | Muestra puerto, pid, uptime |
|
|
94
|
+
| `refacil-sdd-ai bus rooms` | Salas activas + miembros |
|
|
95
|
+
| `refacil-sdd-ai bus view` | Abre la UI web en el navegador |
|
|
96
|
+
| `refacil-sdd-ai bus watch <session> [--room <sala>]` | Panel en vivo en terminal (0 tokens) |
|
|
97
|
+
| `refacil-sdd-ai bus history [--n N] [--session <s>]` | Ultimos N mensajes |
|
|
98
|
+
| `refacil-sdd-ai bus join --room <sala> [--session <s>] [--intro "..."]` | Unirse a sala (las skills lo hacen) |
|
|
99
|
+
| `refacil-sdd-ai bus leave [--session <s>]` | Salir de la sala |
|
|
100
|
+
| `refacil-sdd-ai bus say --text "..." [--session <s>]` | Broadcast (las skills lo hacen) |
|
|
101
|
+
| `refacil-sdd-ai bus ask --to <name> --text "..." [--wait N]` | Pregunta dirigida (las skills lo hacen) |
|
|
102
|
+
| `refacil-sdd-ai bus reply --text "..." [--correlation <id>]` | Responder (las skills lo hacen) |
|
|
103
|
+
| `refacil-sdd-ai bus attend [--timeout N]` | Escucha preguntas dirigidas (las skills lo hacen) |
|
|
104
|
+
| `refacil-sdd-ai bus inbox [--session <s>]` | Ver mensajes nuevos |
|
|
105
|
+
|
|
106
|
+
> Los subcomandos `join/leave/say/ask/reply/attend/inbox` tambien existen como **skills** dentro del IDE (`/refacil:join`, etc.). En la mayoria de los casos conviene usar las skills; los comandos del CLI son para scripting o debugging.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Skills disponibles en el IDE
|
|
111
|
+
|
|
112
|
+
Todas se invocan como `/refacil:<nombre>` en Claude Code o Cursor.
|
|
113
|
+
|
|
114
|
+
### Ciclo SDD
|
|
115
|
+
|
|
116
|
+
| Skill | Uso |
|
|
117
|
+
|---|---|
|
|
118
|
+
| `/refacil:setup` | Instalar OpenSpec + generar AGENTS.md |
|
|
119
|
+
| `/refacil:guide` | Guia interactiva sobre que comando usar |
|
|
120
|
+
| `/refacil:explore` | Explorar codebase sin modificar |
|
|
121
|
+
| `/refacil:propose` | Crear propuesta: proposal + specs + design + tasks |
|
|
122
|
+
| `/refacil:apply` | Implementar tasks del cambio |
|
|
123
|
+
| `/refacil:test` | Generar tests unitarios desde los artefactos |
|
|
124
|
+
| `/refacil:verify` | Validar implementacion vs specs (con autofix opcional) |
|
|
125
|
+
| `/refacil:review` | Checklist de calidad, emite `.review-passed` si aprueba |
|
|
126
|
+
| `/refacil:archive` | Archivar cambio completado + sincronizar specs (solicita links de Jira) |
|
|
127
|
+
| `/refacil:up-code` | Commit + push + PR (ejecuta review si falta) |
|
|
128
|
+
| `/refacil:bug` | Flujo completo de bugfix con tests de regresion |
|
|
129
|
+
|
|
130
|
+
### Sub-agentes automaticos (v3.0.0+)
|
|
131
|
+
|
|
132
|
+
Algunos skills delegan su trabajo pesado a **sub-agentes** que corren en contexto aislado (no saturan la sesion principal con lecturas masivas). Son invocados automaticamente por el skill correspondiente — no se llaman directo.
|
|
133
|
+
|
|
134
|
+
| Skill | Sub-agente | Rol |
|
|
135
|
+
|---|---|---|
|
|
136
|
+
| `/refacil:explore` | `refacil-investigator` | Lee codebase, enriquece con AGENTS.md, consulta bus cross-repo |
|
|
137
|
+
| `/refacil:verify` | `refacil-validator` | Corre tests + compara contra spec, retorna issues priorizados |
|
|
138
|
+
| `/refacil:review` | `refacil-auditor` | Evalua cambios contra el checklist de calidad |
|
|
139
|
+
|
|
140
|
+
**Propiedades comunes**: `readonly` (no pueden modificar archivos), system prompt especializado, guardrail de invocacion directa. El contrato con el skill wrapper es un bloque JSON fenced (`refacil-review-result`, `refacil-verify-result`).
|
|
141
|
+
|
|
142
|
+
**Dual-platform**: `.claude/agents/refacil-*.md` usa `tools:` (allowlist granular). `.cursor/agents/refacil-*.md` se genera automaticamente con `readonly: true` y `model: inherit`. El installer transforma el frontmatter.
|
|
143
|
+
|
|
144
|
+
### Bus de agentes
|
|
145
|
+
|
|
146
|
+
| Skill | Uso |
|
|
147
|
+
|---|---|
|
|
148
|
+
| `/refacil:join <sala>` | Unirse o crear sala |
|
|
149
|
+
| `/refacil:say "..."` | Broadcast |
|
|
150
|
+
| `/refacil:ask @nombre "..." [--wait N]` | Pregunta dirigida (bloquea con `--wait`) |
|
|
151
|
+
| `/refacil:reply "..."` | Responder ultima pregunta (autocompleta `correlationId`) |
|
|
152
|
+
| `/refacil:attend` | Modo escucha activa |
|
|
153
|
+
| `/refacil:inbox` | Mensajes nuevos desde la ultima lectura |
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Flujo recomendado
|
|
158
|
+
|
|
159
|
+
Regla rapida para elegir el comando de entrada:
|
|
160
|
+
|
|
161
|
+
- Entender el sistema sin tocar codigo -> `/refacil:explore`
|
|
162
|
+
- Feature nuevo o cambio de comportamiento -> `/refacil:propose`
|
|
163
|
+
- Bug funcional o error en produccion -> `/refacil:bug`
|
|
164
|
+
|
|
165
|
+
A partir de ahi, el ciclo completo es:
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
┌───────────────────────────┐
|
|
169
|
+
│ Necesidad de cambio │
|
|
170
|
+
└──────────────┬────────────┘
|
|
171
|
+
▼
|
|
172
|
+
┌─────────────────┐
|
|
173
|
+
│ ¿Tipo de tarea? │
|
|
174
|
+
└──┬───────┬──────┘
|
|
175
|
+
│ │
|
|
176
|
+
FEATURE│ │BUG
|
|
177
|
+
▼ ▼
|
|
178
|
+
/refacil: /refacil:
|
|
179
|
+
propose bug
|
|
180
|
+
(proposal + (fix + tests
|
|
181
|
+
specs + de regresion
|
|
182
|
+
design + + summary.md)
|
|
183
|
+
tasks) │
|
|
184
|
+
│ │
|
|
185
|
+
▼ │
|
|
186
|
+
/refacil: │
|
|
187
|
+
apply │
|
|
188
|
+
│ │
|
|
189
|
+
▼ │
|
|
190
|
+
/refacil: │
|
|
191
|
+
test │
|
|
192
|
+
│ │
|
|
193
|
+
▼ │
|
|
194
|
+
/refacil: │
|
|
195
|
+
verify │
|
|
196
|
+
(max 2 rondas │
|
|
197
|
+
autofix) │
|
|
198
|
+
│ │
|
|
199
|
+
└───┬───┘
|
|
200
|
+
▼
|
|
201
|
+
/refacil:review
|
|
202
|
+
(genera .review-passed)
|
|
203
|
+
▼
|
|
204
|
+
/refacil:archive
|
|
205
|
+
(feature: OpenSpec
|
|
206
|
+
bug: fix-*/spec.md +
|
|
207
|
+
review.yaml)
|
|
208
|
+
▼
|
|
209
|
+
/refacil:up-code
|
|
210
|
+
(verifica review +
|
|
211
|
+
commit + push + PR)
|
|
212
|
+
▼
|
|
213
|
+
PR creado
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
**Nota — dos capas de chequeo de review**:
|
|
217
|
+
- `/refacil:up-code` detecta `.review-passed` faltante y **ejecuta `/refacil:review` automaticamente** antes del push.
|
|
218
|
+
- El hook `check-review` tambien intercepta `git push` manuales y **bloquea** la operacion si falta. El hook no invoca skills — solo bloquea e instruye.
|
|
219
|
+
|
|
220
|
+
**Archive**:
|
|
221
|
+
- Para features/mejoras: OpenSpec mueve a `archive/` y extrae los campos del `.review-passed` a `review.yaml` dentro de cada spec afectado.
|
|
222
|
+
- Para bugs: archivado manual, crea `openspec/specs/fix-*/spec.md` en formato OpenSpec estandar + `review.yaml`.
|
|
223
|
+
- Una misma rama puede acumular multiples bugs, cada uno en su `fix-*/` independiente.
|
|
224
|
+
- `/refacil:archive` siempre solicita uno o varios **links de Jira** asociados al cambio antes de proceder. Los links se guardan en `review.yaml` bajo el campo `jiraTasks` (lista YAML). El campo es obligatorio — el archivado no avanza hasta que el usuario proporcione al menos un link.
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Hooks automaticos
|
|
229
|
+
|
|
230
|
+
Se instalan en `.claude/settings.json` **y** `.cursor/settings.json` durante `init` / `update`. Aplican tanto a **Claude Code** como a **Cursor**.
|
|
231
|
+
|
|
232
|
+
| Hook | Evento | Que hace |
|
|
233
|
+
|---|---|---|
|
|
234
|
+
| `check-update` | `SessionStart` | Chequea nueva version en npm, la instala, y **sincroniza el bloque `compact-guidance`** en `AGENTS.md`. |
|
|
235
|
+
| `compact-bash` | `PreToolUse` (Bash) | Reescribe silenciosamente comandos Bash bare via `updatedInput`. Sin turnos extra, sin que el IDE vea el cambio. Requiere Claude Code >= 2.1.89. |
|
|
236
|
+
| `check-review` | `PreToolUse` (Bash) | Intercepta `git push` y bloquea si falta `.review-passed` en algun cambio activo. |
|
|
237
|
+
|
|
238
|
+
Los tres hooks se instalan en paralelo en `.claude/settings.json` (Claude Code) y `.cursor/settings.json` (Cursor) con la misma logica parametrica.
|
|
239
|
+
|
|
240
|
+
### Gate de review en el push
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
┌──────────────────────────────┐
|
|
244
|
+
│ Dev ejecuta /refacil:up-code │
|
|
245
|
+
│ o git push manual │
|
|
246
|
+
└──────────────┬───────────────┘
|
|
247
|
+
│
|
|
248
|
+
┌──────────────────┴──────────────────┐
|
|
249
|
+
│ Via /refacil:up-code │ git push directo
|
|
250
|
+
▼ ▼
|
|
251
|
+
┌─────────────────────┐ ┌───────────────────────┐
|
|
252
|
+
│ up-code detecta │ │ Hook check-review │
|
|
253
|
+
│ falta .review-passed│ │ (PreToolUse en Bash) │
|
|
254
|
+
│ INVOCA /refacil: │ │ Verifica .review- │
|
|
255
|
+
│ review │ │ passed en changes/* │
|
|
256
|
+
└─────────┬───────────┘ └──────────┬────────────┘
|
|
257
|
+
│ │
|
|
258
|
+
▼ ▼
|
|
259
|
+
┌──────────────┐ ┌─────────────────┐
|
|
260
|
+
│ ¿Review OK? │ │ ¿Falta alguno? │
|
|
261
|
+
└──┬────────┬──┘ └──┬───────────┬──┘
|
|
262
|
+
SI│ NO│ SI│ NO│
|
|
263
|
+
▼ ▼ ▼ ▼
|
|
264
|
+
push OK informa + block + allow
|
|
265
|
+
no pushea instruccion push
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Hook `compact-bash` — rewrite silencioso de comandos
|
|
269
|
+
|
|
270
|
+
Segunda capa de reduccion de tokens, **sin costo conversacional**. Claude emite un comando Bash; antes de ejecutarlo, el hook lo inspecciona, y si matchea una regla lo reescribe via `updatedInput`. Claude no ve el cambio.
|
|
271
|
+
|
|
272
|
+
**Detector de intencion**: si el comando ya tiene flags explicitos (`git log -p`, `jest --watch`, `docker logs --tail 50`), el hook **no interviene** — tu intencion manda.
|
|
273
|
+
|
|
274
|
+
**Escape**: prefija `COMPACT=0` al comando (`COMPACT=0 git log`).
|
|
275
|
+
|
|
276
|
+
**Reglas activas — git, tests, docker logs**:
|
|
277
|
+
|
|
278
|
+
| Bare | Reescrito a | Ahorro |
|
|
279
|
+
|---|---|---|
|
|
280
|
+
| `git log` | `git log --oneline -20` | ~85% |
|
|
281
|
+
| `git status` | `git status -s` | ~70% |
|
|
282
|
+
| `git diff` (sin args) | `git diff --stat` | ~80% |
|
|
283
|
+
| `git show` | `git show --stat` | ~70% |
|
|
284
|
+
| `docker logs <c>` | `docker logs --tail 100 <c>` | ~80% |
|
|
285
|
+
| `npm test` / `yarn test` / `pnpm test` | `… 2>&1 \| tail -80` | ~90% |
|
|
286
|
+
| `jest` | `jest --silent --reporters=summary` | ~85% |
|
|
287
|
+
| `pytest` | `pytest -q` | ~60% |
|
|
288
|
+
|
|
289
|
+
**Reglas activas — linters, type checkers, build, sistema**:
|
|
290
|
+
|
|
291
|
+
| Bare | Reescrito a | Ahorro |
|
|
292
|
+
|---|---|---|
|
|
293
|
+
| `eslint` | `eslint . --format compact --quiet` | ~70% |
|
|
294
|
+
| `eslint <path>` | `eslint <path> --format compact` | ~60% |
|
|
295
|
+
| `biome check` | `biome check --reporter=summary` | ~65% |
|
|
296
|
+
| `tsc` / `npx tsc …` | `… 2>&1 \| head -80` | variable |
|
|
297
|
+
| `prettier --check <p>` | `prettier --check <p> --loglevel warn` | ~50% |
|
|
298
|
+
| `npm audit` | `npm audit 2>&1 \| tail -10` | ~80% |
|
|
299
|
+
| `npm ls` | `npm ls --depth=0` | ~90% |
|
|
300
|
+
| `cargo build / test / check` | `… --quiet` | ~50% |
|
|
301
|
+
| `go test …` (sin flags) | `… 2>&1 \| tail -80` | ~70% |
|
|
302
|
+
| `mvn test` | `mvn test -q` | ~60% |
|
|
303
|
+
| `./gradlew test` / `gradle test` | `… -q` | ~60% |
|
|
304
|
+
| `ps aux` | `ps -eo pid,pcpu,pmem,comm \| head -30` | ~80% |
|
|
305
|
+
|
|
306
|
+
**Telemetria**: cada rewrite genera una linea JSON en `~/.refacil-sdd-ai/compact.log` (local, nada viaja fuera). `compact stats` calcula ahorro en tokens y USD estimado (a $3/MTok input de Sonnet, conservador).
|
|
307
|
+
|
|
308
|
+
### Bloque `compact-guidance` en AGENTS.md
|
|
309
|
+
|
|
310
|
+
La metodologia SDD-AI genera mucho contexto (artefactos, specs, prompts). Para compensar, el paquete mantiene un bloque en `AGENTS.md` que instruye a la IA a pedir salidas compactas (Read con offset/limit, `git log --oneline`, tests solo con failures, etc.).
|
|
311
|
+
|
|
312
|
+
- Delimitado por `<!-- refacil-sdd-ai:compact-guidance:start -->` y `...:end -->`
|
|
313
|
+
- Fuente de verdad: `templates/compact-guidance.md`
|
|
314
|
+
- Sincroniza en: `init`, `update`, y hook `check-update` (cada SessionStart)
|
|
315
|
+
- Si `AGENTS.md` no existe, no se crea a espaldas del usuario
|
|
316
|
+
|
|
317
|
+
> **No editar manualmente** entre los marcadores. Se sobrescribe en la proxima sesion.
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
## Reglas metodologicas transversales
|
|
322
|
+
|
|
323
|
+
Definidas en `skills/prereqs/METHODOLOGY-CONTRACT.md`:
|
|
324
|
+
|
|
325
|
+
- **Estados del flujo**: `READY_FOR_APPLY` / `VERIFY` / `REVIEW` / `ARCHIVE` / `MERGE` — cada transicion valida prerequisitos.
|
|
326
|
+
- **Politica de ramas**: toda rama nueva (`feature/*`, `fix/*`, etc.) se crea desde `develop`/`dev` actualizado. Integracion a ramas protegidas (`testing`, `develop`, `dev`, `main`, `master`, `qa`) siempre por PR. **Nunca** commits directos a `master`/`main`. Excepcion unica: repos sin `develop`/`dev`, donde se permite usar temporalmente `main` o `master` como base.
|
|
327
|
+
- **Tests multi-stack**: se detecta el comando real (no hardcodea `npm test`).
|
|
328
|
+
- **`AGENTS.md` por perfil** (`openspec` vs `agents`): la metodologia respeta ambos.
|
|
329
|
+
- **Modo de salida**: conciso por defecto, detallado bajo demanda.
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## refacil-bus — chat room entre agentes
|
|
334
|
+
|
|
335
|
+
Bus local (WebSocket sobre `127.0.0.1`) para que los agentes de distintos repos se comuniquen por texto plano. **No comparte archivos, contexto ni tokens entre repos** — cada agente responde desde su propio codigo.
|
|
336
|
+
|
|
337
|
+
**Caso de uso principal**: un dev con varias ventanas de IDE abiertas (una por repo). Antes del bus, el dev hacia de transcriptor entre sus propios agentes. Con el bus, los agentes se hablan solos.
|
|
338
|
+
|
|
339
|
+
**Propiedades**:
|
|
340
|
+
|
|
341
|
+
- 100% local: nada sale de `127.0.0.1`. Sin cuentas, sin servicio compartido.
|
|
342
|
+
- Zero config: el broker se auto-arranca la primera vez que una skill lo necesita (`127.0.0.1:7821`, fallback 7822/7823).
|
|
343
|
+
- ~40 MB RAM, 0% CPU idle. Persistencia: `~/.refacil-sdd-ai/bus/<sala>/inbox.jsonl` (rotacion 7 dias).
|
|
344
|
+
- Mismas skills en Claude Code y Cursor.
|
|
345
|
+
|
|
346
|
+
**Arranque rapido**:
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
# En cada repo, una vez
|
|
350
|
+
/refacil:join refacil-main
|
|
351
|
+
# La primera vez el LLM escribe un bloque de presentacion en AGENTS.md
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
**Patron optimo**: antes de arrancar una tarea que puede requerir consultar otro repo, ir a la ventana del otro repo y decir *"atiende el bus"*. Eso lo pone en `/refacil:attend` y la conversacion entre agentes ocurre en background sin que el dev cambie de ventana.
|
|
355
|
+
|
|
356
|
+
**Observador puro** (0 tokens): `refacil-sdd-ai bus watch <session>` o `refacil-sdd-ai bus view` para la UI web.
|
|
357
|
+
|
|
358
|
+
> **Diagramas, escenarios y pitch**: ver [`refacil-bus-diagrams.md`](./refacil-bus-diagrams.md) — incluye arquitectura, flujo con attend, flujo sin attend, tabla comparativa de impacto y guia de decision visual (Mermaid).
|
|
359
|
+
>
|
|
360
|
+
|
|
361
|
+
### Limitaciones conocidas
|
|
362
|
+
|
|
363
|
+
- Mientras `/refacil:attend` esta activo, la sesion del IDE queda ocupada (abortar con ESC). Mitigacion: segunda ventana del mismo repo dedicada a atender.
|
|
364
|
+
- El LLM no recibe pushes externos: la automatizacion completa requiere que el receptor este en `attend`, o que el dev le pida `/refacil:inbox` despues.
|
|
365
|
+
- Sin autenticacion: cualquier proceso local puede conectar al broker (por diseño, solo loopback y bajo demanda del dev).
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
## Que se instala en tu repo
|
|
370
|
+
|
|
371
|
+
```
|
|
372
|
+
.claude/skills/refacil-*/ # Skills Claude Code (incluye refacil-prereqs con OPENSPEC-DELTAS.md)
|
|
373
|
+
.claude/agents/refacil-*.md # Sub-agentes (auditor, investigator, validator)
|
|
374
|
+
.claude/settings.json # Hooks: check-update + check-review + compact-bash
|
|
375
|
+
.cursor/skills/refacil-*/ # Skills Cursor (equivalente)
|
|
376
|
+
.cursor/agents/refacil-*.md # Sub-agentes Cursor (readonly + model:inherit auto-generados)
|
|
377
|
+
.cursor/settings.json # Hooks: check-update + check-review + compact-bash (mirror de .claude/)
|
|
378
|
+
CLAUDE.md # Apunta a AGENTS.md
|
|
379
|
+
.cursorrules # Apunta a AGENTS.md
|
|
380
|
+
.claudeignore # Exclusiones base (node_modules, dist, .env, *.key, etc.)
|
|
381
|
+
.cursorignore # Idem — mismo contenido que .claudeignore
|
|
382
|
+
AGENTS.md # Generado por /refacil:setup (no por el CLI)
|
|
383
|
+
# Incluye bloque compact-guidance auto-gestionado
|
|
384
|
+
openspec/ # Generado por /refacil:setup via OpenSpec
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
|
|
389
|
+
## Tecnologias
|
|
390
|
+
|
|
391
|
+
- [OpenSpec](https://github.com/Fission-AI/OpenSpec) — framework de especificaciones
|
|
392
|
+
- [AGENTS.md](https://agents.md/) — estandar universal de instrucciones para IA
|
|
393
|
+
- [Claude Code](https://claude.ai/code) — CLI de Anthropic
|
|
394
|
+
- [Cursor](https://cursor.sh) — IDE con IA
|
|
395
|
+
|
|
396
|
+
## Licencia
|
|
397
|
+
|
|
398
|
+
MIT
|