# Flujo de trabajo con gstack

# Flujo de trabajo con gstack

## Qué es
`gstack` es el paquete de skills (`/spec`, `/qa`, `/review`, etc.) instalado para apoyar el ciclo de desarrollo. **Programar el código en sí no tiene skill** — eso se pide directo, sin slash, como cualquier otro pedido.

## ⚠️ Excepciones de este proyecto (leer antes de usar `/ship`, `/qa` o un flujo que toque varios repos)

1. **No usar `/ship` para pushear o abrir PR automático.**
   CLAUDE.md dice: *"Los commits los hace el usuario — Claude solo edita archivos."*
   `/ship` sincroniza, testea y audita cobertura sin problema, pero el commit/push/PR lo confirmas tú explícitamente antes de que se ejecute.

2. **Son 3 repos independientes, no uno solo.**
   `team-safety-backend`, `team-safety-frontend` y `team-safety-bot` son cada uno su propio git. La raíz `E:\Ejercicios\ts` **no** es un repo.
   Si una feature toca 2 repos (ej. endpoint nuevo + pantalla que lo consume), corre el flujo (`/review`, `/ship`, etc.) **una vez por repo**, no una sola vez para todo el cambio.

3. **`/qa` (navegador) no aplica al repo `bot`.**
   `team-safety-bot` no tiene UI propia — es Puppeteer automatizando el portal del Ministerio. Para bugs ahí: `/investigate` + prueba manual contra el portal, no `/qa`.

---

## Uso cotidiano

**`/review`** — revisa el diff actual como ingeniero senior buscando bugs que pasan CI pero rompen en producción. Si encuentra algo, lo corrige.
> Ejemplo: tocaste `approveCourse` → `/review` → detecta que la aprobación masiva no valida el examen médico y lo corrige.

**`/qa-only`** — abre el navegador, prueba lo que tocaste, entrega la lista de bugs sin corregir nada.
> Ejemplo: cambiaste el formulario de inscripción → `/qa-only` → "el botón Guardar queda habilitado sin adjuntar la planilla" — decides si lo arreglas o pasas a `/qa`.

**`/diagram`** — genera un diagrama (mermaid/excalidraw/svg) desde una descripción en texto.
> Ejemplo: `/diagram el flujo del QR desde inscripción hasta firma del aprendiz` → diagrama de secuencia, sin herramienta externa.

---

## Para un bug

1. **`/investigate`** + descripción del síntoma → rastrea causa raíz antes de tocar código.
   > Ejemplo: "el ícono de requisitos no se actualiza al cerrar el modal" → causa: `onModalRequirementClose` no recargaba la lista.
2. **Corregir** — con la causa identificada, aplicas el fix.
3. **`/review`** — valida que el fix no rompa nada nuevo.
4. **`/qa`** — reproduce el bug original en navegador, confirma que ya no pasa, deja un test de regresión.
   > Ejemplo: tras el fix del ícono → `/qa` abre el modal, lo cierra, confirma que el ícono ya refleja el estado real.

---

## Para módulo/servicio nuevo desde cero (grande)

1. **`/spec`** — convierte la idea en spec ejecutable (problema, alcance, criterios de aceptación).
   > Ejemplo: `/spec necesito digitalizar el examen escrito del curso Coordinador (F-GF-36)` → casos de uso, modelo de datos, qué queda fuera de alcance.
2. **`/autoplan`** — encadena revisión de producto, diseño y arquitectura sobre esa spec.
   > Ejemplo: devuelve "falta el estado de calificación pendiente en la UI".
3. **Implementar** — con el plan validado. Si el alcance debe quedar contenido a una carpeta, `/guard <ruta>` antes de arrancar.
   > Ejemplo: `/guard team-safety-backend/src/main/java/com/teamsafety/service/coordinador` evita que el modelo toque por error el módulo de certificados.
4. **`/review` → `/qa` → `/cso`** — mismo review y qa de siempre; `/cso` audita OWASP Top 10.
   > Ejemplo `/cso`: detecta que el nuevo endpoint no valida que el coach solo vea sus propios cursos.
5. **`/document-release`** — actualiza docs para que coincidan con lo shippeado.
6. **`/ship`** — hasta dejar el cambio probado y listo; **el commit/push lo confirmas tú** (ver excepción #1).

---

## Para feature nueva en un módulo existente

1. **`/spec`** con alcance acotado.
   > Ejemplo: `/spec agregar exportación a Excel en el listado de asistencia`.
2. **`/plan-eng-review`** — mirada de arquitectura: qué se reutiliza, qué edge cases hay.
   > Ejemplo: "ya existe lógica de export en `CertificateService`, reusar el mismo patrón en vez de crear uno nuevo".
3. **`/plan-design-review`** (solo si tiene UI) — audita el plan de diseño antes de implementar.
   > Ejemplo: marca "falta definir el estado de carga mientras se genera el Excel".
4. **Implementar → `/review` → `/qa` → `/cso` → `/document-release` → `/ship`** — igual que el flujo grande.

---

## Para actualizar algo que ya existe

1. **`/plan-eng-review`** (si el cambio toca varias partes) — chequea qué más consume esa función antes de tocarla.
   > Ejemplo: vas a cambiar `evaluate-rule` (vigencia PILA) → revisa que Planilla y ARL usan la misma regla antes de modificarla.
2. **`/guard`** (opcional) — si quieres que el cambio no se escape del archivo/módulo puntual.
3. **Implementar** — el cambio en sí.
4. **`/review`** — valida que no rompiste nada al modificar.
5. **`/qa`** — prueba el comportamiento nuevo y que lo viejo alrededor sigue funcionando.
   > Ejemplo: actualizaste el cálculo de vigencia → `/qa` prueba un registro nuevo y uno viejo, confirma que el resultado no cambió donde no debía.
6. **`/document-release`** (solo si el cambio es visible para otros, no un detalle interno).