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 +265 -619
- package/agents/auditor.md +142 -0
- package/agents/investigator.md +70 -0
- package/agents/validator.md +121 -0
- package/bin/cli.js +103 -0
- package/package.json +2 -1
- package/skills/bug/SKILL.md +7 -0
- package/skills/explore/SKILL.md +33 -17
- package/skills/prereqs/BUS-CROSS-REPO.md +38 -0
- package/skills/prereqs/SKILL.md +4 -0
- package/skills/propose/SKILL.md +7 -0
- package/skills/review/SKILL.md +60 -74
- package/skills/verify/SKILL.md +51 -48
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
|
|
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
|
|
12
|
+
- **Claude Code >= 2.1.89** (requerido por el hook `compact-bash` para rewrite silencioso via `updatedInput`) o **Cursor**
|
|
13
|
+
|
|
14
|
+
`refacil-sdd-ai init` verifica la version de Claude Code y advierte si es inferior. Con version < 2.1.89 el resto de la metodologia funciona, pero `compact-bash` no tendra efecto.
|
|
11
15
|
|
|
12
|
-
|
|
16
|
+
---
|
|
13
17
|
|
|
14
|
-
## Instalacion
|
|
18
|
+
## Instalacion
|
|
15
19
|
|
|
16
|
-
|
|
20
|
+
Recomendado: instalar globalmente una sola vez, y correr `init` por repo.
|
|
17
21
|
|
|
18
22
|
```bash
|
|
19
|
-
# 1.
|
|
23
|
+
# 1. Global (una vez)
|
|
20
24
|
npm install -g refacil-sdd-ai
|
|
21
25
|
|
|
22
|
-
# 2. En la raiz del repo
|
|
26
|
+
# 2. En la raiz del repo
|
|
23
27
|
refacil-sdd-ai init
|
|
24
|
-
# Copia skills a .claude/ y .cursor/, crea CLAUDE.md
|
|
28
|
+
# Copia skills a .claude/ y .cursor/, crea CLAUDE.md + .cursorrules, configura hooks
|
|
25
29
|
|
|
26
|
-
# 3.
|
|
30
|
+
# 3. Reiniciar sesion de Claude Code o Cursor
|
|
27
31
|
# (las skills nuevas no se detectan hasta reiniciar)
|
|
28
32
|
|
|
29
|
-
# 4. En
|
|
33
|
+
# 4. En el IDE
|
|
30
34
|
/refacil:setup
|
|
31
|
-
#
|
|
32
|
-
# - Verifica Node.js
|
|
33
|
-
# - Verifica OpenSpec (si no esta instalado, lo instala globalmente)
|
|
34
|
-
# - Inicializa openspec/ en el repo (openspec init --tools claude,cursor)
|
|
35
|
-
# - Crea openspec/config.yaml con idioma espanol
|
|
36
|
-
# - Genera AGENTS.md automaticamente analizando el repo
|
|
35
|
+
# Instala OpenSpec, inicializa openspec/ y genera AGENTS.md
|
|
37
36
|
```
|
|
38
37
|
|
|
39
|
-
### Actualizar
|
|
38
|
+
### Actualizar
|
|
40
39
|
|
|
41
40
|
```bash
|
|
42
|
-
# Actualizar el paquete global
|
|
43
41
|
npm update -g refacil-sdd-ai
|
|
44
|
-
|
|
45
|
-
# En cada repo donde se use, re-copiar las skills actualizadas:
|
|
46
|
-
refacil-sdd-ai update
|
|
42
|
+
refacil-sdd-ai update # en cada repo donde se use
|
|
47
43
|
```
|
|
48
44
|
|
|
49
|
-
|
|
45
|
+
En Claude Code el hook `check-update` hace esto automaticamente al iniciar sesion.
|
|
50
46
|
|
|
51
|
-
|
|
47
|
+
### Desinstalar
|
|
52
48
|
|
|
53
49
|
```bash
|
|
54
|
-
refacil-sdd-ai
|
|
55
|
-
refacil-sdd-ai
|
|
56
|
-
refacil-sdd-ai check-update # Verifica si hay una version mas reciente en npm (usado por hook)
|
|
57
|
-
refacil-sdd-ai check-review # Verifica que el review se haya completado (usado por hook)
|
|
58
|
-
refacil-sdd-ai compact-bash # Hook de rewrite de comandos Bash bare (usado por hook, no invocar manual)
|
|
59
|
-
refacil-sdd-ai compact stats # Estadisticas completas (hook + ya-compacto) + tokens estimados + USD
|
|
60
|
-
refacil-sdd-ai compact disable # Desactiva el hook compact-bash sin desinstalarlo
|
|
61
|
-
refacil-sdd-ai compact enable # Reactiva el hook compact-bash
|
|
62
|
-
refacil-sdd-ai compact clear-log # Limpia ~/.refacil-sdd-ai/compact.log
|
|
63
|
-
refacil-sdd-ai clean # Eliminar skills y remover hooks SDD-AI del repo
|
|
64
|
-
refacil-sdd-ai help # Ver ayuda
|
|
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
|
-
|
|
54
|
+
> **Nota**: `openspec init` tambien instala sus comandos `opsx:*`. Coexisten sin conflicto con los `refacil:*`. Usar siempre `refacil:*` como interfaz principal.
|
|
68
55
|
|
|
69
|
-
|
|
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
|
-
##
|
|
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
|
-
###
|
|
60
|
+
### Gestion del paquete
|
|
136
61
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
86
|
+
### Bus de agentes (`bus`)
|
|
170
87
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
111
|
+
Todas se invocan como `/refacil:<nombre>` en Claude Code o Cursor.
|
|
305
112
|
|
|
306
|
-
|
|
113
|
+
### Ciclo SDD
|
|
307
114
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
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
|
-
###
|
|
129
|
+
### Sub-agentes automaticos (v3.0.0+)
|
|
315
130
|
|
|
316
|
-
-
|
|
317
|
-
- Excepcion para repos nuevos: si no existe `develop`/`dev`, se permite usar temporalmente `main` o `master` como rama base.
|
|
318
|
-
- Toda integracion a ramas protegidas (`testing`, `develop`, `dev`, `main`, `master`, `qa`) requiere PR.
|
|
319
|
-
- NUNCA se hacen ajustes directos en `master` o `main`.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
- `
|
|
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
|
-
###
|
|
143
|
+
### Bus de agentes
|
|
332
144
|
|
|
333
|
-
|
|
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` |
|
|
338
|
-
| `compact-bash` | `PreToolUse` (Bash) | Reescribe
|
|
339
|
-
| `check-review` | `PreToolUse` (Bash) | Intercepta `git push` y
|
|
340
|
-
|
|
341
|
-
#### Flujo del hook de review
|
|
342
|
-
|
|
343
|
-
El hook unicamente decide `allow` o `block`. La ejecucion automatica de `/refacil:review` la realiza `/refacil:up-code`, no el hook.
|
|
344
|
-
|
|
345
|
-
```
|
|
346
|
-
git push (manual o via /refacil:up-code)
|
|
347
|
-
│
|
|
348
|
-
▼
|
|
349
|
-
Hook check-review se dispara
|
|
350
|
-
│
|
|
351
|
-
▼
|
|
352
|
-
Busca carpetas activas en openspec/changes/ (excluye archive/)
|
|
353
|
-
│
|
|
354
|
-
▼
|
|
355
|
-
¿Todas tienen .review-passed?
|
|
356
|
-
│
|
|
357
|
-
├─ SI ──► allow → el push procede
|
|
358
|
-
│
|
|
359
|
-
└─ NO ──► block → emite mensaje instructivo:
|
|
360
|
-
• 1 pendiente → sugiere "/refacil:review <cambio>"
|
|
361
|
-
• N pendientes → lista cambios y pide seleccionar uno
|
|
362
|
-
|
|
363
|
-
Capa adicional cuando se usa /refacil:up-code:
|
|
364
|
-
/refacil:up-code detecta el faltante ANTES de llamar a git push,
|
|
365
|
-
invoca /refacil:review y solo entonces intenta el push.
|
|
366
|
-
• Si el review APRUEBA → genera .review-passed → push procede
|
|
367
|
-
• Si requiere CORRECCIONES → informa al usuario, no pushea
|
|
368
|
-
```
|
|
369
|
-
|
|
370
|
-
#### Evidencia de review
|
|
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
|
-
|
|
236
|
+
### Gate de review en el push
|
|
373
237
|
|
|
374
238
|
```
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
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
|
-
|
|
264
|
+
### Hook `compact-bash` — rewrite silencioso de comandos
|
|
388
265
|
|
|
389
|
-
|
|
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
|
-
|
|
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
|
-
**
|
|
270
|
+
**Escape**: prefija `COMPACT=0` al comando (`COMPACT=0 git log`).
|
|
394
271
|
|
|
395
|
-
|
|
272
|
+
**Reglas activas — git, tests, docker logs**:
|
|
396
273
|
|
|
397
|
-
|
|
|
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 <
|
|
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
|
-
|
|
285
|
+
**Reglas activas — linters, type checkers, build, sistema**:
|
|
409
286
|
|
|
410
|
-
|
|
|
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 <
|
|
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
|
|
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
|
-
**
|
|
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
|
-
|
|
304
|
+
### Bloque `compact-guidance` en AGENTS.md
|
|
428
305
|
|
|
429
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
315
|
+
---
|
|
468
316
|
|
|
469
|
-
|
|
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
|
-
|
|
319
|
+
Definidas en `skills/prereqs/METHODOLOGY-CONTRACT.md`:
|
|
482
320
|
|
|
483
|
-
**
|
|
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
|
-
##
|
|
329
|
+
## refacil-bus — chat room entre agentes
|
|
505
330
|
|
|
506
|
-
1
|
|
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
|
-
|
|
335
|
+
**Propiedades**:
|
|
533
336
|
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
.
|
|
537
|
-
|
|
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
|
-
|
|
342
|
+
**Arranque rapido**:
|
|
547
343
|
|
|
548
344
|
```bash
|
|
549
|
-
#
|
|
550
|
-
refacil-sdd-ai clean
|
|
551
|
-
# (tambien remueve hooks SDD-AI de .claude/settings.json)
|
|
552
|
-
|
|
553
|
-
# Desinstalar paquete global (opcional)
|
|
554
|
-
npm uninstall -g refacil-sdd-ai
|
|
555
|
-
```
|
|
556
|
-
|
|
557
|
-
## refacil-bus
|
|
558
|
-
|
|
559
|
-
Chat room local entre agentes. Permite que distintas sesiones de Claude Code o Cursor corriendo en repos diferentes se coordinen por texto plano — **sin compartir archivos, contexto ni tokens entre repos**. Cada agente responde desde el conocimiento de su propio repositorio.
|
|
560
|
-
|
|
561
|
-
El broker corre solo en `127.0.0.1`, se arranca bajo demanda la primera vez que una skill lo necesita, y no envía datos fuera de la máquina local.
|
|
562
|
-
|
|
563
|
-
### Instalación y primer arranque
|
|
564
|
-
|
|
565
|
-
No requiere pasos extra: `refacil-sdd-ai init` ya copia las skills del bus junto con el resto. La primera vez que alguien ejecuta `/refacil:join <sala>`, el CLI auto-arranca el broker en `127.0.0.1:7821` (fallback 7822 / 7823 si están ocupados).
|
|
566
|
-
|
|
567
|
-
### Ejemplos de uso
|
|
568
|
-
|
|
569
|
-
**Ejemplo A — Conversación LLM ↔ LLM automática**
|
|
570
|
-
|
|
571
|
-
```
|
|
572
|
-
# Terminal 1 — repo payments-api (Claude Code)
|
|
573
|
-
/refacil:join refacil-main
|
|
574
|
-
# -> broadcast: "payments-api se unió. Stack: NestJS. Para consultarme: /refacil:ask @payments-api ..."
|
|
575
|
-
|
|
576
|
-
# Terminal 2 — repo frontend-refacil (Cursor)
|
|
345
|
+
# En cada repo, una vez
|
|
577
346
|
/refacil:join refacil-main
|
|
578
|
-
#
|
|
579
|
-
|
|
580
|
-
# Dev del frontend delega su sesion a atender el bus:
|
|
581
|
-
"atiende el bus"
|
|
582
|
-
# LLM ejecuta: /refacil:attend (queda escuchando sin tope)
|
|
583
|
-
|
|
584
|
-
# Dev de payments trabaja en una feature:
|
|
585
|
-
"crea el endpoint POST /refund y cuando necesites saber
|
|
586
|
-
como lo va a consumir el front, preguntale"
|
|
587
|
-
|
|
588
|
-
# LLM de payments decide preguntar:
|
|
589
|
-
/refacil:ask @frontend-refacil "endpoint POST /refund devuelve
|
|
590
|
-
{ cartId, reference, status }. Que necesitas en el response?" --wait 180
|
|
591
|
-
|
|
592
|
-
# LLM del frontend (en attend) recibe, lee sus archivos, responde:
|
|
593
|
-
/refacil:reply "necesito tambien amountRefunded y timestamp.
|
|
594
|
-
Formato camelCase."
|
|
595
|
-
|
|
596
|
-
# LLM de payments recibe la respuesta automaticamente y continua
|
|
597
|
-
# implementando el endpoint con los campos correctos. Sin que ningun
|
|
598
|
-
# dev haya intervenido en el intercambio.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
364
|
+
---
|
|
716
365
|
|
|
717
|
-
|
|
366
|
+
## Que se instala en tu repo
|
|
718
367
|
|
|
719
368
|
```
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
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
|
-
|
|
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) —
|
|
740
|
-
- [AGENTS.md](https://agents.md/) —
|
|
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
|
|