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 CHANGED
@@ -1,743 +1,373 @@
1
1
  # refacil-sdd-ai
2
2
 
3
- Metodologia **SDD-AI** (Specification-Driven Development with AI) empaquetada como herramienta CLI.
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 de comandos via `updatedInput`) o **Cursor**
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
- `refacil-sdd-ai init` verifica la version de Claude Code y muestra advertencia si es inferior. Con version < 2.1.89 el resto de la metodologia funciona, pero el hook `compact-bash` no tendra efecto (Claude Code ignora `updatedInput` en versiones antiguas).
16
+ ---
13
17
 
14
- ## Instalacion y Setup
18
+ ## Instalacion
15
19
 
16
- Se recomienda instalar **a nivel global** para no tener que instalar el paquete en cada repositorio donde se use la metodologia.
20
+ Recomendado: instalar globalmente una sola vez, y correr `init` por repo.
17
21
 
18
22
  ```bash
19
- # 1. Instalar de forma global (una sola vez)
23
+ # 1. Global (una vez)
20
24
  npm install -g refacil-sdd-ai
21
25
 
22
- # 2. En la raiz del repo donde quieras usar la metodologia:
26
+ # 2. En la raiz del repo
23
27
  refacil-sdd-ai init
24
- # Copia skills a .claude/ y .cursor/, crea CLAUDE.md y .cursorrules
28
+ # Copia skills a .claude/ y .cursor/, crea CLAUDE.md + .cursorrules, configura hooks
25
29
 
26
- # 3. IMPORTANTE: Reiniciar la sesion de Claude Code o Cursor
30
+ # 3. Reiniciar sesion de Claude Code o Cursor
27
31
  # (las skills nuevas no se detectan hasta reiniciar)
28
32
 
29
- # 4. En Claude Code o Cursor, ejecutar:
33
+ # 4. En el IDE
30
34
  /refacil:setup
31
- # Esto hace:
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 a una nueva version
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
- > **Nota**: `openspec init` tambien instala sus propios comandos (`opsx:*`) en `.claude/` y `.cursor/`. Esto es normal. Los `refacil:*` y `opsx:*` coexisten sin conflicto. El equipo debe usar `refacil:*` como interfaz principal.
45
+ En Claude Code el hook `check-update` hace esto automaticamente al iniciar sesion.
50
46
 
51
- ## Comandos del CLI
47
+ ### Desinstalar
52
48
 
53
49
  ```bash
54
- refacil-sdd-ai init # Instalar skills, hooks y crear configs en el repo actual
55
- refacil-sdd-ai update # Actualizar skills y hooks a la ultima version
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**: En una misma rama pueden corregirse multiples bugs. Cada uno genera su propia carpeta `fix-*` con su trazabilidad independiente.
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
- ### Explorar codigo
56
+ ---
162
57
 
163
- ```
164
- /refacil:explore "que quiero entender"
165
- ```
58
+ ## Comandos del CLI
166
59
 
167
- ## Diagrama de flujo completo
60
+ ### Gestion del paquete
168
61
 
169
- Vista unica del ciclo de vida de un cambio — desde la necesidad hasta el PR integrado.
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
- ### Gate de review en el push
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
- Vista del mecanismo de dos capas que protege `git push`:
77
+ ### Control del rewrite de comandos (`compact-bash`)
271
78
 
272
- ```
273
- ┌──────────────────────────────┐
274
- Dev ejecuta /refacil:up-code
275
- │ o git push manual │
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
- ## Reglas metodologicas transversales
86
+ ### Bus de agentes (`bus`)
305
87
 
306
- Para mantener consistencia entre todas las skills, el paquete define un contrato metodologico unico en `skills/prereqs/METHODOLOGY-CONTRACT.md`:
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
- - Estados del flujo (Ready for Propose/Apply/Verify/Review/Archive/Merge)
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
- ### Politica de ramas (resumen)
107
+ ---
315
108
 
316
- - Toda rama nueva de trabajo (`feature/*`, `fix/*`, `hotfix/*`, etc.) se crea desde `develop` o `dev` actualizado.
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
- ### Checkpoints de estado (DoR/DoD)
111
+ Todas se invocan como `/refacil:<nombre>` en Claude Code o Cursor.
322
112
 
323
- Antes de avanzar de etapa, valida estos estados:
113
+ ### Ciclo SDD
324
114
 
325
- - `READY_FOR_APPLY`: artefactos SDD completos + aprobacion explicita
326
- - `READY_FOR_VERIFY`: implementacion terminada y enfocada al alcance
327
- - `READY_FOR_REVIEW`: verify ejecutado y bloqueantes tratados
328
- - `READY_FOR_ARCHIVE`: cambio funcionalmente cerrado + review aprobado (`.review-passed`)
329
- - `READY_FOR_MERGE`: review aprobado (`.review-passed`) y PR creado hacia la rama destino protegida
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
- ### Hooks automaticos
129
+ ### Bus de agentes
332
130
 
333
- El paquete instala hooks en `.claude/settings.json` durante `init` y `update`:
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` | Verifica si hay nueva version del paquete en npm y la instala automaticamente. Tambien **sincroniza el bloque `compact-guidance`** en `AGENTS.md` (ver [Eficiencia de tokens](#eficiencia-de-tokens-bloque-auto-gestionado-en-agentsmd)). |
338
- | `compact-bash` | `PreToolUse` (Bash) | Reescribe **silenciosamente** comandos Bash bare (git/tests/docker logs) a su forma compacta usando `updatedInput`. Sin turnos extra y sin que Claude vea el cambio. Requiere Claude Code >= 2.1.89. |
339
- | `check-review` | `PreToolUse` (Bash) | Intercepta `git push` y verifica que exista `.review-passed` en cada cambio activo de `openspec/changes/`. Si falta, **bloquea el push** y emite instrucciones para ejecutar `/refacil:review`. El hook no invoca skills por si mismo. |
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
- Cuando `/refacil:review` aprueba un cambio, crea el archivo `.review-passed` en la carpeta del cambio:
222
+ ### Gate de review en el push
373
223
 
374
224
  ```
375
- openspec/changes/mi-feature/
376
- ├── proposal.md
377
- ├── design.md
378
- ├── tasks.md
379
- ├── specs.md
380
- └── .review-passed ← evidencia de review aprobado (JSON)
381
-
382
- openspec/changes/fix-session-timeout-redis/
383
- ├── summary.md ← trazabilidad del bug fix
384
- └── .review-passed ← evidencia de review aprobado (JSON)
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
- El archivo `.review-passed` contiene: veredicto, fecha, resumen, cantidad de hallazgos y si hubo blockers.
250
+ ### Hook `compact-bash` rewrite silencioso de comandos
388
251
 
389
- ### Hook `compact-bash` rewrite silencioso de comandos Bash
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
- Segunda capa de reduccion de tokens, **sin costo conversacional**. Antes de que Claude Code ejecute un comando Bash, el hook `compact-bash` inspecciona el comando y, si matchea una regla, lo reescribe usando el campo `updatedInput` del hook. Claude **no ve el cambio**, no hay turno adicional, no hay bloqueo.
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
- **Reglas activas (19 reglas)**:
256
+ **Escape**: prefija `COMPACT=0` al comando (`COMPACT=0 git log`).
394
257
 
395
- Fase 1 — git, tests base, docker logs:
258
+ **Reglas activas — git, tests, docker logs**:
396
259
 
397
- | Comando bare | Reescrito a | Ahorro tipico |
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 <container>` | `docker logs --tail 100 <container>` | ~80%+ |
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
- Fase 2A — linters, type checkers, build, sistema:
271
+ **Reglas activas — linters, type checkers, build, sistema**:
409
272
 
410
- | Comando bare | Reescrito a | Ahorro tipico |
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 <path>` | `prettier --check <path> --loglevel warn` | ~50% |
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` / `cargo test` / `cargo check` | `… --quiet` | ~50% |
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
- **Detector de intencion**: si el comando ya tiene flags explicitos (`git log -p`, `git log --all`, `jest --watch`, `docker logs --tail 50 …`), el hook **no interviene**. Tu intencion manda.
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
- **Escape mecanismo**: prefija `COMPACT=0` al comando para desactivar el rewrite puntualmente: `COMPACT=0 git log`.
290
+ ### Bloque `compact-guidance` en AGENTS.md
428
291
 
429
- **Pipes y redirecciones** en test bare: si ya hay `|` o `>`, el detector no las envuelve de nuevo.
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
- **Subcomandos de control**:
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
- ```bash
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
- **Telemetria**: cada evento genera una linea JSON en `~/.refacil-sdd-ai/compact.log` con timestamp, ruleId y estimacion de tokens. Hay dos tipos de evento: `hook_rewrite` (el hook reescribe) y `already_compact` (el comando ya llega compacto, asumido por skill/agente). `compact stats` muestra ambos por defecto y calcula costo estimado (a razon de $3/MTok input de Sonnet, conservador). La telemetria es local; nada se envia a la nube.
301
+ ---
441
302
 
442
- **Flujo del hook**:
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
- ### Eficiencia de tokens (bloque auto-gestionado en AGENTS.md)
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
- La metodologia SDD-AI genera consumo elevado de contexto (artefactos, specs, prompts de skills). Para compensarlo, `refacil-sdd-ai` mantiene un bloque de guia de eficiencia de tokens dentro de `AGENTS.md` que instruye a la IA sobre como pedir salidas compactas (Read con offset/limit, `git log --oneline`, tests solo con failures, etc.).
313
+ ---
470
314
 
471
- **Caracteristicas**:
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
- > **IMPORTANTE**: No edites manualmente el contenido entre los marcadores. Cualquier cambio se sobrescribira en la proxima sesion. Si tienes sugerencias sobre reglas de eficiencia, proponlas al paquete (`templates/compact-guidance.md`).
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
- **Flujo del refresh automatico**:
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
- ## Como funciona
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
- 1. **`refacil-sdd-ai init`** copia las skills a `.claude/skills/` y `.cursor/skills/`, crea `CLAUDE.md` + `.cursorrules`, y configura hooks automaticos en `.claude/settings.json`
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
- # Eliminar skills del repo actual
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
- # -> broadcast: "frontend-refacil se unió. Stack: React/Vite. Para consultarme: /refacil:ask @frontend-refacil ..."
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
- **Ejemplo B Modo pasivo con dev como bridge ligero**
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
- # Mas tarde, Dev B dice a su LLM: "atiende el bus"
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
- # Dev A si tenia --wait y expiro: usa /refacil:inbox para recuperar la respuesta.
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
- - Sidebar con lista de salas activas y sus miembros
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
- **Util para**: presentar la feature al equipo, hacer demos didacticas, supervisar sesiones en paralelo mientras trabajas, ver en tiempo real que pasa cuando dos agentes conversan. **No consume tokens** es un observador puro vía WebSocket read-only.
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
- ### Presentacion automatica al hacer join
350
+ ---
716
351
 
717
- Al unirse a una sala, cada sesion envia un mensaje de presentacion. Para que sea util, la skill `/refacil:join` instruye al LLM a generar un bloque en `AGENTS.md` la primera vez, entre los marcadores:
352
+ ## Que se instala en tu repo
718
353
 
719
354
  ```
720
- <!-- refacil-bus:presentation:start -->
721
- Stack: <framework + lenguaje>
722
- Dominio: <que hace este repo en 1-2 lineas>
723
- Preguntame sobre: <lista corta de areas donde este repo es fuente de verdad>
724
- <!-- refacil-bus:presentation:end -->
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
- El CLI prioriza ese bloque literal. Si no existe, hace fallback a `package.json` (name + description) + primer parrafo de `AGENTS.md`. El bloque queda versionado en el repo y cualquier dev puede ajustarlo.
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) — Framework de especificaciones
740
- - [AGENTS.md](https://agents.md/) — Estandar universal de instrucciones para IA
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "refacil-sdd-ai",
3
- "version": "2.9.0",
3
+ "version": "2.10.0",
4
4
  "description": "SDD-AI: Specification-Driven Development with AI — metodologia de desarrollo con IA usando OpenSpec, Claude Code y Cursor",
5
5
  "bin": {
6
6
  "refacil-sdd-ai": "./bin/cli.js"
@@ -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`)
@@ -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: Recomendar siguiente paso
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`.
@@ -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).
@@ -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`).
@@ -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`.
@@ -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`.