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.
package/README.md ADDED
@@ -0,0 +1,145 @@
1
+ # refacil-sdd-ai
2
+
3
+ Metodologia **SDD-AI** (Specification-Driven Development with AI) empaquetada como herramienta CLI.
4
+
5
+ Instala skills para **Claude Code** y **Cursor** que guian al desarrollador por un flujo estructurado de desarrollo usando **OpenSpec** como base de especificaciones.
6
+
7
+ ## Requisitos
8
+
9
+ - **Node.js >= 20.19.0** (requerido por OpenSpec)
10
+ - **Claude Code** o **Cursor** instalado
11
+
12
+ ## Instalacion y Setup
13
+
14
+ ```bash
15
+ # 1. Instalar el paquete
16
+ npm install --save-dev refacil-sdd-ai
17
+
18
+ # 2. Inicializar (copia skills a .claude/ y .cursor/, crea CLAUDE.md y .cursorrules)
19
+ npx refacil-sdd-ai init
20
+
21
+ # 3. IMPORTANTE: Reiniciar la sesion de Claude Code o Cursor
22
+ # (las skills nuevas no se detectan hasta reiniciar)
23
+
24
+ # 4. En Claude Code o Cursor, ejecutar:
25
+ /refacil:setup
26
+ # Esto hace:
27
+ # - Verifica Node.js y OpenSpec
28
+ # - Instala OpenSpec si no esta (npm install -g @fission-ai/openspec@latest)
29
+ # - Inicializa openspec/ en el repo (openspec init --tools claude,cursor)
30
+ # - Crea openspec/config.yaml con idioma espanol
31
+ # - Genera AGENTS.md automaticamente analizando el repo
32
+ ```
33
+
34
+ > **Nota**: `openspec init` tambien instala sus propios comandos (`opsx:*`) en `.claude/` y `.cursor/`. Esto es normal. Los `refacil:*` y `opsx:*` coexisten sin conflicto. El equipo debe usar `refacil:*` como interfaz principal.
35
+
36
+ ## Comandos del CLI
37
+
38
+ ```bash
39
+ npx refacil-sdd-ai init # Instalar skills y crear configs
40
+ npx refacil-sdd-ai update # Actualizar skills a la ultima version
41
+ npx refacil-sdd-ai clean # Eliminar skills del repo
42
+ npx refacil-sdd-ai help # Ver ayuda
43
+ ```
44
+
45
+ ## Skills disponibles
46
+
47
+ Una vez instalado, estos comandos estan disponibles en Claude Code y Cursor:
48
+
49
+ | Comando | Descripcion |
50
+ |---------|-------------|
51
+ | `/refacil:setup` | Instalar OpenSpec y generar AGENTS.md para el repo |
52
+ | `/refacil:guide` | Guia interactiva — que comando usar segun lo que necesites |
53
+ | `/refacil:explore` | Explorar el codebase sin hacer cambios |
54
+ | `/refacil:propose` | Crear propuesta de cambio (proposal + specs + design + tasks) |
55
+ | `/refacil:apply` | Implementar las tasks del cambio propuesto |
56
+ | `/refacil:test` | Generar tests unitarios desde los artefactos |
57
+ | `/refacil:verify` | Validar implementacion vs specs |
58
+ | `/refacil:review` | Review con checklist de calidad del equipo |
59
+ | `/refacil:archive` | Archivar cambio completado |
60
+ | `/refacil:bug` | Flujo guiado completo para investigar y corregir bugs |
61
+
62
+ ## Flujos de trabajo
63
+
64
+ ### Feature nuevo
65
+
66
+ ```
67
+ /refacil:propose "descripcion del feature"
68
+ /refacil:apply
69
+ /refacil:test
70
+ /refacil:verify
71
+ /refacil:review
72
+ /refacil:archive
73
+ ```
74
+
75
+ ### Bug fix
76
+
77
+ ```
78
+ /refacil:bug "descripcion del error"
79
+ /refacil:review
80
+ ```
81
+
82
+ ### Explorar codigo
83
+
84
+ ```
85
+ /refacil:explore "que quiero entender"
86
+ ```
87
+
88
+ ## Como funciona
89
+
90
+ 1. **`npx refacil-sdd-ai init`** copia las skills a `.claude/skills/` y `.cursor/skills/`, y crea `CLAUDE.md` + `.cursorrules`
91
+ 2. **`/refacil:setup`** (en Claude Code o Cursor) instala OpenSpec, analiza el repo y genera un `AGENTS.md` personalizado
92
+ 3. Las demas skills (`propose`, `apply`, `test`, etc.) leen `AGENTS.md` para entender las convenciones del proyecto
93
+
94
+ ```
95
+ npx refacil-sdd-ai init → Skills en .claude/ y .cursor/
96
+ CLAUDE.md y .cursorrules creados
97
+
98
+ /refacil:setup → OpenSpec instalado
99
+ AGENTS.md generado (analisis automatico del repo)
100
+
101
+ /refacil:propose → Artefactos en openspec/changes/
102
+ /refacil:apply → Codigo implementado
103
+ /refacil:test → Tests generados
104
+ /refacil:verify → Validacion PASS/FAIL
105
+ /refacil:review → Review con checklist
106
+ /refacil:archive → Cambio archivado
107
+ ```
108
+
109
+ ## Que se instala en tu repo
110
+
111
+ ```
112
+ .claude/skills/refacil-*/ # Skills para Claude Code
113
+ .cursor/skills/refacil-*/ # Skills para Cursor
114
+ CLAUDE.md # Config para Claude Code (apunta a AGENTS.md)
115
+ .cursorrules # Config para Cursor (apunta a AGENTS.md)
116
+ AGENTS.md # Generado por /refacil:setup (NO por el CLI)
117
+ openspec/ # Generado por /refacil:setup via OpenSpec
118
+ ```
119
+
120
+ ## Actualizar
121
+
122
+ Cuando se publique una nueva version del paquete:
123
+
124
+ ```bash
125
+ npm update refacil-sdd-ai
126
+ npx refacil-sdd-ai update # Re-copia skills sin tocar AGENTS.md ni configs
127
+ ```
128
+
129
+ ## Desinstalar
130
+
131
+ ```bash
132
+ npx refacil-sdd-ai clean # Elimina skills de .claude/ y .cursor/
133
+ npm uninstall refacil-sdd-ai
134
+ ```
135
+
136
+ ## Tecnologias
137
+
138
+ - [OpenSpec](https://github.com/Fission-AI/OpenSpec) — Framework de especificaciones
139
+ - [AGENTS.md](https://agents.md/) — Estandar universal de instrucciones para IA
140
+ - [Claude Code](https://claude.ai/code) — CLI de Anthropic
141
+ - [Cursor](https://cursor.sh) — IDE con IA
142
+
143
+ ## Licencia
144
+
145
+ MIT
package/bin/cli.js ADDED
@@ -0,0 +1,207 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+
6
+ const SKILLS = [
7
+ 'setup',
8
+ 'guide',
9
+ 'explore',
10
+ 'propose',
11
+ 'apply',
12
+ 'test',
13
+ 'verify',
14
+ 'review',
15
+ 'archive',
16
+ 'bug',
17
+ ];
18
+
19
+ const packageRoot = path.resolve(__dirname, '..');
20
+ const projectRoot = process.cwd();
21
+
22
+ function copyDir(src, dest) {
23
+ fs.mkdirSync(dest, { recursive: true });
24
+ const entries = fs.readdirSync(src, { withFileTypes: true });
25
+ for (const entry of entries) {
26
+ const srcPath = path.join(src, entry.name);
27
+ const destPath = path.join(dest, entry.name);
28
+ if (entry.isDirectory()) {
29
+ copyDir(srcPath, destPath);
30
+ } else {
31
+ fs.copyFileSync(srcPath, destPath);
32
+ }
33
+ }
34
+ }
35
+
36
+ function installSkills() {
37
+ let installed = 0;
38
+
39
+ for (const skill of SKILLS) {
40
+ const srcDir = path.join(packageRoot, 'skills', skill);
41
+ if (!fs.existsSync(srcDir)) continue;
42
+
43
+ // Copy to .claude/skills/
44
+ const claudeDest = path.join(projectRoot, '.claude', 'skills', `refacil-${skill}`);
45
+ copyDir(srcDir, claudeDest);
46
+
47
+ // Copy to .cursor/skills/
48
+ const cursorDest = path.join(projectRoot, '.cursor', 'skills', `refacil-${skill}`);
49
+ copyDir(srcDir, cursorDest);
50
+
51
+ installed++;
52
+ }
53
+
54
+ return installed;
55
+ }
56
+
57
+ function createClaudeMd() {
58
+ const dest = path.join(projectRoot, 'CLAUDE.md');
59
+ if (fs.existsSync(dest)) {
60
+ console.log(' CLAUDE.md ya existe, no se sobreescribe.');
61
+ return false;
62
+ }
63
+ const template = fs.readFileSync(path.join(packageRoot, 'templates', 'claude-md.md'), 'utf8');
64
+ fs.writeFileSync(dest, template);
65
+ return true;
66
+ }
67
+
68
+ function createCursorRules() {
69
+ const dest = path.join(projectRoot, '.cursorrules');
70
+ if (fs.existsSync(dest)) {
71
+ console.log(' .cursorrules ya existe, no se sobreescribe.');
72
+ return false;
73
+ }
74
+ const template = fs.readFileSync(path.join(packageRoot, 'templates', 'cursorrules.md'), 'utf8');
75
+ fs.writeFileSync(dest, template);
76
+ return true;
77
+ }
78
+
79
+ function removeSkills() {
80
+ let removed = 0;
81
+ for (const skill of SKILLS) {
82
+ const claudeDir = path.join(projectRoot, '.claude', 'skills', `refacil-${skill}`);
83
+ const cursorDir = path.join(projectRoot, '.cursor', 'skills', `refacil-${skill}`);
84
+
85
+ if (fs.existsSync(claudeDir)) {
86
+ fs.rmSync(claudeDir, { recursive: true });
87
+ removed++;
88
+ }
89
+ if (fs.existsSync(cursorDir)) {
90
+ fs.rmSync(cursorDir, { recursive: true });
91
+ }
92
+ }
93
+ return removed;
94
+ }
95
+
96
+ function checkNodeVersion() {
97
+ const version = process.version; // e.g. v20.19.5
98
+ const major = parseInt(version.split('.')[0].replace('v', ''));
99
+ const minor = parseInt(version.split('.')[1]);
100
+
101
+ if (major < 20 || (major === 20 && minor < 19)) {
102
+ console.log(`\n ADVERTENCIA: Node.js ${version} detectado.`);
103
+ console.log(' OpenSpec requiere Node.js >= 20.19.0.');
104
+ console.log(' Las skills se instalaran pero /refacil:setup podria fallar al instalar OpenSpec.\n');
105
+ return false;
106
+ }
107
+ return true;
108
+ }
109
+
110
+ // --- Commands ---
111
+
112
+ function init() {
113
+ console.log('\n refacil-sdd-ai: Inicializando metodologia SDD-AI...\n');
114
+
115
+ // Check Node version
116
+ const nodeOk = checkNodeVersion();
117
+ if (nodeOk) {
118
+ console.log(` Node.js ${process.version} OK`);
119
+ }
120
+
121
+ // Install skills
122
+ const count = installSkills();
123
+ console.log(` ${count} skills instaladas en .claude/skills/ y .cursor/skills/`);
124
+
125
+ // Create CLAUDE.md
126
+ if (createClaudeMd()) {
127
+ console.log(' CLAUDE.md creado');
128
+ }
129
+
130
+ // Create .cursorrules
131
+ if (createCursorRules()) {
132
+ console.log(' .cursorrules creado');
133
+ }
134
+
135
+ console.log('\n Siguientes pasos:\n');
136
+ console.log(' 1. REINICIA tu sesion de Claude Code o Cursor');
137
+ console.log(' (las skills nuevas no se detectan hasta reiniciar)\n');
138
+ console.log(' 2. Ejecuta: /refacil:setup');
139
+ console.log(' (instala OpenSpec y genera AGENTS.md para tu proyecto)\n');
140
+ console.log(' Nota: /refacil:setup tambien instalara los comandos de OpenSpec (opsx:*).');
141
+ console.log(' Los comandos refacil:* y opsx:* coexisten sin conflicto.');
142
+ console.log(' El equipo debe usar los refacil:* como interfaz principal.\n');
143
+ }
144
+
145
+ function update() {
146
+ console.log('\n refacil-sdd-ai: Actualizando skills...\n');
147
+ const count = installSkills();
148
+ console.log(` ${count} skills actualizadas en .claude/skills/ y .cursor/skills/`);
149
+ console.log(' AGENTS.md y configuraciones no fueron modificados.');
150
+ console.log('\n REINICIA tu sesion de Claude Code o Cursor para aplicar los cambios.\n');
151
+ }
152
+
153
+ function clean() {
154
+ console.log('\n refacil-sdd-ai: Eliminando skills...\n');
155
+ const count = removeSkills();
156
+ console.log(` ${count} skills eliminadas de .claude/skills/ y .cursor/skills/`);
157
+ console.log(' AGENTS.md, CLAUDE.md y .cursorrules no fueron eliminados.');
158
+ console.log('\n Nota: Los comandos opsx:* de OpenSpec no se eliminan.');
159
+ console.log(' Para eliminar OpenSpec: rm -rf openspec/ .claude/commands/opsx .cursor/commands/opsx\n');
160
+ }
161
+
162
+ function help() {
163
+ console.log(`
164
+ refacil-sdd-ai — Metodologia SDD-AI con OpenSpec
165
+
166
+ Comandos:
167
+ init Instala skills en .claude/ y .cursor/, crea CLAUDE.md y .cursorrules
168
+ update Re-copia skills (para actualizar a nueva version del paquete)
169
+ clean Elimina skills de .claude/ y .cursor/
170
+ help Muestra esta ayuda
171
+
172
+ Flujo completo:
173
+ 1. npm install --save-dev refacil-sdd-ai
174
+ 2. npx refacil-sdd-ai init
175
+ 3. REINICIAR sesion de Claude Code o Cursor
176
+ 4. Ejecutar: /refacil:setup (instala OpenSpec + genera AGENTS.md)
177
+
178
+ Requisitos:
179
+ - Node.js >= 20.19.0 (requerido por OpenSpec)
180
+ - Claude Code o Cursor instalado
181
+ `);
182
+ }
183
+
184
+ // --- Main ---
185
+
186
+ const command = process.argv[2] || 'help';
187
+
188
+ switch (command) {
189
+ case 'init':
190
+ init();
191
+ break;
192
+ case 'update':
193
+ update();
194
+ break;
195
+ case 'clean':
196
+ clean();
197
+ break;
198
+ case 'help':
199
+ case '--help':
200
+ case '-h':
201
+ help();
202
+ break;
203
+ default:
204
+ console.error(` Comando desconocido: ${command}`);
205
+ help();
206
+ process.exit(1);
207
+ }
@@ -0,0 +1,8 @@
1
+ # OpenSpec Configuration Template — Equipo Refacil
2
+ # Copiar a openspec/config.yaml despues de ejecutar openspec init
3
+
4
+ # Idioma: español para artefactos, terminos tecnicos en ingles
5
+ language: spanish
6
+
7
+ # Las skills refacil:* usan la estructura de OpenSpec por debajo
8
+ # No es necesario modificar el schema default (spec-driven)
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "refacil-sdd-ai",
3
+ "version": "1.0.0",
4
+ "description": "SDD-AI: Specification-Driven Development with AI — metodologia de desarrollo con IA usando OpenSpec, Claude Code y Cursor",
5
+ "bin": {
6
+ "refacil-sdd-ai": "./bin/cli.js"
7
+ },
8
+ "files": [
9
+ "bin/",
10
+ "skills/",
11
+ "templates/",
12
+ "config/",
13
+ "README.md"
14
+ ],
15
+ "keywords": [
16
+ "ai",
17
+ "development",
18
+ "methodology",
19
+ "openspec",
20
+ "claude-code",
21
+ "cursor",
22
+ "sdd",
23
+ "specification-driven",
24
+ "testing",
25
+ "code-review"
26
+ ],
27
+ "author": "Refacil",
28
+ "license": "MIT",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": ""
32
+ },
33
+ "engines": {
34
+ "node": ">=18.0.0"
35
+ }
36
+ }
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: refacil:apply
3
+ description: Implementar las tasks de un cambio propuesto — escribe codigo siguiendo el plan aprobado en los artefactos de OpenSpec
4
+ user-invocable: true
5
+ ---
6
+
7
+ # refacil:apply — Implementacion
8
+
9
+ Este comando envuelve la funcionalidad de OpenSpec apply 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
+ ## Instrucciones
17
+
18
+ ### Paso 1: Delegar a OpenSpec apply
19
+
20
+ Ejecuta internamente las instrucciones de la skill `openspec-apply-change` que esta instalada en `.claude/skills/openspec-apply-change/SKILL.md` (o `.cursor/skills/openspec-apply-change/SKILL.md`).
21
+
22
+ Lee esa skill y sigue sus instrucciones pasandole el argumento del usuario: **$ARGUMENTS**
23
+
24
+ **Indicaciones adicionales durante la implementacion:**
25
+ - Respetar estrictamente las convenciones de `AGENTS.md`
26
+ - No agregar funcionalidad fuera del alcance de las specs
27
+ - No hacer refactors no solicitados en codigo existente
28
+ - Si una task es ambigua, preguntar antes de implementar
29
+
30
+ ### Paso 2: Resumen y siguiente paso (aporte Refacil)
31
+
32
+ Al terminar la implementacion de OpenSpec, agrega este resumen:
33
+
34
+ ```
35
+ === Implementacion completada ===
36
+ Archivos creados: [lista]
37
+ Archivos modificados: [lista]
38
+ Tasks completadas: [X/Y]
39
+
40
+ Siguientes pasos:
41
+ 1. /refacil:test — Generar tests unitarios
42
+ 2. /refacil:verify — Validar implementacion vs specs
43
+ ```
44
+
45
+ ## Reglas
46
+
47
+ - SIEMPRE leer los artefactos completos antes de escribir codigo
48
+ - Si `openspec/changes/` no tiene cambios activos, informar y sugerir `/refacil:propose`
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: refacil:archive
3
+ description: Archivar un cambio completado — mueve artefactos a archive y sincroniza specs
4
+ user-invocable: true
5
+ ---
6
+
7
+ # refacil:archive — Archivar Cambio Completado
8
+
9
+ Este comando envuelve la funcionalidad de OpenSpec archive (que internamente llama a sync-specs) y agrega verificaciones previas del equipo.
10
+
11
+ ## Antes de empezar
12
+
13
+ Si existe `AGENTS.md` en la raiz del proyecto, leelo para entender las convenciones.
14
+ Si NO existe `AGENTS.md`, informa al usuario: "No se encontro AGENTS.md. Ejecuta /refacil:setup para generarlo." y detente.
15
+
16
+ ## Instrucciones
17
+
18
+ ### Paso 1: Verificaciones previas (aporte Refacil)
19
+
20
+ Antes de archivar, verifica que el cambio esta realmente completo:
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.
23
+
24
+ 2. **Tests pasan**: Ejecuta `npm test` y verifica que pasan. Si hay tests que fallan, informa y pregunta si quiere continuar.
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.
27
+
28
+ Si alguna verificacion falla, informa al usuario pero permite que decida si continuar.
29
+
30
+ ### Paso 2: Delegar a OpenSpec archive
31
+
32
+ Ejecuta internamente las instrucciones de la skill `openspec-archive-change` que esta instalada en `.claude/skills/openspec-archive-change/SKILL.md` (o `.cursor/skills/openspec-archive-change/SKILL.md`).
33
+
34
+ Lee esa skill y sigue sus instrucciones pasandole el argumento del usuario: **$ARGUMENTS**
35
+
36
+ OpenSpec archive internamente:
37
+ - Verifica el estado de los artefactos
38
+ - Ofrece sincronizar delta specs a `openspec/specs/` (via `openspec-sync-specs`)
39
+ - Mueve la carpeta del cambio a `openspec/changes/archive/` (con prefijo de fecha)
40
+
41
+ **IMPORTANTE**: Cuando OpenSpec pregunte si sincronizar specs, responde **SI**. La sincronizacion de specs es obligatoria en la metodologia Refacil — `openspec/specs/` debe reflejar siempre el estado actual del sistema.
42
+
43
+ ### Paso 3: Verificar sincronizacion (aporte Refacil)
44
+
45
+ Despues de que OpenSpec archive, verifica que `openspec/specs/` fue actualizada:
46
+
47
+ 1. Revisa si hay archivos nuevos o modificados en `openspec/specs/`
48
+ 2. Si la sincronizacion no ocurrio (OpenSpec la salto o fallo), ejecuta manualmente la sincronizacion:
49
+ - Lee el `specs.md` del cambio archivado
50
+ - Busca el spec principal relevante en `openspec/specs/`
51
+ - Si existe, integra los cambios (ADDED → agregar, MODIFIED → actualizar, REMOVED → eliminar)
52
+ - Si NO existe, crea un spec principal nuevo con nombre descriptivo
53
+
54
+ El objetivo es que `openspec/specs/` documente como funciona el sistema HOY.
55
+
56
+ ### Paso 4: Confirmar
57
+
58
+ ```
59
+ === Cambio archivado ===
60
+ Cambio: [nombre]
61
+ Ubicacion: openspec/changes/archive/[fecha]-[nombre]/
62
+ Specs sincronizadas: SI
63
+ Tests: PASS
64
+
65
+ El cambio ha sido completado y archivado exitosamente.
66
+ ```
67
+
68
+ ## Reglas
69
+
70
+ - Siempre verificar completitud antes de archivar
71
+ - La sincronizacion de specs es OBLIGATORIA en la metodologia Refacil
72
+ - No eliminar artefactos, solo moverlos a archive/ para trazabilidad
@@ -0,0 +1,128 @@
1
+ ---
2
+ name: refacil:bug
3
+ description: Flujo guiado completo para investigar y corregir bugs — desde la descripcion hasta los tests de regresion
4
+ user-invocable: true
5
+ ---
6
+
7
+ # refacil:bug — Flujo de Bug Fix
8
+
9
+ Eres un asistente especializado en investigacion y correccion de bugs. Guias al desarrollador por un flujo estructurado paso a paso.
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
+
16
+ ## Instrucciones
17
+
18
+ ### Paso 1: Describir el bug
19
+
20
+ Preguntale al usuario (si no lo proporciono en $ARGUMENTS):
21
+
22
+ 1. **Que esta pasando?** — Comportamiento actual (el error)
23
+ 2. **Que deberia pasar?** — Comportamiento esperado
24
+ 3. **Pasos para reproducir** — Como llegar al error
25
+ 4. **Evidencia** — Logs, screenshots, stack traces (pedir que los peguen)
26
+ 5. **Desde cuando ocurre?** — Siempre, desde un deploy, desde un cambio especifico
27
+ 6. **Severidad** — Critico (bloquea produccion), Alto, Medio, Bajo
28
+
29
+ ### Paso 2: Investigar la causa raiz
30
+
31
+ Con la informacion del paso 1:
32
+
33
+ 1. **Buscar en el codebase**:
34
+ - Busca las funciones/archivos mencionados en los logs o stack traces
35
+ - Busca el flujo de datos del escenario que falla
36
+ - Revisa commits recientes si el bug es nuevo (`git log --oneline -20`)
37
+
38
+ 2. **Trazar el flujo**:
39
+ - Desde el punto de entrada (controller/endpoint) hasta donde falla
40
+ - Identifica cada componente en la cadena
41
+ - Busca donde se rompe la cadena
42
+
43
+ 3. **Formular hipotesis**:
44
+ - Presenta al usuario 1-3 hipotesis de causa raiz
45
+ - Para cada una, muestra el archivo y linea sospechosa
46
+ - Pide al usuario que confirme o descarte
47
+
48
+ ### Paso 3: Diagnosticar
49
+
50
+ Una vez confirmada la hipotesis:
51
+
52
+ 1. **Confirmar la causa raiz**: Muestra el codigo exacto que causa el bug
53
+ 2. **Explicar por que falla**: Que condicion o caso no esta manejado
54
+ 3. **Evaluar impacto**: Que mas podria estar afectado
55
+
56
+ ### Paso 4: Proponer correccion
57
+
58
+ Presenta la correccion propuesta:
59
+
60
+ 1. **Cambio minimo**: La correccion mas pequeña posible que resuelve el bug
61
+ 2. **Archivos a modificar**: Lista con descripcion del cambio
62
+ 3. **Riesgos**: Que podria romperse con el fix
63
+ 4. **Alternativas**: Si hay mas de una forma de corregirlo
64
+
65
+ Espera aprobacion del usuario antes de implementar.
66
+
67
+ ### Paso 5: Implementar el fix
68
+
69
+ Con aprobacion del usuario:
70
+
71
+ 1. Aplica la correccion
72
+ 2. Verifica que el cambio es minimo y enfocado
73
+ 3. No hacer refactors adicionales
74
+
75
+ ### Paso 6: Tests de regresion
76
+
77
+ Genera tests que:
78
+
79
+ 1. **Reproducen el bug**: Un test que falla SIN el fix (verifica que el test es valido)
80
+ 2. **Verifican el fix**: El mismo test pasa CON el fix
81
+ 3. **Verifican no regresion**: Tests del flujo normal siguen pasando
82
+
83
+ Estructura:
84
+ ```typescript
85
+ describe('Bug Fix: [descripcion corta]', () => {
86
+ it('should [comportamiento correcto] when [condicion que antes fallaba]', () => {
87
+ // Este test hubiera fallado antes del fix
88
+ });
89
+
90
+ it('should still [comportamiento normal] when [condicion normal]', () => {
91
+ // Este test verifica que no se rompio nada
92
+ });
93
+ });
94
+ ```
95
+
96
+ ### Paso 7: Verificar
97
+
98
+ 1. Ejecuta `npm test` — todos los tests deben pasar
99
+ 2. Muestra resumen del fix
100
+
101
+ ```
102
+ === Bug Fix Completado ===
103
+ Bug: [descripcion corta]
104
+ Causa raiz: [explicacion]
105
+ Fix: [que se cambio]
106
+ Archivos modificados: [lista]
107
+ Tests de regresion: [N] tests agregados
108
+ npm test: PASS
109
+
110
+ Siguientes pasos:
111
+ 1. /refacil:review — Review del fix (recomendado para bugs criticos)
112
+ 2. Commit y deploy
113
+ ```
114
+
115
+ ### Paso 8 (opcional): Crear artefactos OpenSpec
116
+
117
+ Si el bug es significativo, preguntar al usuario si quiere documentarlo en OpenSpec:
118
+ - Crear carpeta en `openspec/changes/fix-[nombre]/`
119
+ - Generar proposal.md y specs.md con los detalles del bug y fix
120
+
121
+ ## Reglas
122
+
123
+ - SIEMPRE investigar antes de proponer una correccion
124
+ - NUNCA implementar sin aprobacion del usuario
125
+ - El fix debe ser MINIMO — no aprovechar para refactorizar
126
+ - Los tests de regresion son OBLIGATORIOS
127
+ - Si el bug es en produccion (critico), priorizar velocidad pero sin saltarse tests
128
+ - Responder en español con terminos tecnicos en ingles
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: refacil:explore
3
+ description: Explorar e investigar el codebase antes de hacer cambios — analiza arquitectura, flujos y dependencias sin modificar nada
4
+ user-invocable: true
5
+ ---
6
+
7
+ # refacil:explore — Exploracion del Codebase
8
+
9
+ Este comando envuelve la funcionalidad de OpenSpec explore y agrega contexto del proyecto.
10
+
11
+ ## Antes de empezar
12
+
13
+ Si existe `AGENTS.md` en la raiz del proyecto, leelo para entender las convenciones, arquitectura y patrones del repositorio. Usa esa informacion como contexto durante la exploracion.
14
+
15
+ Si NO existe `AGENTS.md`, informa al usuario: "No se encontro AGENTS.md. Ejecuta /refacil:setup para generarlo." y detente.
16
+
17
+ ## Instrucciones
18
+
19
+ ### Paso 1: Delegar a OpenSpec explore
20
+
21
+ Ejecuta internamente las instrucciones de la skill `openspec-explore` que esta instalada en `.claude/skills/openspec-explore/SKILL.md` (o `.cursor/skills/openspec-explore/SKILL.md`).
22
+
23
+ Lee esa skill y sigue sus instrucciones pasandole el argumento del usuario: **$ARGUMENTS**
24
+
25
+ ### Paso 2: Enriquecer con contexto de AGENTS.md
26
+
27
+ Ademas de lo que OpenSpec explore reporta, agrega:
28
+ - Patrones especificos del proyecto que encontraste en AGENTS.md relevantes a la exploracion
29
+ - Convenciones que el usuario deberia tener en cuenta si planea hacer cambios en esa area
30
+
31
+ ### Paso 3: Recomendar siguiente paso
32
+
33
+ Al final del reporte, sugiere:
34
+ - Si el usuario quiere hacer un cambio: "Ejecuta `/refacil:propose <descripcion>` para crear una propuesta"
35
+ - Si el usuario quiere investigar mas: "Ejecuta `/refacil:explore <otra pregunta>` para seguir explorando"
36
+
37
+ ## Reglas
38
+
39
+ - NO modifiques ningun archivo
40
+ - NO generes codigo nuevo
41
+ - Solo lectura e investigacion
42
+ - Responde en español con terminos tecnicos en ingles