refacil-sdd-ai 2.2.0 → 2.4.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
@@ -97,13 +97,15 @@ 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
110
 
109
111
  ## Flujos de trabajo
@@ -117,7 +119,7 @@ Si es bugfix, puedes iniciar con `/refacil:bug` y luego continuar con `/refacil:
117
119
  /refacil:test
118
120
  /refacil:verify
119
121
  # → Si hay correcciones: verify pregunta si aplicarlas automaticamente
120
- # → Si aprueba: aplica fixes y re-verifica (max 2 rondas)
122
+ # → Si aprueba: aplica fixes y re-verifica (maximo 2 rondas de correccion automatica)
121
123
  /refacil:review
122
124
  /refacil:archive
123
125
  /refacil:up-code
@@ -147,7 +149,7 @@ Si es bugfix, puedes iniciar con `/refacil:bug` y luego continuar con `/refacil:
147
149
  >
148
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.
149
151
  >
150
- > 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.
151
153
 
152
154
  ### Explorar codigo
153
155
 
@@ -155,6 +157,143 @@ Si es bugfix, puedes iniciar con `/refacil:bug` y luego continuar con `/refacil:
155
157
  /refacil:explore "que quiero entender"
156
158
  ```
157
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
+
158
297
  ## Reglas metodologicas transversales
159
298
 
160
299
  Para mantener consistencia entre todas las skills, el paquete define un contrato metodologico unico en `skills/prereqs/METHODOLOGY-CONTRACT.md`:
@@ -188,22 +327,36 @@ El paquete instala hooks en `.claude/settings.json` durante `init` y `update`:
188
327
 
189
328
  | Hook | Evento | Que hace |
190
329
  |------|--------|----------|
191
- | `check-update` | `SessionStart` | Verifica si hay nueva version del paquete en npm y la instala automaticamente |
192
- | `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 |
330
+ | `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)). |
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. |
193
332
 
194
333
  #### Flujo del hook de review
195
334
 
335
+ El hook unicamente decide `allow` o `block`. La ejecucion automatica de `/refacil:review` la realiza `/refacil:up-code`, no el hook.
336
+
196
337
  ```
197
- /refacil:up-code (o git push manual)
198
- → Hook check-review se dispara
199
- → Busca carpetas en openspec/changes/ (excluye archive/)
200
- ¿Todas tienen .review-passed?
201
- SI → permite el push
202
- NO y hay 1 pendiente → bloquea y ejecuta /refacil:review <cambio> automaticamente
203
- Si APROBADO: crea .review-passed, reintenta push
204
- → Si REQUIERE CORRECCIONES: informa al usuario, no pushea
205
- NO y hay multiples pendientes → bloquea y pide seleccionar cambio explicito
206
- 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
207
360
  ```
208
361
 
209
362
  #### Evidencia de review
@@ -225,6 +378,43 @@ openspec/changes/fix-session-timeout-redis/
225
378
 
226
379
  El archivo `.review-passed` contiene: veredicto, fecha, resumen, cantidad de hallazgos y si hubo blockers.
227
380
 
381
+ ### Eficiencia de tokens (bloque auto-gestionado en AGENTS.md)
382
+
383
+ 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.).
384
+
385
+ **Caracteristicas**:
386
+ - Delimitado por marcadores HTML: `<!-- refacil-sdd-ai:compact-guidance:start -->` y `<!-- refacil-sdd-ai:compact-guidance:end -->`
387
+ - Fuente de verdad: `templates/compact-guidance.md` dentro del paquete
388
+ - Se sincroniza automaticamente en tres momentos:
389
+ 1. `refacil-sdd-ai init` (al instalar)
390
+ 2. `refacil-sdd-ai update` (al actualizar manualmente)
391
+ 3. Hook `check-update` en cada `SessionStart` (garantiza que repos ya instalados reciban las guias nuevas sin intervencion manual)
392
+ - 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
393
+ - `refacil-sdd-ai clean` remueve el bloque de forma limpia
394
+
395
+ > **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`).
396
+
397
+ **Flujo del refresh automatico**:
398
+
399
+ ```
400
+ Nueva sesion de Claude Code
401
+
402
+
403
+ Hook SessionStart → ejecuta "refacil-sdd-ai check-update"
404
+
405
+ ├─► syncCompactGuidance()
406
+ │ │
407
+ │ ├─ AGENTS.md no existe → skip (sin ruido)
408
+ │ ├─ sin marcadores → append del bloque al final
409
+ │ ├─ con marcadores → reemplaza contenido entre ellos
410
+ │ └─ contenido identico → no-op (no ensucia git status)
411
+
412
+ └─► chequeo de version npm
413
+
414
+ └─ si hay version nueva → npm update -g + refacil-sdd-ai update
415
+ (que vuelve a sincronizar el bloque)
416
+ ```
417
+
228
418
  ## Como funciona
229
419
 
230
420
  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`
@@ -240,6 +430,7 @@ refacil-sdd-ai init → Skills en .claude/ y .cursor/
240
430
 
241
431
  /refacil:setup → OpenSpec instalado
242
432
  AGENTS.md generado (analisis automatico del repo)
433
+ + bloque compact-guidance inyectado automaticamente
243
434
 
244
435
  /refacil:propose → Artefactos en openspec/changes/
245
436
  /refacil:apply → Codigo implementado
@@ -258,10 +449,11 @@ refacil-sdd-ai init → Skills en .claude/ y .cursor/
258
449
  .claude/skills/refacil-*/ # Claude Code (refacil-prereqs incluye OPENSPEC-DELTAS.md)
259
450
  .claude/settings.json # Hooks automaticos (check-update + check-review)
260
451
  .cursor/skills/refacil-*/ # Cursor — copia equivalente
261
- .../refacil-setup/ # troubleshooting.md si falla install/PATH
452
+ .claude/skills/refacil-setup/troubleshooting.md # guia incluida en refacil-setup si falla install/PATH
262
453
  CLAUDE.md # Claude Code — apunta a AGENTS.md
263
454
  .cursorrules # Cursor — apunta a AGENTS.md
264
455
  AGENTS.md # Generado por /refacil:setup (NO por el CLI)
456
+ # Incluye bloque compact-guidance auto-gestionado por el hook SessionStart
265
457
  openspec/ # Generado por /refacil:setup via OpenSpec
266
458
  ```
267
459
 
package/bin/cli.js CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  const fs = require('fs');
4
4
  const path = require('path');
5
+ const {
6
+ syncCompactGuidance,
7
+ removeCompactGuidance,
8
+ } = require('../lib/compact-guidance');
5
9
 
6
10
  const SKILLS = [
7
11
  'setup',
@@ -64,44 +68,47 @@ function extractSddSection(templateContent) {
64
68
  return templateContent.substring(idx);
65
69
  }
66
70
 
67
- function createClaudeMd() {
68
- const dest = path.join(projectRoot, 'CLAUDE.md');
69
- const template = fs.readFileSync(path.join(packageRoot, 'templates', 'claude-md.md'), 'utf8');
71
+ function readMethodologyGuide() {
72
+ return fs.readFileSync(
73
+ path.join(packageRoot, 'templates', 'methodology-guide.md'),
74
+ 'utf8',
75
+ );
76
+ }
70
77
 
71
- if (fs.existsSync(dest)) {
72
- const existing = fs.readFileSync(dest, 'utf8');
78
+ function writeGuideFile(destPath, header, label) {
79
+ const guide = readMethodologyGuide();
80
+ const content = `# ${header}\n\n${guide}`;
81
+
82
+ if (fs.existsSync(destPath)) {
83
+ const existing = fs.readFileSync(destPath, 'utf8');
73
84
  if (existing.includes(SDD_SECTION_MARKER)) {
74
- console.log(' CLAUDE.md ya tiene la seccion SDD-AI. Sin cambios.');
85
+ console.log(` ${label} ya tiene la seccion SDD-AI. Sin cambios.`);
75
86
  return false;
76
87
  }
77
- const sddSection = extractSddSection(template);
78
- fs.writeFileSync(dest, existing.trimEnd() + '\n\n' + sddSection + '\n');
79
- console.log(' CLAUDE.md existente — seccion SDD-AI agregada al final.');
88
+ const sddSection = extractSddSection(guide);
89
+ fs.writeFileSync(destPath, existing.trimEnd() + '\n\n' + sddSection + '\n');
90
+ console.log(` ${label} existente — seccion SDD-AI agregada al final.`);
80
91
  return true;
81
92
  }
82
93
 
83
- fs.writeFileSync(dest, template);
94
+ fs.writeFileSync(destPath, content);
84
95
  return true;
85
96
  }
86
97
 
87
- function createCursorRules() {
88
- const dest = path.join(projectRoot, '.cursorrules');
89
- const template = fs.readFileSync(path.join(packageRoot, 'templates', 'cursorrules.md'), 'utf8');
90
-
91
- if (fs.existsSync(dest)) {
92
- const existing = fs.readFileSync(dest, 'utf8');
93
- if (existing.includes(SDD_SECTION_MARKER)) {
94
- console.log(' .cursorrules ya tiene la seccion SDD-AI. Sin cambios.');
95
- return false;
96
- }
97
- const sddSection = extractSddSection(template);
98
- fs.writeFileSync(dest, existing.trimEnd() + '\n\n' + sddSection + '\n');
99
- console.log(' .cursorrules existente — seccion SDD-AI agregada al final.');
100
- return true;
101
- }
98
+ function createClaudeMd() {
99
+ return writeGuideFile(
100
+ path.join(projectRoot, 'CLAUDE.md'),
101
+ 'CLAUDE.md',
102
+ 'CLAUDE.md',
103
+ );
104
+ }
102
105
 
103
- fs.writeFileSync(dest, template);
104
- return true;
106
+ function createCursorRules() {
107
+ return writeGuideFile(
108
+ path.join(projectRoot, '.cursorrules'),
109
+ 'Cursor Rules',
110
+ '.cursorrules',
111
+ );
105
112
  }
106
113
 
107
114
  function removeSkills() {
@@ -245,6 +252,15 @@ function checkUpdate() {
245
252
  const { execSync } = require('child_process');
246
253
  const localVersion = require(path.join(packageRoot, 'package.json')).version;
247
254
 
255
+ // Always ensure AGENTS.md has current compact-guidance block (silent unless error)
256
+ try {
257
+ syncCompactGuidance(projectRoot, packageRoot);
258
+ } catch (err) {
259
+ process.stderr.write(
260
+ `[refacil-sdd-ai] No se pudo sincronizar compact-guidance: ${err.message}\n`,
261
+ );
262
+ }
263
+
248
264
  try {
249
265
  const latest = execSync('npm view refacil-sdd-ai version', {
250
266
  encoding: 'utf8',
@@ -319,8 +335,7 @@ function checkReview() {
319
335
  const reason =
320
336
  missing.length === 1
321
337
  ? `[refacil-sdd-ai] Review pendiente para: ${names}. ` +
322
- 'Ejecuta /refacil:review automaticamente ahora sobre ese cambio pendiente. ' +
323
- 'Informa al usuario que el review se esta ejecutando automaticamente antes de subir el codigo. ' +
338
+ 'Deten el push y ejecuta /refacil:review sobre ese cambio antes de subir codigo. ' +
324
339
  'Si el review aprueba, reintenta el git push. ' +
325
340
  'Si el review requiere correcciones, informa los hallazgos al usuario y NO reintentar el push.'
326
341
  : `[refacil-sdd-ai] Hay multiples cambios sin review aprobado: ${names}. ` +
@@ -366,6 +381,18 @@ function init() {
366
381
  console.log(' Hook check-update agregado a .claude/settings.json');
367
382
  }
368
383
 
384
+ // Sync compact-guidance block in AGENTS.md (if it exists)
385
+ try {
386
+ const result = syncCompactGuidance(projectRoot, packageRoot);
387
+ if (result.status === 'appended') {
388
+ console.log(' Bloque compact-guidance agregado a AGENTS.md');
389
+ } else if (result.status === 'replaced') {
390
+ console.log(' Bloque compact-guidance actualizado en AGENTS.md');
391
+ }
392
+ } catch (err) {
393
+ console.error(` Advertencia: no se pudo sincronizar compact-guidance: ${err.message}`);
394
+ }
395
+
369
396
  console.log('\n Siguientes pasos:\n');
370
397
  console.log(' 1. REINICIA tu sesion de Claude Code o Cursor');
371
398
  console.log(' (las skills nuevas no se detectan hasta reiniciar)\n');
@@ -386,6 +413,18 @@ function update() {
386
413
  console.log(' Hook check-update agregado a .claude/settings.json');
387
414
  }
388
415
 
416
+ // Sync compact-guidance block in AGENTS.md
417
+ try {
418
+ const result = syncCompactGuidance(projectRoot, packageRoot);
419
+ if (result.status === 'appended') {
420
+ console.log(' Bloque compact-guidance agregado a AGENTS.md');
421
+ } else if (result.status === 'replaced') {
422
+ console.log(' Bloque compact-guidance actualizado en AGENTS.md');
423
+ }
424
+ } catch (err) {
425
+ console.error(` Advertencia: no se pudo sincronizar compact-guidance: ${err.message}`);
426
+ }
427
+
389
428
  console.log('\n REINICIA tu sesion de Claude Code o Cursor para aplicar los cambios.\n');
390
429
  }
391
430
 
@@ -398,6 +437,17 @@ function clean() {
398
437
  } else {
399
438
  console.log(' No se encontraron hooks SDD-AI para remover.');
400
439
  }
440
+
441
+ // Remove compact-guidance block from AGENTS.md if present
442
+ try {
443
+ const result = removeCompactGuidance(projectRoot);
444
+ if (result.status === 'removed') {
445
+ console.log(' Bloque compact-guidance removido de AGENTS.md');
446
+ }
447
+ } catch (err) {
448
+ console.error(` Advertencia: no se pudo limpiar compact-guidance: ${err.message}`);
449
+ }
450
+
401
451
  console.log(' AGENTS.md, CLAUDE.md y .cursorrules no fueron eliminados.');
402
452
  console.log('\n Nota: Los comandos opsx:* de OpenSpec no se eliminan.');
403
453
  console.log(' Para eliminar OpenSpec: rm -rf openspec/ .claude/commands/opsx .cursor/commands/opsx\n');
@@ -410,7 +460,7 @@ function help() {
410
460
  Comandos:
411
461
  init Instala skills en .claude/ y .cursor/, crea CLAUDE.md y .cursorrules
412
462
  update Re-copia skills (para actualizar a nueva version del paquete)
413
- check-update Verifica si hay una version mas reciente en npm
463
+ check-update Verifica si hay una version mas reciente en npm y sincroniza compact-guidance en AGENTS.md
414
464
  check-review Verifica que el review se haya completado (usado por hook PreToolUse)
415
465
  clean Elimina skills y remueve hooks SDD-AI de .claude/settings.json
416
466
  help Muestra esta ayuda
@@ -0,0 +1,77 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+
4
+ const MARKER_START = '<!-- refacil-sdd-ai:compact-guidance:start -->';
5
+ const MARKER_END = '<!-- refacil-sdd-ai:compact-guidance:end -->';
6
+
7
+ function readTemplate(packageRoot) {
8
+ const tplPath = path.join(packageRoot, 'templates', 'compact-guidance.md');
9
+ return fs.readFileSync(tplPath, 'utf8').trimEnd();
10
+ }
11
+
12
+ function buildBlock(templateContent) {
13
+ return `${MARKER_START}\n${templateContent}\n${MARKER_END}`;
14
+ }
15
+
16
+ function syncCompactGuidance(projectRoot, packageRoot) {
17
+ const agentsPath = path.join(projectRoot, 'AGENTS.md');
18
+ if (!fs.existsSync(agentsPath)) {
19
+ return { status: 'skipped-no-agents-md' };
20
+ }
21
+
22
+ const template = readTemplate(packageRoot);
23
+ const block = buildBlock(template);
24
+ const existing = fs.readFileSync(agentsPath, 'utf8');
25
+
26
+ const startIdx = existing.indexOf(MARKER_START);
27
+ const endIdx = existing.indexOf(MARKER_END);
28
+
29
+ let next;
30
+ let action;
31
+
32
+ if (startIdx === -1 || endIdx === -1) {
33
+ next = existing.trimEnd() + '\n\n' + block + '\n';
34
+ action = 'appended';
35
+ } else {
36
+ const before = existing.substring(0, startIdx);
37
+ const after = existing.substring(endIdx + MARKER_END.length);
38
+ next = before + block + after;
39
+ action = 'replaced';
40
+ }
41
+
42
+ if (next === existing) {
43
+ return { status: 'unchanged' };
44
+ }
45
+
46
+ fs.writeFileSync(agentsPath, next);
47
+ return { status: action };
48
+ }
49
+
50
+ function removeCompactGuidance(projectRoot) {
51
+ const agentsPath = path.join(projectRoot, 'AGENTS.md');
52
+ if (!fs.existsSync(agentsPath)) {
53
+ return { status: 'skipped-no-agents-md' };
54
+ }
55
+
56
+ const existing = fs.readFileSync(agentsPath, 'utf8');
57
+ const startIdx = existing.indexOf(MARKER_START);
58
+ const endIdx = existing.indexOf(MARKER_END);
59
+
60
+ if (startIdx === -1 || endIdx === -1) {
61
+ return { status: 'not-present' };
62
+ }
63
+
64
+ const before = existing.substring(0, startIdx).trimEnd();
65
+ const after = existing.substring(endIdx + MARKER_END.length);
66
+ const next = (before + '\n' + after.replace(/^\s+/, '')).trimEnd() + '\n';
67
+
68
+ fs.writeFileSync(agentsPath, next);
69
+ return { status: 'removed' };
70
+ }
71
+
72
+ module.exports = {
73
+ syncCompactGuidance,
74
+ removeCompactGuidance,
75
+ MARKER_START,
76
+ MARKER_END,
77
+ };
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "refacil-sdd-ai",
3
- "version": "2.2.0",
3
+ "version": "2.4.0",
4
4
  "description": "SDD-AI: Specification-Driven Development with AI — metodologia de desarrollo con IA usando OpenSpec, Claude Code y Cursor",
5
5
  "bin": {
6
6
  "refacil-sdd-ai": "./bin/cli.js"
7
7
  },
8
8
  "files": [
9
9
  "bin/",
10
+ "lib/",
10
11
  "skills/",
11
12
  "templates/",
12
13
  "config/",
@@ -8,10 +8,7 @@ user-invocable: true
8
8
 
9
9
  Este comando envuelve la funcionalidad de OpenSpec apply y agrega las convenciones del equipo.
10
10
 
11
- ## Antes de empezar
12
-
13
- Lee `SKILL.md` en `.claude/skills/refacil-prereqs/` o `.cursor/skills/refacil-prereqs/` (misma skill en Claude Code y Cursor) y aplica el **perfil `openspec`** antes de continuar.
14
- Lee `METHODOLOGY-CONTRACT.md` en `refacil-prereqs` para reglas transversales del flujo.
11
+ **Prerequisitos**: perfil `openspec` de `refacil-prereqs/SKILL.md` + reglas de `METHODOLOGY-CONTRACT.md`.
15
12
 
16
13
  ## Instrucciones
17
14
 
@@ -79,7 +76,6 @@ Al terminar la implementacion de OpenSpec, agrega este resumen:
79
76
 
80
77
  ## Reglas
81
78
 
82
- - NUNCA implementar codigo sin proposal, design, tasks y **especificacion** (`specs.md` y/o `specs/**/*.md` segun la tabla del Paso 0)
83
79
  - NUNCA generar artefactos SDD desde este comando — eso es responsabilidad exclusiva de `/refacil:propose`
84
- - SIEMPRE leer los artefactos completos antes de escribir codigo
80
+ - Antes de implementar, cumplir las precondiciones del Paso 0 (artefactos completos) y del Paso 1 (rama de trabajo valida)
85
81
  - Si `openspec/changes/` no tiene cambios activos o estan incompletos, informar y redirigir a `/refacil:propose`
@@ -8,10 +8,7 @@ user-invocable: true
8
8
 
9
9
  Este comando envuelve la funcionalidad de OpenSpec archive (que internamente llama a sync-specs) y agrega verificaciones previas del equipo.
10
10
 
11
- ## Antes de empezar
12
-
13
- Lee `SKILL.md` en `.claude/skills/refacil-prereqs/` o `.cursor/skills/refacil-prereqs/` (misma skill en Claude Code y Cursor) y aplica el **perfil `openspec`** antes de continuar.
14
- Lee `METHODOLOGY-CONTRACT.md` en `refacil-prereqs` para reglas transversales del flujo.
11
+ **Prerequisitos**: perfil `openspec` de `refacil-prereqs/SKILL.md` + reglas de `METHODOLOGY-CONTRACT.md`.
15
12
 
16
13
  ## Instrucciones
17
14
 
@@ -8,10 +8,7 @@ user-invocable: true
8
8
 
9
9
  Eres un asistente especializado en investigacion y correccion de bugs. Guias al desarrollador por un flujo estructurado paso a paso.
10
10
 
11
- ## Contexto
12
-
13
- Lee `SKILL.md` en `.claude/skills/refacil-prereqs/` o `.cursor/skills/refacil-prereqs/` (misma skill en Claude Code y Cursor) y aplica el **perfil `agents`** antes de continuar.
14
- Lee `METHODOLOGY-CONTRACT.md` en `refacil-prereqs` para reglas transversales del flujo.
11
+ **Prerequisitos**: perfil `agents` de `refacil-prereqs/SKILL.md` + reglas de `METHODOLOGY-CONTRACT.md`.
15
12
 
16
13
  ## Instrucciones
17
14
 
@@ -29,52 +26,22 @@ Este flujo crea evidencia en `openspec/changes/`. Antes de continuar:
29
26
 
30
27
  ### Paso 1: Describir el bug
31
28
 
32
- Preguntale al usuario (si no lo proporciono en $ARGUMENTS):
33
-
34
- 1. **Que esta pasando?** — Comportamiento actual (el error)
35
- 2. **Que deberia pasar?** — Comportamiento esperado
36
- 3. **Pasos para reproducir** — Como llegar al error
37
- 4. **Evidencia** — Logs, screenshots, stack traces (pedir que los peguen)
38
- 5. **Desde cuando ocurre?** — Siempre, desde un deploy, desde un cambio especifico
39
- 6. **Severidad** — Critico (bloquea produccion), Alto, Medio, Bajo
40
-
41
- ### Paso 2: Investigar la causa raiz
42
-
43
- Con la informacion del paso 1:
29
+ Si `$ARGUMENTS` no los trae, pregunta al usuario: comportamiento actual, esperado, pasos de reproduccion, evidencia (logs/stack traces), cuando empezo a ocurrir, severidad (Critico/Alto/Medio/Bajo).
44
30
 
45
- 1. **Buscar en el codebase**:
46
- - Busca las funciones/archivos mencionados en los logs o stack traces
47
- - Busca el flujo de datos del escenario que falla
48
- - Revisa commits recientes si el bug es nuevo (`git log --oneline -20`)
31
+ ### Paso 2: Investigar causa raiz
49
32
 
50
- 2. **Trazar el flujo**:
51
- - Desde el punto de entrada (controller/endpoint) hasta donde falla
52
- - Identifica cada componente en la cadena
53
- - Busca donde se rompe la cadena
54
-
55
- 3. **Formular hipotesis**:
56
- - Presenta al usuario 1-3 hipotesis de causa raiz
57
- - Para cada una, muestra el archivo y linea sospechosa
58
- - Pide al usuario que confirme o descarte
33
+ - Busca en codebase los simbolos/archivos de logs o stack traces.
34
+ - Traza el flujo desde entrada (controller/endpoint) hasta el punto de falla.
35
+ - Revisa commits recientes si el bug es nuevo: `git log --oneline -20`.
36
+ - Presenta al usuario 1-3 hipotesis con archivo y linea sospechosa; pide que confirme o descarte.
59
37
 
60
38
  ### Paso 3: Diagnosticar
61
39
 
62
- Una vez confirmada la hipotesis:
63
-
64
- 1. **Confirmar la causa raiz**: Muestra el codigo exacto que causa el bug
65
- 2. **Explicar por que falla**: Que condicion o caso no esta manejado
66
- 3. **Evaluar impacto**: Que mas podria estar afectado
40
+ Con la hipotesis confirmada: muestra el codigo exacto que falla, explica que condicion no se maneja, evalua impacto en otras zonas.
67
41
 
68
42
  ### Paso 4: Proponer correccion
69
43
 
70
- Presenta la correccion propuesta:
71
-
72
- 1. **Cambio minimo**: La correccion mas pequeña posible que resuelve el bug
73
- 2. **Archivos a modificar**: Lista con descripcion del cambio
74
- 3. **Riesgos**: Que podria romperse con el fix
75
- 4. **Alternativas**: Si hay mas de una forma de corregirlo
76
-
77
- Espera aprobacion del usuario antes de implementar.
44
+ Presenta: cambio minimo, archivos a modificar, riesgos, alternativas (si existen). Espera aprobacion antes de implementar.
78
45
 
79
46
  ### Paso 5: Validar rama de trabajo (antes de escribir codigo)
80
47
 
@@ -8,9 +8,7 @@ user-invocable: true
8
8
 
9
9
  Este comando envuelve la funcionalidad de OpenSpec explore y agrega contexto del proyecto.
10
10
 
11
- ## Antes de empezar
12
-
13
- Lee `SKILL.md` en `.claude/skills/refacil-prereqs/` o `.cursor/skills/refacil-prereqs/` (misma skill en Claude Code y Cursor) y aplica el **perfil `openspec`** antes de continuar (incluye el uso continuo de `AGENTS.md` durante la exploracion, segun ese archivo).
11
+ **Prerequisitos**: perfil `openspec` de `refacil-prereqs/SKILL.md` — usa `AGENTS.md` como contexto activo durante toda la exploracion.
14
12
 
15
13
  ## Instrucciones
16
14
 
@@ -4,39 +4,30 @@ description: Referencia interna — prerequisitos SDD-AI compartidos por el rest
4
4
  user-invocable: false
5
5
  ---
6
6
 
7
- # Prerequisitos SDD-AI (centralizado)
7
+ # Prerequisitos SDD-AI
8
8
 
9
- La metodologia SDD-AI es **la misma** en **Claude Code** y **Cursor**: `refacil-sdd-ai init` instala copias equivalentes bajo `.claude/skills/refacil-*` y `.cursor/skills/refacil-*`. Usa la ruta del directorio que corresponda al IDE que tengas abierto.
9
+ Metodologia identica en Claude Code (`.claude/skills/refacil-*`) y Cursor (`.cursor/skills/refacil-*`). Usa la ruta del IDE abierto.
10
10
 
11
- Las demas skills `refacil:*` remiten aqui para no duplicar instrucciones. **Lee esta skill cuando otra skill indique un perfil** y ejecuta los pasos en orden; si uno falla, **detente** y muestra al usuario el mensaje indicado.
12
- Ademas, lee y aplica `METHODOLOGY-CONTRACT.md` (misma carpeta) para reglas transversales: estados del flujo, politica de ramas, tests multi-stack y modo de salida.
11
+ Reglas transversales (estados, ramas, tests, salida): `METHODOLOGY-CONTRACT.md` en esta misma carpeta.
13
12
 
14
- ## Perfil `openspec` (OpenSpec + repo + AGENTS.md)
13
+ ## Perfil `openspec`
15
14
 
16
- Usar cuando la skill diga: *Aplica el perfil `openspec`.*
15
+ Una skill pide este perfil cuando usa OpenSpec y necesita `AGENTS.md`. Estas validaciones son obligatorias en cada ejecucion de skill que declare este perfil.
17
16
 
18
- 1. **OpenSpec instalado**: Ejecuta `openspec --version 2>&1`. Si el comando falla o no se reconoce, informa al usuario: "OpenSpec no esta instalado. Ejecuta `/refacil:setup` para instalarlo y configurar el repositorio." y **detente**.
17
+ 1. Verifica comando OpenSpec: `openspec --version 2>&1`. Si falla: *"OpenSpec no esta instalado o no esta en PATH. Ejecuta `/refacil:setup`"* y **detente**.
18
+ 2. Verifica `openspec/` en la raiz del repo. Si falta: *"OpenSpec no esta inicializado en este repo. Ejecuta `/refacil:setup`"* y **detente**.
19
+ 3. Lee `AGENTS.md` de la raiz. Si falta: *"No se encontro AGENTS.md. Ejecuta `/refacil:setup`"* y **detente**.
20
+ 4. Si un comando de OpenSpec falla despues, consulta `.claude/skills/refacil-setup/troubleshooting.md`.
21
+ 5. Si `AGENTS.md` incluye bloque `compact-guidance`, aplica esas reglas de eficiencia de tokens en toda la ejecucion.
19
22
 
20
- 2. **OpenSpec inicializado**: Verifica que exista la carpeta `openspec/` en la raiz del proyecto. Si no existe, informa al usuario: "OpenSpec no esta inicializado en este repositorio. Ejecuta `/refacil:setup` para configurarlo." y **detente**.
23
+ Caso especial: en `refacil:explore`, `AGENTS.md` es contexto activo durante toda la exploracion.
21
24
 
22
- 3. **AGENTS.md**: Si existe `AGENTS.md` en la raiz del proyecto, leelo para entender convenciones, arquitectura y patrones. Si NO existe, informa al usuario: "No se encontro AGENTS.md. Ejecuta `/refacil:setup` para generarlo." y **detente**.
25
+ ## Perfil `agents`
23
26
 
24
- - Si la skill activa es **`refacil:explore`**, usa lo leido en `AGENTS.md` como **contexto activo** durante toda la exploracion (no solo al inicio).
27
+ Solo requiere `AGENTS.md`. Si existe, leelo y aplica `compact-guidance` si esta presente. Si falta: continua con baseline generico y avisa al usuario: *"No se encontro AGENTS.md; ejecuta `/refacil:setup` para reglas del proyecto."*
25
28
 
26
- ## Perfil `agents` (solo AGENTS.md)
29
+ ## OPENSPEC-DELTAS.md
27
30
 
28
- Usar cuando la skill diga: *Aplica el perfil `agents`.*
31
+ Convenciones Refacil al delegar a skills `openspec-*`: ver `OPENSPEC-DELTAS.md` (misma carpeta), leer junto a la skill OpenSpec que se invoque.
29
32
 
30
- Si existe `AGENTS.md` en la raiz del proyecto, leelo para entender convenciones, arquitectura y patrones.
31
- Si NO existe, informa al usuario: "No se encontro AGENTS.md. Continuare con baseline generico; para reglas del proyecto ejecuta `/refacil:setup`." y continua.
32
-
33
- ## Ubicacion de este archivo
34
-
35
- En el repo del proyecto (elige segun herramienta):
36
-
37
- - Claude Code: `.claude/skills/refacil-prereqs/SKILL.md`
38
- - Cursor: `.cursor/skills/refacil-prereqs/SKILL.md`
39
-
40
- En la **misma carpeta** esta `OPENSPEC-DELTAS.md`: convenciones Refacil al delegar en skills `openspec-*` (leer junto a la skill OpenSpec indicada).
41
-
42
- Si ninguna existe, ejecuta `refacil-sdd-ai update` (o `init`).
33
+ Si faltan estos archivos, ejecuta `refacil-sdd-ai update` (o `init`).
@@ -8,9 +8,7 @@ user-invocable: true
8
8
 
9
9
  Este comando envuelve la funcionalidad de OpenSpec fast-forward (ff) y agrega las convenciones del equipo.
10
10
 
11
- ## Antes de empezar
12
-
13
- Lee `SKILL.md` en `.claude/skills/refacil-prereqs/` o `.cursor/skills/refacil-prereqs/` (misma skill en Claude Code y Cursor) y aplica el **perfil `openspec`** antes de continuar.
11
+ **Prerequisitos**: perfil `openspec` de `refacil-prereqs/SKILL.md` + reglas de `METHODOLOGY-CONTRACT.md`.
14
12
 
15
13
  ## Instrucciones
16
14
 
@@ -8,12 +8,9 @@ user-invocable: true
8
8
 
9
9
  Eres un reviewer exigente pero constructivo que evalua el codigo contra el checklist de calidad del equipo.
10
10
 
11
- ## Contexto
11
+ **Prerequisitos**: perfil `agents` de `refacil-prereqs/SKILL.md` + modo de salida de `METHODOLOGY-CONTRACT.md`.
12
12
 
13
- Lee `SKILL.md` en `.claude/skills/refacil-prereqs/` o `.cursor/skills/refacil-prereqs/` (misma skill en Claude Code y Cursor) y aplica el **perfil `agents`** antes de continuar.
14
- Lee `METHODOLOGY-CONTRACT.md` en `refacil-prereqs` y aplica el modo de salida definido ahi.
15
-
16
- ### Cargar checklists
13
+ ## Checklists a cargar
17
14
 
18
15
  1. **Siempre** lee el checklist general: [checklist.md](checklist.md)
19
16
  2. **Detecta el tipo de proyecto** inspeccionando dependencias, `AGENTS.md`, o la estructura del repo:
@@ -77,62 +74,27 @@ Usa severidad para priorizar correcciones, no para inflar el reporte.
77
74
 
78
75
  ### Paso 4: Reporte
79
76
 
77
+ Por defecto, usa salida **concisa** (segun `METHODOLOGY-CONTRACT.md`):
78
+
80
79
  ```
81
80
  === Review Report ===
82
-
83
81
  VEREDICTO: APROBADO | APROBADO CON OBSERVACIONES | REQUIERE CORRECCIONES
84
82
  BLOCKERS: [si/no]
85
83
 
86
- ## Hallazgos priorizados (solo FAIL)
84
+ ## Hallazgos priorizados (solo FAIL, maximo 5)
87
85
  1. [CRITICO|ALTO|MEDIO|BAJO] [seccion/item] — [problema]
88
86
  - Evidencia: [archivo/rango o comportamiento]
89
87
  - Correccion sugerida: [accion concreta]
90
88
 
91
- ## Checklist General
92
- - Alcance y foco: [PASS/FAIL/N/A]
93
- - Conformidad con Spec: [PASS/FAIL/N/A]
94
- - Calidad de Codigo: [PASS/FAIL/N/A]
95
- - Arquitectura: [PASS/FAIL/N/A]
96
- - Manejo de errores: [PASS/FAIL/N/A]
97
- - Testing: [PASS/FAIL/N/A]
98
- - Seguridad: [PASS/FAIL/N/A]
99
- - Dependencias: [PASS/FAIL/N/A]
100
- - Mantenibilidad y observabilidad: [PASS/FAIL/N/A]
101
- - Git y Deploy: [PASS/FAIL/N/A]
102
- - Reglas del proyecto (AGENTS.md): [PASS/FAIL/N/A]
103
-
104
- ## Checklist Backend (si aplica)
105
- - Validacion de entrada: [PASS/FAIL/N/A]
106
- - Contratos de API: [PASS/FAIL/N/A]
107
- - Manejo de errores: [PASS/FAIL/N/A]
108
- - Arquitectura y patrones: [PASS/FAIL/N/A]
109
- - Concurrencia y atomicidad: [PASS/FAIL/N/A]
110
- - Consultas a BD: [PASS/FAIL/N/A]
111
- - Caching: [PASS/FAIL/N/A]
112
- - Resiliencia y conexiones: [PASS/FAIL/N/A]
113
- - Colas y mensajeria: [PASS/FAIL/N/A]
114
- - Performance: [PASS/FAIL/N/A]
115
- - Logging: [PASS/FAIL/N/A]
116
- - Testing backend: [PASS/FAIL/N/A]
117
-
118
- ## Checklist Frontend (si aplica)
119
- - Componentes y estructura: [PASS/FAIL/N/A]
120
- - Estado y datos: [PASS/FAIL/N/A]
121
- - Manejo de errores en UI: [PASS/FAIL/N/A]
122
- - Integracion con APIs: [PASS/FAIL/N/A]
123
- - Validacion de formularios: [PASS/FAIL/N/A]
124
- - Ruteo y navegacion: [PASS/FAIL/N/A]
125
- - Consistencia visual: [PASS/FAIL/N/A]
126
- - Performance frontend: [PASS/FAIL/N/A]
127
- - Accesibilidad: [PASS/FAIL/N/A]
128
- - Seguridad frontend: [PASS/FAIL/N/A]
129
- - Testing frontend: [PASS/FAIL/N/A]
130
-
131
89
  ## Correcciones minimas para aprobar
132
90
  1. [item accionable]
133
91
  2. [item accionable]
92
+
93
+ Siguiente paso: [/refacil:archive | /refacil:verify]
134
94
  ```
135
95
 
96
+ Si el usuario pide modo **detallado**, agrega tras el bloque conciso una seccion por cada checklist cargado (`checklist.md`, `checklist-back.md`, `checklist-front.md` segun aplique) con cada item y su estado `[PASS/FAIL/N/A]`. No inventes items; usa literalmente los de los archivos. Marca N/A si un item no aplica.
97
+
136
98
  ### Paso 5: Marcador de review (obligatorio si APROBADO)
137
99
 
138
100
  Si el veredicto es **APROBADO** o **APROBADO CON OBSERVACIONES**, crea un archivo marcador en el directorio del cambio activo:
@@ -64,6 +64,12 @@ Analiza el repo y genera `AGENTS.md` (espanol, terminos tecnicos en ingles). Si
64
64
 
65
65
  **6.4** — Muestra el resultado; si el usuario aprueba, escribe en la raiz.
66
66
 
67
+ **6.5 Eficiencia de tokens (hook + bloque auto-gestionado)**:
68
+ - Explica al usuario que `refacil-sdd-ai` mantiene en `AGENTS.md` un bloque `compact-guidance` para reducir consumo de contexto.
69
+ - Ese bloque se sincroniza automaticamente por el hook `check-update` en cada `SessionStart` (y tambien en `init`/`update`).
70
+ - Si `AGENTS.md` aun no existe, la sincronizacion se omite sin error.
71
+ - Indica que no debe editar manualmente el contenido entre marcadores `compact-guidance` porque se sobrescribe.
72
+
67
73
  ### Paso 7: Verificar skills
68
74
 
69
75
  - OpenSpec: 10 carpetas bajo `.claude/skills/` y `.cursor/skills/`: `openspec-apply-change`, `openspec-archive-change`, `openspec-bulk-archive-change`, `openspec-continue-change`, `openspec-explore`, `openspec-ff-change`, `openspec-new-change`, `openspec-onboard`, `openspec-sync-specs`, `openspec-verify-change`. Si falta alguna: sugerir `openspec init --tools claude,cursor` o `openspec config list`.
@@ -8,34 +8,20 @@ user-invocable: true
8
8
 
9
9
  Eres un asistente de testing que genera pruebas unitarias de alta calidad, adaptandose al stack tecnologico del proyecto.
10
10
 
11
- ## Antes de empezar
12
-
13
- Lee `SKILL.md` en `.claude/skills/refacil-prereqs/` o `.cursor/skills/refacil-prereqs/` (misma skill en Claude Code y Cursor) y aplica el **perfil `openspec`** antes de continuar.
11
+ **Prerequisitos**: perfil `openspec` de `refacil-prereqs/SKILL.md` + comando de tests segun `METHODOLOGY-CONTRACT.md §3`.
14
12
 
15
13
  ### Detectar stack tecnologico
16
14
 
17
- **IMPORTANTE**: Este skill NO asume ningun stack. Antes de generar tests, detecta automaticamente:
18
-
19
- 1. **Lenguaje**: Lee `package.json`, `pom.xml`, `build.gradle`, `pyproject.toml`, `go.mod`, `Cargo.toml`, `Gemfile`, o los archivos fuente para determinar el lenguaje principal.
20
-
21
- 2. **Framework de testing**: Busca la configuracion de tests existente:
22
- - JavaScript/TypeScript: `jest.config.*`, `vitest.config.*`, `.mocharc.*`, `karma.conf.*`, seccion `jest` en `package.json`
23
- - Python: `pytest.ini`, `pyproject.toml` (seccion `[tool.pytest]`), `setup.cfg`
24
- - Java/Kotlin: `pom.xml` (JUnit/Mockito), `build.gradle` (dependencias de test)
25
- - Go: archivos `_test.go` existentes
26
- - Rust: archivos con `#[cfg(test)]`
27
- - Otro: busca archivos de test existentes para inferir patron
28
-
29
- 3. **Patrones existentes**: Busca tests existentes en el proyecto (`*.spec.*`, `*.test.*`, `test_*`, `*_test.*`) y analiza:
30
- - Estructura de archivos (donde se ubican los tests)
31
- - Convencion de nombrado
32
- - Como se hacen los mocks/stubs
33
- - Framework de assertions usado
34
- - Setup/teardown patterns
15
+ NO asumir stack. Antes de generar tests, detecta:
35
16
 
36
- 4. **Script de ejecucion**: Identifica como se ejecutan los tests (`npm test`, `pytest`, `go test`, `cargo test`, `mvn test`, etc.)
17
+ | Fuente | Que buscar |
18
+ |---|---|
19
+ | Lenguaje | `package.json`, `pom.xml`, `build.gradle`, `pyproject.toml`, `go.mod`, `Cargo.toml`, `Gemfile` |
20
+ | Framework de tests | JS/TS: `jest.config.*`, `vitest.config.*`, `.mocharc.*`, campo `jest` en `package.json`. Python: `pytest.ini`, `[tool.pytest]` en `pyproject.toml`. Java: `pom.xml`/`build.gradle`. Go: `*_test.go`. Rust: `#[cfg(test)]` |
21
+ | Patrones del proyecto | Tests existentes (`*.spec.*`, `*.test.*`, `test_*`, `*_test.*`): ubicacion, nombrado, mocks, assertions, setup/teardown |
22
+ | Comando de ejecucion | `METHODOLOGY-CONTRACT.md §3` |
37
23
 
38
- Si existe [testing-patterns.md](testing-patterns.md) en esta misma carpeta de skill, usalo como **referencia adicional**, pero **siempre prioriza los patrones reales detectados en el proyecto**. Si los patrones del proyecto difieren de testing-patterns.md, sigue los del proyecto.
24
+ Si existe `testing-patterns.md` junto a esta skill, usalo como referencia secundaria. Los patrones reales del proyecto siempre tienen prioridad.
39
25
 
40
26
  ## Instrucciones
41
27
 
@@ -88,6 +74,7 @@ Si el usuario pasa un archivo: `/refacil:test src/mi-archivo.ext`
88
74
  ## Reglas
89
75
 
90
76
  - **NUNCA hardcodear un stack** — siempre detectar del proyecto real
77
+ - Resolver y ejecutar el comando de tests segun `METHODOLOGY-CONTRACT.md` §3
91
78
  - Cada criterio de aceptacion (CA-XX) debe tener al menos 1 test
92
79
  - Cada criterio de rechazo (CR-XX) debe tener al menos 1 test
93
80
  - Coverage minimo del 80% en archivos nuevos
@@ -7,13 +7,9 @@ user-invocable: true
7
7
  # refacil:up-code — Integrar Codigo y Publicar Cambios
8
8
 
9
9
  Sube los cambios al repositorio remoto y genera el PR para integracion.
10
- Toda integracion a ramas protegidas requiere PR sin excepciones (incluye `testing`).
11
- NUNCA se hacen ajustes directos en `master` o `main`.
10
+ Aplica la politica de ramas e integracion definida en `refacil-prereqs/METHODOLOGY-CONTRACT.md` (sin excepciones).
12
11
 
13
- ## Antes de empezar
14
-
15
- Lee `SKILL.md` en `.claude/skills/refacil-prereqs/` o `.cursor/skills/refacil-prereqs/` (misma skill en Claude Code y Cursor) y aplica el **perfil `agents`** antes de continuar.
16
- Lee `METHODOLOGY-CONTRACT.md` en `refacil-prereqs` para reglas transversales del flujo.
12
+ **Prerequisitos**: perfil `agents` de `refacil-prereqs/SKILL.md` + reglas de `METHODOLOGY-CONTRACT.md` (politica de ramas aplica sin excepciones).
17
13
 
18
14
  ## Instrucciones
19
15
 
@@ -21,7 +17,7 @@ Lee `METHODOLOGY-CONTRACT.md` en `refacil-prereqs` para reglas transversales del
21
17
 
22
18
  Ejecuta `git branch --show-current` para obtener el nombre de la rama.
23
19
 
24
- - Si la rama actual es protegida (`master`, `main`, `develop`, `dev`, `testing`, `qa`), **detente** e informa al usuario:
20
+ - Si la rama actual es protegida (segun `METHODOLOGY-CONTRACT.md`), **detente** e informa al usuario:
25
21
  ```
26
22
  No se puede subir codigo desde una rama protegida ([nombre]).
27
23
  La validacion de rama se hace en /refacil:apply o /refacil:bug antes de escribir codigo.
@@ -103,7 +99,6 @@ A que rama quieres crear el PR? (recomendado: testing)
103
99
 
104
100
  ## Reglas
105
101
 
106
- - NUNCA hacer push directo a ramas protegidas: master, main, develop, dev, testing, qa
107
- - Si la rama actual es protegida, **detener** — la validacion de rama se hace en `/refacil:apply` o `/refacil:bug`, no aqui
108
- - Toda integracion a cualquier rama protegida requiere PR
102
+ - Respetar estrictamente la politica de ramas protegidas e integracion por PR del `METHODOLOGY-CONTRACT.md`
103
+ - Si la rama actual es protegida, **detener** — la validacion/cambio de rama se hace en `/refacil:apply` o `/refacil:bug`, no aqui
109
104
  - No forzar push (--force) a menos que el usuario lo pida explicitamente
@@ -8,10 +8,7 @@ user-invocable: true
8
8
 
9
9
  Este comando envuelve la funcionalidad de OpenSpec verify y agrega verificacion de tests.
10
10
 
11
- ## Antes de empezar
12
-
13
- Lee `SKILL.md` en `.claude/skills/refacil-prereqs/` o `.cursor/skills/refacil-prereqs/` (misma skill en Claude Code y Cursor) y aplica el **perfil `openspec`** antes de continuar.
14
- Lee `METHODOLOGY-CONTRACT.md` en `refacil-prereqs` para reglas transversales del flujo.
11
+ **Prerequisitos**: perfil `openspec` de `refacil-prereqs/SKILL.md` + reglas de `METHODOLOGY-CONTRACT.md`.
15
12
 
16
13
  ## Instrucciones
17
14
 
@@ -0,0 +1,45 @@
1
+ <!-- AUTO-GENERADO por refacil-sdd-ai. No edites entre los marcadores; el contenido se refresca en cada sesion. -->
2
+
3
+ ## Eficiencia de tokens
4
+
5
+ Reglas para minimizar el consumo de contexto al trabajar en este repositorio.
6
+
7
+ **Lectura de archivos**
8
+ - Usa `Read` con `offset` y `limit` cuando conozcas la zona relevante del archivo.
9
+ - No leas archivos de mas de 500 lineas completos; segmenta por rango.
10
+ - Para descubrir estructura del repo: usa `Glob` en lugar de `ls -R` o `find`.
11
+ - No releas el archivo completo si ya leiste el bloque relevante; continua desde ese contexto.
12
+ - Antes de leer un archivo largo, ubica simbolos con busqueda y luego lee solo rangos candidatos.
13
+
14
+ **Busqueda**
15
+ - Usa `Grep` con `head_limit` en vez de dump crudo.
16
+ - Cuando solo necesites ubicaciones, usa `output_mode: "files_with_matches"`.
17
+ - Acota siempre con `glob` o `type` para no escanear de mas.
18
+
19
+ **Git (via Bash)**
20
+ - Historial: `git log --oneline -20` por defecto; amplia solo si es insuficiente.
21
+ - Diffs: empieza con `git diff --stat`; pide el diff completo solo del archivo que vas a tocar.
22
+ - Status: `git status -s` (short format).
23
+ - Show: `git show --stat` antes del full.
24
+
25
+ **Tests**
26
+ - Reporta solo failures; no enumeres los passes en el output visible.
27
+ - Si el runner tiene modo silencioso o summary (`jest --silent --reporters=summary`, `pytest -q`), usalo.
28
+ - Si el runner es verboso por defecto, redirige: `2>&1 | tail -80`.
29
+
30
+ **Logs y errores**
31
+ - No pegues stack traces enteros; extrae solo el frame relevante con el mensaje.
32
+ - Resume logs repetidos: "(N ocurrencias de <mensaje>)".
33
+ - Para archivos de log: `tail -100` o filtra por nivel ERROR/WARN.
34
+
35
+ **Build y lint**
36
+ - `tsc`, `eslint`, `biome`: agrupa errores por archivo o por regla; no enumeres linea por linea.
37
+ - Construccion exitosa: confirma con una sola linea, no pegues el output completo.
38
+ - Si hay muchos errores similares: muestra un ejemplo y el conteo.
39
+
40
+ **Docker y contenedores**
41
+ - `docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Image}}"`.
42
+ - `docker logs --tail 100` siempre; nunca logs completos.
43
+
44
+ **Regla general**
45
+ Cuando dudes entre verbosidad y concision, elige concision. El usuario puede pedir detalle bajo demanda.
@@ -1,11 +1,8 @@
1
- # CLAUDE.md
2
-
3
- Las instrucciones completas del proyecto estan en [AGENTS.md](AGENTS.md).
4
- Si AGENTS.md no existe, ejecuta `/refacil:setup` para generarlo automaticamente.
1
+ Instrucciones completas del proyecto: ver `AGENTS.md`. Si falta, ejecuta `/refacil:setup`.
5
2
 
6
3
  ## Metodologia SDD-AI (Refacil)
7
4
 
8
- Este proyecto usa la metodologia SDD-AI en **Claude Code** y **Cursor** con el mismo conjunto de skills: estan en `.claude/skills/refacil-*/` y en `.cursor/skills/refacil-*/` (copias equivalentes; `refacil-sdd-ai init` instala ambas). Comandos disponibles:
5
+ Skills identicas en `.claude/skills/refacil-*/` (Claude Code) y `.cursor/skills/refacil-*/` (Cursor). Instaladas por `refacil-sdd-ai init`.
9
6
 
10
7
  | Comando | Descripcion |
11
8
  |---------|-------------|
@@ -18,7 +15,14 @@ Este proyecto usa la metodologia SDD-AI en **Claude Code** y **Cursor** con el m
18
15
  | `/refacil:verify` | Validar implementacion vs specs |
19
16
  | `/refacil:review` | Review con checklist de calidad |
20
17
  | `/refacil:archive` | Archivar cambio completado |
21
- | `/refacil:up-code` | Subir codigo a rama de desarrollo |
18
+ | `/refacil:up-code` | Subir codigo y crear PR |
22
19
  | `/refacil:bug` | Flujo guiado de bugfix |
23
20
 
24
21
  Flujo: `setup` → `propose` → `apply` → `test` → `verify` → `review` → `archive` → `up-code`
22
+
23
+ ## Eficiencia de tokens (automatica)
24
+
25
+ - El hook `check-update` en `SessionStart` sincroniza el bloque `compact-guidance` en `AGENTS.md`.
26
+ - El bloque define reglas de salida compacta (lectura por rango, busqueda acotada, tests/logs resumidos).
27
+ - Si `AGENTS.md` aun no existe, la sincronizacion se omite sin error.
28
+ - No editar manualmente el contenido entre marcadores `compact-guidance`; se sobreescribe automaticamente.
@@ -1,22 +0,0 @@
1
- # Cursor Rules
2
-
3
- Las instrucciones completas del proyecto estan en AGENTS.md.
4
- Si AGENTS.md no existe, ejecuta /refacil:setup para generarlo automaticamente.
5
-
6
- ## Metodologia SDD-AI (Refacil)
7
-
8
- Metodologia equivalente en Claude Code (`.claude/skills/refacil-*/`) y Cursor (`.cursor/skills/refacil-*/`). Comandos (en este IDE, bajo `.cursor/skills/refacil-*/`):
9
-
10
- - /refacil:setup — Instalar OpenSpec y generar AGENTS.md
11
- - /refacil:guide — Guia interactiva
12
- - /refacil:explore — Explorar codebase
13
- - /refacil:propose — Crear propuesta de cambio
14
- - /refacil:apply — Implementar tasks
15
- - /refacil:test — Generar tests unitarios
16
- - /refacil:verify — Validar vs specs
17
- - /refacil:review — Review con checklist
18
- - /refacil:archive — Archivar cambio
19
- - /refacil:up-code — Subir codigo a rama de desarrollo
20
- - /refacil:bug — Flujo guiado de bugfix
21
-
22
- Flujo: setup → propose → apply → test → verify → review → archive → up-code