refacil-sdd-ai 4.1.1 → 4.1.3

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/agents/auditor.md CHANGED
@@ -11,6 +11,8 @@ Eres un lider tecnico auditor, exigente pero constructivo, que evalua el codigo
11
11
 
12
12
  **Prerequisitos**: perfil `agents` de `refacil-prereqs/SKILL.md` + modo de salida de `METHODOLOGY-CONTRACT.md`.
13
13
 
14
+ Si inspeccionas `openspec/changes/<cambio>/` para prereqs o contexto, los marcadores **`.review-passed`** son dotfiles: **`METHODOLOGY-CONTRACT.md` §8** (no concluyas ausencia con `ls` sin `-a`).
15
+
14
16
  ## Guardrail: deteccion de invocacion directa
15
17
 
16
18
  Estas disenado para ser **delegado por el skill `/refacil:review`**, que resuelve el scope y escribe el marcador `.review-passed` con el JSON que emites. Si detectas que fuiste invocado **directamente** (ej. el prompt del usuario no trae un scope explicito tipo nombre de cambio activo, lista de rutas o "git-diff"), tu PRIMERA respuesta debe ser:
@@ -29,6 +29,10 @@ Si prefieres solo el reporte (sin aplicar fixes), respondeme con el scope explic
29
29
 
30
30
  **No procedas con lecturas ni corras tests hasta que el usuario confirme scope.**
31
31
 
32
+ ## Archivos ocultos en `openspec/changes/<cambio>/`
33
+
34
+ Antes de afirmar ausencia de **`.review-passed`** u otros dotfiles, aplica **`refacil-prereqs/METHODOLOGY-CONTRACT.md` §8**.
35
+
32
36
  ## Reglas criticas del sub-agente
33
37
 
34
38
  - **NO modificas ningun archivo**. No tienes `Edit` ni `Write`. Solo lectura + ejecucion de tests via `Bash`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "refacil-sdd-ai",
3
- "version": "4.1.1",
3
+ "version": "4.1.3",
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"
@@ -22,7 +22,7 @@ Antes de archivar, verifica que el cambio esta realmente completo:
22
22
 
23
23
  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.
24
24
 
25
- 4. **Review aprobado (bloqueante)**: Verifica que existe el archivo `.review-passed` en la carpeta del cambio (`openspec/changes/[nombre-cambio]/.review-passed`). Si NO existe, **detener el archivado** e informar al usuario:
25
+ 4. **Review aprobado (bloqueante)**: Verifica que existe el archivo `.review-passed` en la carpeta del cambio (`openspec/changes/[nombre-cambio]/.review-passed`) siguiendo **`METHODOLOGY-CONTRACT.md` §8** (dotfile; no concluyas por listados sin dotfiles). Si NO existe, **detener el archivado** e informar al usuario:
26
26
  ```
27
27
  No se puede archivar: el cambio no tiene review aprobado.
28
28
  Ejecuta /refacil:review primero.
@@ -98,7 +98,18 @@ Si el usuario no pide detalle, usa modo conciso.
98
98
 
99
99
  ## 7) Persistencia de evidencia de review
100
100
 
101
- - `archive` requiere `.review-passed` como precondicion bloqueante.
101
+ - `archive` requiere `.review-passed` como precondicion bloqueante (comprobar existencia segun **§8**).
102
102
  - Al archivar cambios regulares (via OpenSpec), la metadata de `.review-passed` debe persistirse en `openspec/specs/`.
103
103
  - El formato recomendado es `review.yaml` dentro de cada carpeta de spec afectada.
104
104
  - Si no se puede mapear de forma confiable a specs concretos, registrar la evidencia en `openspec/specs/review-metadata.yaml`.
105
+
106
+ ## 8) Archivos ocultos bajo `openspec/changes/<cambio>/`
107
+
108
+ - **`.review-passed`** y cualquier archivo cuyo nombre empiece por **`.`** son **ocultos** en muchos entornos: en shell, **`ls` sin `-a` / `-la` no los lista** — no concluyas que no existen por eso (evita falsos negativos en prereqs, review, verify, `up-code` y archive).
109
+ - **Preferido**: herramienta **`Glob`** (patron bajo `openspec/changes/<nombre>/`), **`Read`** sobre la ruta exacta `openspec/changes/<nombre>/.review-passed`, o Bash **`test -f`** / **`[ -f ... ]`** sobre esa ruta.
110
+ - Si el usuario dice que el archivo existe y tu comprobacion lo nego, **re-verifica** con uno de los metodos anteriores antes de insistir.
111
+
112
+ ## 9) Identificador de carpeta bajo `openspec/changes/<cambio>/`
113
+
114
+ - El **nombre de la carpeta** del cambio activo es el identificador que usa el CLI de OpenSpec (`openspec status --change`, flujos de archive, etc.).
115
+ - **Debe empezar con una letra ASCII** `[a-zA-Z]`. Si el primer caracter es un digito u otro simbolo, el CLI rechaza el nombre (p. ej. `Invalid change name: Change name must start with a letter`).
@@ -10,6 +10,7 @@ Lee este archivo **ademas** de la skill `openspec-*` que indique el comando `ref
10
10
 
11
11
  ## propose — `openspec-propose`
12
12
 
13
+ - **Nombre de carpeta del cambio** (`openspec/changes/<nombre>/`): cumplir **`METHODOLOGY-CONTRACT.md` §9** — el primer caracter **debe** ser letra ASCII; **prohibido** crear el cambio con nombre que empiece por digito (incluye prefijos tipo `YYYY-MM-DD-...`). El CLI OpenSpec falla con esos nombres (`openspec status --change`, etc.). Fijar o validar el slug **antes** de generar artefactos.
13
14
  - Criterios de aceptacion: formato **Dado / Cuando / Entonces**.
14
15
  - Incluir **criterios de rechazo** (edge cases) en specs.
15
16
  - Tasks con estimacion de esfuerzo **S / M / L**.
@@ -21,6 +21,16 @@ Si el usuario NO proporciono suficiente contexto en $ARGUMENTS, preguntale:
21
21
 
22
22
  Si $ARGUMENTS ya es claro, no preguntes de nuevo.
23
23
 
24
+ ### Paso 1.5: Identificador de carpeta del cambio (bloqueante — CLI OpenSpec)
25
+
26
+ El directorio `openspec/changes/<nombre>/` **no puede** usar un `<nombre>` cuyo **primer caracter no sea una letra ASCII** `[a-zA-Z]` — ver **`refacil-prereqs/METHODOLOGY-CONTRACT.md` §9**. Nombres como `2026-04-17-exponer-algo` hacen fallar `openspec status --change` y otros comandos.
27
+
28
+ **Antes del Paso 2:**
29
+
30
+ 1. Acuerda o deriva el **slug final** del cambio (kebab-case: `feat-...`, `exponer-...`, `imp-...`, etc.). Fecha o ticket no van al **inicio** del nombre.
31
+ 2. Si el usuario o OpenSpec proponen un nombre invalido, **corrigelo** (p. ej. prefijo `feat-` o `change-`) o pide al usuario el slug; **no** crees la carpeta ni delegues propose hasta tener un nombre valido.
32
+ 3. Pasa ese nombre valido al flujo OpenSpec (argumento explicito, contexto o convencion que use `openspec-propose`) para que los artefactos queden bajo `openspec/changes/<nombre-valido>/`.
33
+
24
34
  ### Paso 2: Delegar a OpenSpec ff (fast-forward)
25
35
 
26
36
  1. Lee `openspec-propose/SKILL.md` en `.claude/skills/` o `.cursor/skills/`.
@@ -78,6 +88,7 @@ Quieres que continue con /refacil:apply?
78
88
 
79
89
  ## Reglas
80
90
 
91
+ - **Nombre de carpeta del cambio**: cumplir siempre **§9** del contrato metodologico (primer caracter letra ASCII; nunca iniciar con digito).
81
92
  - **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)
82
93
  - Aunque el usuario pase una descripcion completa y detallada en $ARGUMENTS, la salida es EXCLUSIVAMENTE artefactos de planificacion
83
94
  - Si el usuario pide que tambien implemente, responder: "La implementacion se hace con `/refacil:apply` despues de aprobar los artefactos."
@@ -20,7 +20,7 @@ Este skill es un **wrapper delgado** que delega el review pesado al sub-agente `
20
20
  3) Cambios no commiteados (`git diff`)
21
21
  - Si hay multiples cambios activos en `openspec/changes/` y no hay `$ARGUMENTS`, **detente** y pide al usuario seleccionar explicitamente cual cambio revisar. **No invoques al sub-agente con scope ambiguo.**
22
22
 
23
- **Review ya aprobado**: Si el cambio objetivo ya tiene `.review-passed`, verifica si hay cambios posteriores al review:
23
+ **Review ya aprobado**: Si el cambio objetivo ya tiene `.review-passed`, verifica si hay cambios posteriores al review (existencia del marcador: **`METHODOLOGY-CONTRACT.md` §8**):
24
24
  1. Lee la `date` del `.review-passed`.
25
25
  2. Compara con `git log --since="[date]" --oneline` y `git status --porcelain`.
26
26
  3. **Si hay cambios nuevos**: elimina el `.review-passed` anterior y continua (invoca al sub-agente para re-evaluar).
@@ -48,7 +48,8 @@
48
48
  - Las consultas usan indices apropiados
49
49
  - No hay queries N+1
50
50
  - No hay inyeccion SQL/NoSQL posible (queries parametrizadas con el ORM/driver del proyecto)
51
- - Las migraciones (si hay) son reversibles y no rompen datos existentes
51
+ - **Esquema (DDL)**: por defecto, no usar el sistema de migraciones de TypeORM ni `synchronize` para aplicar o versionar cambios de BD (ni `MigrationInterface`, ni depender de `migration:run` / `migration:generate` en el flujo de despliegue de la app). Los cambios de esquema se entregan como **scripts explícitos** (p. ej. `.sql` versionados bajo convención del repo) para que **quien opera el motor** los ejecute **manualmente y aparte** en cada entorno (Postgres, MySQL, etc.). **Excepción**: si `AGENTS.md` define **explicitamente** como regla de **ese** repositorio otro mecanismo (p. ej. migraciones TypeORM u otro pipeline acordado), marca esta viñeta como **N/A** y revisa solo que el cambio cumple lo documentado allí (sin exigir scripts manuales).
52
+ - Si aplica la politica por defecto (scripts manuales): los scripts de esquema entregados documentan orden de ejecución, son reversibles o describen rollback, y no destruyen datos existentes sin plan explícito. Si aplica la excepción por `AGENTS.md`, marca **N/A** o evalua segun lo que ese archivo exija para migraciones.
52
53
 
53
54
  ## B7. Caching
54
55
  - Consultas repetitivas a BD usan cache **distribuido** (no cache local en memoria del proceso — evitar reinicios por falta de RAM)
@@ -30,7 +30,7 @@ Ejecuta `git branch --show-current` para obtener el nombre de la rama.
30
30
  Antes de continuar, verifica si hay cambios activos en `openspec/changes/` (excluir carpeta `archive/`).
31
31
 
32
32
  Si hay cambios activos:
33
- 1. Para cada carpeta activa, verifica si existe el archivo `.review-passed`.
33
+ 1. Para cada carpeta activa, verifica si existe el archivo `.review-passed` (marcador oculto: **`METHODOLOGY-CONTRACT.md` §8** — no concluyas por `ls` sin `-a`).
34
34
  2. Si **todas** tienen `.review-passed` → continua al paso 3.
35
35
  3. Si hay **una sola** carpeta sin `.review-passed`:
36
36
  - Informa al usuario cual es.
@@ -21,6 +21,10 @@ Determina el scope antes de invocar al sub-agente. Prioriza este orden:
21
21
 
22
22
  No invoques al sub-agente con scope ambiguo.
23
23
 
24
+ ### Paso 0.5: Archivos ocultos bajo `openspec/changes/` (evitar falsos negativos)
25
+
26
+ Si **esta sesion** inspecciona el directorio del cambio (listar archivos, confirmar precondiciones) **antes o despues** de delegar, aplica **`refacil-prereqs/METHODOLOGY-CONTRACT.md` §8**. El sub-agente `refacil-validator` sigue la misma regla.
27
+
24
28
  ### Paso 1: Delegar al sub-agente refacil-validator
25
29
 
26
30
  Invoca a `refacil-validator` pasandole:
@@ -86,6 +90,7 @@ Lista los issues para que el usuario los corrija manualmente. Sugiere `/refacil:
86
90
  ## Reglas
87
91
 
88
92
  - **Siempre delega al sub-agente** para el analisis (pasos 1-3). No repliques aqui la logica de lectura de specs ni de ejecucion de tests.
93
+ - **Dotfiles en `openspec/changes/`**: nunca afirmes ausencia de `.review-passed` (u otros `.…`) basandote solo en `ls` sin `-a`; ver `METHODOLOGY-CONTRACT.md` §8 y Paso 0.5.
89
94
  - **Las correcciones SOLO las aplica este wrapper** (Paso 4), despues de aprobacion explicita del usuario. El sub-agente es read-only.
90
95
  - **No muestres el bloque JSON al usuario**. Es solo metadata para parsear el resultado.
91
96
  - **Las correcciones deben ser quirurgicas**: solo lo necesario para resolver los issues reportados.