refacil-sdd-ai 2.1.9 → 2.2.1

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.
Files changed (2) hide show
  1. package/README.md +173 -22
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -72,7 +72,7 @@ Una vez instalado, estos comandos estan disponibles en Claude Code y Cursor:
72
72
  | `/refacil:verify` | Validar implementacion vs specs (con opcion de aplicar correcciones) |
73
73
  | `/refacil:review` | Review con checklist de calidad del equipo |
74
74
  | `/refacil:archive` | Archivar cambio completado |
75
- | `/refacil:up-code` | Integrar codigo (destino por defecto `testing`) y gestionar PR cuando aplique |
75
+ | `/refacil:up-code` | Integrar codigo a rama propia del desarollo y gestionar PR |
76
76
  | `/refacil:bug` | Flujo guiado completo para investigar y corregir bugs |
77
77
 
78
78
  ## Uso rapido (guia de decision)
@@ -86,7 +86,7 @@ Si no tienes claro que comando usar, aplica esta regla simple:
86
86
  - Quiero validar cumplimiento contra spec -> `/refacil:verify`
87
87
  - Quiero evaluacion de calidad tecnica -> `/refacil:review`
88
88
  - Ya termine y quiero cerrar el cambio en OpenSpec -> `/refacil:archive`
89
- - Quiero integrar cambios (a `testing` o con PR a otra rama) -> `/refacil:up-code`
89
+ - Quiero subir cambios al repositorio -> `/refacil:up-code`
90
90
  - Tengo un error en produccion o bug funcional -> `/refacil:bug`
91
91
 
92
92
  ## Flujo minimo recomendado (equipo)
@@ -97,15 +97,16 @@ Para mantener trazabilidad y calidad sin pasos innecesarios:
97
97
  2. `/refacil:apply`
98
98
  3. `/refacil:test`
99
99
  4. `/refacil:verify`
100
- 5. `/refacil:review` (automatico si no se ejecuto ver [Hooks automaticos](#hooks-automaticos))
100
+ 5. `/refacil:review` (si lo omites, `/refacil:up-code` lo dispara antes del push)
101
101
  6. `/refacil:archive`
102
102
  7. `/refacil:up-code`
103
103
 
104
- Si es bugfix, puedes iniciar con `/refacil:bug` y luego continuar con `/refacil:review` → `/refacil:archive` → `/refacil:up-code`.
104
+ Si es bugfix, inicia con `/refacil:bug` (ya genera tests de regresion internamente) y continua con `/refacil:review` → `/refacil:archive` → `/refacil:up-code`.
105
105
 
106
- > **Nota**: `/refacil:up-code` verifica automaticamente que el review se haya completado. Si no se ejecuto `/refacil:review`, lo lanza automaticamente antes del push como medida de seguridad.
106
+ > **Nota dos capas independientes de chequeo de review**:
107
+ > - `/refacil:up-code` detecta si falta `.review-passed` y **ejecuta `/refacil:review` automaticamente** antes del push.
108
+ > - 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.
107
109
  >
108
- > Politica de integracion: la rama objetivo por defecto es `testing` mediante PR. Para cualquier otra rama protegida tambien se requiere PR. No hay integraciones directas a ramas protegidas.
109
110
 
110
111
  ## Flujos de trabajo
111
112
 
@@ -118,7 +119,7 @@ Si es bugfix, puedes iniciar con `/refacil:bug` y luego continuar con `/refacil:
118
119
  /refacil:test
119
120
  /refacil:verify
120
121
  # → Si hay correcciones: verify pregunta si aplicarlas automaticamente
121
- # → Si aprueba: aplica fixes y re-verifica (max 2 rondas)
122
+ # → Si aprueba: aplica fixes y re-verifica (maximo 2 rondas de correccion automatica)
122
123
  /refacil:review
123
124
  /refacil:archive
124
125
  /refacil:up-code
@@ -148,7 +149,7 @@ Si es bugfix, puedes iniciar con `/refacil:bug` y luego continuar con `/refacil:
148
149
  >
149
150
  > **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.
150
151
  >
151
- > En cambios regulares (feature/mejora) que se archivan con OpenSpec, Refacil tambien persiste la metadata del `.review-passed` en `review.yaml` dentro de cada spec afectado (o en `openspec/specs/review-metadata.yaml` si no hay mapeo preciso).
152
+ > 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.
152
153
 
153
154
  ### Explorar codigo
154
155
 
@@ -156,6 +157,143 @@ Si es bugfix, puedes iniciar con `/refacil:bug` y luego continuar con `/refacil:
156
157
  /refacil:explore "que quiero entender"
157
158
  ```
158
159
 
160
+ ## Diagrama de flujo completo
161
+
162
+ Vista unica del ciclo de vida de un cambio — desde la necesidad hasta el PR integrado.
163
+
164
+ ```
165
+ ┌─────────────────────────────────────────────────────────────────┐
166
+ │ INICIO: Necesidad de cambio │
167
+ └────────────────────────────────┬────────────────────────────────┘
168
+
169
+
170
+ ┌────────────────────────┐
171
+ │ ¿Repo configurado? │
172
+ └───┬────────────────┬───┘
173
+ NO│ │SI
174
+ ▼ │
175
+ ┌──────────────────┐ │
176
+ │ refacil-sdd-ai │ │
177
+ │ init │ │
178
+ │ /refacil:setup │ │
179
+ └────────┬─────────┘ │
180
+ └────────┬────────┘
181
+
182
+ ┌────────────────────────┐
183
+ │ ¿Que tipo de tarea? │
184
+ └───┬────────┬───────┬───┘
185
+ │ │ │
186
+ ┌─────────┘ │ └─────────┐
187
+ ▼ ▼ ▼
188
+ ┌────────────────┐ ┌──────────────┐ ┌──────────────┐
189
+ │ FEATURE NUEVO │ │ BUG │ │ EXPLORAR │
190
+ └───────┬────────┘ └──────┬───────┘ └──────┬───────┘
191
+ │ │ │
192
+ ▼ ▼ ▼
193
+ ┌─────────────────┐ ┌──────────────┐ ┌─────────────────┐
194
+ │/refacil:propose │ │/refacil:bug │ │/refacil:explore │
195
+ │ │ │ │ │ │
196
+ │ Genera: │ │ Investiga + │ │ Analiza codigo │
197
+ │ • proposal.md │ │ fix + test │ │ sin modificar │
198
+ │ • specs/ │ │ de regresion │ │ │
199
+ │ • design.md │ │ (interno) │ │ (FIN) │
200
+ │ • tasks.md │ │ │ └─────────────────┘
201
+ └────────┬────────┘ └──────┬───────┘
202
+ │ │
203
+ ▼ │
204
+ ┌─────────────────┐ │
205
+ │ REVISAR │ │
206
+ │ artefactos │ │
207
+ │ (aprobacion │ │
208
+ │ humana) │ │
209
+ └────────┬────────┘ │
210
+ │ │
211
+ ▼ │
212
+ ┌─────────────────┐ │
213
+ │ /refacil:apply │ │
214
+ │ Implementa │ │
215
+ │ tasks │ │
216
+ └────────┬────────┘ │
217
+ │ │
218
+ ▼ │
219
+ ┌─────────────────┐ │
220
+ │ /refacil:test │ │
221
+ │ Tests unitarios │ │
222
+ │ + edge cases │ │
223
+ └────────┬────────┘ │
224
+ │ │
225
+ ▼ │
226
+ ┌─────────────────┐ │
227
+ │ /refacil:verify │ │
228
+ │ ¿Cumple specs? │ │
229
+ │ (max 2 rondas │ │
230
+ │ autofix) │ │
231
+ └────────┬────────┘ │
232
+ │ │
233
+ └────────┬────────┘
234
+
235
+ ┌─────────────────┐
236
+ │ /refacil:review │
237
+ │ Checklist │──► genera .review-passed
238
+ │ calidad │ (JSON con veredicto)
239
+ └────────┬────────┘
240
+
241
+ ┌─────────────────┐
242
+ │/refacil:archive │
243
+ │ Mueve a archive/│
244
+ │ Sincroniza specs│
245
+ │ (bug → fix-*/ │
246
+ │ spec OpenSpec) │
247
+ └────────┬────────┘
248
+
249
+ ┌─────────────────┐
250
+ │/refacil:up-code │
251
+ │ commit + push │
252
+ │ + PR │
253
+ └────────┬────────┘
254
+
255
+ ┌─────────────────┐
256
+ │ PR creado │
257
+ │ (FIN) │
258
+ └─────────────────┘
259
+ ```
260
+
261
+ ### Gate de review en el push
262
+
263
+ Vista del mecanismo de dos capas que protege `git push`:
264
+
265
+ ```
266
+ ┌──────────────────────────────┐
267
+ │ Dev ejecuta /refacil:up-code │
268
+ │ o git push manual │
269
+ └────────────────┬─────────────┘
270
+
271
+ ┌──────────────────────┴──────────────────────┐
272
+ │ Via /refacil:up-code │ git push directo
273
+ ▼ ▼
274
+ ┌─────────────────────────┐ ┌───────────────────────────┐
275
+ │ up-code detecta │ │ Hook check-review │
276
+ │ .review-passed faltante │ │ (PreToolUse en Bash) │
277
+ │ │ │ │
278
+ │ INVOCA /refacil:review │ │ Verifica .review-passed │
279
+ │ automaticamente │ │ en openspec/changes/* │
280
+ └────────────┬────────────┘ └────────────┬───────────────┘
281
+ │ │
282
+ ▼ ▼
283
+ ┌──────────────┐ ┌─────────────────┐
284
+ │ Review OK? │ │ Falta alguno? │
285
+ └──┬────────┬──┘ └──┬───────────┬──┘
286
+ SI│ NO│ SI│ NO│
287
+ ▼ ▼ ▼ ▼
288
+ ┌─────────┐ ┌────────────┐ ┌─────────────┐ ┌────────┐
289
+ │ push OK │ │ informa │ │ block + │ │ allow │
290
+ │ │ │ correccion │ │ instruccion │ │ push │
291
+ │ │ │ no pushea │ │ a ejecutar │ │ │
292
+ │ │ │ │ │ /refacil: │ │ │
293
+ │ │ │ │ │ review │ │ │
294
+ └─────────┘ └────────────┘ └─────────────┘ └────────┘
295
+ ```
296
+
159
297
  ## Reglas metodologicas transversales
160
298
 
161
299
  Para mantener consistencia entre todas las skills, el paquete define un contrato metodologico unico en `skills/prereqs/METHODOLOGY-CONTRACT.md`:
@@ -163,14 +301,13 @@ Para mantener consistencia entre todas las skills, el paquete define un contrato
163
301
  - Estados del flujo (Ready for Propose/Apply/Verify/Review/Archive/Merge)
164
302
  - Politica de `AGENTS.md` por perfil (`openspec` vs `agents`)
165
303
  - Resolucion de comando de tests multi-stack (sin hardcodear `npm test`)
166
- - Politica unificada de ramas protegidas, creacion de ramas e integracion por `testing`
304
+ - Politica unificada de ramas protegidas, creacion de ramas e integracion por pr
167
305
  - Modo de salida estandar: `conciso` por defecto, `detallado` bajo demanda
168
306
 
169
307
  ### Politica de ramas (resumen)
170
308
 
171
309
  - Toda rama nueva de trabajo (`feature/*`, `fix/*`, `hotfix/*`, etc.) se crea desde `develop` o `dev` actualizado.
172
310
  - Excepcion para repos nuevos: si no existe `develop`/`dev`, se permite usar temporalmente `main` o `master` como rama base.
173
- - La integracion por defecto de features/bugs es hacia `testing` mediante PR.
174
311
  - Toda integracion a ramas protegidas (`testing`, `develop`, `dev`, `main`, `master`, `qa`) requiere PR.
175
312
  - NUNCA se hacen ajustes directos en `master` o `main`.
176
313
 
@@ -191,21 +328,35 @@ El paquete instala hooks en `.claude/settings.json` durante `init` y `update`:
191
328
  | Hook | Evento | Que hace |
192
329
  |------|--------|----------|
193
330
  | `check-update` | `SessionStart` | Verifica si hay nueva version del paquete en npm y la instala automaticamente |
194
- | `check-review` | `PreToolUse` (Bash) | Intercepta `git push` y verifica que exista `.review-passed` en cada cambio activo de `openspec/changes/`. Si falta, ejecuta `/refacil:review` automaticamente |
331
+ | `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. |
195
332
 
196
333
  #### Flujo del hook de review
197
334
 
335
+ El hook unicamente decide `allow` o `block`. La ejecucion automatica de `/refacil:review` la realiza `/refacil:up-code`, no el hook.
336
+
198
337
  ```
199
- /refacil:up-code (o git push manual)
200
- → Hook check-review se dispara
201
- → Busca carpetas en openspec/changes/ (excluye archive/)
202
- ¿Todas tienen .review-passed?
203
- SI → permite el push
204
- NO y hay 1 pendiente → bloquea y ejecuta /refacil:review <cambio> automaticamente
205
- Si APROBADO: crea .review-passed, reintenta push
206
- → Si REQUIERE CORRECCIONES: informa al usuario, no pushea
207
- NO y hay multiples pendientes → bloquea y pide seleccionar cambio explicito
208
- luego ejecutar /refacil:review <cambio-seleccionado>
338
+ git push (manual o via /refacil:up-code)
339
+
340
+
341
+ Hook check-review se dispara
342
+
343
+
344
+ Busca carpetas activas en openspec/changes/ (excluye archive/)
345
+
346
+
347
+ ¿Todas tienen .review-passed?
348
+
349
+ ├─ SI ──► allow → el push procede
350
+
351
+ └─ NO ──► block → emite mensaje instructivo:
352
+ • 1 pendiente → sugiere "/refacil:review <cambio>"
353
+ • N pendientes → lista cambios y pide seleccionar uno
354
+
355
+ Capa adicional cuando se usa /refacil:up-code:
356
+ /refacil:up-code detecta el faltante ANTES de llamar a git push,
357
+ invoca /refacil:review y solo entonces intenta el push.
358
+ • Si el review APRUEBA → genera .review-passed → push procede
359
+ • Si requiere CORRECCIONES → informa al usuario, no pushea
209
360
  ```
210
361
 
211
362
  #### Evidencia de review
@@ -260,7 +411,7 @@ refacil-sdd-ai init → Skills en .claude/ y .cursor/
260
411
  .claude/skills/refacil-*/ # Claude Code (refacil-prereqs incluye OPENSPEC-DELTAS.md)
261
412
  .claude/settings.json # Hooks automaticos (check-update + check-review)
262
413
  .cursor/skills/refacil-*/ # Cursor — copia equivalente
263
- .../refacil-setup/ # troubleshooting.md si falla install/PATH
414
+ .claude/skills/refacil-setup/troubleshooting.md # guia incluida en refacil-setup si falla install/PATH
264
415
  CLAUDE.md # Claude Code — apunta a AGENTS.md
265
416
  .cursorrules # Cursor — apunta a AGENTS.md
266
417
  AGENTS.md # Generado por /refacil:setup (NO por el CLI)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "refacil-sdd-ai",
3
- "version": "2.1.9",
3
+ "version": "2.2.1",
4
4
  "description": "SDD-AI: Specification-Driven Development with AI — metodologia de desarrollo con IA usando OpenSpec, Claude Code y Cursor",
5
5
  "bin": {
6
6
  "refacil-sdd-ai": "./bin/cli.js"