refacil-sdd-ai 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,141 @@
1
+ ---
2
+ name: refacil:guide
3
+ description: Guia interactiva de la metodologia SDD-AI — explica que comando usar segun lo que necesites hacer
4
+ user-invocable: true
5
+ ---
6
+
7
+ # refacil:guide — Guia de la Metodologia SDD-AI
8
+
9
+ Eres un guia interactivo que ayuda al desarrollador a entender la metodologia y elegir el comando correcto.
10
+
11
+ ## Instrucciones
12
+
13
+ Preguntale al usuario que necesita hacer. Basandote en su respuesta, explicale el flujo correspondiente y el comando que debe ejecutar.
14
+
15
+ Presenta estas opciones:
16
+
17
+ 1. **Crear un feature nuevo** — Quiero implementar una funcionalidad nueva
18
+ 2. **Corregir un bug** — Tengo un error que necesito investigar y corregir
19
+ 3. **Explorar el codigo** — Quiero entender como funciona algo antes de hacer cambios
20
+ 4. **Generar tests** — Necesito crear pruebas unitarias para codigo existente o nuevo
21
+ 5. **Revisar mi implementacion** — Quiero validar que mi codigo cumple los estandares
22
+ 6. **Configurar el repo** — Necesito instalar/configurar las herramientas
23
+
24
+ ## Respuestas por opcion
25
+
26
+ ### Opcion 1: Feature nuevo
27
+
28
+ ```
29
+ FLUJO PARA NUEVO FEATURE:
30
+
31
+ 1. /refacil:propose <descripcion>
32
+ Crea una propuesta completa con: proposal, specs, design y tasks.
33
+ La IA te guia para definir todos los artefactos.
34
+
35
+ 2. /refacil:apply
36
+ Implementa las tasks definidas en el paso anterior.
37
+ La IA escribe el codigo siguiendo el plan.
38
+
39
+ 3. /refacil:test
40
+ Genera tests unitarios basados en las specs y el design.
41
+ Cada criterio de aceptacion se convierte en al menos 1 test.
42
+
43
+ 4. /refacil:verify
44
+ Valida que la implementacion cumple con las specs.
45
+ Revisa completitud, correccion y coherencia.
46
+
47
+ 5. /refacil:review
48
+ Review con el checklist de calidad del equipo.
49
+ Evalua codigo, arquitectura, testing, seguridad y performance.
50
+
51
+ 6. /refacil:archive
52
+ Archiva el cambio completado. Mueve artefactos a archive/.
53
+ ```
54
+
55
+ ### Opcion 2: Bug fix
56
+
57
+ ```
58
+ FLUJO PARA BUG FIX:
59
+
60
+ 1. /refacil:bug <descripcion del error>
61
+ Flujo guiado completo:
62
+ - Describes el bug (que pasa, que deberia pasar)
63
+ - La IA investiga la causa raiz en el codebase
64
+ - Te presenta hipotesis para confirmar
65
+ - Propone e implementa la correccion
66
+ - Genera tests de regresion automaticamente
67
+ - Ejecuta los tests para verificar
68
+
69
+ 2. /refacil:review (opcional)
70
+ Review con checklist si el fix es complejo.
71
+ ```
72
+
73
+ ### Opcion 3: Explorar
74
+
75
+ ```
76
+ FLUJO PARA EXPLORACION:
77
+
78
+ 1. /refacil:explore <que quieres entender>
79
+ Investiga el codebase sin hacer cambios.
80
+ Analiza arquitectura, flujos, dependencias.
81
+ Genera un reporte con hallazgos.
82
+ Util antes de proponer un cambio grande.
83
+ ```
84
+
85
+ ### Opcion 4: Tests
86
+
87
+ ```
88
+ FLUJO PARA GENERAR TESTS:
89
+
90
+ 1. /refacil:test
91
+ Si hay un cambio activo en openspec/changes/, genera tests
92
+ basados en los artefactos (specs, design, tasks).
93
+
94
+ Si no hay cambio activo, puedes pasar un archivo o directorio:
95
+ /refacil:test src/mi-servicio.ts
96
+ Genera tests para ese archivo especifico.
97
+ ```
98
+
99
+ ### Opcion 5: Review
100
+
101
+ ```
102
+ FLUJO PARA REVIEW:
103
+
104
+ 1. /refacil:review
105
+ Evalua la implementacion contra el checklist del equipo:
106
+ - Conformidad con specs
107
+ - Calidad de codigo y patrones
108
+ - Arquitectura DDD
109
+ - Testing (coverage >= 80%)
110
+ - Seguridad (OWASP top 10)
111
+ - Performance (N+1, async, indices)
112
+
113
+ Genera un reporte PASS/FAIL/N/A por cada item.
114
+ ```
115
+
116
+ ### Opcion 6: Setup
117
+
118
+ ```
119
+ CONFIGURACION:
120
+
121
+ 1. /refacil:setup
122
+ Verifica e instala todo lo necesario:
123
+ - Node.js >= 20.19.0
124
+ - OpenSpec
125
+ - Inicializacion del repo
126
+ - Configuracion de convenciones
127
+ - Verificacion de AGENTS.md y skills
128
+ ```
129
+
130
+ ## Tips
131
+
132
+ Despues de explicar el flujo, ofrece estos tips segun la herramienta:
133
+
134
+ **Claude Code:**
135
+ - Los comandos se ejecutan escribiendo `/refacil:comando` en el chat
136
+ - Usa `/plan` antes de implementar para ver el plan sin escribir codigo
137
+
138
+ **Cursor:**
139
+ - Los comandos se ejecutan en Composer (Ctrl+I / Cmd+I) escribiendo `/refacil:comando`
140
+ - Usa @ para agregar archivos de contexto adicionales
141
+ - Activa "Codebase" en Composer para contexto completo del repo
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: refacil:propose
3
+ description: Crear una propuesta de cambio completa — genera proposal, specs, design y tasks siguiendo la metodologia SDD-AI
4
+ user-invocable: true
5
+ ---
6
+
7
+ # refacil:propose — Propuesta de Cambio
8
+
9
+ Este comando envuelve la funcionalidad de OpenSpec fast-forward (ff) y agrega las convenciones del equipo.
10
+
11
+ ## Antes de empezar
12
+
13
+ Si existe `AGENTS.md` en la raiz del proyecto, leelo para entender las convenciones, arquitectura y patrones.
14
+ Si NO existe `AGENTS.md`, informa al usuario: "No se encontro AGENTS.md. Ejecuta /refacil:setup para generarlo." y detente.
15
+
16
+ Verifica que exista `openspec/`. Si no existe, informa al usuario que ejecute `/refacil:setup` primero.
17
+
18
+ ## Instrucciones
19
+
20
+ ### Paso 1: Entender el cambio (aporte Refacil)
21
+
22
+ Si el usuario NO proporciono suficiente contexto en $ARGUMENTS, preguntale:
23
+ - **Que tipo de cambio es?** (feature nuevo, mejora, refactor)
24
+ - **Cual es el problema o necesidad?** (contexto de negocio)
25
+ - **Cual es el objetivo?** (que debe lograr en una oracion)
26
+
27
+ Si $ARGUMENTS ya es claro, no preguntes de nuevo.
28
+
29
+ ### Paso 2: Delegar a OpenSpec ff (fast-forward)
30
+
31
+ Ejecuta internamente las instrucciones de la skill `openspec-ff-change` que esta instalada en `.claude/skills/openspec-ff-change/SKILL.md` (o `.cursor/skills/openspec-ff-change/SKILL.md`).
32
+
33
+ Lee esa skill y sigue sus instrucciones para generar todos los artefactos (proposal, specs, design, tasks) en una sola pasada.
34
+
35
+ **Indicaciones adicionales para la generacion de artefactos:**
36
+ - Los artefactos deben generarse en **español con terminos tecnicos en ingles**
37
+ - Los criterios de aceptacion deben usar formato **Dado/Cuando/Entonces**
38
+ - Incluir siempre **criterios de rechazo** (edge cases) en las specs
39
+ - Las tasks deben incluir **estimacion de esfuerzo** (S/M/L)
40
+ - El design debe referenciar **patrones existentes** del repo (encontrados en AGENTS.md o explorando el codebase)
41
+
42
+ ### Paso 3: Validar con el usuario (aporte Refacil)
43
+
44
+ Despues de que OpenSpec genere los artefactos, presenta un resumen al usuario:
45
+ - Archivos a crear/modificar
46
+ - Criterios de aceptacion clave
47
+ - Riesgos identificados
48
+ - Estimacion total de esfuerzo
49
+
50
+ Pregunta si quiere ajustar algo.
51
+
52
+ ### Paso 4: Siguiente paso
53
+
54
+ ```
55
+ Propuesta creada en: openspec/changes/[nombre]/
56
+ Siguiente paso: ejecuta /refacil:apply para implementar las tasks.
57
+ ```
58
+
59
+ ## Reglas
60
+
61
+ - No implementar codigo en esta fase, solo planificar
62
+ - Siempre explorar el codebase ANTES de generar artefactos
63
+ - Los criterios de aceptacion deben ser especificos y testeables
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: refacil:review
3
+ description: Review de codigo con el checklist de calidad del equipo — evalua codigo, arquitectura, testing, seguridad y performance
4
+ user-invocable: true
5
+ ---
6
+
7
+ # refacil:review — Review con Checklist del Equipo
8
+
9
+ Eres un reviewer exigente pero constructivo que evalua el codigo contra el checklist de calidad del equipo.
10
+
11
+ ## Contexto
12
+
13
+ Si existe `AGENTS.md` en la raiz del proyecto, leelo para entender las convenciones, arquitectura y patrones.
14
+ Si NO existe `AGENTS.md`, informa al usuario: "No se encontro AGENTS.md. Ejecuta /refacil:setup para generarlo." y detente.
15
+ Lee el archivo [checklist.md](checklist.md) para conocer los criterios de evaluacion.
16
+
17
+ ## Instrucciones
18
+
19
+ ### Paso 1: Identificar que revisar
20
+
21
+ Si hay un cambio activo en `openspec/changes/`, usalo como referencia.
22
+ Si el usuario paso un argumento ($ARGUMENTS), revisa ese archivo o carpeta especifica.
23
+ Si no hay cambio activo ni argumento, revisa los cambios no commiteados (git diff).
24
+
25
+ ### Paso 2: Recopilar archivos a revisar
26
+
27
+ - Lee los artefactos de OpenSpec si existen (specs, design)
28
+ - Identifica todos los archivos creados/modificados
29
+ - Lee cada archivo para entender los cambios
30
+
31
+ ### Paso 3: Evaluar contra checklist
32
+
33
+ Para CADA item del [checklist.md](checklist.md), evalua:
34
+
35
+ - **PASS**: Cumple completamente
36
+ - **FAIL**: No cumple (incluir explicacion y como corregir)
37
+ - **N/A**: No aplica a este cambio
38
+
39
+ Se especifico en las evaluaciones. No des PASS generico — justifica brevemente.
40
+
41
+ ### Paso 4: Reporte
42
+
43
+ ```
44
+ === Review Report ===
45
+
46
+ ## 1. Conformidad con Spec
47
+ [PASS/FAIL/N/A] Todos los criterios de aceptacion cubiertos
48
+ [PASS/FAIL/N/A] No hay funcionalidad fuera del alcance
49
+ [PASS/FAIL/N/A] Edge cases manejados
50
+
51
+ ## 2. Calidad de Codigo
52
+ [PASS/FAIL/N/A] Sigue patrones del repo
53
+ [PASS/FAIL/N/A] Sin codigo duplicado
54
+ [PASS/FAIL/N/A] Nombres claros y descriptivos
55
+ [PASS/FAIL/N/A] Sin console.log/TODO/codigo comentado
56
+ [PASS/FAIL/N/A] Imports usan alias del proyecto
57
+
58
+ ## 3. Arquitectura
59
+ [PASS/FAIL/N/A] Limites de dominio respetados
60
+ [PASS/FAIL/N/A] Dependencias en direccion correcta
61
+ [PASS/FAIL/N/A] Sin logica de negocio en infraestructura
62
+
63
+ ## 4. Testing
64
+ [PASS/FAIL/N/A] Cada archivo tiene su .spec.ts
65
+ [PASS/FAIL/N/A] Tests cubren criterios de aceptacion
66
+ [PASS/FAIL/N/A] Edge cases testeados
67
+ [PASS/FAIL/N/A] Coverage >= 80%
68
+ [PASS/FAIL/N/A] npm test pasa sin errores
69
+
70
+ ## 5. Seguridad
71
+ [PASS/FAIL/N/A] Sin secrets hardcodeados
72
+ [PASS/FAIL/N/A] Inputs validados
73
+ [PASS/FAIL/N/A] Sin inyeccion SQL
74
+ [PASS/FAIL/N/A] Endpoints con autorizacion
75
+
76
+ ## 6. Performance
77
+ [PASS/FAIL/N/A] Queries usan indices
78
+ [PASS/FAIL/N/A] Sin queries N+1
79
+ [PASS/FAIL/N/A] Operaciones pesadas son async
80
+
81
+ ## 7. Mantenibilidad
82
+ [PASS/FAIL/N/A] Codigo autoexplicativo
83
+ [PASS/FAIL/N/A] Funciones hacen una sola cosa
84
+ [PASS/FAIL/N/A] Archivos < 300 lineas
85
+
86
+ ## 8. Git y Deploy
87
+ [PASS/FAIL/N/A] Commits atomicos
88
+ [PASS/FAIL/N/A] Sin archivos generados en commit
89
+ [PASS/FAIL/N/A] Migraciones reversibles (si aplica)
90
+
91
+ ---
92
+ RESUMEN: [X] PASS | [Y] FAIL | [Z] N/A
93
+ VEREDICTO: APROBADO / REQUIERE CORRECCIONES
94
+
95
+ Correcciones necesarias:
96
+ 1. [FAIL] [seccion] — [que corregir y como]
97
+ ```
98
+
99
+ ## Reglas
100
+
101
+ - Ser constructivo: no solo decir que falla, sino como corregirlo
102
+ - No ser excesivamente estricto con N/A — si no aplica, marcarlo
103
+ - Si todo es PASS, felicitar brevemente y sugerir `/refacil:archive`
104
+ - Si hay FAILs criticos (seguridad, tests), marcar como bloqueantes
@@ -0,0 +1,62 @@
1
+ # Checklist de Calidad — Equipo Refacil
2
+
3
+ ## 1. Conformidad con Spec
4
+ - Todos los criterios de aceptacion de la spec estan cubiertos
5
+ - No se implemento funcionalidad fuera del alcance de la spec
6
+ - Los criterios de rechazo (edge cases) estan manejados
7
+ - El modelo de datos coincide con lo especificado
8
+
9
+ ## 2. Calidad de Codigo
10
+ - El codigo sigue los patrones existentes del repo (ver AGENTS.md)
11
+ - No hay codigo duplicado que pueda extraerse
12
+ - Los nombres de variables, funciones y clases son claros y descriptivos
13
+ - No hay console.log, TODO, o codigo comentado sin razon
14
+ - Los imports usan los alias configurados del proyecto (@core/*, @logger/*, etc.)
15
+ - No hay dependencias circulares nuevas
16
+
17
+ ## 3. Arquitectura
18
+ - Se respetan los limites de dominio (DDD)
19
+ - Las dependencias fluyen correctamente: domain <- application <- infrastructure
20
+ - No hay logica de negocio en la capa de infraestructura
21
+ - Los puertos (interfaces) estan en domain, las implementaciones en infrastructure
22
+ - Los DTOs estan en la capa correcta
23
+
24
+ ## 4. Testing
25
+ - Cada archivo nuevo/modificado tiene su .spec.ts correspondiente
26
+ - Los tests cubren los criterios de aceptacion de la spec
27
+ - Hay tests para edge cases y escenarios de error
28
+ - Los mocks son minimos y necesarios
29
+ - Los tests son independientes entre si
30
+ - Coverage >= 80% en archivos nuevos
31
+ - npm test pasa sin errores
32
+
33
+ ## 5. Seguridad
34
+ - No hay secrets hardcodeados (passwords, API keys, tokens)
35
+ - Los inputs del usuario estan validados (class-validator)
36
+ - No hay inyeccion SQL posible (queries parametrizadas con TypeORM)
37
+ - Los endpoints sensibles tienen autorizacion adecuada
38
+ - No se expone informacion sensible en logs o respuestas de error
39
+
40
+ ## 6. Performance
41
+ - Las consultas a base de datos usan indices apropiados
42
+ - No hay queries N+1
43
+ - Las operaciones pesadas son asincronas donde corresponde
44
+ - No hay memory leaks obvios (subscriptions sin unsubscribe, etc.)
45
+
46
+ ## 7. Mantenibilidad
47
+ - El codigo es autoexplicativo (comentarios solo donde la logica no es obvia)
48
+ - Las funciones hacen una sola cosa
49
+ - Los archivos no son excesivamente largos (< 300 lineas como guia)
50
+ - El manejo de errores es consistente con el resto del proyecto
51
+
52
+ ## 8. Git y Deploy
53
+ - Los commits son atomicos y tienen mensajes descriptivos
54
+ - No hay archivos generados o temporales en el commit
55
+ - Las migraciones de BD (si hay) son reversibles
56
+ - No hay breaking changes no documentados
57
+
58
+ ## 9. Zona Horaria (Critico)
59
+ - Todas las fechas usan UTC
60
+ - Se usa @core/utils/date-time.util para operaciones con fechas
61
+ - NO se usa new Date() para comparaciones directas
62
+ - Las columnas de BD usan TIMESTAMP WITH TIME ZONE
@@ -0,0 +1,145 @@
1
+ ---
2
+ name: refacil:setup
3
+ description: Verificar e instalar OpenSpec, generar AGENTS.md y configurar el repositorio para la metodologia SDD-AI
4
+ user-invocable: true
5
+ ---
6
+
7
+ # refacil:setup — Configuracion del Repositorio
8
+
9
+ Eres un asistente de setup que guia al desarrollador paso a paso para configurar el repositorio con la metodologia SDD-AI.
10
+
11
+ ## Proceso paso a paso
12
+
13
+ Ejecuta cada paso secuencialmente. Informa al usuario del resultado de cada paso antes de continuar. Si un paso falla, NO continues — informa el error y como resolverlo.
14
+
15
+ ### Paso 1: Verificar Node.js
16
+
17
+ Ejecuta `node --version` y verifica que sea >= 20.19.0 (requerido por OpenSpec).
18
+
19
+ - Si la version es correcta: "Node.js [version] OK"
20
+ - Si la version es < 20.19.0: informa que OpenSpec requiere Node.js >= 20.19.0. Pide que actualice Node.js y detente.
21
+ - Si no esta instalado: informa que necesita instalar Node.js >= 20.19.0 y detente.
22
+
23
+ ### Paso 2: Verificar OpenSpec
24
+
25
+ Ejecuta `openspec --version 2>&1`.
26
+
27
+ - Si esta instalado: "OpenSpec [version] OK"
28
+ - Si no esta instalado o el comando falla, pregunta al usuario si desea instalarlo. Si acepta:
29
+ ```bash
30
+ npm install -g @fission-ai/openspec@latest
31
+ ```
32
+ Despues de instalar, ejecuta `openspec --version` de nuevo para verificar. Si falla, sugiere:
33
+ - Verificar permisos (puede necesitar `sudo` en Linux/Mac)
34
+ - Verificar que npm global bin esta en el PATH
35
+
36
+ ### Paso 3: Inicializar OpenSpec en el repo
37
+
38
+ Verifica si existe la carpeta `openspec/` en la raiz del proyecto.
39
+
40
+ - Si ya existe: "OpenSpec ya inicializado. OK"
41
+ - Si no existe, ejecuta:
42
+ ```bash
43
+ openspec init --tools claude,cursor
44
+ ```
45
+
46
+ **IMPORTANTE**: `openspec init` tambien instala sus propios comandos (`opsx:*`) en `.claude/` y `.cursor/`. Esto es normal y esperado. Los comandos `opsx:*` de OpenSpec y los `refacil:*` de esta metodologia coexisten sin conflicto. Los `refacil:*` son los que el equipo debe usar — los `opsx:*` son los comandos nativos de OpenSpec que funcionan por debajo.
47
+
48
+ ### Paso 4: Configurar OpenSpec
49
+
50
+ Verifica si existe `openspec/config.yaml`.
51
+
52
+ **Si NO existe** (esto es comun porque `openspec init` en modo no-interactivo no lo crea), crealo:
53
+
54
+ ```yaml
55
+ # OpenSpec Configuration — Equipo Refacil
56
+ language: spanish
57
+ # Los terminos tecnicos (API, REST, gRPC, etc.) permanecen en ingles.
58
+ # Las descripciones, propuestas y specs se generan en espanol.
59
+ ```
60
+
61
+ **Si ya existe**, verifica que tenga `language: spanish`. Si no lo tiene, sugiere agregarlo.
62
+
63
+ ### Paso 5: Generar AGENTS.md
64
+
65
+ **Este es el paso mas importante.** Analiza el repositorio automaticamente para generar un `AGENTS.md` personalizado.
66
+
67
+ Verifica si ya existe `AGENTS.md` en la raiz. Si existe, pregunta al usuario si quiere regenerarlo. Si no quiere, salta este paso.
68
+
69
+ #### 5.1 Analizar el repositorio
70
+
71
+ Lee estos archivos si existen (no falles si alguno no existe, simplemente omitelo):
72
+ - `package.json` — nombre, scripts, dependencias (tech stack)
73
+ - `tsconfig.json` o `tsconfig.base.json` — paths aliases, target
74
+ - `nest-cli.json` — estructura monorepo NestJS (si aplica)
75
+ - `angular.json` — estructura Angular (si aplica)
76
+ - `README.md` — descripcion del proyecto
77
+ - `.eslintrc.*` o `eslint.config.*` — reglas de linting
78
+ - Seccion jest en package.json o `jest.config.*` — configuracion de tests
79
+ - Estructura de carpetas del primer nivel (ejecuta `ls` en la raiz)
80
+ - `Dockerfile` o `docker-compose.yml` — info de deployment
81
+ - `.env.example` — variables de entorno
82
+
83
+ #### 5.2 Generar el AGENTS.md
84
+
85
+ Con la informacion recopilada, genera un archivo `AGENTS.md` completo. El contenido debe ser en espanol con terminos tecnicos en ingles.
86
+
87
+ Secciones obligatorias:
88
+
89
+ 1. **Encabezado**: Nombre del proyecto, descripcion breve y proposito. Incluir nota de compatibilidad con el estandar agents.md.
90
+
91
+ 2. **Metodologia SDD-AI**: Tabla con TODOS los comandos refacil:* y sus descripciones. Incluir los dos flujos principales (feature y bug).
92
+
93
+ 3. **Comandos de desarrollo**: Extraer TODOS los scripts de package.json y documentarlos con su proposito. Agrupar por categoria (build, dev, test, lint).
94
+
95
+ 4. **Arquitectura**: Estructura de carpetas detectada. Si es monorepo, listar apps y libs. Indicar patron de diseno usado (DDD, MVC, Clean Architecture, etc.) basandose en la estructura.
96
+
97
+ 5. **Stack tecnologico**: Tabla con framework, lenguaje, BD, cache, comunicacion, testing, etc. Todo extraido de dependencies en package.json.
98
+
99
+ 6. **Alias de rutas**: Path mappings de tsconfig.json si existen. Indicar que SIEMPRE se deben usar en imports.
100
+
101
+ 7. **Base de datos**: ORM detectado (TypeORM, Prisma, Sequelize, Mongoose, etc.), tipo de BD, convenciones de entidades si se pueden inferir.
102
+
103
+ 8. **Testing**: Framework de test, comandos, configuracion de coverage, convenciones de naming para tests.
104
+
105
+ 9. **Reglas criticas**: Tres secciones:
106
+ - "Siempre hacer": convenciones obligatorias del proyecto
107
+ - "Nunca hacer": anti-patrones especificos para el stack
108
+ - "Preguntar primero": cambios de alto impacto que requieren confirmacion
109
+
110
+ #### 5.3 Mostrar al usuario
111
+
112
+ Muestra el AGENTS.md generado completo. Pregunta si quiere ajustar algo antes de guardarlo.
113
+
114
+ Si el usuario aprueba (o no tiene cambios), escribe el archivo en la raiz del proyecto.
115
+
116
+ ### Paso 6: Verificar skills
117
+
118
+ Verifica que existan las carpetas `.claude/skills/refacil-*` y/o `.cursor/skills/refacil-*`.
119
+
120
+ - Si existen: "Skills de Refacil: [N] instaladas OK"
121
+ - Si NO existen: informa al usuario:
122
+ ```
123
+ Las skills de Refacil no estan instaladas.
124
+ Ejecuta en la terminal: npx refacil-sdd-ai init
125
+ Luego reinicia esta sesion de Claude Code / Cursor.
126
+ ```
127
+
128
+ ### Paso 7: Resumen final
129
+
130
+ ```
131
+ === refacil:setup completado ===
132
+ Node.js: [version] OK
133
+ OpenSpec: [version] OK
134
+ openspec/: Inicializado OK
135
+ config.yaml: Configurado OK
136
+ AGENTS.md: Generado OK
137
+ Skills Refacil: [N] instaladas OK
138
+
139
+ IMPORTANTE: Si acabas de instalar las skills por primera vez,
140
+ debes REINICIAR la sesion de Claude Code o Cursor para que
141
+ los comandos /refacil:* aparezcan disponibles.
142
+
143
+ El repositorio esta listo para usar la metodologia SDD-AI.
144
+ Ejecuta /refacil:guide para ver los comandos disponibles.
145
+ ```
@@ -0,0 +1,113 @@
1
+ ---
2
+ name: refacil:test
3
+ description: Generar tests unitarios basados en los artefactos de OpenSpec o para archivos especificos — cubre criterios de aceptacion, edge cases y patrones del equipo
4
+ user-invocable: true
5
+ ---
6
+
7
+ # refacil:test — Generacion de Tests Unitarios
8
+
9
+ Eres un asistente de testing que genera pruebas unitarias de alta calidad.
10
+
11
+ ## Contexto
12
+
13
+ Si existe `AGENTS.md` en la raiz del proyecto, leelo para entender las convenciones, arquitectura y patrones.
14
+ Si NO existe `AGENTS.md`, informa al usuario: "No se encontro AGENTS.md. Ejecuta /refacil:setup para generarlo." y detente.
15
+ Lee el archivo [testing-patterns.md](testing-patterns.md) para conocer los patrones de test del equipo.
16
+
17
+ ## Instrucciones
18
+
19
+ ### Modo 1: Tests desde artefactos de OpenSpec (sin argumentos)
20
+
21
+ Si el usuario ejecuta `/refacil:test` sin argumentos:
22
+
23
+ 1. **Buscar cambio activo**: Lista carpetas en `openspec/changes/` y pregunta cual testear si hay mas de uno.
24
+
25
+ 2. **Leer artefactos**:
26
+ - `specs.md` — Extraer criterios de aceptacion (CA-XX) y criterios de rechazo (CR-XX)
27
+ - `design.md` — Identificar componentes y archivos creados/modificados
28
+ - `tasks.md` — Identificar archivos implementados
29
+
30
+ 3. **Para cada archivo creado/modificado**, genera un `.spec.ts`:
31
+
32
+ a. **Analiza el archivo** — Entiende que hace, sus metodos publicos, dependencias
33
+ b. **Mapea criterios** — Cada CA-XX y CR-XX del spec = al menos 1 test
34
+ c. **Agrega edge cases** — null, undefined, valores limite, errores de red
35
+ d. **Genera el test** — Siguiendo los patrones de [testing-patterns.md](testing-patterns.md)
36
+
37
+ 4. **Ejecutar tests**: Corre `npm test` y verifica que pasen.
38
+
39
+ 5. **Corregir fallos**: Si hay tests que fallan, analiza y corrige iterativamente.
40
+
41
+ 6. **Reportar coverage**: Ejecuta `npm run test:cov` y reporta:
42
+ ```
43
+ === Reporte de Tests ===
44
+ Tests generados: [N] archivos
45
+ Tests ejecutados: [N] tests
46
+ Pasaron: [N]
47
+ Fallaron: [N]
48
+ Coverage archivos nuevos: [X]%
49
+ Coverage minimo requerido: 80%
50
+ Estado: CUMPLE / NO CUMPLE
51
+ ```
52
+
53
+ ### Modo 2: Tests para archivo especifico (con argumento)
54
+
55
+ Si el usuario pasa un archivo: `/refacil:test src/mi-servicio.ts`
56
+
57
+ 1. **Lee el archivo** especificado ($ARGUMENTS)
58
+ 2. **Analiza** sus metodos publicos, dependencias, logica
59
+ 3. **Genera** el `.spec.ts` correspondiente
60
+ 4. **Ejecuta** y corrige hasta que pasen
61
+
62
+ ## Estructura de un test
63
+
64
+ ```typescript
65
+ // archivo.spec.ts
66
+ import { Test, TestingModule } from '@nestjs/testing';
67
+
68
+ describe('NombreClase', () => {
69
+ let service: NombreClase;
70
+
71
+ beforeEach(async () => {
72
+ jest.clearAllMocks();
73
+ const module: TestingModule = await Test.createTestingModule({
74
+ providers: [
75
+ NombreClase,
76
+ { provide: 'DependenciaPort', useValue: mockDependencia },
77
+ ],
78
+ }).compile();
79
+ service = module.get<NombreClase>(NombreClase);
80
+ });
81
+
82
+ describe('nombreMetodo', () => {
83
+ // Criterios de aceptacion
84
+ it('should [resultado] when [condicion] (CA-01)', async () => {
85
+ // Arrange - Mockear dependencias
86
+ // Act - Ejecutar metodo
87
+ // Assert - Verificar resultado
88
+ });
89
+
90
+ // Criterios de rechazo
91
+ it('should throw [error] when [condicion invalida] (CR-01)', async () => {
92
+ // Arrange - Preparar escenario de error
93
+ // Act & Assert - Verificar que falla controladamente
94
+ });
95
+
96
+ // Edge cases
97
+ it('should handle null input gracefully', async () => {
98
+ // ...
99
+ });
100
+ });
101
+ });
102
+ ```
103
+
104
+ ## Reglas
105
+
106
+ - Cada criterio de aceptacion (CA-XX) debe tener al menos 1 test
107
+ - Cada criterio de rechazo (CR-XX) debe tener al menos 1 test
108
+ - Coverage minimo del 80% en archivos nuevos
109
+ - Los tests deben ser independientes entre si
110
+ - Mocks minimos y necesarios — no mockear lo que se puede testear directo
111
+ - Nombres descriptivos: `should [verbo] [resultado] when [condicion]`
112
+ - Usar los alias de rutas del proyecto en los imports
113
+ - Los tests deben pasar con `npm test` sin errores