refacil-sdd-ai 2.9.0 → 2.10.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 +254 -624
- package/package.json +1 -1
- package/skills/bug/SKILL.md +7 -0
- package/skills/explore/SKILL.md +8 -1
- package/skills/guide/SKILL.md +20 -0
- package/skills/prereqs/BUS-CROSS-REPO.md +38 -0
- package/skills/prereqs/SKILL.md +4 -0
- package/skills/propose/SKILL.md +7 -0
- package/skills/verify/SKILL.md +7 -0
- package/templates/methodology-guide.md +17 -0
package/README.md
CHANGED
|
@@ -1,743 +1,373 @@
|
|
|
1
1
|
# refacil-sdd-ai
|
|
2
2
|
|
|
3
|
-
Metodologia **SDD-AI** (Specification-Driven Development with AI) empaquetada como
|
|
3
|
+
Metodologia **SDD-AI** (Specification-Driven Development with AI) empaquetada como CLI.
|
|
4
4
|
|
|
5
|
-
Instala skills para **Claude Code** y **Cursor** que guian al desarrollador por un flujo estructurado de desarrollo usando **OpenSpec** como base de especificaciones.
|
|
5
|
+
Instala skills 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
|
+
---
|
|
6
8
|
|
|
7
9
|
## Requisitos
|
|
8
10
|
|
|
9
11
|
- **Node.js >= 20.19.0** (requerido por OpenSpec)
|
|
10
|
-
- **Claude Code >= 2.1.89** (requerido por el hook `compact-bash` para rewrite silencioso
|
|
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.
|
|
11
15
|
|
|
12
|
-
|
|
16
|
+
---
|
|
13
17
|
|
|
14
|
-
## Instalacion
|
|
18
|
+
## Instalacion
|
|
15
19
|
|
|
16
|
-
|
|
20
|
+
Recomendado: instalar globalmente una sola vez, y correr `init` por repo.
|
|
17
21
|
|
|
18
22
|
```bash
|
|
19
|
-
# 1.
|
|
23
|
+
# 1. Global (una vez)
|
|
20
24
|
npm install -g refacil-sdd-ai
|
|
21
25
|
|
|
22
|
-
# 2. En la raiz del repo
|
|
26
|
+
# 2. En la raiz del repo
|
|
23
27
|
refacil-sdd-ai init
|
|
24
|
-
# Copia skills a .claude/ y .cursor/, crea CLAUDE.md
|
|
28
|
+
# Copia skills a .claude/ y .cursor/, crea CLAUDE.md + .cursorrules, configura hooks
|
|
25
29
|
|
|
26
|
-
# 3.
|
|
30
|
+
# 3. Reiniciar sesion de Claude Code o Cursor
|
|
27
31
|
# (las skills nuevas no se detectan hasta reiniciar)
|
|
28
32
|
|
|
29
|
-
# 4. En
|
|
33
|
+
# 4. En el IDE
|
|
30
34
|
/refacil:setup
|
|
31
|
-
#
|
|
32
|
-
# - Verifica Node.js
|
|
33
|
-
# - Verifica OpenSpec (si no esta instalado, lo instala globalmente)
|
|
34
|
-
# - Inicializa openspec/ en el repo (openspec init --tools claude,cursor)
|
|
35
|
-
# - Crea openspec/config.yaml con idioma espanol
|
|
36
|
-
# - Genera AGENTS.md automaticamente analizando el repo
|
|
35
|
+
# Instala OpenSpec, inicializa openspec/ y genera AGENTS.md
|
|
37
36
|
```
|
|
38
37
|
|
|
39
|
-
### Actualizar
|
|
38
|
+
### Actualizar
|
|
40
39
|
|
|
41
40
|
```bash
|
|
42
|
-
# Actualizar el paquete global
|
|
43
41
|
npm update -g refacil-sdd-ai
|
|
44
|
-
|
|
45
|
-
# En cada repo donde se use, re-copiar las skills actualizadas:
|
|
46
|
-
refacil-sdd-ai update
|
|
42
|
+
refacil-sdd-ai update # en cada repo donde se use
|
|
47
43
|
```
|
|
48
44
|
|
|
49
|
-
|
|
45
|
+
En Claude Code el hook `check-update` hace esto automaticamente al iniciar sesion.
|
|
50
46
|
|
|
51
|
-
|
|
47
|
+
### Desinstalar
|
|
52
48
|
|
|
53
49
|
```bash
|
|
54
|
-
refacil-sdd-ai
|
|
55
|
-
refacil-sdd-ai
|
|
56
|
-
refacil-sdd-ai check-update # Verifica si hay una version mas reciente en npm (usado por hook)
|
|
57
|
-
refacil-sdd-ai check-review # Verifica que el review se haya completado (usado por hook)
|
|
58
|
-
refacil-sdd-ai compact-bash # Hook de rewrite de comandos Bash bare (usado por hook, no invocar manual)
|
|
59
|
-
refacil-sdd-ai compact stats # Estadisticas completas (hook + ya-compacto) + tokens estimados + USD
|
|
60
|
-
refacil-sdd-ai compact disable # Desactiva el hook compact-bash sin desinstalarlo
|
|
61
|
-
refacil-sdd-ai compact enable # Reactiva el hook compact-bash
|
|
62
|
-
refacil-sdd-ai compact clear-log # Limpia ~/.refacil-sdd-ai/compact.log
|
|
63
|
-
refacil-sdd-ai clean # Eliminar skills y remover hooks SDD-AI del repo
|
|
64
|
-
refacil-sdd-ai help # Ver ayuda
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Skills disponibles
|
|
68
|
-
|
|
69
|
-
Una vez instalado, estos comandos estan disponibles en Claude Code y Cursor:
|
|
70
|
-
|
|
71
|
-
| Comando | Descripcion |
|
|
72
|
-
|---------|-------------|
|
|
73
|
-
| `/refacil:setup` | Instalar OpenSpec y generar AGENTS.md para el repo |
|
|
74
|
-
| `/refacil:guide` | Guia interactiva — que comando usar segun lo que necesites |
|
|
75
|
-
| `/refacil:explore` | Explorar el codebase sin hacer cambios |
|
|
76
|
-
| `/refacil:propose` | Crear propuesta de cambio (proposal + specs + design + tasks) |
|
|
77
|
-
| `/refacil:apply` | Implementar las tasks del cambio propuesto |
|
|
78
|
-
| `/refacil:test` | Generar tests unitarios desde los artefactos |
|
|
79
|
-
| `/refacil:verify` | Validar implementacion vs specs (con opcion de aplicar correcciones) |
|
|
80
|
-
| `/refacil:review` | Review con checklist de calidad del equipo |
|
|
81
|
-
| `/refacil:archive` | Archivar cambio completado |
|
|
82
|
-
| `/refacil:up-code` | Integrar codigo a rama propia del desarollo y gestionar PR |
|
|
83
|
-
| `/refacil:bug` | Flujo guiado completo para investigar y corregir bugs |
|
|
84
|
-
|
|
85
|
-
## Uso rapido (guia de decision)
|
|
86
|
-
|
|
87
|
-
Si no tienes claro que comando usar, aplica esta regla simple:
|
|
88
|
-
|
|
89
|
-
- Quiero entender el sistema sin tocar codigo -> `/refacil:explore`
|
|
90
|
-
- Quiero construir algo nuevo o cambiar comportamiento -> `/refacil:propose`
|
|
91
|
-
- Ya aprobe artefactos y quiero implementar -> `/refacil:apply`
|
|
92
|
-
- Quiero generar o completar pruebas -> `/refacil:test`
|
|
93
|
-
- Quiero validar cumplimiento contra spec -> `/refacil:verify`
|
|
94
|
-
- Quiero evaluacion de calidad tecnica -> `/refacil:review`
|
|
95
|
-
- Ya termine y quiero cerrar el cambio en OpenSpec -> `/refacil:archive`
|
|
96
|
-
- Quiero subir cambios al repositorio -> `/refacil:up-code`
|
|
97
|
-
- Tengo un error en produccion o bug funcional -> `/refacil:bug`
|
|
98
|
-
|
|
99
|
-
## Flujo minimo recomendado (equipo)
|
|
100
|
-
|
|
101
|
-
Para mantener trazabilidad y calidad sin pasos innecesarios:
|
|
102
|
-
|
|
103
|
-
1. `/refacil:propose` (aprobacion humana obligatoria)
|
|
104
|
-
2. `/refacil:apply`
|
|
105
|
-
3. `/refacil:test`
|
|
106
|
-
4. `/refacil:verify`
|
|
107
|
-
5. `/refacil:review` (si lo omites, `/refacil:up-code` lo dispara antes del push)
|
|
108
|
-
6. `/refacil:archive`
|
|
109
|
-
7. `/refacil:up-code`
|
|
110
|
-
|
|
111
|
-
Si es bugfix, inicia con `/refacil:bug` (ya genera tests de regresion internamente) y continua con `/refacil:review` → `/refacil:archive` → `/refacil:up-code`.
|
|
112
|
-
|
|
113
|
-
> **Nota — dos capas independientes de chequeo de review**:
|
|
114
|
-
> - `/refacil:up-code` detecta si falta `.review-passed` y **ejecuta `/refacil:review` automaticamente** antes del push.
|
|
115
|
-
> - El hook `check-review` (en `.claude/settings.json`) intercepta tambien `git push` manuales y **bloquea** la operacion si falta `.review-passed`. El hook NO invoca skills por si mismo — solo bloquea y emite instrucciones para ejecutar `/refacil:review` manualmente.
|
|
116
|
-
>
|
|
117
|
-
|
|
118
|
-
## Flujos de trabajo
|
|
119
|
-
|
|
120
|
-
### Feature nuevo
|
|
121
|
-
|
|
122
|
-
```
|
|
123
|
-
/refacil:propose "descripcion del feature"
|
|
124
|
-
# → Revisar y aprobar artefactos (proposal, specs, design, tasks)
|
|
125
|
-
/refacil:apply
|
|
126
|
-
/refacil:test
|
|
127
|
-
/refacil:verify
|
|
128
|
-
# → Si hay correcciones: verify pregunta si aplicarlas automaticamente
|
|
129
|
-
# → Si aprueba: aplica fixes y re-verifica (maximo 2 rondas de correccion automatica)
|
|
130
|
-
/refacil:review
|
|
131
|
-
/refacil:archive
|
|
132
|
-
/refacil:up-code
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### Bug fix
|
|
136
|
-
|
|
137
|
-
```
|
|
138
|
-
/refacil:setup
|
|
139
|
-
# → Precondicion si el repo aun no tiene openspec/ (solo la primera vez)
|
|
140
|
-
/refacil:bug "descripcion del error"
|
|
141
|
-
# → Investiga, implementa fix, genera tests de regresion
|
|
142
|
-
# → Crea trazabilidad en openspec/changes/fix-[descripcion-corta]/summary.md
|
|
143
|
-
# → Nombre siempre descriptivo (sin IDs de ticket)
|
|
144
|
-
/refacil:review
|
|
145
|
-
# → Evalua calidad del fix, crea .review-passed si aprueba
|
|
146
|
-
/refacil:archive
|
|
147
|
-
# → Archiva el fix SIN pasar por OpenSpec (evita error por falta de artefactos completos)
|
|
148
|
-
# → Mueve carpeta a openspec/changes/archive/[fecha]-[nombre]/
|
|
149
|
-
# → Crea spec individual en openspec/specs/fix-[nombre]/spec.md
|
|
150
|
-
# en formato OpenSpec estandar (Purpose/Requirements/Scenario)
|
|
151
|
-
# → Crea openspec/specs/fix-[nombre]/review.yaml con metadata del review
|
|
152
|
-
/refacil:up-code
|
|
50
|
+
refacil-sdd-ai clean # en el repo (elimina skills + hooks SDD-AI)
|
|
51
|
+
npm uninstall -g refacil-sdd-ai
|
|
153
52
|
```
|
|
154
53
|
|
|
155
|
-
> **Nota**:
|
|
156
|
-
>
|
|
157
|
-
> **Importante**: `/refacil:archive` requiere review aprobado (`.review-passed`). Si no existe, bloquea el archivado. Para bugs, el archive no delega a OpenSpec — hace el archivado manual y documenta el bug en `openspec/specs/` como spec individual en formato OpenSpec estandar, con `review.yaml` separado.
|
|
158
|
-
>
|
|
159
|
-
> En cambios regulares (feature/mejora) que se archivan con OpenSpec, Refacil **extrae los campos** de `.review-passed` (JSON) y los persiste como `review.yaml` dentro de cada spec afectado (o en `openspec/specs/review-metadata.yaml` si no hay mapeo preciso). El archivo `.review-passed` original no se copia: solo su contenido convertido a YAML.
|
|
54
|
+
> **Nota**: `openspec init` tambien instala sus comandos `opsx:*`. Coexisten sin conflicto con los `refacil:*`. Usar siempre `refacil:*` como interfaz principal.
|
|
160
55
|
|
|
161
|
-
|
|
56
|
+
---
|
|
162
57
|
|
|
163
|
-
|
|
164
|
-
/refacil:explore "que quiero entender"
|
|
165
|
-
```
|
|
58
|
+
## Comandos del CLI
|
|
166
59
|
|
|
167
|
-
|
|
60
|
+
### Gestion del paquete
|
|
168
61
|
|
|
169
|
-
|
|
62
|
+
| Comando | Descripcion |
|
|
63
|
+
|---|---|
|
|
64
|
+
| `refacil-sdd-ai init` | Instala skills y hooks en el repo actual |
|
|
65
|
+
| `refacil-sdd-ai update` | Re-copia skills y hooks a la ultima version |
|
|
66
|
+
| `refacil-sdd-ai clean` | Elimina skills y hooks SDD-AI del repo |
|
|
67
|
+
| `refacil-sdd-ai help` | Ver ayuda |
|
|
170
68
|
|
|
171
|
-
|
|
172
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
173
|
-
│ INICIO: Necesidad de cambio │
|
|
174
|
-
└────────────────────────────────┬────────────────────────────────┘
|
|
175
|
-
│
|
|
176
|
-
▼
|
|
177
|
-
┌────────────────────────┐
|
|
178
|
-
│ ¿Repo configurado? │
|
|
179
|
-
└───┬────────────────┬───┘
|
|
180
|
-
NO│ │SI
|
|
181
|
-
▼ │
|
|
182
|
-
┌──────────────────┐ │
|
|
183
|
-
│ refacil-sdd-ai │ │
|
|
184
|
-
│ init │ │
|
|
185
|
-
│ /refacil:setup │ │
|
|
186
|
-
└────────┬─────────┘ │
|
|
187
|
-
└────────┬────────┘
|
|
188
|
-
▼
|
|
189
|
-
┌────────────────────────┐
|
|
190
|
-
│ ¿Que tipo de tarea? │
|
|
191
|
-
└───┬────────┬───────┬───┘
|
|
192
|
-
│ │ │
|
|
193
|
-
┌─────────┘ │ └─────────┐
|
|
194
|
-
▼ ▼ ▼
|
|
195
|
-
┌────────────────┐ ┌──────────────┐ ┌──────────────┐
|
|
196
|
-
│ FEATURE NUEVO │ │ BUG │ │ EXPLORAR │
|
|
197
|
-
└───────┬────────┘ └──────┬───────┘ └──────┬───────┘
|
|
198
|
-
│ │ │
|
|
199
|
-
▼ ▼ ▼
|
|
200
|
-
┌─────────────────┐ ┌──────────────┐ ┌─────────────────┐
|
|
201
|
-
│/refacil:propose │ │/refacil:bug │ │/refacil:explore │
|
|
202
|
-
│ │ │ │ │ │
|
|
203
|
-
│ Genera: │ │ Investiga + │ │ Analiza codigo │
|
|
204
|
-
│ • proposal.md │ │ fix + test │ │ sin modificar │
|
|
205
|
-
│ • specs/ │ │ de regresion │ │ │
|
|
206
|
-
│ • design.md │ │ (interno) │ │ (FIN) │
|
|
207
|
-
│ • tasks.md │ │ │ └─────────────────┘
|
|
208
|
-
└────────┬────────┘ └──────┬───────┘
|
|
209
|
-
│ │
|
|
210
|
-
▼ │
|
|
211
|
-
┌─────────────────┐ │
|
|
212
|
-
│ REVISAR │ │
|
|
213
|
-
│ artefactos │ │
|
|
214
|
-
│ (aprobacion │ │
|
|
215
|
-
│ humana) │ │
|
|
216
|
-
└────────┬────────┘ │
|
|
217
|
-
│ │
|
|
218
|
-
▼ │
|
|
219
|
-
┌─────────────────┐ │
|
|
220
|
-
│ /refacil:apply │ │
|
|
221
|
-
│ Implementa │ │
|
|
222
|
-
│ tasks │ │
|
|
223
|
-
└────────┬────────┘ │
|
|
224
|
-
│ │
|
|
225
|
-
▼ │
|
|
226
|
-
┌─────────────────┐ │
|
|
227
|
-
│ /refacil:test │ │
|
|
228
|
-
│ Tests unitarios │ │
|
|
229
|
-
│ + edge cases │ │
|
|
230
|
-
└────────┬────────┘ │
|
|
231
|
-
│ │
|
|
232
|
-
▼ │
|
|
233
|
-
┌─────────────────┐ │
|
|
234
|
-
│ /refacil:verify │ │
|
|
235
|
-
│ ¿Cumple specs? │ │
|
|
236
|
-
│ (max 2 rondas │ │
|
|
237
|
-
│ autofix) │ │
|
|
238
|
-
└────────┬────────┘ │
|
|
239
|
-
│ │
|
|
240
|
-
└────────┬────────┘
|
|
241
|
-
▼
|
|
242
|
-
┌─────────────────┐
|
|
243
|
-
│ /refacil:review │
|
|
244
|
-
│ Checklist │──► genera .review-passed
|
|
245
|
-
│ calidad │ (JSON con veredicto)
|
|
246
|
-
└────────┬────────┘
|
|
247
|
-
▼
|
|
248
|
-
┌─────────────────┐
|
|
249
|
-
│/refacil:archive │
|
|
250
|
-
│ Mueve a archive/│
|
|
251
|
-
│ Sincroniza specs│
|
|
252
|
-
│ (bug → fix-*/ │
|
|
253
|
-
│ spec OpenSpec) │
|
|
254
|
-
└────────┬────────┘
|
|
255
|
-
▼
|
|
256
|
-
┌─────────────────┐
|
|
257
|
-
│/refacil:up-code │
|
|
258
|
-
│ commit + push │
|
|
259
|
-
│ + PR │
|
|
260
|
-
└────────┬────────┘
|
|
261
|
-
▼
|
|
262
|
-
┌─────────────────┐
|
|
263
|
-
│ PR creado │
|
|
264
|
-
│ (FIN) │
|
|
265
|
-
└─────────────────┘
|
|
266
|
-
```
|
|
69
|
+
### Hooks internos (invocados automaticamente, no manual)
|
|
267
70
|
|
|
268
|
-
|
|
71
|
+
| Comando | Descripcion |
|
|
72
|
+
|---|---|
|
|
73
|
+
| `refacil-sdd-ai check-update` | Verifica nueva version + sincroniza `compact-guidance` en AGENTS.md |
|
|
74
|
+
| `refacil-sdd-ai check-review` | Bloquea `git push` si falta `.review-passed` en algun cambio activo |
|
|
75
|
+
| `refacil-sdd-ai compact-bash` | Reescribe comandos Bash bare via `updatedInput` |
|
|
269
76
|
|
|
270
|
-
|
|
77
|
+
### Control del rewrite de comandos (`compact-bash`)
|
|
271
78
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
┌──────────────────────┴──────────────────────┐
|
|
279
|
-
│ Via /refacil:up-code │ git push directo
|
|
280
|
-
▼ ▼
|
|
281
|
-
┌─────────────────────────┐ ┌───────────────────────────┐
|
|
282
|
-
│ up-code detecta │ │ Hook check-review │
|
|
283
|
-
│ .review-passed faltante │ │ (PreToolUse en Bash) │
|
|
284
|
-
│ │ │ │
|
|
285
|
-
│ INVOCA /refacil:review │ │ Verifica .review-passed │
|
|
286
|
-
│ automaticamente │ │ en openspec/changes/* │
|
|
287
|
-
└────────────┬────────────┘ └────────────┬───────────────┘
|
|
288
|
-
│ │
|
|
289
|
-
▼ ▼
|
|
290
|
-
┌──────────────┐ ┌─────────────────┐
|
|
291
|
-
│ Review OK? │ │ Falta alguno? │
|
|
292
|
-
└──┬────────┬──┘ └──┬───────────┬──┘
|
|
293
|
-
SI│ NO│ SI│ NO│
|
|
294
|
-
▼ ▼ ▼ ▼
|
|
295
|
-
┌─────────┐ ┌────────────┐ ┌─────────────┐ ┌────────┐
|
|
296
|
-
│ push OK │ │ informa │ │ block + │ │ allow │
|
|
297
|
-
│ │ │ correccion │ │ instruccion │ │ push │
|
|
298
|
-
│ │ │ no pushea │ │ a ejecutar │ │ │
|
|
299
|
-
│ │ │ │ │ /refacil: │ │ │
|
|
300
|
-
│ │ │ │ │ review │ │ │
|
|
301
|
-
└─────────┘ └────────────┘ └─────────────┘ └────────┘
|
|
302
|
-
```
|
|
79
|
+
| Comando | Descripcion |
|
|
80
|
+
|---|---|
|
|
81
|
+
| `refacil-sdd-ai compact stats` | Estadisticas (hook + ya-compacto) + tokens y USD estimados |
|
|
82
|
+
| `refacil-sdd-ai compact enable` | Reactiva el rewrite |
|
|
83
|
+
| `refacil-sdd-ai compact disable` | Desactiva el rewrite sin desinstalar |
|
|
84
|
+
| `refacil-sdd-ai compact clear-log` | Limpia `~/.refacil-sdd-ai/compact.log` |
|
|
303
85
|
|
|
304
|
-
|
|
86
|
+
### Bus de agentes (`bus`)
|
|
305
87
|
|
|
306
|
-
|
|
88
|
+
| Comando | Descripcion |
|
|
89
|
+
|---|---|
|
|
90
|
+
| `refacil-sdd-ai bus start` | Arranca el broker local (auto-spawn detached) |
|
|
91
|
+
| `refacil-sdd-ai bus stop` | Detiene el broker |
|
|
92
|
+
| `refacil-sdd-ai bus status` | Muestra puerto, pid, uptime |
|
|
93
|
+
| `refacil-sdd-ai bus rooms` | Salas activas + miembros |
|
|
94
|
+
| `refacil-sdd-ai bus view` | Abre la UI web en el navegador |
|
|
95
|
+
| `refacil-sdd-ai bus watch <session> [--room <sala>]` | Panel en vivo en terminal (0 tokens) |
|
|
96
|
+
| `refacil-sdd-ai bus history [--n N] [--session <s>]` | Ultimos N mensajes |
|
|
97
|
+
| `refacil-sdd-ai bus join --room <sala> [--session <s>] [--intro "..."]` | Unirse a sala (las skills lo hacen) |
|
|
98
|
+
| `refacil-sdd-ai bus leave [--session <s>]` | Salir de la sala |
|
|
99
|
+
| `refacil-sdd-ai bus say --text "..." [--session <s>]` | Broadcast (las skills lo hacen) |
|
|
100
|
+
| `refacil-sdd-ai bus ask --to <name> --text "..." [--wait N]` | Pregunta dirigida (las skills lo hacen) |
|
|
101
|
+
| `refacil-sdd-ai bus reply --text "..." [--correlation <id>]` | Responder (las skills lo hacen) |
|
|
102
|
+
| `refacil-sdd-ai bus attend [--timeout N]` | Escucha preguntas dirigidas (las skills lo hacen) |
|
|
103
|
+
| `refacil-sdd-ai bus inbox [--session <s>]` | Ver mensajes nuevos |
|
|
307
104
|
|
|
308
|
-
|
|
309
|
-
- Politica de `AGENTS.md` por perfil (`openspec` vs `agents`)
|
|
310
|
-
- Resolucion de comando de tests multi-stack (sin hardcodear `npm test`)
|
|
311
|
-
- Politica unificada de ramas protegidas, creacion de ramas e integracion por pr
|
|
312
|
-
- Modo de salida estandar: `conciso` por defecto, `detallado` bajo demanda
|
|
105
|
+
> 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.
|
|
313
106
|
|
|
314
|
-
|
|
107
|
+
---
|
|
315
108
|
|
|
316
|
-
|
|
317
|
-
- Excepcion para repos nuevos: si no existe `develop`/`dev`, se permite usar temporalmente `main` o `master` como rama base.
|
|
318
|
-
- Toda integracion a ramas protegidas (`testing`, `develop`, `dev`, `main`, `master`, `qa`) requiere PR.
|
|
319
|
-
- NUNCA se hacen ajustes directos en `master` o `main`.
|
|
109
|
+
## Skills disponibles en el IDE
|
|
320
110
|
|
|
321
|
-
|
|
111
|
+
Todas se invocan como `/refacil:<nombre>` en Claude Code o Cursor.
|
|
322
112
|
|
|
323
|
-
|
|
113
|
+
### Ciclo SDD
|
|
324
114
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
115
|
+
| Skill | Uso |
|
|
116
|
+
|---|---|
|
|
117
|
+
| `/refacil:setup` | Instalar OpenSpec + generar AGENTS.md |
|
|
118
|
+
| `/refacil:guide` | Guia interactiva sobre que comando usar |
|
|
119
|
+
| `/refacil:explore` | Explorar codebase sin modificar |
|
|
120
|
+
| `/refacil:propose` | Crear propuesta: proposal + specs + design + tasks |
|
|
121
|
+
| `/refacil:apply` | Implementar tasks del cambio |
|
|
122
|
+
| `/refacil:test` | Generar tests unitarios desde los artefactos |
|
|
123
|
+
| `/refacil:verify` | Validar implementacion vs specs (con autofix opcional) |
|
|
124
|
+
| `/refacil:review` | Checklist de calidad, emite `.review-passed` si aprueba |
|
|
125
|
+
| `/refacil:archive` | Archivar cambio completado + sincronizar specs |
|
|
126
|
+
| `/refacil:up-code` | Commit + push + PR (ejecuta review si falta) |
|
|
127
|
+
| `/refacil:bug` | Flujo completo de bugfix con tests de regresion |
|
|
330
128
|
|
|
331
|
-
###
|
|
129
|
+
### Bus de agentes
|
|
332
130
|
|
|
333
|
-
|
|
131
|
+
| Skill | Uso |
|
|
132
|
+
|---|---|
|
|
133
|
+
| `/refacil:join <sala>` | Unirse o crear sala |
|
|
134
|
+
| `/refacil:say "..."` | Broadcast |
|
|
135
|
+
| `/refacil:ask @nombre "..." [--wait N]` | Pregunta dirigida (bloquea con `--wait`) |
|
|
136
|
+
| `/refacil:reply "..."` | Responder ultima pregunta (autocompleta `correlationId`) |
|
|
137
|
+
| `/refacil:attend` | Modo escucha activa |
|
|
138
|
+
| `/refacil:inbox` | Mensajes nuevos desde la ultima lectura |
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Flujo recomendado
|
|
143
|
+
|
|
144
|
+
Regla rapida para elegir el comando de entrada:
|
|
145
|
+
|
|
146
|
+
- Entender el sistema sin tocar codigo -> `/refacil:explore`
|
|
147
|
+
- Feature nuevo o cambio de comportamiento -> `/refacil:propose`
|
|
148
|
+
- Bug funcional o error en produccion -> `/refacil:bug`
|
|
149
|
+
|
|
150
|
+
A partir de ahi, el ciclo completo es:
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
┌───────────────────────────┐
|
|
154
|
+
│ Necesidad de cambio │
|
|
155
|
+
└──────────────┬────────────┘
|
|
156
|
+
▼
|
|
157
|
+
┌─────────────────┐
|
|
158
|
+
│ ¿Tipo de tarea? │
|
|
159
|
+
└──┬───────┬──────┘
|
|
160
|
+
│ │
|
|
161
|
+
FEATURE│ │BUG
|
|
162
|
+
▼ ▼
|
|
163
|
+
/refacil: /refacil:
|
|
164
|
+
propose bug
|
|
165
|
+
(proposal + (fix + tests
|
|
166
|
+
specs + de regresion
|
|
167
|
+
design + + summary.md)
|
|
168
|
+
tasks) │
|
|
169
|
+
│ │
|
|
170
|
+
▼ │
|
|
171
|
+
/refacil: │
|
|
172
|
+
apply │
|
|
173
|
+
│ │
|
|
174
|
+
▼ │
|
|
175
|
+
/refacil: │
|
|
176
|
+
test │
|
|
177
|
+
│ │
|
|
178
|
+
▼ │
|
|
179
|
+
/refacil: │
|
|
180
|
+
verify │
|
|
181
|
+
(max 2 rondas │
|
|
182
|
+
autofix) │
|
|
183
|
+
│ │
|
|
184
|
+
└───┬───┘
|
|
185
|
+
▼
|
|
186
|
+
/refacil:review
|
|
187
|
+
(genera .review-passed)
|
|
188
|
+
▼
|
|
189
|
+
/refacil:archive
|
|
190
|
+
(feature: OpenSpec
|
|
191
|
+
bug: fix-*/spec.md +
|
|
192
|
+
review.yaml)
|
|
193
|
+
▼
|
|
194
|
+
/refacil:up-code
|
|
195
|
+
(verifica review +
|
|
196
|
+
commit + push + PR)
|
|
197
|
+
▼
|
|
198
|
+
PR creado
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**Nota — dos capas de chequeo de review**:
|
|
202
|
+
- `/refacil:up-code` detecta `.review-passed` faltante y **ejecuta `/refacil:review` automaticamente** antes del push.
|
|
203
|
+
- El hook `check-review` tambien intercepta `git push` manuales y **bloquea** la operacion si falta. El hook no invoca skills — solo bloquea e instruye.
|
|
204
|
+
|
|
205
|
+
**Archive**:
|
|
206
|
+
- Para features/mejoras: OpenSpec mueve a `archive/` y extrae los campos del `.review-passed` a `review.yaml` dentro de cada spec afectado.
|
|
207
|
+
- Para bugs: archivado manual, crea `openspec/specs/fix-*/spec.md` en formato OpenSpec estandar + `review.yaml`.
|
|
208
|
+
- Una misma rama puede acumular multiples bugs, cada uno en su `fix-*/` independiente.
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Hooks automaticos
|
|
213
|
+
|
|
214
|
+
Se instalan en `.claude/settings.json` durante `init` / `update`. Solo aplican a Claude Code (Cursor ignora estos hooks, el resto de la metodologia funciona igual).
|
|
334
215
|
|
|
335
216
|
| Hook | Evento | Que hace |
|
|
336
|
-
|
|
337
|
-
| `check-update` | `SessionStart` |
|
|
338
|
-
| `compact-bash` | `PreToolUse` (Bash) | Reescribe
|
|
339
|
-
| `check-review` | `PreToolUse` (Bash) | Intercepta `git push` y
|
|
340
|
-
|
|
341
|
-
#### Flujo del hook de review
|
|
342
|
-
|
|
343
|
-
El hook unicamente decide `allow` o `block`. La ejecucion automatica de `/refacil:review` la realiza `/refacil:up-code`, no el hook.
|
|
344
|
-
|
|
345
|
-
```
|
|
346
|
-
git push (manual o via /refacil:up-code)
|
|
347
|
-
│
|
|
348
|
-
▼
|
|
349
|
-
Hook check-review se dispara
|
|
350
|
-
│
|
|
351
|
-
▼
|
|
352
|
-
Busca carpetas activas en openspec/changes/ (excluye archive/)
|
|
353
|
-
│
|
|
354
|
-
▼
|
|
355
|
-
¿Todas tienen .review-passed?
|
|
356
|
-
│
|
|
357
|
-
├─ SI ──► allow → el push procede
|
|
358
|
-
│
|
|
359
|
-
└─ NO ──► block → emite mensaje instructivo:
|
|
360
|
-
• 1 pendiente → sugiere "/refacil:review <cambio>"
|
|
361
|
-
• N pendientes → lista cambios y pide seleccionar uno
|
|
362
|
-
|
|
363
|
-
Capa adicional cuando se usa /refacil:up-code:
|
|
364
|
-
/refacil:up-code detecta el faltante ANTES de llamar a git push,
|
|
365
|
-
invoca /refacil:review y solo entonces intenta el push.
|
|
366
|
-
• Si el review APRUEBA → genera .review-passed → push procede
|
|
367
|
-
• Si requiere CORRECCIONES → informa al usuario, no pushea
|
|
368
|
-
```
|
|
369
|
-
|
|
370
|
-
#### Evidencia de review
|
|
217
|
+
|---|---|---|
|
|
218
|
+
| `check-update` | `SessionStart` | Chequea nueva version en npm, la instala, y **sincroniza el bloque `compact-guidance`** en `AGENTS.md`. |
|
|
219
|
+
| `compact-bash` | `PreToolUse` (Bash) | Reescribe silenciosamente comandos Bash bare via `updatedInput`. Sin turnos extra, sin que Claude vea el cambio. Requiere Claude Code >= 2.1.89. |
|
|
220
|
+
| `check-review` | `PreToolUse` (Bash) | Intercepta `git push` y bloquea si falta `.review-passed` en algun cambio activo. |
|
|
371
221
|
|
|
372
|
-
|
|
222
|
+
### Gate de review en el push
|
|
373
223
|
|
|
374
224
|
```
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
225
|
+
┌──────────────────────────────┐
|
|
226
|
+
│ Dev ejecuta /refacil:up-code │
|
|
227
|
+
│ o git push manual │
|
|
228
|
+
└──────────────┬───────────────┘
|
|
229
|
+
│
|
|
230
|
+
┌──────────────────┴──────────────────┐
|
|
231
|
+
│ Via /refacil:up-code │ git push directo
|
|
232
|
+
▼ ▼
|
|
233
|
+
┌─────────────────────┐ ┌───────────────────────┐
|
|
234
|
+
│ up-code detecta │ │ Hook check-review │
|
|
235
|
+
│ falta .review-passed│ │ (PreToolUse en Bash) │
|
|
236
|
+
│ INVOCA /refacil: │ │ Verifica .review- │
|
|
237
|
+
│ review │ │ passed en changes/* │
|
|
238
|
+
└─────────┬───────────┘ └──────────┬────────────┘
|
|
239
|
+
│ │
|
|
240
|
+
▼ ▼
|
|
241
|
+
┌──────────────┐ ┌─────────────────┐
|
|
242
|
+
│ ¿Review OK? │ │ ¿Falta alguno? │
|
|
243
|
+
└──┬────────┬──┘ └──┬───────────┬──┘
|
|
244
|
+
SI│ NO│ SI│ NO│
|
|
245
|
+
▼ ▼ ▼ ▼
|
|
246
|
+
push OK informa + block + allow
|
|
247
|
+
no pushea instruccion push
|
|
385
248
|
```
|
|
386
249
|
|
|
387
|
-
|
|
250
|
+
### Hook `compact-bash` — rewrite silencioso de comandos
|
|
388
251
|
|
|
389
|
-
|
|
252
|
+
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.
|
|
390
253
|
|
|
391
|
-
|
|
254
|
+
**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.
|
|
392
255
|
|
|
393
|
-
**
|
|
256
|
+
**Escape**: prefija `COMPACT=0` al comando (`COMPACT=0 git log`).
|
|
394
257
|
|
|
395
|
-
|
|
258
|
+
**Reglas activas — git, tests, docker logs**:
|
|
396
259
|
|
|
397
|
-
|
|
|
260
|
+
| Bare | Reescrito a | Ahorro |
|
|
398
261
|
|---|---|---|
|
|
399
262
|
| `git log` | `git log --oneline -20` | ~85% |
|
|
400
263
|
| `git status` | `git status -s` | ~70% |
|
|
401
264
|
| `git diff` (sin args) | `git diff --stat` | ~80% |
|
|
402
265
|
| `git show` | `git show --stat` | ~70% |
|
|
403
|
-
| `docker logs <
|
|
266
|
+
| `docker logs <c>` | `docker logs --tail 100 <c>` | ~80% |
|
|
404
267
|
| `npm test` / `yarn test` / `pnpm test` | `… 2>&1 \| tail -80` | ~90% |
|
|
405
268
|
| `jest` | `jest --silent --reporters=summary` | ~85% |
|
|
406
269
|
| `pytest` | `pytest -q` | ~60% |
|
|
407
270
|
|
|
408
|
-
|
|
271
|
+
**Reglas activas — linters, type checkers, build, sistema**:
|
|
409
272
|
|
|
410
|
-
|
|
|
273
|
+
| Bare | Reescrito a | Ahorro |
|
|
411
274
|
|---|---|---|
|
|
412
275
|
| `eslint` | `eslint . --format compact --quiet` | ~70% |
|
|
413
276
|
| `eslint <path>` | `eslint <path> --format compact` | ~60% |
|
|
414
277
|
| `biome check` | `biome check --reporter=summary` | ~65% |
|
|
415
278
|
| `tsc` / `npx tsc …` | `… 2>&1 \| head -80` | variable |
|
|
416
|
-
| `prettier --check <
|
|
279
|
+
| `prettier --check <p>` | `prettier --check <p> --loglevel warn` | ~50% |
|
|
417
280
|
| `npm audit` | `npm audit 2>&1 \| tail -10` | ~80% |
|
|
418
281
|
| `npm ls` | `npm ls --depth=0` | ~90% |
|
|
419
|
-
| `cargo build
|
|
282
|
+
| `cargo build / test / check` | `… --quiet` | ~50% |
|
|
420
283
|
| `go test …` (sin flags) | `… 2>&1 \| tail -80` | ~70% |
|
|
421
284
|
| `mvn test` | `mvn test -q` | ~60% |
|
|
422
285
|
| `./gradlew test` / `gradle test` | `… -q` | ~60% |
|
|
423
286
|
| `ps aux` | `ps -eo pid,pcpu,pmem,comm \| head -30` | ~80% |
|
|
424
287
|
|
|
425
|
-
**
|
|
288
|
+
**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).
|
|
426
289
|
|
|
427
|
-
|
|
290
|
+
### Bloque `compact-guidance` en AGENTS.md
|
|
428
291
|
|
|
429
|
-
|
|
292
|
+
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.).
|
|
430
293
|
|
|
431
|
-
|
|
294
|
+
- Delimitado por `<!-- refacil-sdd-ai:compact-guidance:start -->` y `...:end -->`
|
|
295
|
+
- Fuente de verdad: `templates/compact-guidance.md`
|
|
296
|
+
- Sincroniza en: `init`, `update`, y hook `check-update` (cada SessionStart)
|
|
297
|
+
- Si `AGENTS.md` no existe, no se crea a espaldas del usuario
|
|
432
298
|
|
|
433
|
-
|
|
434
|
-
refacil-sdd-ai compact stats # estadisticas completas (hook + ya-compacto) + tokens estimados + USD
|
|
435
|
-
refacil-sdd-ai compact disable # desactiva el hook sin desinstalar
|
|
436
|
-
refacil-sdd-ai compact enable # reactiva el hook
|
|
437
|
-
refacil-sdd-ai compact clear-log # limpia ~/.refacil-sdd-ai/compact.log
|
|
438
|
-
```
|
|
299
|
+
> **No editar manualmente** entre los marcadores. Se sobrescribe en la proxima sesion.
|
|
439
300
|
|
|
440
|
-
|
|
301
|
+
---
|
|
441
302
|
|
|
442
|
-
|
|
303
|
+
## Reglas metodologicas transversales
|
|
443
304
|
|
|
444
|
-
|
|
445
|
-
Claude emite "git log"
|
|
446
|
-
│
|
|
447
|
-
▼
|
|
448
|
-
Hook compact-bash recibe tool_input via stdin (JSON)
|
|
449
|
-
│
|
|
450
|
-
▼
|
|
451
|
-
¿Matchea alguna regla y no tiene intent flags?
|
|
452
|
-
│
|
|
453
|
-
├─ SI ──► stdout JSON:
|
|
454
|
-
│ {
|
|
455
|
-
│ "hookSpecificOutput": {
|
|
456
|
-
│ "hookEventName": "PreToolUse",
|
|
457
|
-
│ "permissionDecision": "allow",
|
|
458
|
-
│ "updatedInput": { "command": "git log --oneline -20", ... },
|
|
459
|
-
│ "permissionDecisionReason": "compact-bash: git log → --oneline -20"
|
|
460
|
-
│ }
|
|
461
|
-
│ }
|
|
462
|
-
│ Claude Code ejecuta el comando reescrito. Claude no lo ve.
|
|
463
|
-
│
|
|
464
|
-
└─ NO ──► stdout vacio → Claude Code ejecuta el comando original.
|
|
465
|
-
```
|
|
305
|
+
Definidas en `skills/prereqs/METHODOLOGY-CONTRACT.md`:
|
|
466
306
|
|
|
467
|
-
|
|
307
|
+
- **Estados del flujo**: `READY_FOR_APPLY` / `VERIFY` / `REVIEW` / `ARCHIVE` / `MERGE` — cada transicion valida prerequisitos.
|
|
308
|
+
- **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.
|
|
309
|
+
- **Tests multi-stack**: se detecta el comando real (no hardcodea `npm test`).
|
|
310
|
+
- **`AGENTS.md` por perfil** (`openspec` vs `agents`): la metodologia respeta ambos.
|
|
311
|
+
- **Modo de salida**: conciso por defecto, detallado bajo demanda.
|
|
468
312
|
|
|
469
|
-
|
|
313
|
+
---
|
|
470
314
|
|
|
471
|
-
|
|
472
|
-
- Delimitado por marcadores HTML: `<!-- refacil-sdd-ai:compact-guidance:start -->` y `<!-- refacil-sdd-ai:compact-guidance:end -->`
|
|
473
|
-
- Fuente de verdad: `templates/compact-guidance.md` dentro del paquete
|
|
474
|
-
- Se sincroniza automaticamente en tres momentos:
|
|
475
|
-
1. `refacil-sdd-ai init` (al instalar)
|
|
476
|
-
2. `refacil-sdd-ai update` (al actualizar manualmente)
|
|
477
|
-
3. Hook `check-update` en cada `SessionStart` (garantiza que repos ya instalados reciban las guias nuevas sin intervencion manual)
|
|
478
|
-
- Si `AGENTS.md` aun no existe (el usuario no ha corrido `/refacil:setup`), la sincronizacion no hace nada — no se crea el archivo a espaldas del usuario
|
|
479
|
-
- `refacil-sdd-ai clean` remueve el bloque de forma limpia
|
|
315
|
+
## refacil-bus — chat room entre agentes
|
|
480
316
|
|
|
481
|
-
|
|
317
|
+
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.
|
|
482
318
|
|
|
483
|
-
**
|
|
319
|
+
**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.
|
|
484
320
|
|
|
485
|
-
|
|
486
|
-
Nueva sesion de Claude Code
|
|
487
|
-
│
|
|
488
|
-
▼
|
|
489
|
-
Hook SessionStart → ejecuta "refacil-sdd-ai check-update"
|
|
490
|
-
│
|
|
491
|
-
├─► syncCompactGuidance()
|
|
492
|
-
│ │
|
|
493
|
-
│ ├─ AGENTS.md no existe → skip (sin ruido)
|
|
494
|
-
│ ├─ sin marcadores → append del bloque al final
|
|
495
|
-
│ ├─ con marcadores → reemplaza contenido entre ellos
|
|
496
|
-
│ └─ contenido identico → no-op (no ensucia git status)
|
|
497
|
-
│
|
|
498
|
-
└─► chequeo de version npm
|
|
499
|
-
│
|
|
500
|
-
└─ si hay version nueva → npm update -g + refacil-sdd-ai update
|
|
501
|
-
(que vuelve a sincronizar el bloque)
|
|
502
|
-
```
|
|
321
|
+
**Propiedades**:
|
|
503
322
|
|
|
504
|
-
|
|
323
|
+
- 100% local: nada sale de `127.0.0.1`. Sin cuentas, sin servicio compartido.
|
|
324
|
+
- Zero config: el broker se auto-arranca la primera vez que una skill lo necesita (`127.0.0.1:7821`, fallback 7822/7823).
|
|
325
|
+
- ~40 MB RAM, 0% CPU idle. Persistencia: `~/.refacil-sdd-ai/bus/<sala>/inbox.jsonl` (rotacion 7 dias).
|
|
326
|
+
- Mismas skills en Claude Code y Cursor.
|
|
505
327
|
|
|
506
|
-
|
|
507
|
-
2. **`/refacil:setup`** (en Claude Code o Cursor) instala OpenSpec, analiza el repo y genera un `AGENTS.md` personalizado
|
|
508
|
-
3. Las demas skills (`propose`, `apply`, `test`, etc.) leen `AGENTS.md` para entender las convenciones del proyecto
|
|
509
|
-
4. `/refacil:up-code` verifica que el review se haya completado antes de pushear — si falta, ejecuta `/refacil:review` automaticamente
|
|
510
|
-
5. En Claude Code, los hooks agregan una capa extra: auto-actualizacion de version al iniciar sesion y bloqueo de push sin review
|
|
511
|
-
|
|
512
|
-
```
|
|
513
|
-
refacil-sdd-ai init → Skills en .claude/ y .cursor/
|
|
514
|
-
CLAUDE.md y .cursorrules creados
|
|
515
|
-
Hooks configurados en .claude/settings.json
|
|
516
|
-
|
|
517
|
-
/refacil:setup → OpenSpec instalado
|
|
518
|
-
AGENTS.md generado (analisis automatico del repo)
|
|
519
|
-
+ bloque compact-guidance inyectado automaticamente
|
|
520
|
-
|
|
521
|
-
/refacil:propose → Artefactos en openspec/changes/
|
|
522
|
-
/refacil:apply → Codigo implementado
|
|
523
|
-
/refacil:test → Tests generados
|
|
524
|
-
/refacil:verify → Validacion PASS/FAIL (puede aplicar fixes con aprobacion)
|
|
525
|
-
/refacil:review → Review con checklist + .review-passed si aprueba
|
|
526
|
-
/refacil:bug → Fix + trazabilidad en openspec/changes/fix-*/summary.md
|
|
527
|
-
/refacil:archive → Cambio archivado + specs sincronizadas
|
|
528
|
-
(bugs: crea openspec/specs/fix-*/spec.md OpenSpec + review.yaml)
|
|
529
|
-
/refacil:up-code → Verifica review (si falta lo ejecuta) + push a rama
|
|
530
|
-
```
|
|
531
|
-
|
|
532
|
-
## Que se instala en tu repo
|
|
533
|
-
|
|
534
|
-
```
|
|
535
|
-
.claude/skills/refacil-*/ # Claude Code (refacil-prereqs incluye OPENSPEC-DELTAS.md)
|
|
536
|
-
.claude/settings.json # Hooks automaticos (check-update + check-review)
|
|
537
|
-
.cursor/skills/refacil-*/ # Cursor — copia equivalente
|
|
538
|
-
.claude/skills/refacil-setup/troubleshooting.md # guia incluida en refacil-setup si falla install/PATH
|
|
539
|
-
CLAUDE.md # Claude Code — apunta a AGENTS.md
|
|
540
|
-
.cursorrules # Cursor — apunta a AGENTS.md
|
|
541
|
-
AGENTS.md # Generado por /refacil:setup (NO por el CLI)
|
|
542
|
-
# Incluye bloque compact-guidance auto-gestionado por el hook SessionStart
|
|
543
|
-
openspec/ # Generado por /refacil:setup via OpenSpec
|
|
544
|
-
```
|
|
545
|
-
|
|
546
|
-
## Desinstalar
|
|
328
|
+
**Arranque rapido**:
|
|
547
329
|
|
|
548
330
|
```bash
|
|
549
|
-
#
|
|
550
|
-
refacil-sdd-ai clean
|
|
551
|
-
# (tambien remueve hooks SDD-AI de .claude/settings.json)
|
|
552
|
-
|
|
553
|
-
# Desinstalar paquete global (opcional)
|
|
554
|
-
npm uninstall -g refacil-sdd-ai
|
|
555
|
-
```
|
|
556
|
-
|
|
557
|
-
## refacil-bus
|
|
558
|
-
|
|
559
|
-
Chat room local entre agentes. Permite que distintas sesiones de Claude Code o Cursor corriendo en repos diferentes se coordinen por texto plano — **sin compartir archivos, contexto ni tokens entre repos**. Cada agente responde desde el conocimiento de su propio repositorio.
|
|
560
|
-
|
|
561
|
-
El broker corre solo en `127.0.0.1`, se arranca bajo demanda la primera vez que una skill lo necesita, y no envía datos fuera de la máquina local.
|
|
562
|
-
|
|
563
|
-
### Instalación y primer arranque
|
|
564
|
-
|
|
565
|
-
No requiere pasos extra: `refacil-sdd-ai init` ya copia las skills del bus junto con el resto. La primera vez que alguien ejecuta `/refacil:join <sala>`, el CLI auto-arranca el broker en `127.0.0.1:7821` (fallback 7822 / 7823 si están ocupados).
|
|
566
|
-
|
|
567
|
-
### Ejemplos de uso
|
|
568
|
-
|
|
569
|
-
**Ejemplo A — Conversación LLM ↔ LLM automática**
|
|
570
|
-
|
|
571
|
-
```
|
|
572
|
-
# Terminal 1 — repo payments-api (Claude Code)
|
|
573
|
-
/refacil:join refacil-main
|
|
574
|
-
# -> broadcast: "payments-api se unió. Stack: NestJS. Para consultarme: /refacil:ask @payments-api ..."
|
|
575
|
-
|
|
576
|
-
# Terminal 2 — repo frontend-refacil (Cursor)
|
|
331
|
+
# En cada repo, una vez
|
|
577
332
|
/refacil:join refacil-main
|
|
578
|
-
#
|
|
579
|
-
|
|
580
|
-
# Dev del frontend delega su sesion a atender el bus:
|
|
581
|
-
"atiende el bus"
|
|
582
|
-
# LLM ejecuta: /refacil:attend (queda escuchando sin tope)
|
|
583
|
-
|
|
584
|
-
# Dev de payments trabaja en una feature:
|
|
585
|
-
"crea el endpoint POST /refund y cuando necesites saber
|
|
586
|
-
como lo va a consumir el front, preguntale"
|
|
587
|
-
|
|
588
|
-
# LLM de payments decide preguntar:
|
|
589
|
-
/refacil:ask @frontend-refacil "endpoint POST /refund devuelve
|
|
590
|
-
{ cartId, reference, status }. Que necesitas en el response?" --wait 180
|
|
591
|
-
|
|
592
|
-
# LLM del frontend (en attend) recibe, lee sus archivos, responde:
|
|
593
|
-
/refacil:reply "necesito tambien amountRefunded y timestamp.
|
|
594
|
-
Formato camelCase."
|
|
595
|
-
|
|
596
|
-
# LLM de payments recibe la respuesta automaticamente y continua
|
|
597
|
-
# implementando el endpoint con los campos correctos. Sin que ningun
|
|
598
|
-
# dev haya intervenido en el intercambio.
|
|
333
|
+
# La primera vez el LLM escribe un bloque de presentacion en AGENTS.md
|
|
599
334
|
```
|
|
600
335
|
|
|
601
|
-
**
|
|
602
|
-
|
|
603
|
-
```
|
|
604
|
-
# LLM A: /refacil:ask @frontend "..." (sin --wait)
|
|
605
|
-
# -> "pregunta enviada. Usa /refacil:inbox cuando quieras ver respuestas"
|
|
606
|
-
|
|
607
|
-
# Dev B ve la pregunta en su panel watch (segunda terminal):
|
|
608
|
-
refacil-sdd-ai bus watch frontend
|
|
609
|
-
|
|
610
|
-
# Le dice a su LLM: "responde en el bus: <respuesta>"
|
|
611
|
-
# LLM B: /refacil:reply "..."
|
|
612
|
-
|
|
613
|
-
# Dev A ve la respuesta en SU watch y dice: "/refacil:inbox y continua"
|
|
614
|
-
# LLM A lee la respuesta y sigue el flujo original
|
|
615
|
-
```
|
|
616
|
-
|
|
617
|
-
**Ejemplo C — Observador puro (sin tokens)**
|
|
618
|
-
|
|
619
|
-
```
|
|
620
|
-
# Segunda terminal en cualquier repo:
|
|
621
|
-
refacil-sdd-ai bus watch payments-api
|
|
622
|
-
# Muestra todos los mensajes en vivo con menciones resaltadas (🔔).
|
|
623
|
-
# No consume tokens del LLM.
|
|
624
|
-
```
|
|
625
|
-
|
|
626
|
-
**Ejemplo D — Backlog asincronico**
|
|
627
|
-
|
|
628
|
-
```
|
|
629
|
-
# Dev A pregunta algo al bus, Dev B esta ocupado en otra tarea.
|
|
630
|
-
# La pregunta queda persistida en inbox.jsonl de la sala.
|
|
336
|
+
**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.
|
|
631
337
|
|
|
632
|
-
|
|
633
|
-
# -> /refacil:attend procesa las preguntas pendientes en orden FIFO.
|
|
338
|
+
**Observador puro** (0 tokens): `refacil-sdd-ai bus watch <session>` o `refacil-sdd-ai bus view` para la UI web.
|
|
634
339
|
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
### Patrones de uso recomendados
|
|
639
|
-
|
|
640
|
-
- **Sesion dedicada**: abrir una segunda ventana de Claude Code en el repo que atiende, invocar `/refacil:attend` ahi y dejar la primera libre para trabajo normal.
|
|
641
|
-
- **Atencion en rafagas**: invocar `/refacil:attend` solo cuando el watch panel muestre preguntas pendientes.
|
|
642
|
-
- **Observador pasivo**: `refacil-sdd-ai bus watch <session>` para supervisar sin consumir tokens del LLM.
|
|
643
|
-
- **Delegacion explicita al inicio del turno**: decirle al LLM *"si necesitas contexto del front/back/X, preguntale al bus"* para que use `/refacil:ask` cuando lo necesite.
|
|
644
|
-
|
|
645
|
-
### Problematica que resuelve
|
|
646
|
-
|
|
647
|
-
En un equipo con multiples microservicios y frontend, cada repo corre su propia sesion de Claude Code o Cursor. Antes de `refacil-bus`:
|
|
648
|
-
|
|
649
|
-
- El dev saltaba entre ventanas para consultar codigo de otro repo.
|
|
650
|
-
- El contexto del repo B se explicaba manualmente al agente del repo A — propenso a error y olvido.
|
|
651
|
-
- No habia forma de que el agente de un repo hiciera una pregunta puntual al agente de otro sin romper el flujo de trabajo del dev.
|
|
652
|
-
- Decisiones cruzadas (contrato de APIs, formato de eventos, nombres de campos) requerian reuniones o mensajes fuera de banda.
|
|
653
|
-
|
|
654
|
-
Con `refacil-bus`:
|
|
655
|
-
|
|
656
|
-
- Cada agente mantiene su contexto aislado en su propio repo y responde desde su conocimiento.
|
|
657
|
-
- La comunicacion entre agentes es texto plano, sin transferir archivos ni tokens.
|
|
658
|
-
- Una pregunta como *"¿como consumes el response de /pay?"* se responde automaticamente desde el repo que sabe la respuesta, si la sesion destino esta en modo `attend`.
|
|
659
|
-
- El dev mantiene trazabilidad de toda la conversacion cruzada en `inbox.jsonl` (rotado a 7 dias) y en el watch panel.
|
|
660
|
-
- La comunicacion es totalmente local — nada sale de la maquina del dev.
|
|
661
|
-
|
|
662
|
-
### Comandos de referencia
|
|
663
|
-
|
|
664
|
-
**Skills (invocables por el LLM)**:
|
|
665
|
-
|
|
666
|
-
| Skill | Uso |
|
|
667
|
-
|---|---|
|
|
668
|
-
| `/refacil:join <sala>` | Unirse o crear sala. Genera presentacion automatica (lee `AGENTS.md`). |
|
|
669
|
-
| `/refacil:say "..."` | Broadcast a la sala. |
|
|
670
|
-
| `/refacil:ask @nombre "..." [--wait N]` | Pregunta dirigida. `--wait N` bloquea hasta respuesta o N segundos. |
|
|
671
|
-
| `/refacil:reply "..."` | Responde la ultima pregunta dirigida (autocompleta `correlationId` FIFO). |
|
|
672
|
-
| `/refacil:attend` | Modo escucha activa. Recibe preguntas y las entrega al LLM para que las responda. |
|
|
673
|
-
| `/refacil:inbox` | Mensajes nuevos desde la ultima lectura. |
|
|
674
|
-
|
|
675
|
-
**CLI (para el dev)**:
|
|
676
|
-
|
|
677
|
-
```bash
|
|
678
|
-
refacil-sdd-ai bus start # Arranca el broker (opcional; las skills lo hacen solas)
|
|
679
|
-
refacil-sdd-ai bus stop # Detiene el broker
|
|
680
|
-
refacil-sdd-ai bus status # Puerto, pid, uptime
|
|
681
|
-
refacil-sdd-ai bus rooms # Salas activas + miembros
|
|
682
|
-
refacil-sdd-ai bus watch <session> # Panel en vivo en terminal (sin tokens)
|
|
683
|
-
refacil-sdd-ai bus view # Abre la UI web en el navegador (sin tokens)
|
|
684
|
-
refacil-sdd-ai bus leave # Salir de la sala (limpieza manual)
|
|
685
|
-
refacil-sdd-ai bus history [--n N] # Ultimos N mensajes
|
|
686
|
-
```
|
|
687
|
-
|
|
688
|
-
### Vista web en vivo — `bus view`
|
|
689
|
-
|
|
690
|
-
Ademas del panel en terminal (`bus watch`), refacil-bus incluye una UI web minimalista. Se abre con:
|
|
691
|
-
|
|
692
|
-
```bash
|
|
693
|
-
refacil-sdd-ai bus view
|
|
694
|
-
```
|
|
695
|
-
|
|
696
|
-
El broker (que ya expone el puerto `127.0.0.1:7821` para WebSocket) tambien sirve HTTP desde ahi — **cero deps nuevas, cero servicios externos**. El comando:
|
|
697
|
-
|
|
698
|
-
1. Auto-arranca el broker si no estaba corriendo
|
|
699
|
-
2. Abre el navegador por default del OS en `http://127.0.0.1:7821/`
|
|
700
|
-
3. Imprime la URL por stdout por si el navegador no abre solo
|
|
701
|
-
|
|
702
|
-
**Que muestra la UI**:
|
|
340
|
+
> **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).
|
|
341
|
+
>
|
|
342
|
+
> **Referencia tecnica completa**: ver [`REFACIL-BUS.md`](./REFACIL-BUS.md).
|
|
703
343
|
|
|
704
|
-
|
|
705
|
-
- Feed en vivo con todos los mensajes, coloreados por tipo (`ask` cian, `reply` verde, `say` ambar, `system` gris)
|
|
706
|
-
- Indicador visual de menciones dirigidas (`→ @<session>`)
|
|
707
|
-
- Emparejamiento ask/reply: cada pregunta muestra `pending` hasta que llega la respuesta con su `correlationId`, entonces cambia a `answered`
|
|
708
|
-
- Filtros por tipo (ocultar system, ver solo ask/reply, etc.)
|
|
709
|
-
- Totalizadores fijos abajo: mensajes recibidos, pares cerrados, preguntas pendientes
|
|
710
|
-
- Selector de sala o vista "todas las salas" en la sidebar
|
|
711
|
-
- Auto-scroll al ultimo mensaje; si haces scroll arriba para ver historial, no te interrumpe con los nuevos
|
|
344
|
+
### Limitaciones conocidas
|
|
712
345
|
|
|
713
|
-
|
|
346
|
+
- Mientras `/refacil:attend` esta activo, la sesion del IDE queda ocupada (abortar con ESC). Mitigacion: segunda ventana del mismo repo dedicada a atender.
|
|
347
|
+
- 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.
|
|
348
|
+
- Sin autenticacion: cualquier proceso local puede conectar al broker (por diseño, solo loopback y bajo demanda del dev).
|
|
714
349
|
|
|
715
|
-
|
|
350
|
+
---
|
|
716
351
|
|
|
717
|
-
|
|
352
|
+
## Que se instala en tu repo
|
|
718
353
|
|
|
719
354
|
```
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
355
|
+
.claude/skills/refacil-*/ # Skills Claude Code (incluye refacil-prereqs con OPENSPEC-DELTAS.md)
|
|
356
|
+
.claude/settings.json # Hooks: check-update + check-review + compact-bash
|
|
357
|
+
.cursor/skills/refacil-*/ # Skills Cursor (equivalente)
|
|
358
|
+
CLAUDE.md # Apunta a AGENTS.md
|
|
359
|
+
.cursorrules # Apunta a AGENTS.md
|
|
360
|
+
AGENTS.md # Generado por /refacil:setup (no por el CLI)
|
|
361
|
+
# Incluye bloque compact-guidance auto-gestionado
|
|
362
|
+
openspec/ # Generado por /refacil:setup via OpenSpec
|
|
725
363
|
```
|
|
726
364
|
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
### Limitaciones conocidas
|
|
730
|
-
|
|
731
|
-
- Mientras `/refacil:attend` esta activo, la sesion del IDE queda ocupada (el dev no puede usarla sin abortar con ESC). Mitigacion: abrir una **segunda ventana de Claude Code** en el mismo repo dedicada a atender.
|
|
732
|
-
- 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.
|
|
733
|
-
- Sin autenticacion: cualquier proceso local puede conectar al broker (por diseño, es solo loopback y a demanda del dev).
|
|
734
|
-
- Persistencia 7 dias en `~/.refacil-sdd-ai/bus/<sala>/inbox.jsonl` (rotacion lazy al escribir).
|
|
735
|
-
|
|
365
|
+
---
|
|
736
366
|
|
|
737
367
|
## Tecnologias
|
|
738
368
|
|
|
739
|
-
- [OpenSpec](https://github.com/Fission-AI/OpenSpec) —
|
|
740
|
-
- [AGENTS.md](https://agents.md/) —
|
|
369
|
+
- [OpenSpec](https://github.com/Fission-AI/OpenSpec) — framework de especificaciones
|
|
370
|
+
- [AGENTS.md](https://agents.md/) — estandar universal de instrucciones para IA
|
|
741
371
|
- [Claude Code](https://claude.ai/code) — CLI de Anthropic
|
|
742
372
|
- [Cursor](https://cursor.sh) — IDE con IA
|
|
743
373
|
|
package/package.json
CHANGED
package/skills/bug/SKILL.md
CHANGED
|
@@ -39,6 +39,12 @@ Si `$ARGUMENTS` no los trae, pregunta al usuario: comportamiento actual, esperad
|
|
|
39
39
|
|
|
40
40
|
Con la hipotesis confirmada: muestra el codigo exacto que falla, explica que condicion no se maneja, evalua impacto en otras zonas.
|
|
41
41
|
|
|
42
|
+
### Paso 3.5: Validar si la causa raiz es cross-repo (opcional)
|
|
43
|
+
|
|
44
|
+
Si durante la investigacion la causa raiz parece estar en la interaccion con otro repo (respuesta inesperada de una API externa, evento con formato distinto al esperado, contrato roto del lado del productor/consumidor), **no asumas como se comporta el otro lado** — aplica el protocolo de `refacil-prereqs/BUS-CROSS-REPO.md` para verificarlo con el agente del otro repo via el bus antes de proponer la correccion.
|
|
45
|
+
|
|
46
|
+
Usa la respuesta para confirmar si el fix va en este repo, en el otro, o en ambos (en cuyo caso el otro tendra su propio `/refacil:bug`).
|
|
47
|
+
|
|
42
48
|
### Paso 4: Proponer correccion
|
|
43
49
|
|
|
44
50
|
Presenta: cambio minimo, archivos a modificar, riesgos, alternativas (si existen). Espera aprobacion antes de implementar.
|
|
@@ -128,5 +134,6 @@ Este archivo es obligatorio para la trazabilidad del fix y permite que el hook d
|
|
|
128
134
|
- El fix debe ser MINIMO — no aprovechar para refactorizar
|
|
129
135
|
- Los tests de regresion son OBLIGATORIOS
|
|
130
136
|
- Si el bug es en produccion (critico), priorizar velocidad pero sin saltarse tests ni trazabilidad
|
|
137
|
+
- El Paso 3.5 (bus cross-repo) es **opcional** — solo invocarlo si la causa raiz parece cross-repo. Ver `refacil-prereqs/BUS-CROSS-REPO.md`.
|
|
131
138
|
- Responder en español con terminos tecnicos en ingles
|
|
132
139
|
- Usa modo de salida **conciso** por defecto y **detallado** solo si el usuario lo pide (ver `METHODOLOGY-CONTRACT.md`)
|
package/skills/explore/SKILL.md
CHANGED
|
@@ -24,7 +24,13 @@ Ademas de lo que OpenSpec explore reporta, agrega:
|
|
|
24
24
|
- Patrones especificos del proyecto que encontraste en AGENTS.md relevantes a la exploracion
|
|
25
25
|
- Convenciones que el usuario deberia tener en cuenta si planea hacer cambios en esa area
|
|
26
26
|
|
|
27
|
-
### Paso 3:
|
|
27
|
+
### Paso 3: Detectar dependencias cross-repo (opcional)
|
|
28
|
+
|
|
29
|
+
Si durante la exploracion detectas que este repo depende de codigo que NO vive aqui (APIs que consume de otro servicio, eventos que recibe/emite, colas compartidas, contratos con un front/back externo), **no asumas el comportamiento del otro lado** — aplica el protocolo de `refacil-prereqs/BUS-CROSS-REPO.md` para consultar al agente del otro repo via el bus.
|
|
30
|
+
|
|
31
|
+
Incorpora la respuesta al reporte como contexto cross-repo.
|
|
32
|
+
|
|
33
|
+
### Paso 4: Recomendar siguiente paso
|
|
28
34
|
|
|
29
35
|
Al final del reporte, sugiere:
|
|
30
36
|
- Si el usuario quiere hacer un cambio: "Ejecuta `/refacil:propose <descripcion>` para crear una propuesta"
|
|
@@ -33,3 +39,4 @@ Al final del reporte, sugiere:
|
|
|
33
39
|
## Reglas
|
|
34
40
|
|
|
35
41
|
- NO modifiques ningun archivo ni generes codigo; solo lectura e investigacion (idioma: ver `OPENSPEC-DELTAS.md`).
|
|
42
|
+
- El Paso 3 (bus cross-repo) es **opcional** — aplica solo si hay una dependencia cross-repo real. Ver `refacil-prereqs/BUS-CROSS-REPO.md`.
|
package/skills/guide/SKILL.md
CHANGED
|
@@ -25,9 +25,29 @@ Eres un guia **breve**: eliges el siguiente comando; el detalle de cada flujo es
|
|
|
25
25
|
6. Review de calidad → `/refacil:review`
|
|
26
26
|
7. Subir codigo y crear PR → `/refacil:up-code`
|
|
27
27
|
8. Configurar repo → `refacil-sdd-ai init` (global + por repo) y `/refacil:setup`
|
|
28
|
+
9. Coordinar con otros repos (sin copy/paste manual) → ver bloque **Bus entre agentes** abajo
|
|
28
29
|
|
|
29
30
|
> **Nota**: `/refacil:up-code` verifica que el review este aprobado (`.review-passed`). Si falta y hay un solo cambio pendiente, lanza `/refacil:review` automaticamente (sin re-ejecutar si no hay cambios nuevos). Si hay multiples cambios sin review, pide seleccion explicita. Toda integracion a ramas protegidas (incluyendo `testing`) requiere PR. Nunca se hacen ajustes directos en `master` o `main`. La validacion de rama se hace en `/refacil:apply` o `/refacil:bug`, no en `up-code`.
|
|
30
31
|
|
|
32
|
+
## Bus entre agentes (refacil-bus)
|
|
33
|
+
|
|
34
|
+
Para cuando el dev tiene varias ventanas de Claude Code / Cursor abiertas (una por repo) y necesita que los agentes se consulten entre si sin que el dev sea el transcriptor manual:
|
|
35
|
+
|
|
36
|
+
| Comando | Cuando usarlo |
|
|
37
|
+
|---------|---------------|
|
|
38
|
+
| `/refacil:join <sala>` | Primer paso: une esta sesion a una sala (crea el bloque de presentacion en `AGENTS.md` si falta). |
|
|
39
|
+
| `/refacil:say "..."` | Anuncio a toda la sala. |
|
|
40
|
+
| `/refacil:ask @<repo> "..." [--wait N]` | Pregunta dirigida a otro agente. Con `--wait N` bloquea hasta respuesta o N seg. |
|
|
41
|
+
| `/refacil:reply "..."` | Responde la ultima pregunta dirigida a esta sesion. |
|
|
42
|
+
| `/refacil:attend` | Deja esta sesion escuchando el bus: cuando llegue una pregunta dirigida, la respondes y vuelves a escuchar. |
|
|
43
|
+
| `/refacil:inbox` | Ver mensajes nuevos desde la ultima lectura. |
|
|
44
|
+
|
|
45
|
+
**Patron tipico**: antes de una tarea que puede necesitar contexto de otros repos, el dev va a las otras ventanas y dice *"atiende el bus"*. Luego en su repo de trabajo, `/refacil:ask @<otro-repo> "..." --wait 180` trae la respuesta automatica sin saltar entre ventanas.
|
|
46
|
+
|
|
47
|
+
Para supervision: `refacil-sdd-ai bus view` (UI web) o `refacil-sdd-ai bus watch <session>` (terminal). No consumen tokens.
|
|
48
|
+
|
|
49
|
+
Detalle completo en el README de refacil-sdd-ai (seccion `refacil-bus`).
|
|
50
|
+
|
|
31
51
|
## Tips (una linea por herramienta)
|
|
32
52
|
|
|
33
53
|
- **Claude Code:** comandos `/refacil:*` en el chat.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Consulta cross-repo via refacil-bus
|
|
2
|
+
|
|
3
|
+
Protocolo compartido para todas las skills que pueden necesitar contexto de otro repositorio durante su ejecucion (`explore`, `propose`, `verify`, `bug`).
|
|
4
|
+
|
|
5
|
+
## Cuando aplicar
|
|
6
|
+
|
|
7
|
+
Cada skill define su trigger propio (ver su `SKILL.md`). En general, aplica cuando la skill detecta que **necesita informacion que no vive en este repo** y asumirla arriesga un error: contratos de API, formato de eventos, comportamiento del consumidor/productor, colas compartidas.
|
|
8
|
+
|
|
9
|
+
**Regla de oro**: el bus es **opcional y no bloqueante**. No lo invoques si la pregunta se responde leyendo el codigo de este repo, o si no hay incertidumbre real cross-repo. Si el dev responde o aclara la duda directamente (verbalmente, por chat, con un link a docs, etc.), **la skill continua normalmente** — el bus solo es una de las vias posibles para resolver la incognita.
|
|
10
|
+
|
|
11
|
+
## Protocolo (3 pasos)
|
|
12
|
+
|
|
13
|
+
Cuando el trigger de la skill se cumpla:
|
|
14
|
+
|
|
15
|
+
1. **Verificar salas activas**: ejecuta `refacil-sdd-ai bus rooms` para ver las salas y sus miembros.
|
|
16
|
+
2. **Evaluar precondiciones**:
|
|
17
|
+
- **Si hay una sala activa Y el repo que necesitas consultar ya esta en ella**: puedes ejecutar `/refacil:ask @<nombre-repo> "pregunta concreta" --wait 180` directamente. **Informa al usuario antes de enviar** ("voy a preguntar a @X en la sala Y: ..."). Si el otro repo esta en `/refacil:attend` responde automatico; si no, el dev va a esa ventana y pide `/refacil:inbox`.
|
|
18
|
+
- **Si no hay sala, o el repo que necesitas no esta en ninguna**: **no crees la sala por tu cuenta**. Pide al usuario que ejecute `/refacil:join <nombre-sala>` en **esta** sesion y tambien en la sesion del otro repo (otra ventana de IDE). Ambos repos deben estar en la misma sala. Una vez confirmado, vuelve al paso 2.
|
|
19
|
+
|
|
20
|
+
Si el usuario no conoce el bus o no sabe como configurarlo, remitelo a `/refacil:guide` (seccion "Bus entre agentes") antes de intentar la consulta.
|
|
21
|
+
|
|
22
|
+
**Salida valida sin bus**: en cualquier punto del protocolo, si el dev responde o aclara la duda directamente, registra su respuesta como contexto y **continua con el flujo de la skill**. No insistas en usar el bus ni bloquees el avance esperando una confirmacion cross-repo que el dev ya respondio por otra via.
|
|
23
|
+
|
|
24
|
+
## Como usar la respuesta
|
|
25
|
+
|
|
26
|
+
Cada skill decide que hacer con la respuesta:
|
|
27
|
+
|
|
28
|
+
- `explore`: incorporarla al reporte como contexto cross-repo.
|
|
29
|
+
- `propose`: ajustar `specs.md` / `design.md` antes de revision humana.
|
|
30
|
+
- `verify`: incorporarla al reporte combinado como SUGGESTION; si revela un bug real, escalar a WARNING/CRITICAL.
|
|
31
|
+
- `bug`: usarla para confirmar si el fix va en este repo, en el otro, o en ambos (en cuyo caso el otro tendra su propio `/refacil:bug`).
|
|
32
|
+
|
|
33
|
+
## Que NO hacer
|
|
34
|
+
|
|
35
|
+
- No asumas el comportamiento del otro repo sin consultar.
|
|
36
|
+
- No ejecutes `/refacil:join` por tu cuenta — crear o unirse a una sala es decision del dev (implica que el otro repo tambien debe unirse desde su ventana).
|
|
37
|
+
- No ejecutes `/refacil:ask` sin antes verificar que la sala existe y el repo destino esta en ella. Si alguna precondicion falla, pide al dev que la resuelva.
|
|
38
|
+
- No insistas si el dev prefiere resolverlo por otra via (lectura directa, docs, pregunta verbal a un compañero).
|
package/skills/prereqs/SKILL.md
CHANGED
|
@@ -30,4 +30,8 @@ Solo requiere `AGENTS.md`. Si existe, leelo y aplica `compact-guidance` si esta
|
|
|
30
30
|
|
|
31
31
|
Convenciones Refacil al delegar a skills `openspec-*`: ver `OPENSPEC-DELTAS.md` (misma carpeta), leer junto a la skill OpenSpec que se invoque.
|
|
32
32
|
|
|
33
|
+
## BUS-CROSS-REPO.md
|
|
34
|
+
|
|
35
|
+
Protocolo compartido para consultar a otros repositorios via `refacil-bus`. Aplica en `explore`, `propose`, `verify` y `bug` cuando la skill detecta una dependencia cross-repo. Ver `BUS-CROSS-REPO.md` (misma carpeta).
|
|
36
|
+
|
|
33
37
|
Si faltan estos archivos, ejecuta `refacil-sdd-ai update` (o `init`).
|
package/skills/propose/SKILL.md
CHANGED
|
@@ -27,6 +27,12 @@ Si $ARGUMENTS ya es claro, no preguntes de nuevo.
|
|
|
27
27
|
2. Lee `OPENSPEC-DELTAS.md` en la carpeta `refacil-prereqs` (misma ruta dual que en prereqs).
|
|
28
28
|
3. Ejecuta la skill OpenSpec siguiendo sus instrucciones y aplicando los deltas Refacil para generar los artefactos (proposal, specs, design, tasks) en una sola pasada.
|
|
29
29
|
|
|
30
|
+
### Paso 2.5: Validar contratos cross-repo (opcional)
|
|
31
|
+
|
|
32
|
+
Si el cambio propuesto involucra un contrato con otro sistema (un endpoint que otro repo consume, un evento que otro repo emite o recibe, un formato de datos compartido, una cola o topico cross-servicio), **no asumas como luce el otro lado** — aplica el protocolo de `refacil-prereqs/BUS-CROSS-REPO.md` para validarlo con el agente del otro repo via el bus antes de cerrar los artefactos.
|
|
33
|
+
|
|
34
|
+
Usa la respuesta para ajustar `specs.md` / `design.md` antes de pasar a revision humana.
|
|
35
|
+
|
|
30
36
|
### Paso 3: Revision del desarrollador (Human-in-the-Loop)
|
|
31
37
|
|
|
32
38
|
**IMPORTANTE**: Este paso es OBLIGATORIO. El desarrollador debe revisar y aprobar los artefactos antes de implementar.
|
|
@@ -72,3 +78,4 @@ Siguiente paso: ejecuta /refacil:apply para implementar las tasks.
|
|
|
72
78
|
- Si el usuario pide que tambien implemente, responder: "La implementacion se hace con `/refacil:apply` despues de aprobar los artefactos."
|
|
73
79
|
- Siempre explorar el codebase ANTES de generar artefactos (para que el design sea realista)
|
|
74
80
|
- Los criterios de aceptacion deben ser especificos y testeables
|
|
81
|
+
- El Paso 2.5 (bus cross-repo) es **opcional** — solo invocarlo si el cambio toca un contrato con otro sistema. Ver `refacil-prereqs/BUS-CROSS-REPO.md`.
|
package/skills/verify/SKILL.md
CHANGED
|
@@ -49,6 +49,12 @@ Correcciones necesarias:
|
|
|
49
49
|
2. [issues de tests]
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
+
### Paso 3.5: Validar ambigüedades cross-repo (opcional)
|
|
53
|
+
|
|
54
|
+
Si durante la verificacion detectas que la spec no cubre algo relevante del lado de un consumidor o productor externo (formato que otro repo espera, evento que otro repo emite, comportamiento del consumidor bajo cierta condicion), y esa ambigüedad impide decidir si la implementacion es correcta, **no asumas** — aplica el protocolo de `refacil-prereqs/BUS-CROSS-REPO.md` para resolverlo con el agente del otro repo via el bus antes de cerrar el reporte.
|
|
55
|
+
|
|
56
|
+
Incorpora la respuesta al reporte combinado como SUGGESTION; si revela un bug real, escalalo a WARNING/CRITICAL.
|
|
57
|
+
|
|
52
58
|
### Paso 4: Resultado y siguiente paso
|
|
53
59
|
|
|
54
60
|
#### Si APROBADO (sin issues CRITICAL ni WARNING):
|
|
@@ -92,3 +98,4 @@ Lista los issues para que el usuario los corrija manualmente. Sugiere ejecutar `
|
|
|
92
98
|
- Ser estricto con los criterios de la spec
|
|
93
99
|
- Si algo no esta en la spec pero parece necesario, mencionarlo como SUGGESTION (observacion), no como CRITICAL/WARNING
|
|
94
100
|
- Usa modo de salida **conciso** por defecto y **detallado** solo si el usuario lo pide (ver `METHODOLOGY-CONTRACT.md`)
|
|
101
|
+
- El Paso 3.5 (bus cross-repo) es **opcional** — solo invocarlo si hay una ambigüedad real cross-repo que bloquea el veredicto. Ver `refacil-prereqs/BUS-CROSS-REPO.md`.
|
|
@@ -20,6 +20,23 @@ Skills identicas en `.claude/skills/refacil-*/` (Claude Code) y `.cursor/skills/
|
|
|
20
20
|
|
|
21
21
|
Flujo: `setup` → `propose` → `apply` → `test` → `verify` → `review` → `archive` → `up-code`
|
|
22
22
|
|
|
23
|
+
## Bus entre agentes (refacil-bus)
|
|
24
|
+
|
|
25
|
+
Canal local de texto plano entre sesiones de Claude Code / Cursor corriendo en distintos repos. Evita que el dev haga de transcriptor manual entre sus propios agentes.
|
|
26
|
+
|
|
27
|
+
| Comando | Descripcion |
|
|
28
|
+
|---------|-------------|
|
|
29
|
+
| `/refacil:join <sala>` | Crear o unirse a una sala. La primera vez genera un bloque de presentacion en `AGENTS.md`. |
|
|
30
|
+
| `/refacil:say "..."` | Anuncio a toda la sala. |
|
|
31
|
+
| `/refacil:ask @nombre "..." [--wait N]` | Pregunta dirigida a otra sesion. `--wait N` bloquea hasta respuesta o N seg. |
|
|
32
|
+
| `/refacil:reply "..."` | Responde la ultima pregunta dirigida (autocompleta `correlationId`). |
|
|
33
|
+
| `/refacil:attend` | Modo escucha activa: recibe preguntas y el LLM las responde, luego re-invoca para seguir escuchando. |
|
|
34
|
+
| `/refacil:inbox` | Ver mensajes nuevos desde la ultima lectura. |
|
|
35
|
+
|
|
36
|
+
Uso tipico: antes de arrancar una tarea que puede requerir contexto de otros repos, el dev pone al agente de cada otro repo en `/refacil:attend`. Despues, en su repo de trabajo, el LLM puede pedir contexto con `/refacil:ask @<repo> "..." --wait` y recibir la respuesta automaticamente sin que el dev salte entre ventanas.
|
|
37
|
+
|
|
38
|
+
CLI util para el dev: `refacil-sdd-ai bus view` (abre UI web en el navegador), `bus watch <session>` (panel en terminal), `bus status`, `bus rooms`. No consumen tokens.
|
|
39
|
+
|
|
23
40
|
## Eficiencia de tokens (automatica)
|
|
24
41
|
|
|
25
42
|
- El hook `check-update` en `SessionStart` sincroniza el bloque `compact-guidance` en `AGENTS.md`.
|