refacil-sdd-ai 2.0.6 → 2.0.8

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');
@@ -192,10 +259,11 @@ function help() {
192
259
  refacil-sdd-ai — Metodologia SDD-AI con OpenSpec
193
260
 
194
261
  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
262
+ init Instala skills en .claude/ y .cursor/, crea CLAUDE.md y .cursorrules
263
+ update Re-copia skills (para actualizar a nueva version del paquete)
264
+ check-update Verifica si hay una version mas reciente en npm
265
+ clean Elimina skills de .claude/ y .cursor/
266
+ help Muestra esta ayuda
199
267
 
200
268
  Flujo completo:
201
269
  1. npm install -g refacil-sdd-ai
@@ -220,6 +288,9 @@ switch (command) {
220
288
  case 'update':
221
289
  update();
222
290
  break;
291
+ case 'check-update':
292
+ checkUpdate();
293
+ break;
223
294
  case 'clean':
224
295
  clean();
225
296
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "refacil-sdd-ai",
3
- "version": "2.0.6",
3
+ "version": "2.0.8",
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,74 +11,48 @@ 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
 
17
18
  ### Paso 0: Verificar que existan artefactos SDD
18
19
 
19
- Busca carpetas en `openspec/changes/` que contengan los artefactos requeridos: `proposal.md`, `specs.md`, `design.md`, `tasks.md`.
20
+ Por cada carpeta bajo `openspec/changes/` (excluye `archive/` si aplica), comprueba:
20
21
 
21
- - **Si `openspec/changes/` no existe o esta vacia**: Informa al usuario:
22
- ```
23
- No hay cambios propuestos. Antes de implementar necesitas definir los artefactos SDD.
24
- Ejecuta: /refacil:propose "descripcion del cambio"
25
- ```
26
- **Detente.**
22
+ | Artefacto | Requisito |
23
+ |-----------|-----------|
24
+ | `proposal.md` | Obligatorio en la raiz del cambio |
25
+ | `design.md` | Obligatorio en la raiz del cambio |
26
+ | `tasks.md` | Obligatorio en la raiz del cambio |
27
+ | **Especificacion** | **`specs.md` en la raiz** **O** al menos un `.md` bajo `specs/` del cambio (recursivo, ej. `specs/foo/spec.md`) |
28
+
29
+ OpenSpec a veces solo genera el arbol `specs/**/*.md`; eso **cumple** la fila de especificacion. Ver `OPENSPEC-DELTAS.md` (seccion **Specs: archivo unico vs arbol**).
30
+
31
+ - **Si `openspec/changes/` no existe o no hay cambios activos**: informa que ejecute `/refacil:propose` y **detente**.
27
32
 
28
- - **Si hay carpetas pero les faltan artefactos** (falta proposal.md, specs.md, design.md o tasks.md): Informa al usuario:
33
+ - **Si falta proposal, design o tasks**, o **no hay ni `specs.md` ni ningun `.md` bajo `specs/`**:
29
34
  ```
30
35
  El cambio en openspec/changes/[nombre]/ esta incompleto.
31
- Faltan: [lista de artefactos faltantes]
36
+ Faltan: [lista]
32
37
  Ejecuta: /refacil:propose para completar los artefactos antes de implementar.
33
38
  ```
34
39
  **Detente.**
35
40
 
36
- - **Si hay multiples cambios activos**: Lista las carpetas y pregunta cual implementar.
41
+ - **Multiples cambios activos**: lista carpetas y pregunta cual implementar.
37
42
 
38
- - **Si los 4 artefactos existen**: Continua al siguiente paso.
43
+ - **Antes de implementar**: lee **toda** la especificacion relevante — si hay `specs.md` y ademas `specs/**/*.md`, lee **ambos**; si hay contradiccion, pregunta al usuario.
39
44
 
40
- **IMPORTANTE**: Este comando NUNCA genera artefactos SDD. Si no existen, el usuario debe usar `/refacil:propose`. La separacion entre planificacion e implementacion es fundamental en la metodologia SDD-AI.
45
+ **IMPORTANTE**: Este comando NUNCA genera artefactos SDD. Si no existen, el usuario debe usar `/refacil:propose`.
41
46
 
42
47
  ### Paso 1: Validar rama de trabajo
43
48
 
44
49
  Ejecuta `git branch --show-current` para obtener la rama actual.
45
50
 
46
- #### Ramas protegidas: `master`, `main`, `develop`, `dev`, `testing`, `qa`
47
-
48
- - **Si la rama es cualquier rama protegida** (`master`, `main`, `develop`, `dev`, `testing`, `qa`):
49
-
50
- Informa al usuario que no se pueden hacer cambios directamente en esa rama y **pidele el numero de tarea de Jira**:
51
- ```
52
- Estas en la rama '[nombre-rama]' que es una rama protegida.
53
- No se deben hacer cambios directamente aqui.
54
-
55
- Cual es el numero de tarea de Jira para este cambio? (ejemplo: RF-5088)
56
- ```
51
+ Aplica la **Politica de ramas protegidas y creacion de rama** definida en `refacil-prereqs/METHODOLOGY-CONTRACT.md`.
57
52
 
58
- **Crear la rama siempre desde develop/dev actualizado:**
59
- 1. **Verificar working directory limpio**: Ejecuta `git status --porcelain`. Si hay cambios sin commitear (archivos modificados o sin trackear), informa al usuario:
60
- ```
61
- Hay cambios sin commitear en la rama actual.
62
- Para cambiar de rama de forma segura, necesito guardarlos temporalmente con git stash.
63
- Quieres que haga git stash antes de continuar?
64
- ```
65
- - 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.
66
- - Si no acepta: **detente**.
67
- 2. Detecta cual existe en el repo: `develop` o `dev` (ejecuta `git branch --list develop dev`)
68
- 3. Cambia a esa rama: `git checkout develop` (o `dev`)
69
- 4. Actualiza: `git pull origin develop` (o `dev`)
70
- 5. Determina el nombre de la nueva rama:
71
- - Si el usuario entrego el numero de Jira (ej: `RF-5088`): la rama sera `feature/RF-5088`
72
- - 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.
73
- 6. Verifica que la rama no exista ya: `git branch --list [nombre-rama]`
74
- - Si ya existe, informa al usuario y pregunta si quiere cambiarse a esa rama existente o elegir otro nombre.
75
- 7. Crea la rama: `git checkout -b [nombre-rama]`
76
- 8. Si se hizo stash en el paso 1, ejecuta `git stash pop` para restaurar los cambios.
77
-
78
- Si el usuario no acepta crear rama, **detente**.
79
-
80
- - **Si la rama es cualquier otra** (feature/, fix/, hotfix/, refactor/, etc.):
81
- 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.
82
56
 
83
57
  ### Paso 2: Delegar a OpenSpec apply
84
58
 
@@ -104,7 +78,7 @@ Al terminar la implementacion de OpenSpec, agrega este resumen:
104
78
 
105
79
  ## Reglas
106
80
 
107
- - NUNCA implementar codigo sin los 4 artefactos SDD completos (proposal.md, specs.md, design.md, tasks.md)
81
+ - NUNCA implementar codigo sin proposal, design, tasks y **especificacion** (`specs.md` y/o `specs/**/*.md` segun la tabla del Paso 0)
108
82
  - NUNCA generar artefactos SDD desde este comando — eso es responsabilidad exclusiva de `/refacil:propose`
109
83
  - SIEMPRE leer los artefactos completos antes de escribir codigo
110
84
  - Si `openspec/changes/` no tiene cambios activos o estan incompletos, informar y redirigir a `/refacil:propose`
@@ -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
 
@@ -38,7 +39,7 @@ Despues de que OpenSpec archive, verifica que `openspec/specs/` fue actualizada:
38
39
 
39
40
  1. Revisa si hay archivos nuevos o modificados en `openspec/specs/`
40
41
  2. Si la sincronizacion no ocurrio (OpenSpec la salto o fallo), ejecuta manualmente la sincronizacion:
41
- - Lee el `specs.md` del cambio archivado
42
+ - Lee la especificacion del cambio archivado: `specs.md` si existe **y** todos los `.md` bajo `specs/` de esa carpeta (misma regla que `refacil:apply`)
42
43
  - Busca el spec principal relevante en `openspec/specs/`
43
44
  - Si existe, integra los cambios (ADDED → agregar, MODIFIED → actualizar, REMOVED → eliminar)
44
45
  - Si NO existe, crea un spec principal nuevo con nombre descriptivo
@@ -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)
@@ -156,7 +126,7 @@ describe('Bug Fix: [descripcion corta]', () => {
156
126
 
157
127
  Si el bug es significativo, preguntar al usuario si quiere documentarlo en OpenSpec:
158
128
  - Crear carpeta en `openspec/changes/fix-[nombre]/`
159
- - Generar proposal.md y specs.md con los detalles del bug y fix
129
+ - Generar `proposal.md`, `design.md`, `tasks.md` y especificacion (`specs.md` y/o `specs/**/*.md`, misma regla que `refacil:propose`)
160
130
 
161
131
  ## Reglas
162
132
 
@@ -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.
@@ -15,12 +15,26 @@ Lee este archivo **ademas** de la skill `openspec-*` que indique el comando `ref
15
15
  - Tasks con estimacion de esfuerzo **S / M / L**.
16
16
  - Design alineado a **patrones existentes** del repo (desde `AGENTS.md` o exploracion acotada).
17
17
 
18
+ ### Specs: archivo unico vs arbol `specs/` (compatibilidad Refacil)
19
+
20
+ OpenSpec puede indicar `specs/**/*.md` y crear **un archivo por capability** (ej. `specs/product-amount-percentile/spec.md`). Los comandos **refacil:*** deben soportar **ambas** formas:
21
+
22
+ | Forma | Validacion |
23
+ |-------|------------|
24
+ | **A** | `specs.md` en la raiz del cambio (`openspec/changes/<id>/specs.md`) |
25
+ | **B** | Sin `specs.md`, pero existe al menos un `.md` bajo `openspec/changes/<id>/specs/` (recursivo) |
26
+
27
+ - **Si OpenSpec solo genera B:** no es error. **No hace falta** duplicar obligatoriamente en `specs.md` salvo que el equipo quiera un indice unico para humanos.
28
+ - **Si coexisten A y B:** lee **ambos**; si hay contradiccion clara entre `specs.md` y los fragmentos, **pregunta al usuario** cual manda antes de `apply`.
29
+ - Al cerrar **propose**, en el resumen de revision lista **todas** las rutas de spec (archivo raiz y/o cada `specs/**.md`).
30
+
18
31
  ## apply — `openspec-apply-change`
19
32
 
20
33
  - Respetar **estrictamente** `AGENTS.md`.
21
34
  - No agregar funcionalidad fuera del alcance de las specs aprobadas.
22
35
  - No refactorizar codigo no relacionado con el cambio.
23
36
  - Si una task es ambigua, **preguntar** antes de implementar.
37
+ - **Especificacion**: aplica la tabla del Paso 0 de `refacil:apply` (`specs.md` y/o `specs/**/*.md`); no asumas que solo existe `specs.md` en la raiz.
24
38
 
25
39
  ## archive — `openspec-archive-change`
26
40
 
@@ -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
 
@@ -36,7 +36,7 @@ Si $ARGUMENTS ya es claro, no preguntes de nuevo.
36
36
  Despues de que OpenSpec genere los artefactos, presenta al usuario un resumen claro para su revision:
37
37
 
38
38
  1. **Proposal**: Objetivo, alcance y justificacion del cambio
39
- 2. **Specs**: Criterios de aceptacion y rechazo — verificar que cubran todos los escenarios
39
+ 2. **Specs**: Criterios de aceptacion y rechazo — listar **rutas reales**: `specs.md` y/o cada `specs/**/spec.md` (OpenSpec puede usar solo el arbol `specs/`)
40
40
  3. **Design**: Archivos a crear/modificar y patrones a usar — verificar que se alineen con la arquitectura
41
41
  4. **Tasks**: Lista de tareas con estimacion — verificar que el desglose sea correcto y completo
42
42
 
@@ -46,7 +46,7 @@ Pregunta explicitamente:
46
46
  === Revision requerida ===
47
47
  Los artefactos estan listos para tu revision:
48
48
  - openspec/changes/[nombre]/proposal.md
49
- - openspec/changes/[nombre]/specs.md
49
+ - Especificacion: openspec/changes/[nombre]/specs.md y/o openspec/changes/[nombre]/specs/**/*.md (listar archivos)
50
50
  - openspec/changes/[nombre]/design.md
51
51
  - openspec/changes/[nombre]/tasks.md
52
52
 
@@ -69,7 +69,7 @@ Siguiente paso: ejecuta /refacil:apply para implementar las tasks.
69
69
 
70
70
  ## Reglas
71
71
 
72
- - **NUNCA escribir, modificar o generar codigo fuente** en esta fase — solo artefactos SDD (proposal.md, specs.md, design.md, tasks.md)
72
+ - **NUNCA escribir, modificar o generar codigo fuente** en esta fase — solo artefactos SDD: `proposal.md`, `design.md`, `tasks.md`, y especificacion en `specs.md` y/o `specs/**/*.md` (convencion OpenSpec)
73
73
  - Aunque el usuario pase una descripcion completa y detallada en $ARGUMENTS, la salida es EXCLUSIVAMENTE artefactos de planificacion
74
74
  - Si el usuario pide que tambien implemente, responder: "La implementacion se hace con `/refacil:apply` despues de aprobar los artefactos."
75
75
  - Siempre explorar el codebase ANTES de generar artefactos (para que el design sea realista)
@@ -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.
@@ -46,7 +46,7 @@ Si el usuario ejecuta `/refacil:test` sin argumentos:
46
46
  1. **Buscar cambio activo**: Lista carpetas en `openspec/changes/` y pregunta cual testear si hay mas de uno.
47
47
 
48
48
  2. **Leer artefactos**:
49
- - `specs.md` Extraer criterios de aceptacion (CA-XX) y criterios de rechazo (CR-XX)
49
+ - **Especificacion**: lee `specs.md` si existe **y** todos los `.md` bajo `specs/` del cambio (recursivo). De ahi extrae criterios de aceptacion (CA-XX) y rechazo (CR-XX).
50
50
  - `design.md` — Identificar componentes y archivos creados/modificados
51
51
  - `tasks.md` — Identificar archivos implementados
52
52
 
@@ -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`)