regression-check

$npx mdskill add 686f6c61/alfred-dev/regression-check

Detect early when new code breaks existing functionality.

  • Prevents production failures by catching broken features before release.
  • Integrates with Git diffs and dependency trees to map impact.
  • Executes targeted unit tests based on modified modules and interfaces.
  • Reports specific regression risks with affected module paths.
SKILL.md
.github/skills/regression-checkView on GitHub ↗
---
name: regression-check
description: "Usar para verificar que cambios nuevos no rompen funcionalidad existente. También: algo se ha roto, cambio rompe funcionalidad, verificar que no hay regresión, tests de regresión."
---

# Verificación de regresiones

## Resumen

Este skill verifica que los cambios recientes no han roto funcionalidad que antes funcionaba correctamente. Las regresiones son uno de los tipos de bug más frustrantes: algo que el usuario daba por hecho deja de funcionar sin razón aparente. Este proceso las detecta antes de que lleguen a producción.

El enfoque es sistemático: se analiza el impacto del cambio, se ejecutan los tests relevantes y se verifica la integración con el resto del sistema.

## Proceso

1. **Analizar el alcance del cambio.** Entender qué se ha modificado:

   - Ficheros cambiados (diff de Git).
   - Módulos afectados directamente.
   - Dependientes: qué otros módulos importan o usan los módulos cambiados.
   - Interfaces públicas: se ha cambiado alguna firma de función, tipo de retorno o contrato?

2. **Mapear las áreas de impacto potencial.** Un cambio en un módulo base puede afectar a todo lo que depende de él. Trazar el árbol de dependencias hacia arriba:

   ```
   Módulo cambiado --> Módulos que lo importan --> Módulos que importan a esos
   ```

   Cuanto más profundo en el árbol, mayor es el área de impacto.

3. **Ejecutar los tests del área afectada.** En orden:

   - Tests unitarios de los módulos modificados.
   - Tests unitarios de los módulos dependientes.
   - Tests de integración que cubran la interacción entre módulos afectados.
   - Tests e2e de los flujos que pasan por los módulos afectados.

4. **Si hay tests que fallan, analizar la causa:**

   - El test falla porque el cambio rompe una funcionalidad existente? Es una regresión real. Corregir.
   - El test falla porque su expectativa era incorrecta y el cambio es correcto? Actualizar el test con justificación.
   - El test es inestable (flaky) y falla intermitentemente? Documentar y marcar para arreglar.

5. **Identificar lagunas de testing.** Si hay áreas afectadas por el cambio que no tienen tests:

   - Documentar la laguna como riesgo.
   - Si el riesgo es alto, escribir tests de caracterización antes de dar el cambio por bueno.
   - Crear issues para cubrir las lagunas detectadas.

6. **Verificar integración.** Más allá de los tests automatizados, verificar manualmente o con tests exploratorios que los flujos principales siguen funcionando. Prestar especial atención a:

   - Flujos que cruzan múltiples módulos.
   - Integraciones con servicios externos.
   - Comportamiento en condiciones de error.

7. **Documentar el resultado.** Registrar: qué se verificó, qué pasó, qué quedó sin verificar y por qué.

## Criterios de éxito

- Se ha analizado el impacto del cambio en todo el árbol de dependencias.
- Los tests del área afectada se han ejecutado y pasan.
- Los tests que fallan han sido analizados y clasificados (regresión real, test incorrecto, flaky).
- Las lagunas de testing están documentadas con su nivel de riesgo.
- No hay regresiones reales sin corregir.
More from 686f6c61/alfred-dev