refacil-sdd-ai 2.9.1 → 3.0.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,389 @@
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** y **sub-agentes** para **Claude Code** y **Cursor** que guian al desarrollador por un flujo estructurado de desarrollo usando **OpenSpec** como base de especificaciones, mas un **bus local** para que los agentes de distintos repos se comuniquen entre si.
6
+
7
+ ---
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
50
+ refacil-sdd-ai clean # en el repo (elimina skills + hooks SDD-AI)
51
+ npm uninstall -g refacil-sdd-ai
65
52
  ```
66
53
 
67
- ## Skills disponibles
54
+ > **Nota**: `openspec init` tambien instala sus comandos `opsx:*`. Coexisten sin conflicto con los `refacil:*`. Usar siempre `refacil:*` como interfaz principal.
68
55
 
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
- >
56
+ ---
117
57
 
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
- ```
58
+ ## Comandos del CLI
134
59
 
135
- ### Bug fix
60
+ ### Gestion del paquete
136
61
 
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
153
- ```
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 |
154
68
 
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.
69
+ ### Hooks internos (invocados automaticamente, no manual)
160
70
 
161
- ### Explorar codigo
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` |
162
76
 
163
- ```
164
- /refacil:explore "que quiero entender"
165
- ```
77
+ ### Control del rewrite de comandos (`compact-bash`)
166
78
 
167
- ## Diagrama de flujo completo
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` |
168
85
 
169
- Vista unica del ciclo de vida de un cambio — desde la necesidad hasta el PR integrado.
86
+ ### Bus de agentes (`bus`)
170
87
 
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
- ```
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 |
267
104
 
268
- ### Gate de review en el push
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.
269
106
 
270
- Vista del mecanismo de dos capas que protege `git push`:
107
+ ---
271
108
 
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
- ```
109
+ ## Skills disponibles en el IDE
303
110
 
304
- ## Reglas metodologicas transversales
111
+ Todas se invocan como `/refacil:<nombre>` en Claude Code o Cursor.
305
112
 
306
- Para mantener consistencia entre todas las skills, el paquete define un contrato metodologico unico en `skills/prereqs/METHODOLOGY-CONTRACT.md`:
113
+ ### Ciclo SDD
307
114
 
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
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 |
313
128
 
314
- ### Politica de ramas (resumen)
129
+ ### Sub-agentes automaticos (v3.0.0+)
315
130
 
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`.
131
+ Algunos skills delegan su trabajo pesado a **sub-agentes** que corren en contexto aislado (no saturan la sesion principal con lecturas masivas). Son invocados automaticamente por el skill correspondiente — no se llaman directo.
320
132
 
321
- ### Checkpoints de estado (DoR/DoD)
133
+ | Skill | Sub-agente | Rol |
134
+ |---|---|---|
135
+ | `/refacil:explore` | `refacil-investigator` | Lee codebase, enriquece con AGENTS.md, consulta bus cross-repo |
136
+ | `/refacil:verify` | `refacil-validator` | Corre tests + compara contra spec, retorna issues priorizados |
137
+ | `/refacil:review` | `refacil-auditor` | Evalua cambios contra el checklist de calidad |
322
138
 
323
- Antes de avanzar de etapa, valida estos estados:
139
+ **Propiedades comunes**: `readonly` (no pueden modificar archivos), system prompt especializado, guardrail de invocacion directa. El contrato con el skill wrapper es un bloque JSON fenced (`refacil-review-result`, `refacil-verify-result`).
324
140
 
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
141
+ **Dual-platform**: `.claude/agents/refacil-*.md` usa `tools:` (allowlist granular). `.cursor/agents/refacil-*.md` se genera automaticamente con `readonly: true` y `model: inherit`. El installer transforma el frontmatter.
330
142
 
331
- ### Hooks automaticos
143
+ ### Bus de agentes
332
144
 
333
- El paquete instala hooks en `.claude/settings.json` durante `init` y `update`:
145
+ | Skill | Uso |
146
+ |---|---|
147
+ | `/refacil:join <sala>` | Unirse o crear sala |
148
+ | `/refacil:say "..."` | Broadcast |
149
+ | `/refacil:ask @nombre "..." [--wait N]` | Pregunta dirigida (bloquea con `--wait`) |
150
+ | `/refacil:reply "..."` | Responder ultima pregunta (autocompleta `correlationId`) |
151
+ | `/refacil:attend` | Modo escucha activa |
152
+ | `/refacil:inbox` | Mensajes nuevos desde la ultima lectura |
153
+
154
+ ---
155
+
156
+ ## Flujo recomendado
157
+
158
+ Regla rapida para elegir el comando de entrada:
159
+
160
+ - Entender el sistema sin tocar codigo -> `/refacil:explore`
161
+ - Feature nuevo o cambio de comportamiento -> `/refacil:propose`
162
+ - Bug funcional o error en produccion -> `/refacil:bug`
163
+
164
+ A partir de ahi, el ciclo completo es:
165
+
166
+ ```
167
+ ┌───────────────────────────┐
168
+ │ Necesidad de cambio │
169
+ └──────────────┬────────────┘
170
+
171
+ ┌─────────────────┐
172
+ │ ¿Tipo de tarea? │
173
+ └──┬───────┬──────┘
174
+ │ │
175
+ FEATURE│ │BUG
176
+ ▼ ▼
177
+ /refacil: /refacil:
178
+ propose bug
179
+ (proposal + (fix + tests
180
+ specs + de regresion
181
+ design + + summary.md)
182
+ tasks) │
183
+ │ │
184
+ ▼ │
185
+ /refacil: │
186
+ apply │
187
+ │ │
188
+ ▼ │
189
+ /refacil: │
190
+ test │
191
+ │ │
192
+ ▼ │
193
+ /refacil: │
194
+ verify │
195
+ (max 2 rondas │
196
+ autofix) │
197
+ │ │
198
+ └───┬───┘
199
+
200
+ /refacil:review
201
+ (genera .review-passed)
202
+
203
+ /refacil:archive
204
+ (feature: OpenSpec
205
+ bug: fix-*/spec.md +
206
+ review.yaml)
207
+
208
+ /refacil:up-code
209
+ (verifica review +
210
+ commit + push + PR)
211
+
212
+ PR creado
213
+ ```
214
+
215
+ **Nota — dos capas de chequeo de review**:
216
+ - `/refacil:up-code` detecta `.review-passed` faltante y **ejecuta `/refacil:review` automaticamente** antes del push.
217
+ - El hook `check-review` tambien intercepta `git push` manuales y **bloquea** la operacion si falta. El hook no invoca skills — solo bloquea e instruye.
218
+
219
+ **Archive**:
220
+ - Para features/mejoras: OpenSpec mueve a `archive/` y extrae los campos del `.review-passed` a `review.yaml` dentro de cada spec afectado.
221
+ - Para bugs: archivado manual, crea `openspec/specs/fix-*/spec.md` en formato OpenSpec estandar + `review.yaml`.
222
+ - Una misma rama puede acumular multiples bugs, cada uno en su `fix-*/` independiente.
223
+
224
+ ---
225
+
226
+ ## Hooks automaticos
227
+
228
+ 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
229
 
335
230
  | 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
231
+ |---|---|---|
232
+ | `check-update` | `SessionStart` | Chequea nueva version en npm, la instala, y **sincroniza el bloque `compact-guidance`** en `AGENTS.md`. |
233
+ | `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. |
234
+ | `check-review` | `PreToolUse` (Bash) | Intercepta `git push` y bloquea si falta `.review-passed` en algun cambio activo. |
371
235
 
372
- Cuando `/refacil:review` aprueba un cambio, crea el archivo `.review-passed` en la carpeta del cambio:
236
+ ### Gate de review en el push
373
237
 
374
238
  ```
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)
239
+ ┌──────────────────────────────┐
240
+ Dev ejecuta /refacil:up-code │
241
+ │ o git push manual │
242
+ └──────────────┬───────────────┘
243
+
244
+ ┌──────────────────┴──────────────────┐
245
+ │ Via /refacil:up-code │ git push directo
246
+ ▼ ▼
247
+ ┌─────────────────────┐ ┌───────────────────────┐
248
+ up-code detecta │ │ Hook check-review
249
+ │ falta .review-passed│ │ (PreToolUse en Bash) │
250
+ │ INVOCA /refacil: │ │ Verifica .review- │
251
+ │ review │ │ passed en changes/* │
252
+ └─────────┬───────────┘ └──────────┬────────────┘
253
+ │ │
254
+ ▼ ▼
255
+ ┌──────────────┐ ┌─────────────────┐
256
+ │ ¿Review OK? │ │ ¿Falta alguno? │
257
+ └──┬────────┬──┘ └──┬───────────┬──┘
258
+ SI│ NO│ SI│ NO│
259
+ ▼ ▼ ▼ ▼
260
+ push OK informa + block + allow
261
+ no pushea instruccion push
385
262
  ```
386
263
 
387
- El archivo `.review-passed` contiene: veredicto, fecha, resumen, cantidad de hallazgos y si hubo blockers.
264
+ ### Hook `compact-bash` rewrite silencioso de comandos
388
265
 
389
- ### Hook `compact-bash` rewrite silencioso de comandos Bash
266
+ 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
267
 
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.
268
+ **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
269
 
393
- **Reglas activas (19 reglas)**:
270
+ **Escape**: prefija `COMPACT=0` al comando (`COMPACT=0 git log`).
394
271
 
395
- Fase 1 — git, tests base, docker logs:
272
+ **Reglas activas — git, tests, docker logs**:
396
273
 
397
- | Comando bare | Reescrito a | Ahorro tipico |
274
+ | Bare | Reescrito a | Ahorro |
398
275
  |---|---|---|
399
276
  | `git log` | `git log --oneline -20` | ~85% |
400
277
  | `git status` | `git status -s` | ~70% |
401
278
  | `git diff` (sin args) | `git diff --stat` | ~80% |
402
279
  | `git show` | `git show --stat` | ~70% |
403
- | `docker logs <container>` | `docker logs --tail 100 <container>` | ~80%+ |
280
+ | `docker logs <c>` | `docker logs --tail 100 <c>` | ~80% |
404
281
  | `npm test` / `yarn test` / `pnpm test` | `… 2>&1 \| tail -80` | ~90% |
405
282
  | `jest` | `jest --silent --reporters=summary` | ~85% |
406
283
  | `pytest` | `pytest -q` | ~60% |
407
284
 
408
- Fase 2A — linters, type checkers, build, sistema:
285
+ **Reglas activas — linters, type checkers, build, sistema**:
409
286
 
410
- | Comando bare | Reescrito a | Ahorro tipico |
287
+ | Bare | Reescrito a | Ahorro |
411
288
  |---|---|---|
412
289
  | `eslint` | `eslint . --format compact --quiet` | ~70% |
413
290
  | `eslint <path>` | `eslint <path> --format compact` | ~60% |
414
291
  | `biome check` | `biome check --reporter=summary` | ~65% |
415
292
  | `tsc` / `npx tsc …` | `… 2>&1 \| head -80` | variable |
416
- | `prettier --check <path>` | `prettier --check <path> --loglevel warn` | ~50% |
293
+ | `prettier --check <p>` | `prettier --check <p> --loglevel warn` | ~50% |
417
294
  | `npm audit` | `npm audit 2>&1 \| tail -10` | ~80% |
418
295
  | `npm ls` | `npm ls --depth=0` | ~90% |
419
- | `cargo build` / `cargo test` / `cargo check` | `… --quiet` | ~50% |
296
+ | `cargo build / test / check` | `… --quiet` | ~50% |
420
297
  | `go test …` (sin flags) | `… 2>&1 \| tail -80` | ~70% |
421
298
  | `mvn test` | `mvn test -q` | ~60% |
422
299
  | `./gradlew test` / `gradle test` | `… -q` | ~60% |
423
300
  | `ps aux` | `ps -eo pid,pcpu,pmem,comm \| head -30` | ~80% |
424
301
 
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.
302
+ **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
303
 
427
- **Escape mecanismo**: prefija `COMPACT=0` al comando para desactivar el rewrite puntualmente: `COMPACT=0 git log`.
304
+ ### Bloque `compact-guidance` en AGENTS.md
428
305
 
429
- **Pipes y redirecciones** en test bare: si ya hay `|` o `>`, el detector no las envuelve de nuevo.
306
+ 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
307
 
431
- **Subcomandos de control**:
308
+ - Delimitado por `<!-- refacil-sdd-ai:compact-guidance:start -->` y `...:end -->`
309
+ - Fuente de verdad: `templates/compact-guidance.md`
310
+ - Sincroniza en: `init`, `update`, y hook `check-update` (cada SessionStart)
311
+ - Si `AGENTS.md` no existe, no se crea a espaldas del usuario
432
312
 
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
- ```
439
-
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.
441
-
442
- **Flujo del hook**:
443
-
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
- ```
313
+ > **No editar manualmente** entre los marcadores. Se sobrescribe en la proxima sesion.
466
314
 
467
- ### Eficiencia de tokens (bloque auto-gestionado en AGENTS.md)
315
+ ---
468
316
 
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.).
470
-
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
317
+ ## Reglas metodologicas transversales
480
318
 
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`).
319
+ Definidas en `skills/prereqs/METHODOLOGY-CONTRACT.md`:
482
320
 
483
- **Flujo del refresh automatico**:
321
+ - **Estados del flujo**: `READY_FOR_APPLY` / `VERIFY` / `REVIEW` / `ARCHIVE` / `MERGE` — cada transicion valida prerequisitos.
322
+ - **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.
323
+ - **Tests multi-stack**: se detecta el comando real (no hardcodea `npm test`).
324
+ - **`AGENTS.md` por perfil** (`openspec` vs `agents`): la metodologia respeta ambos.
325
+ - **Modo de salida**: conciso por defecto, detallado bajo demanda.
484
326
 
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
- ```
327
+ ---
503
328
 
504
- ## Como funciona
329
+ ## refacil-bus — chat room entre agentes
505
330
 
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
331
+ 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.
511
332
 
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
- ```
333
+ **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.
531
334
 
532
- ## Que se instala en tu repo
335
+ **Propiedades**:
533
336
 
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
- ```
337
+ - 100% local: nada sale de `127.0.0.1`. Sin cuentas, sin servicio compartido.
338
+ - Zero config: el broker se auto-arranca la primera vez que una skill lo necesita (`127.0.0.1:7821`, fallback 7822/7823).
339
+ - ~40 MB RAM, 0% CPU idle. Persistencia: `~/.refacil-sdd-ai/bus/<sala>/inbox.jsonl` (rotacion 7 dias).
340
+ - Mismas skills en Claude Code y Cursor.
545
341
 
546
- ## Desinstalar
342
+ **Arranque rapido**:
547
343
 
548
344
  ```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)
345
+ # En cada repo, una vez
577
346
  /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.
599
- ```
600
-
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
-
347
+ # La primera vez el LLM escribe un bloque de presentacion en AGENTS.md
619
348
  ```
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
349
 
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.
350
+ **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
351
 
632
- # Mas tarde, Dev B dice a su LLM: "atiende el bus"
633
- # -> /refacil:attend procesa las preguntas pendientes en orden FIFO.
352
+ **Observador puro** (0 tokens): `refacil-sdd-ai bus watch <session>` o `refacil-sdd-ai bus view` para la UI web.
634
353
 
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**:
354
+ > **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).
355
+ >
356
+ > **Referencia tecnica completa**: ver [`REFACIL-BUS.md`](./REFACIL-BUS.md).
703
357
 
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
358
+ ### Limitaciones conocidas
712
359
 
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.
360
+ - Mientras `/refacil:attend` esta activo, la sesion del IDE queda ocupada (abortar con ESC). Mitigacion: segunda ventana del mismo repo dedicada a atender.
361
+ - 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.
362
+ - Sin autenticacion: cualquier proceso local puede conectar al broker (por diseño, solo loopback y bajo demanda del dev).
714
363
 
715
- ### Presentacion automatica al hacer join
364
+ ---
716
365
 
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:
366
+ ## Que se instala en tu repo
718
367
 
719
368
  ```
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 -->
369
+ .claude/skills/refacil-*/ # Skills Claude Code (incluye refacil-prereqs con OPENSPEC-DELTAS.md)
370
+ .claude/agents/refacil-*.md # Sub-agentes (auditor, investigator, validator)
371
+ .claude/settings.json # Hooks: check-update + check-review + compact-bash
372
+ .cursor/skills/refacil-*/ # Skills Cursor (equivalente)
373
+ .cursor/agents/refacil-*.md # Sub-agentes Cursor (readonly + model:inherit auto-generados)
374
+ CLAUDE.md # Apunta a AGENTS.md
375
+ .cursorrules # Apunta a AGENTS.md
376
+ AGENTS.md # Generado por /refacil:setup (no por el CLI)
377
+ # Incluye bloque compact-guidance auto-gestionado
378
+ openspec/ # Generado por /refacil:setup via OpenSpec
725
379
  ```
726
380
 
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
-
381
+ ---
736
382
 
737
383
  ## Tecnologias
738
384
 
739
- - [OpenSpec](https://github.com/Fission-AI/OpenSpec) — Framework de especificaciones
740
- - [AGENTS.md](https://agents.md/) — Estandar universal de instrucciones para IA
385
+ - [OpenSpec](https://github.com/Fission-AI/OpenSpec) — framework de especificaciones
386
+ - [AGENTS.md](https://agents.md/) — estandar universal de instrucciones para IA
741
387
  - [Claude Code](https://claude.ai/code) — CLI de Anthropic
742
388
  - [Cursor](https://cursor.sh) — IDE con IA
743
389