/tdd-cycle
Usar siempre antes de implementar código. Ciclo rojo-verde-refactor estricto. Activar cuando el usuario quiera hacer test first, escribir test antes de implementar, seguir el ciclo rojo verde refactor, desarrollo guiado por tests, TDD o implementar una funcionalidad de forma
$ npx -y skills add 686f6c61/alfred-dev --skill tdd-cycle --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/tdd-cycle
Context preview
The summary Claude sees to decide when to auto-load this skill.
Usar siempre antes de implementar código. Ciclo rojo-verde-refactor estricto. Activar cuando el usuario quiera hacer test first, escribir test antes de implementar, seguir el ciclo rojo verde refactor, desarrollo guiado por tests, TDD o implementar una funcionalidad de forma
SKILL.md
tdd-cycle.SKILL.mdname: tdd-cycle
description: "Usar siempre antes de implementar código. Ciclo rojo-verde-refactor estricto. Activar cuando el usuario quiera hacer test first, escribir test antes de implementar, seguir el ciclo rojo verde refactor, desarrollo guiado por tests, TDD o implementar una funcionalidad de forma segura con tests."
Ciclo TDD (Test-Driven Development)
Resumen
Este skill implementa el ciclo rojo-verde-refactor de TDD de forma estricta. La regla fundamental es que no se escribe ni una línea de código de producción sin un test que falle primero. Esto no es una sugerencia, es un HARD-GATE: si no hay test fallando, no se escribe implementación.
El TDD no es solo una técnica de testing, es una técnica de diseño. Escribir el test primero obliga a pensar en la interfaz pública antes que en la implementación, lo que produce código más limpio y con menor acoplamiento.
Proceso
Paso 1: Rojo - escribir un test que falle
- Escribir un único test que describa el comportamiento esperado.
- El test debe ser específico: probar UN aspecto del comportamiento, no varios.
- Nombrar el test de forma descriptiva: `deberia_devolver_error_cuando_email_es_invalido`, no `test1`.
- El test debe fallar por la razón correcta (el código no existe o no implementa el comportamiento), no por un error de sintaxis.
Paso 2: Ejecutar y verificar que falla
- HARD-GATE: ejecutar el test y confirmar que falla.
- Verificar que el mensaje de error es el esperado. Si el test falla por una razón distinta a la esperada, corregir el test antes de continuar.
- Este paso no se puede saltar. Un test que pasa sin implementación significa que el test no está probando nada útil.
Paso 3: Verde - implementación mínima
- Escribir el mínimo código necesario para que el test pase.
- "Mínimo" significa literalmente lo mínimo. Si el test espera que una función devuelva `true`, devolver `true` directamente es válido en este paso.
- No anticipar requisitos futuros. No añadir lógica que ningún test pide.
- No preocuparse por la elegancia del código en este paso.
Paso 4: Ejecutar y verificar que pasa
- Ejecutar todos los tests (no solo el nuevo) y verificar que pasan.
- Si algún test existente se rompe, corregir la implementación sin cambiar los tests existentes (salvo que haya un test mal escrito).
- HARD-GATE: no avanzar hasta que todos los tests estén en verde.
Paso 5: Refactorizar
- Ahora, con la red de seguridad de los tests, mejorar el código.
- Eliminar duplicación, mejorar nombres, extraer funciones, simplificar condicionales.
- Ejecutar los tests después de cada cambio de refactoring para asegurar que no se rompe nada.
- La refactorización no cambia comportamiento, solo estructura.
Paso 6: Commit atómico
- Hacer commit del test y la implementación juntos. El commit debe ser atómico: si se revierte, el proyecto sigue en un estado consistente.
- Formato del commit: `feat: [descripción]` o `test: [descripción]` según corresponda.
- Volver al paso 1 con el siguiente comportamiento a implementar.
Qué NO hacer
- **No escribir el test después de la implementación para "cumplir" con TDD.** El valor del TDD está en que el test guía el diseño. Un test escrito a posteriori solo verifica que el código hace lo que ya hace, no aporta feedback de diseño.
- **No escribir tests que prueban la implementación en vez del comportamiento.** Un test acoplado a detalles internos (orden de llamadas, variables privadas, estructura interna) se rompe con cada refactoring y no detecta regresiones reales.
- **No saltarse el paso de verificar que el test falla.** Un test que pasa sin implementación no prueba nada. Si el test ya pasa, o está mal escrito o la funcionalidad ya existía.
- **No hacer refactoring y añadir funcionalidad en el mismo paso.** El refactoring cambia estructura sin alterar comportamiento; añadir funcionalidad cambia comportamiento. Mezclarlos impide saber si un test roto es por el refactoring o por la nueva funcionalidad.
Criterios de éxito
- No existe código de producción sin un test correspondiente que lo valide.
- Cada test se ha visto fallar antes de escribir la implementación.
- Los tests son independientes entre sí (no dependen de orden de ejecución ni de estado compartido).
- El refactoring se ha realizado con todos los tests en verde.
- Los commits son atómicos y cada uno deja el proyecto en estado funcional.
Read more
name: tdd-cycle description: "Usar siempre antes de implementar código. Ciclo rojo-verde-refactor estricto. Activar cuando el usuario quiera hacer test first, escribir test antes de implementar, seguir el ciclo rojo verde refactor, desarrollo guiado por tests, TDD o implementar una funcionalidad de forma segura con tests."
Ciclo TDD (Test-Driven Development)
Resumen
Este skill implementa el ciclo rojo-verde-refactor de TDD de forma estricta. La regla fundamental es que no se escribe ni una línea de código de producción sin un test que falle primero. Esto no es una sugerencia, es un HARD-GATE: si no hay test fallando, no se escribe implementación.
El TDD no es solo una técnica de testing, es una técnica de diseño. Escribir el test primero obliga a pensar en la interfaz pública antes que en la implementación, lo que produce código más limpio y con menor acoplamiento.
Proceso
Paso 1: Rojo - escribir un test que falle
- Escribir un único test que describa el comportamiento esperado.
- El test debe ser específico: probar UN aspecto del comportamiento, no varios.
- Nombrar el test de forma descriptiva: `deberia_devolver_error_cuando_email_es_invalido`, no `test1`.
- El test debe fallar por la razón correcta (el código no existe o no implementa el comportamiento), no por un error de sintaxis.
Paso 2: Ejecutar y verificar que falla
- HARD-GATE: ejecutar el test y confirmar que falla.
- Verificar que el mensaje de error es el esperado. Si el test falla por una razón distinta a la esperada, corregir el test antes de continuar.
- Este paso no se puede saltar. Un test que pasa sin implementación significa que el test no está probando nada útil.
Paso 3: Verde - implementación mínima
- Escribir el mínimo código necesario para que el test pase.
- "Mínimo" significa literalmente lo mínimo. Si el test espera que una función devuelva `true`, devolver `true` directamente es válido en este paso.
- No anticipar requisitos futuros. No añadir lógica que ningún test pide.
- No preocuparse por la elegancia del código en este paso.
Paso 4: Ejecutar y verificar que pasa
- Ejecutar todos los tests (no solo el nuevo) y verificar que pasan.
- Si algún test existente se rompe, corregir la implementación sin cambiar los tests existentes (salvo que haya un test mal escrito).
- HARD-GATE: no avanzar hasta que todos los tests estén en verde.
Paso 5: Refactorizar
- Ahora, con la red de seguridad de los tests, mejorar el código.
- Eliminar duplicación, mejorar nombres, extraer funciones, simplificar condicionales.
- Ejecutar los tests después de cada cambio de refactoring para asegurar que no se rompe nada.
- La refactorización no cambia comportamiento, solo estructura.
Paso 6: Commit atómico
- Hacer commit del test y la implementación juntos. El commit debe ser atómico: si se revierte, el proyecto sigue en un estado consistente.
- Formato del commit: `feat: [descripción]` o `test: [descripción]` según corresponda.
- Volver al paso 1 con el siguiente comportamiento a implementar.
Qué NO hacer
- **No escribir el test después de la implementación para "cumplir" con TDD.** El valor del TDD está en que el test guía el diseño. Un test escrito a posteriori solo verifica que el código hace lo que ya hace, no aporta feedback de diseño.
- **No escribir tests que prueban la implementación en vez del comportamiento.** Un test acoplado a detalles internos (orden de llamadas, variables privadas, estructura interna) se rompe con cada refactoring y no detecta regresiones reales.
- **No saltarse el paso de verificar que el test falla.** Un test que pasa sin implementación no prueba nada. Si el test ya pasa, o está mal escrito o la funcionalidad ya existía.
- **No hacer refactoring y añadir funcionalidad en el mismo paso.** El refactoring cambia estructura sin alterar comportamiento; añadir funcionalidad cambia comportamiento. Mezclarlos impide saber si un test roto es por el refactoring o por la nueva funcionalidad.
Criterios de éxito
- No existe código de producción sin un test correspondiente que lo valide.
- Cada test se ha visto fallar antes de escribir la implementación.
- Los tests son independientes entre sí (no dependen de orden de ejecución ni de estado compartido).
- El refactoring se ha realizado con todos los tests en verde.
- Los commits son atómicos y cada uno deja el proyecto en estado funcional.
Plugin de Claude Code: 18 agentes especializados, 60 skills, 25 comandos, 13 hooks, memoria persistente, Memory UI local, quality gates, evidence guard, continuidad operativa y modo autopilot.
Repo: 686f6c61/alfred-dev
Other skills on alfred-dev.
- /alfred
Alias global /alfred para abrir el asistente contextual de Alfred Dev sin escribir el namespace completo. Activar solo cuando el usuario invoque explicitamente /alfred.
Open skill - /choose-stack
Usar para evaluar y elegir tecnologías con matriz de decisión ponderada. Activar cuando el usuario quiera elegir tecnología, comparar frameworks, decidir entre alternativas técnicas, construir una matriz de decisión, evaluar stack, seleccionar base de datos, elegir lenguaje o
Open skill - /design-system
Usar para diseñar la arquitectura de un sistema con diagramas y contratos. Activar cuando el usuario quiera diseñar arquitectura, definir componentes del sistema, crear un diagrama de flujo, establecer contratos entre módulos, planificar la estructura del proyecto o decidir cómo
Open skill - /evaluate-dependencies
Usar para evaluar si una dependencia merece la pena antes de añadirla. Activar cuando el usuario quiera añadir una librería, saber si merece la pena esta dependencia, evaluar un paquete antes de instalarlo, hacer npm install o pip install de algo nuevo, buscar alternativas a una
Open skill - /write-adr
Usar para documentar decisiones arquitectónicas como ADR. Activar cuando el usuario quiera documentar por qué se tomó una decisión, registrar alternativas descartadas, crear un ADR, un decision record, dejar constancia de una elección técnica o justificar una decisión de diseño
Open skill - /code-review
Usar para revisar código con foco en calidad, legibilidad y errores lógicos. También: revisar código, buscar errores, calidad del código, revisión de PR, pull request review.
Open skill

