refacil-sdd-ai 2.0.7 → 2.0.9

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
@@ -73,6 +73,34 @@ Una vez instalado, estos comandos estan disponibles en Claude Code y Cursor:
73
73
  | `/refacil:up-code` | Subir codigo a rama de desarrollo (con validacion de ramas protegidas) |
74
74
  | `/refacil:bug` | Flujo guiado completo para investigar y corregir bugs |
75
75
 
76
+ ## Uso rapido (guia de decision)
77
+
78
+ Si no tienes claro que comando usar, aplica esta regla simple:
79
+
80
+ - Quiero entender el sistema sin tocar codigo -> `/refacil:explore`
81
+ - Quiero construir algo nuevo o cambiar comportamiento -> `/refacil:propose`
82
+ - Ya aprobe artefactos y quiero implementar -> `/refacil:apply`
83
+ - Quiero generar o completar pruebas -> `/refacil:test`
84
+ - Quiero validar cumplimiento contra spec -> `/refacil:verify`
85
+ - Quiero evaluacion de calidad tecnica -> `/refacil:review`
86
+ - Ya termine y quiero cerrar el cambio en OpenSpec -> `/refacil:archive`
87
+ - Quiero subir cambios y abrir PR -> `/refacil:up-code`
88
+ - Tengo un error en produccion o bug funcional -> `/refacil:bug`
89
+
90
+ ## Flujo minimo recomendado (equipo)
91
+
92
+ Para mantener trazabilidad y calidad sin pasos innecesarios:
93
+
94
+ 1. `/refacil:propose` (aprobacion humana obligatoria)
95
+ 2. `/refacil:apply`
96
+ 3. `/refacil:test`
97
+ 4. `/refacil:verify`
98
+ 5. `/refacil:review`
99
+ 6. `/refacil:archive`
100
+ 7. `/refacil:up-code`
101
+
102
+ Si es bugfix, puedes iniciar con `/refacil:bug` y luego continuar en `review -> up-code`.
103
+
76
104
  ## Flujos de trabajo
77
105
 
78
106
  ### Feature nuevo
@@ -104,6 +132,26 @@ Una vez instalado, estos comandos estan disponibles en Claude Code y Cursor:
104
132
  /refacil:explore "que quiero entender"
105
133
  ```
106
134
 
135
+ ## Reglas metodologicas transversales
136
+
137
+ Para mantener consistencia entre todas las skills, el paquete define un contrato metodologico unico en `skills/prereqs/METHODOLOGY-CONTRACT.md`:
138
+
139
+ - Estados del flujo (Ready for Propose/Apply/Verify/Review/Archive/Merge)
140
+ - Politica de `AGENTS.md` por perfil (`openspec` vs `agents`)
141
+ - Resolucion de comando de tests multi-stack (sin hardcodear `npm test`)
142
+ - Politica unificada de ramas protegidas y creacion de ramas
143
+ - Modo de salida estandar: `conciso` por defecto, `detallado` bajo demanda
144
+
145
+ ### Checkpoints de estado (DoR/DoD)
146
+
147
+ Antes de avanzar de etapa, valida estos estados:
148
+
149
+ - `READY_FOR_APPLY`: artefactos SDD completos + aprobacion explicita
150
+ - `READY_FOR_VERIFY`: implementacion terminada y enfocada al alcance
151
+ - `READY_FOR_REVIEW`: verify ejecutado y bloqueantes tratados
152
+ - `READY_FOR_ARCHIVE`: cambio funcionalmente cerrado
153
+ - `READY_FOR_MERGE`: rama lista para PR
154
+
107
155
  ## Como funciona
108
156
 
109
157
  1. **`refacil-sdd-ai init`** copia las skills a `.claude/skills/` y `.cursor/skills/`, y crea `CLAUDE.md` + `.cursorrules`
package/bin/cli.js CHANGED
@@ -135,6 +135,68 @@ function checkNodeVersion() {
135
135
  return true;
136
136
  }
137
137
 
138
+ // --- Hook installation ---
139
+
140
+ function installHook() {
141
+ const settingsDir = path.join(projectRoot, '.claude');
142
+ const settingsPath = path.join(settingsDir, 'settings.json');
143
+ let settings = {};
144
+
145
+ if (fs.existsSync(settingsPath)) {
146
+ settings = JSON.parse(fs.readFileSync(settingsPath, 'utf8'));
147
+ }
148
+
149
+ if (!settings.hooks) settings.hooks = {};
150
+ if (!settings.hooks.SessionStart) settings.hooks.SessionStart = [];
151
+
152
+ // Skip if already installed (marked with _sdd)
153
+ const alreadyInstalled = settings.hooks.SessionStart.some(h => h._sdd === true);
154
+ if (alreadyInstalled) {
155
+ console.log(' Hook check-update ya configurado.');
156
+ return false;
157
+ }
158
+
159
+ settings.hooks.SessionStart.push({
160
+ _sdd: true,
161
+ matcher: '',
162
+ hooks: [
163
+ {
164
+ type: 'command',
165
+ command: 'refacil-sdd-ai check-update',
166
+ },
167
+ ],
168
+ });
169
+
170
+ fs.mkdirSync(settingsDir, { recursive: true });
171
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
172
+ return true;
173
+ }
174
+
175
+ // --- Check update ---
176
+
177
+ function checkUpdate() {
178
+ const { execSync } = require('child_process');
179
+ const localVersion = require(path.join(packageRoot, 'package.json')).version;
180
+
181
+ try {
182
+ const latest = execSync('npm view refacil-sdd-ai version', {
183
+ encoding: 'utf8',
184
+ timeout: 10000,
185
+ stdio: ['pipe', 'pipe', 'pipe'],
186
+ }).trim();
187
+
188
+ if (latest && latest !== localVersion) {
189
+ console.log(
190
+ `[refacil-sdd-ai] La metodologia SDD-AI tiene una nueva version disponible: v${localVersion} (instalada) -> v${latest} (disponible en npm). ` +
191
+ 'Informa al usuario que hay una actualizacion disponible y preguntale si desea actualizar ahora. ' +
192
+ `Si acepta, ejecuta: npm update -g refacil-sdd-ai && refacil-sdd-ai update`,
193
+ );
194
+ }
195
+ } catch (_) {
196
+ // Silent on error (no internet, registry unreachable, etc.)
197
+ }
198
+ }
199
+
138
200
  // --- Commands ---
139
201
 
140
202
  function init() {
@@ -160,6 +222,11 @@ function init() {
160
222
  console.log(' .cursorrules OK');
161
223
  }
162
224
 
225
+ // Install SessionStart hook for version check
226
+ if (installHook()) {
227
+ console.log(' Hook check-update agregado a .claude/settings.json');
228
+ }
229
+
163
230
  console.log('\n Siguientes pasos:\n');
164
231
  console.log(' 1. REINICIA tu sesion de Claude Code o Cursor');
165
232
  console.log(' (las skills nuevas no se detectan hasta reiniciar)\n');
@@ -174,7 +241,12 @@ function update() {
174
241
  console.log('\n refacil-sdd-ai: Actualizando skills...\n');
175
242
  const count = installSkills();
176
243
  console.log(` ${count} skills actualizadas en .claude/skills/ y .cursor/skills/`);
177
- console.log(' AGENTS.md y configuraciones no fueron modificados.');
244
+
245
+ // Ensure hook is installed (for users updating from versions without hook)
246
+ if (installHook()) {
247
+ console.log(' Hook check-update agregado a .claude/settings.json');
248
+ }
249
+
178
250
  console.log('\n REINICIA tu sesion de Claude Code o Cursor para aplicar los cambios.\n');
179
251
  }
180
252
 
@@ -192,10 +264,11 @@ function help() {
192
264
  refacil-sdd-ai — Metodologia SDD-AI con OpenSpec
193
265
 
194
266
  Comandos:
195
- init Instala skills en .claude/ y .cursor/, crea CLAUDE.md y .cursorrules
196
- update Re-copia skills (para actualizar a nueva version del paquete)
197
- clean Elimina skills de .claude/ y .cursor/
198
- help Muestra esta ayuda
267
+ init Instala skills en .claude/ y .cursor/, crea CLAUDE.md y .cursorrules
268
+ update Re-copia skills (para actualizar a nueva version del paquete)
269
+ check-update Verifica si hay una version mas reciente en npm
270
+ clean Elimina skills de .claude/ y .cursor/
271
+ help Muestra esta ayuda
199
272
 
200
273
  Flujo completo:
201
274
  1. npm install -g refacil-sdd-ai
@@ -220,6 +293,9 @@ switch (command) {
220
293
  case 'update':
221
294
  update();
222
295
  break;
296
+ case 'check-update':
297
+ checkUpdate();
298
+ break;
223
299
  case 'clean':
224
300
  clean();
225
301
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "refacil-sdd-ai",
3
- "version": "2.0.7",
3
+ "version": "2.0.9",
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"
@@ -11,6 +11,7 @@ Este comando envuelve la funcionalidad de OpenSpec apply y agrega las convencion
11
11
  ## Antes de empezar
12
12
 
13
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.
14
15
 
15
16
  ## Instrucciones
16
17
 
@@ -47,42 +48,11 @@ OpenSpec a veces solo genera el arbol `specs/**/*.md`; eso **cumple** la fila de
47
48
 
48
49
  Ejecuta `git branch --show-current` para obtener la rama actual.
49
50
 
50
- #### Ramas protegidas: `master`, `main`, `develop`, `dev`, `testing`, `qa`
51
+ Aplica la **Politica de ramas protegidas y creacion de rama** definida en `refacil-prereqs/METHODOLOGY-CONTRACT.md`.
51
52
 
52
- - **Si la rama es cualquier rama protegida** (`master`, `main`, `develop`, `dev`, `testing`, `qa`):
53
-
54
- Informa al usuario que no se pueden hacer cambios directamente en esa rama y **pidele el numero de tarea de Jira**:
55
- ```
56
- Estas en la rama '[nombre-rama]' que es una rama protegida.
57
- No se deben hacer cambios directamente aqui.
58
-
59
- Cual es el numero de tarea de Jira para este cambio? (ejemplo: RF-5088)
60
- ```
61
-
62
- **Crear la rama siempre desde develop/dev actualizado:**
63
- 1. **Verificar working directory limpio**: Ejecuta `git status --porcelain`. Si hay cambios sin commitear (archivos modificados o sin trackear), informa al usuario:
64
- ```
65
- Hay cambios sin commitear en la rama actual.
66
- Para cambiar de rama de forma segura, necesito guardarlos temporalmente con git stash.
67
- Quieres que haga git stash antes de continuar?
68
- ```
69
- - Si acepta: ejecuta `git stash push -m "stash-automatico-refacil"` y continua. Al final del proceso (despues de crear la rama), ejecuta `git stash pop` para restaurar los cambios.
70
- - Si no acepta: **detente**.
71
- 2. Detecta cual existe en el repo: `develop` o `dev` (ejecuta `git branch --list develop dev`)
72
- 3. Cambia a esa rama: `git checkout develop` (o `dev`)
73
- 4. Actualiza: `git pull origin develop` (o `dev`)
74
- 5. Determina el nombre de la nueva rama:
75
- - Si el usuario entrego el numero de Jira (ej: `RF-5088`): la rama sera `feature/RF-5088`
76
- - Si el usuario no tiene tarea de Jira: usa un nombre descriptivo corto basado en el cambio activo en openspec/changes/ (ej: `feature/agregar-filtro-productos`). Pero **recomienda crear la tarea en Jira** para trazabilidad.
77
- 6. Verifica que la rama no exista ya: `git branch --list [nombre-rama]`
78
- - Si ya existe, informa al usuario y pregunta si quiere cambiarse a esa rama existente o elegir otro nombre.
79
- 7. Crea la rama: `git checkout -b [nombre-rama]`
80
- 8. Si se hizo stash en el paso 1, ejecuta `git stash pop` para restaurar los cambios.
81
-
82
- Si el usuario no acepta crear rama, **detente**.
83
-
84
- - **Si la rama es cualquier otra** (feature/, fix/, hotfix/, refactor/, etc.):
85
- La rama es valida. Continua con el siguiente paso sin interrumpir.
53
+ - Si la rama actual es protegida, ejecutar ese protocolo completo antes de continuar.
54
+ - Para `refacil:apply`, el prefijo sugerido de rama es `feature/`.
55
+ - Si la rama actual ya es de trabajo (feature/fix/hotfix/refactor/etc.), continuar sin interrumpir.
86
56
 
87
57
  ### Paso 2: Delegar a OpenSpec apply
88
58
 
@@ -11,6 +11,7 @@ Este comando envuelve la funcionalidad de OpenSpec archive (que internamente lla
11
11
  ## Antes de empezar
12
12
 
13
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.
14
15
 
15
16
  ## Instrucciones
16
17
 
@@ -20,7 +21,7 @@ Antes de archivar, verifica que el cambio esta realmente completo:
20
21
 
21
22
  1. **Tasks completadas**: Busca el `tasks.md` del cambio y verifica que todas las tasks tienen checkbox marcado (`[x]`). Si hay tasks sin completar, informa al usuario y pregunta si quiere continuar de todas formas.
22
23
 
23
- 2. **Tests pasan**: Ejecuta `npm test` y verifica que pasan. Si hay tests que fallan, informa y pregunta si quiere continuar.
24
+ 2. **Tests pasan**: Resuelve y ejecuta el comando de tests segun `refacil-prereqs/METHODOLOGY-CONTRACT.md`. Si hay tests que fallan, informa y pregunta si quiere continuar.
24
25
 
25
26
  3. **Sin archivos pendientes**: Ejecuta `git status` y verifica si hay cambios sin commitear relacionados al feature. Si los hay, sugiere hacer commit antes de archivar.
26
27
 
@@ -70,3 +71,4 @@ Tip: Ejecuta /refacil:up-code para subir los cambios a tu rama de desarrollo.
70
71
  - Siempre verificar completitud antes de archivar
71
72
  - La sincronizacion de specs es OBLIGATORIA en la metodologia Refacil
72
73
  - No eliminar artefactos, solo moverlos a archive/ para trazabilidad
74
+ - Usa modo de salida **conciso** por defecto y **detallado** solo si el usuario lo pide (ver `METHODOLOGY-CONTRACT.md`)
@@ -11,6 +11,7 @@ Eres un asistente especializado en investigacion y correccion de bugs. Guias al
11
11
  ## Contexto
12
12
 
13
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.
14
15
 
15
16
  ## Instrucciones
16
17
 
@@ -67,42 +68,11 @@ Espera aprobacion del usuario antes de implementar.
67
68
 
68
69
  **ANTES de implementar cualquier cambio**, ejecuta `git branch --show-current` para obtener la rama actual.
69
70
 
70
- #### Ramas protegidas: `master`, `main`, `develop`, `dev`, `testing`, `qa`
71
-
72
- - **Si la rama es cualquier rama protegida** (`master`, `main`, `develop`, `dev`, `testing`, `qa`):
73
-
74
- Informa al usuario que no se pueden hacer cambios directamente en esa rama y **pidele el numero de tarea de Jira**:
75
- ```
76
- Estas en la rama '[nombre-rama]' que es una rama protegida.
77
- No se deben hacer cambios directamente aqui.
78
-
79
- Cual es el numero de tarea de Jira para este fix? (ejemplo: RF-5088)
80
- ```
81
-
82
- **Crear la rama siempre desde develop/dev actualizado:**
83
- 1. **Verificar working directory limpio**: Ejecuta `git status --porcelain`. Si hay cambios sin commitear (archivos modificados o sin trackear), informa al usuario:
84
- ```
85
- Hay cambios sin commitear en la rama actual.
86
- Para cambiar de rama de forma segura, necesito guardarlos temporalmente con git stash.
87
- Quieres que haga git stash antes de continuar?
88
- ```
89
- - Si acepta: ejecuta `git stash push -m "stash-automatico-refacil"` y continua. Al final del proceso (despues de crear la rama), ejecuta `git stash pop` para restaurar los cambios.
90
- - Si no acepta: **detente**.
91
- 2. Detecta cual existe en el repo: `develop` o `dev` (ejecuta `git branch --list develop dev`)
92
- 3. Cambia a esa rama: `git checkout develop` (o `dev`)
93
- 4. Actualiza: `git pull origin develop` (o `dev`)
94
- 5. Determina el nombre de la nueva rama:
95
- - Si el usuario entrego el numero de Jira (ej: `RF-5088`): la rama sera `fix/RF-5088`
96
- - Si el usuario no tiene tarea de Jira: usa un nombre descriptivo corto del bug (ej: `fix/error-calculo-total`). Pero **recomienda crear la tarea en Jira** para trazabilidad.
97
- 6. Verifica que la rama no exista ya: `git branch --list [nombre-rama]`
98
- - Si ya existe, informa al usuario y pregunta si quiere cambiarse a esa rama existente o elegir otro nombre.
99
- 7. Crea la rama: `git checkout -b [nombre-rama]`
100
- 8. Si se hizo stash en el paso 1, ejecuta `git stash pop` para restaurar los cambios.
101
-
102
- Si el usuario no acepta crear rama, **detente**.
103
-
104
- - **Si la rama es cualquier otra** (feature/, fix/, hotfix/, etc.):
105
- La rama es valida. Continua sin interrumpir.
71
+ Aplica la **Politica de ramas protegidas y creacion de rama** definida en `refacil-prereqs/METHODOLOGY-CONTRACT.md`.
72
+
73
+ - Si la rama actual es protegida, ejecutar ese protocolo completo antes de continuar.
74
+ - Para `refacil:bug`, el prefijo sugerido de rama es `fix/`.
75
+ - Si la rama actual ya es de trabajo (feature/fix/hotfix/refactor/etc.), continuar sin interrumpir.
106
76
 
107
77
  ### Paso 6: Implementar el fix
108
78
 
@@ -135,7 +105,7 @@ describe('Bug Fix: [descripcion corta]', () => {
135
105
 
136
106
  ### Paso 8: Verificar
137
107
 
138
- 1. Ejecuta `npm test` — todos los tests deben pasar
108
+ 1. Resuelve el comando de tests segun `METHODOLOGY-CONTRACT.md` y ejecutalo — todos los tests deben pasar
139
109
  2. Muestra resumen del fix
140
110
 
141
111
  ```
@@ -145,7 +115,7 @@ describe('Bug Fix: [descripcion corta]', () => {
145
115
  Fix: [que se cambio]
146
116
  Archivos modificados: [lista]
147
117
  Tests de regresion: [N] tests agregados
148
- npm test: PASS
118
+ [comando-test]: PASS
149
119
 
150
120
  Siguientes pasos:
151
121
  1. /refacil:review — Review del fix (recomendado para bugs criticos)
@@ -166,3 +136,4 @@ Si el bug es significativo, preguntar al usuario si quiere documentarlo en OpenS
166
136
  - Los tests de regresion son OBLIGATORIOS
167
137
  - Si el bug es en produccion (critico), priorizar velocidad pero sin saltarse tests
168
138
  - Responder en español con terminos tecnicos en ingles
139
+ - Usa modo de salida **conciso** por defecto y **detallado** solo si el usuario lo pide (ver `METHODOLOGY-CONTRACT.md`)
@@ -0,0 +1,57 @@
1
+ # Contrato Metodologico SDD-AI (Refacil)
2
+
3
+ Este archivo centraliza reglas transversales para evitar duplicacion e inconsistencias entre skills.
4
+
5
+ ## 1) Estados del flujo (Definition of Ready / Done)
6
+
7
+ - **READY_FOR_PROPOSE**: problema entendido (objetivo, alcance, restricciones) y contexto minimo del repo.
8
+ - **READY_FOR_APPLY**: artefactos SDD completos (`proposal.md`, `design.md`, `tasks.md`, especificacion en `specs.md` y/o `specs/**/*.md`) y aprobacion explicita del usuario.
9
+ - **READY_FOR_VERIFY**: implementacion terminada, sin cambios fuera de alcance.
10
+ - **READY_FOR_REVIEW**: verify ejecutado, issues criticos resueltos o explicitamente aceptados por el usuario.
11
+ - **READY_FOR_ARCHIVE**: tasks completas o excepciones aprobadas, verificacion ejecutada, cambio funcionalmente cerrado.
12
+ - **READY_FOR_MERGE**: review aprobado y rama remota actualizada para PR.
13
+
14
+ ## 2) Politica AGENTS.md
15
+
16
+ - Si una skill requiere perfil `openspec`: `AGENTS.md` es obligatorio (si falta, detener y redirigir a `/refacil:setup`).
17
+ - Si una skill requiere perfil `agents`: si falta `AGENTS.md`, continuar con baseline generico y reportar limitacion al usuario.
18
+
19
+ ## 3) Resolucion de comando de tests (multi-stack)
20
+
21
+ No hardcodear `npm test` salvo que sea realmente el comando del proyecto.
22
+
23
+ Orden de deteccion:
24
+ 1. Si `AGENTS.md` define comando oficial de tests, usar ese.
25
+ 2. Si existe script de package manager (ej. `npm test`, `pnpm test`, `yarn test`, `bun test`), usar el correspondiente.
26
+ 3. Si es Python: `pytest`.
27
+ 4. Si es Go: `go test ./...`.
28
+ 5. Si es Rust: `cargo test`.
29
+ 6. Si es Java/Gradle: `./gradlew test` o `gradle test`.
30
+ 7. Si es Java/Maven: `mvn test`.
31
+
32
+ Coverage (si aplica): detectar comando del proyecto (`test:cov`, `coverage`, `pytest --cov`, etc.). Si no existe, reportar N/A con justificacion.
33
+
34
+ ## 4) Politica de ramas protegidas y creacion de rama
35
+
36
+ Ramas protegidas: `master`, `main`, `develop`, `dev`, `testing`, `qa`.
37
+
38
+ Si la rama actual es protegida:
39
+ 1. Informar y pedir identificador de tarea (Jira u otro).
40
+ 2. Verificar working directory limpio (`git status --porcelain`).
41
+ 3. Si hay cambios sin commitear, pedir aprobacion para `git stash push -m "stash-automatico-refacil"`.
42
+ 4. Detectar base (`develop` o `dev`), cambiar y actualizar (`git pull origin <base>`).
43
+ 5. Crear rama de trabajo:
44
+ - Feature: `feature/<ID>`
45
+ - Bugfix: `fix/<ID>`
46
+ - Sin ID: nombre descriptivo corto y recomendar crear ticket.
47
+ 6. Restaurar `stash` si se uso.
48
+ 7. Si el usuario no aprueba el proceso, detener.
49
+
50
+ ## 5) Politica de salida (UX)
51
+
52
+ Modo por defecto: **conciso**.
53
+
54
+ - **Conciso**: veredicto + blockers + maximo 5 hallazgos priorizados + siguiente paso.
55
+ - **Detallado**: reporte completo por seccion.
56
+
57
+ Si el usuario no pide detalle, usa modo conciso.
@@ -9,6 +9,7 @@ user-invocable: false
9
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.
10
10
 
11
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.
12
13
 
13
14
  ## Perfil `openspec` (OpenSpec + repo + AGENTS.md)
14
15
 
@@ -26,7 +27,8 @@ Usar cuando la skill diga: *Aplica el perfil `openspec`.*
26
27
 
27
28
  Usar cuando la skill diga: *Aplica el perfil `agents`.*
28
29
 
29
- 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**.
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.
30
32
 
31
33
  ## Ubicacion de este archivo
32
34
 
@@ -11,10 +11,19 @@ Eres un reviewer exigente pero constructivo que evalua el codigo contra el check
11
11
  ## Contexto
12
12
 
13
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.
14
15
  Lee el archivo [checklist.md](checklist.md) para conocer los criterios de evaluacion.
15
16
 
16
17
  ## Instrucciones
17
18
 
19
+ ### Paso 0: Definir alcance (obligatorio)
20
+
21
+ - Determina el alcance real del review antes de evaluar.
22
+ - Prioriza este orden:
23
+ 1) Argumento del usuario (`$ARGUMENTS`)
24
+ 2) Cambio activo en `openspec/changes/`
25
+ 3) Cambios no commiteados (`git diff`)
26
+
18
27
  ### Paso 1: Identificar que revisar
19
28
 
20
29
  Si hay un cambio activo en `openspec/changes/`, usalo como referencia.
@@ -37,67 +46,42 @@ Para CADA item del [checklist.md](checklist.md), evalua:
37
46
 
38
47
  Se especifico en las evaluaciones. No des PASS generico — justifica brevemente.
39
48
 
49
+ ### Paso 3.1: Clasificar severidad en cada FAIL
50
+
51
+ - **CRITICO**: Riesgo de seguridad, datos, o incumplimiento de spec.
52
+ - **ALTO**: Puede romper funcionalidad, tests o despliegue.
53
+ - **MEDIO**: Deuda tecnica relevante (arquitectura/mantenibilidad).
54
+ - **BAJO**: Mejora recomendada no bloqueante.
55
+
56
+ Usa severidad para priorizar correcciones, no para inflar el reporte.
57
+
40
58
  ### Paso 4: Reporte
41
59
 
42
60
  ```
43
61
  === Review Report ===
44
62
 
45
- ## 1. Conformidad con Spec
46
- [PASS/FAIL/N/A] Todos los criterios de aceptacion cubiertos
47
- [PASS/FAIL/N/A] No hay funcionalidad fuera del alcance
48
- [PASS/FAIL/N/A] Edge cases manejados
49
-
50
- ## 2. Calidad de Codigo
51
- [PASS/FAIL/N/A] Sigue patrones del repo
52
- [PASS/FAIL/N/A] Sin codigo duplicado
53
- [PASS/FAIL/N/A] Nombres claros y descriptivos
54
- [PASS/FAIL/N/A] Sin console.log/TODO/codigo comentado
55
- [PASS/FAIL/N/A] Imports usan alias del proyecto
56
-
57
- ## 3. Arquitectura
58
- [PASS/FAIL/N/A] Limites de dominio respetados
59
- [PASS/FAIL/N/A] Dependencias en direccion correcta
60
- [PASS/FAIL/N/A] Sin logica de negocio en infraestructura
61
-
62
- ## 4. Testing
63
- [PASS/FAIL/N/A] Cada archivo tiene su .spec.ts
64
- [PASS/FAIL/N/A] Tests cubren criterios de aceptacion
65
- [PASS/FAIL/N/A] Edge cases testeados
66
- [PASS/FAIL/N/A] Coverage >= 80%
67
- [PASS/FAIL/N/A] npm test pasa sin errores
68
-
69
- ## 5. Seguridad
70
- [PASS/FAIL/N/A] Sin secrets hardcodeados
71
- [PASS/FAIL/N/A] Inputs validados
72
- [PASS/FAIL/N/A] Sin inyeccion SQL
73
- [PASS/FAIL/N/A] Endpoints con autorizacion
74
-
75
- ## 6. Performance
76
- [PASS/FAIL/N/A] Queries usan indices
77
- [PASS/FAIL/N/A] Sin queries N+1
78
- [PASS/FAIL/N/A] Operaciones pesadas son async
79
-
80
- ## 7. Mantenibilidad
81
- [PASS/FAIL/N/A] Codigo autoexplicativo
82
- [PASS/FAIL/N/A] Funciones hacen una sola cosa
83
- [PASS/FAIL/N/A] Archivos < 300 lineas
84
-
85
- ## 8. Git y Deploy
86
- [PASS/FAIL/N/A] Commits atomicos
87
- [PASS/FAIL/N/A] Sin archivos generados en commit
88
- [PASS/FAIL/N/A] Migraciones reversibles (si aplica)
89
-
90
- ## 9. Reglas especificas del proyecto
91
- [PASS/FAIL/N/A] Cumple reglas de "Siempre hacer" de AGENTS.md
92
- [PASS/FAIL/N/A] No viola reglas de "Nunca hacer" de AGENTS.md
93
- [PASS/FAIL/N/A] Reglas adicionales del proyecto (si aplica)
94
-
95
- ---
96
- RESUMEN: [X] PASS | [Y] FAIL | [Z] N/A
97
- VEREDICTO: APROBADO / REQUIERE CORRECCIONES
98
-
99
- Correcciones necesarias:
100
- 1. [FAIL] [seccion] — [que corregir y como]
63
+ VEREDICTO: APROBADO | APROBADO CON OBSERVACIONES | REQUIERE CORRECCIONES
64
+ BLOCKERS: [si/no]
65
+
66
+ ## Hallazgos priorizados (solo FAIL)
67
+ 1. [CRITICO|ALTO|MEDIO|BAJO] [seccion/item] — [problema]
68
+ - Evidencia: [archivo/rango o comportamiento]
69
+ - Correccion sugerida: [accion concreta]
70
+
71
+ ## Checklist resumido
72
+ - Conformidad con Spec: [PASS/FAIL/N/A]
73
+ - Calidad de Codigo: [PASS/FAIL/N/A]
74
+ - Arquitectura: [PASS/FAIL/N/A]
75
+ - Testing: [PASS/FAIL/N/A]
76
+ - Seguridad: [PASS/FAIL/N/A]
77
+ - Performance: [PASS/FAIL/N/A]
78
+ - Mantenibilidad: [PASS/FAIL/N/A]
79
+ - Git y Deploy: [PASS/FAIL/N/A]
80
+ - Reglas del proyecto (AGENTS.md): [PASS/FAIL/N/A]
81
+
82
+ ## Correcciones minimas para aprobar
83
+ 1. [item accionable]
84
+ 2. [item accionable]
101
85
  ```
102
86
 
103
87
  ## Reglas
@@ -106,3 +90,6 @@ Correcciones necesarias:
106
90
  - No ser excesivamente estricto con N/A — si no aplica, marcarlo
107
91
  - Si todo es PASS, felicitar brevemente y sugerir `/refacil:archive`
108
92
  - Si hay FAILs criticos (seguridad, tests), marcar como bloqueantes y sugerir `/refacil:verify` para aplicar correcciones con asistencia de la IA
93
+ - No reportar ruido: evita listar mejoras cosmeticas como bloqueantes
94
+ - Si hay demasiados hallazgos, prioriza los 5 de mayor impacto primero
95
+ - Usa modo **conciso** por defecto; si el usuario pide detalle, entrega el reporte completo por secciones
@@ -1,6 +1,15 @@
1
1
  # Checklist de Calidad — Equipo Refacil
2
2
 
3
3
  > **IMPORTANTE**: Este checklist es generico. Antes de evaluar, lee `AGENTS.md` del proyecto para adaptar cada seccion al stack, arquitectura y convenciones reales del repositorio. Si AGENTS.md indica patrones, frameworks o reglas especificas, usalas en lugar de los ejemplos genericos de abajo.
4
+ > Si `AGENTS.md` no existe, aplica este checklist como baseline y marca N/A en reglas que dependan de convenciones no documentadas.
5
+
6
+ ## Como usar este checklist (metodologia)
7
+ 1. Define alcance de revision: `$ARGUMENTS` > `openspec/changes/` > `git diff`.
8
+ 2. Evalua primero bloqueantes: Spec, Testing y Seguridad.
9
+ 3. Luego evalua Calidad, Arquitectura, Performance y Mantenibilidad.
10
+ 4. Marca cada item como PASS, FAIL o N/A con una justificacion breve.
11
+ 5. Para cada FAIL, agrega severidad: CRITICO, ALTO, MEDIO o BAJO.
12
+ 6. Si hay muchos FAIL, prioriza los 5 de mayor impacto.
4
13
 
5
14
  ## 1. Conformidad con Spec
6
15
  - Todos los criterios de aceptacion de la spec estan cubiertos
@@ -12,7 +21,7 @@
12
21
  - El codigo sigue los patrones existentes del repo (consultar AGENTS.md seccion de arquitectura/convenciones)
13
22
  - No hay codigo duplicado que pueda extraerse
14
23
  - Los nombres de variables, funciones y clases son claros y descriptivos
15
- - No hay console.log, TODO, o codigo comentado sin razon
24
+ - No hay `console.log` fuera de bloques `catch` (permitido solo para diagnostico de errores), TODO, o codigo comentado sin razon
16
25
  - Los imports usan los alias configurados del proyecto (consultar AGENTS.md seccion de alias de rutas, si aplica)
17
26
  - No hay dependencias circulares nuevas
18
27
 
@@ -50,7 +59,7 @@
50
59
  ## 7. Mantenibilidad
51
60
  - El codigo es autoexplicativo (comentarios solo donde la logica no es obvia)
52
61
  - Las funciones hacen una sola cosa
53
- - Los archivos no son excesivamente largos (< 300 lineas como guia)
62
+ - Los archivos no son excesivamente largos (< 400 lineas como guia)
54
63
  - El manejo de errores es consistente con el resto del proyecto
55
64
 
56
65
  ## 8. Git y Deploy
@@ -63,3 +72,8 @@
63
72
  - Consultar la seccion "Reglas criticas" de AGENTS.md
64
73
  - Evaluar contra las reglas de "Siempre hacer", "Nunca hacer" y "Preguntar primero"
65
74
  - Si AGENTS.md define reglas adicionales (ej: zona horaria, formato de fechas, naming conventions), verificar su cumplimiento
75
+
76
+ ## Criterio de salida del review
77
+ - **APROBADO**: No hay FAILs CRITICOS/ALTOS.
78
+ - **APROBADO CON OBSERVACIONES**: Solo FAILs MEDIOS/BAJOS.
79
+ - **REQUIERE CORRECCIONES**: Existe al menos un FAIL CRITICO/ALTO.
@@ -11,6 +11,7 @@ Sube los cambios al repositorio remoto asegurando que NUNCA se haga push directo
11
11
  ## Antes de empezar
12
12
 
13
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.
14
15
 
15
16
  ## Instrucciones
16
17
 
@@ -20,44 +21,11 @@ Ejecuta `git branch --show-current` para obtener el nombre de la rama.
20
21
 
21
22
  ### Paso 2: Validar rama
22
23
 
23
- Verifica que la rama actual **NO** sea ninguna de las siguientes ramas protegidas:
24
- - `master`
25
- - `main`
26
- - `develop`
27
- - `testing`
28
- - `qa`
29
- - `dev`
24
+ Aplica la **Politica de ramas protegidas y creacion de rama** definida en `refacil-prereqs/METHODOLOGY-CONTRACT.md`.
30
25
 
31
- Si la rama actual es una rama protegida, **DETENTE** y **pide el numero de tarea de Jira**:
32
-
33
- ```
34
- ERROR: Estas en la rama '[nombre-rama]' que es una rama protegida.
35
- No se puede hacer push directo a ramas protegidas (master, main, develop, testing, qa, dev).
36
-
37
- Cual es el numero de tarea de Jira para este cambio? (ejemplo: RF-5088)
38
- ```
39
-
40
- **Crear la rama siempre desde develop/dev actualizado:**
41
- 1. **Verificar working directory limpio**: Ejecuta `git status --porcelain`. Si hay cambios sin commitear (archivos modificados o sin trackear), informa al usuario:
42
- ```
43
- Hay cambios sin commitear en la rama actual.
44
- Para cambiar de rama de forma segura, necesito guardarlos temporalmente con git stash.
45
- Quieres que haga git stash antes de continuar?
46
- ```
47
- - Si acepta: ejecuta `git stash push -m "stash-automatico-refacil"` y continua. Al final del proceso (despues de crear la rama), ejecuta `git stash pop` para restaurar los cambios.
48
- - Si no acepta: **detente**.
49
- 2. Detecta cual existe en el repo: `develop` o `dev` (ejecuta `git branch --list develop dev`)
50
- 3. Cambia a esa rama: `git checkout develop` (o `dev`)
51
- 4. Actualiza: `git pull origin develop` (o `dev`)
52
- 5. Determina el nombre de la nueva rama:
53
- - Si el usuario entrego el numero de Jira (ej: `RF-5088`): la rama sera `feature/RF-5088`
54
- - Si el usuario no tiene tarea de Jira: usa un nombre descriptivo corto (ej: `feature/ajuste-validacion`). Pero **recomienda crear la tarea en Jira** para trazabilidad.
55
- 6. Verifica que la rama no exista ya: `git branch --list [nombre-rama]`
56
- - Si ya existe, informa al usuario y pregunta si quiere cambiarse a esa rama existente o elegir otro nombre.
57
- 7. Crea la rama: `git checkout -b [nombre-rama]`
58
- 8. Si se hizo stash en el paso 1, ejecuta `git stash pop` para restaurar los cambios.
59
-
60
- Si el usuario no quiere crear una rama, **detente**. No continuar con el push.
26
+ - Si la rama actual es protegida, ejecutar ese protocolo completo antes de continuar.
27
+ - Para `refacil:up-code`, el prefijo sugerido de rama es `feature/` (o `fix/` si el cambio es bugfix).
28
+ - Si el usuario no aprueba la creacion/cambio de rama, detener. No continuar con commit/push.
61
29
 
62
30
  ### Paso 3: Verificar cambios pendientes
63
31
 
@@ -69,10 +37,13 @@ Ejecuta `git status` para verificar si hay cambios para subir.
69
37
 
70
38
  ### Paso 4: Commit de cambios
71
39
 
72
- 1. Ejecuta `git add .` para agregar todos los cambios.
73
- 2. Si el usuario proporciono un mensaje como argumento (`$ARGUMENTS`), usalo como mensaje del commit.
74
- 3. Si no se proporciono mensaje, genera uno descriptivo basado en los cambios detectados con `git diff --staged --stat`.
75
- 4. Ejecuta `git commit -m "[mensaje]"`.
40
+ 1. Ejecuta `git status --short` y muestra al usuario la lista de archivos detectados.
41
+ 2. Pide confirmacion explicita antes de stagear todo.
42
+ 3. Si el usuario confirma stage global, usa `git add -A`.
43
+ 4. Si el usuario pide stage parcial, agrega solo las rutas indicadas.
44
+ 5. Si el usuario proporciono un mensaje como argumento (`$ARGUMENTS`), usalo como mensaje del commit.
45
+ 6. Si no se proporciono mensaje, genera uno descriptivo basado en los cambios detectados con `git diff --staged --stat`.
46
+ 7. Ejecuta `git commit -m "[mensaje]"`.
76
47
 
77
48
  ### Paso 5: Push a remoto
78
49
 
@@ -11,6 +11,7 @@ Este comando envuelve la funcionalidad de OpenSpec verify y agrega verificacion
11
11
  ## Antes de empezar
12
12
 
13
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.
14
15
 
15
16
  ## Instrucciones
16
17
 
@@ -22,11 +23,11 @@ Lee `SKILL.md` en `.claude/skills/refacil-prereqs/` o `.cursor/skills/refacil-pr
22
23
 
23
24
  ### Paso 2: Verificar tests (aporte Refacil)
24
25
 
25
- Ademas de la verificacion de OpenSpec, ejecuta `npm test` y verifica:
26
+ Ademas de la verificacion de OpenSpec, resuelve y ejecuta el comando de tests segun `refacil-prereqs/METHODOLOGY-CONTRACT.md` y verifica:
26
27
  - Todos los tests pasan
27
28
  - Los tests cubren los criterios de aceptacion de la spec
28
29
  - No hay tests faltantes para requisitos clave
29
- - Si hay un comando de coverage (`npm run test:cov`), ejecutalo y reporta el porcentaje
30
+ - Si hay comando de coverage del proyecto, ejecutalo y reporta el porcentaje; si no existe, reporta N/A con justificacion
30
31
 
31
32
  ### Paso 3: Reporte combinado (aporte Refacil)
32
33
 
@@ -39,9 +40,10 @@ Combina el reporte de OpenSpec con la verificacion de tests en un reporte unific
39
40
  [Resultados del reporte de OpenSpec: CRITICAL, WARNING, SUGGESTION]
40
41
 
41
42
  --- Tests (Refacil) ---
43
+ [PASS/FAIL] Comando de tests: [comando]
42
44
  [PASS/FAIL] Tests ejecutados: [N]
43
45
  [PASS/FAIL] Tests pasaron: [N]
44
- [PASS/FAIL] Coverage: [X]% (minimo requerido: 80%)
46
+ [PASS/FAIL/N/A] Coverage: [X]% (minimo requerido: 80%)
45
47
 
46
48
  RESULTADO: APROBADO / REQUIERE CORRECCIONES
47
49
 
@@ -91,3 +93,4 @@ Lista los issues para que el usuario los corrija manualmente. Sugiere ejecutar `
91
93
  - Las correcciones deben ser quirurgicas: solo lo necesario para resolver los issues reportados
92
94
  - Ser estricto con los criterios de la spec
93
95
  - Si algo no esta en la spec pero parece necesario, mencionarlo como SUGGESTION (observacion), no como CRITICAL/WARNING
96
+ - Usa modo de salida **conciso** por defecto y **detallado** solo si el usuario lo pide (ver `METHODOLOGY-CONTRACT.md`)