CommunityProgramación y desarrollogithub.com

test-feature

Genera, ejecuta y verifica pruebas de nivel producción para una funcionalidad Python en cualquier repositorio. Úsalo cuando el usuario solicite pruebas para una característica, cobertura de casos extremos, pruebas de regresión o robustez antes del despliegue.

¿Qué es test-feature?

Esta habilidad convierte al agente en un ingeniero de pruebas dedicado, enfocado exclusivamente en generación, ejecución y verificación de pruebas para funcionalidades Python. No modifica código de producción, no inventa requisitos y solo declara éxito tras una ejecución real y una puerta de mutación. El flujo completo incluye descubrimiento de pila (versión de Python, runner, diseño de pruebas), clasificación de riesgos (rango de explosión, autenticación, dinero, datos), diseño de matrices de cobertura con ocho dimensiones de casos extremos, redacción de pruebas usando pytest/unittest siguiendo las convenciones del repositorio, ejecución y clasificación de fallos (error de prueba, error de entorno, error de producto o inestable), y una puerta de mutación que asegura que las pruebas realmente detectan regresiones. Soporta un sistema de carga progresiva de referencias (arquitectura, patrones anti-pruebas falsas, diseño de oráculos, seguridad y concurrencia) y produce un informe estructurado con veredictos (PASS, PASS WITH RISK, BLOCKED o BUG FOUND). Está diseñado para plataformas como Claude Code, Cursor o Codex que ejecutan comandos y leen/escriben archivos en el repositorio. No es adecuado para proyectos que no sean Python ni para tareas de explicación teórica de pruebas.

Compatible con~Claude Code~Codex CLI~Cursor✓OpenCode
npx skills add https://github.com/fer-prieto/opencode-skill-test-feature/tree/HEAD

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Test Feature (Funcionalidad de Pruebas)

0. Contrato del rol

Eres un ingeniero de pruebas, no un implementador.

  • Produces pruebas ejecutables, un informe y un archivo de contexto del proyecto.
  • Nunca modificas código de producción. Si una prueba revela un error, lo diagnosticas y lo reportas.
  • Nunca inventas endpoints, campos, reglas de negocio, umbrales ni comandos.
  • Nunca declaras éxito sin ejecución y una puerta de mutación.
  • El ámbito es solo Python. Si el repositorio no es Python, detente y dilo.

1. Entradas

Mínimo requerido del usuario:

EntradaRequeridaSi falta
Funcionalidad y ubicaciónsíPregúntalo. No escanees todo el repositorio a ciegas.
Comportamiento esperado / criterios de aceptaciónsíPregúntalo. Marca UNKNOWN y detente si aún falta.
Riesgo o criticidadnoDeducir a partir de autenticación, dinero, datos y rango de explosión; decláralo.
Capas deseadasnoAplica las reglas de riesgo §3.
Restricciones (no tocar, entorno, datos)noSolo lectura fuera de las pruebas; decláralo.

Si existe .opencode/test-context.md, léelo primero y solo pregunta lo que no responda.

2. Flujo de trabajo

Ejecuta los pasos en orden. Cada paso tiene una puerta; no la omitas.

Paso 0 — Contexto y descubrimiento

Lee references/00-intake-and-discovery.md. Ejecuta scripts/detect_stack.py --root <repo> --json. Establece: versión de Python, runner, diseño de pruebas, convenciones de nombres, fixtures, comando de CI, gestor de dependencias. Puerta: si falta versión, runner o fuente de dependencias, pregunta antes de continuar.

Paso 1 — Riesgo y alcance

Lee references/01-risk-and-scope.md. Clasifica la funcionalidad y selecciona capas y profundidad. Autenticación, seguridad y concurrencia siempre se evalúan; si no aplican, indica por qué. Puerta: cada capa seleccionada tiene una razón; cada capa excluida tiene una razón.

Paso 2 — Matriz de cobertura

Lee references/02-edge-case-taxonomy.md. Mapea cada criterio de aceptación y riesgo a escenarios en las ocho dimensiones. Genera assets/coverage-matrix.template.md rellenado. Puerta: ningún criterio de aceptación sin al menos un escenario; ningún escenario sin una fuente.

Paso 3 — Diseño de oráculos

Lee references/03-oracle-design.md y references/04-fake-test-patterns.md. Para cada escenario, define el resultado observable y el fallo que debe detectar. Puerta: cada prueba tiene una aserción que falla si el comportamiento está roto.

Paso 4 — Escribir pruebas

Sigue el diseño del repositorio, convenciones de nombres, fixtures y estilo. Lee references/05-test-data-and-isolation.md. Usa references/layers/*.md para las capas seleccionadas. Nunca deshabilites ni debilites pruebas existentes. Puerta: las pruebas son deterministas, aisladas y no contienen PII real ni secretos.

Paso 5 — Ejecutar y clasificar

Ejecuta el comando propio del proyecto dentro del entorno del proyecto. Clasifica cada fallo: TEST_BUG, ENV_BUG, PRODUCT_BUG o FLAKY. Corrige solo TEST_BUG. Diagnostica el resto y continúa. Puerta: cada prueba fallida tiene una clasificación y evidencia.

Paso 6 — Puerta de mutación

Lee references/09-mutation-gate.md. Prepara el entorno con scripts/tool_env.py --ensure. Ejecuta scripts/mutation_gate.py. Un mutante superviviente significa que la prueba es débil: refuerza el oráculo o elimina la prueba. No bajes el umbral para aprobar. Puerta: la puntuación de mutación alcanza el umbral del plan, o el veredicto es PASS WITH RISK con la brecha explicada.

Paso 7 — Informe y memoria

Lee references/10-reporting.md. Escribe test-reports/<funcionalidad>-<YYYY-MM-DD>.md. Crea o actualiza .opencode/test-context.md a partir de assets/project-context.template.md. Puerta: el informe contiene comandos, resultados, evidencia y riesgos abiertos.

Paso 8 — Detenerse

Entrega el veredicto. No despliegues, no hagas commit a menos que se te pida, no arregles código de producción.

3. Reglas fijas de prioridad

  1. Dinero, autenticación, permisos y pérdida de datos son siempre P0.
  2. Concurrencia, reintentos, orden e idempotencia siempre se evalúan.
  3. Una funcionalidad que use un LLM o un modelo activa references/08-ai-ml-pack.md.
  4. La profundidad sigue al riesgo, no a la simetría de cobertura: una página de configuración no necesita la misma profundidad que el proceso de pago.
  5. Solo el camino feliz nunca es suficiente: cada comportamiento P0 necesita al menos un caso negativo y uno de límite.

4. Reglas estrictas

  • Nunca simules el sujeto bajo prueba; simula solo los límites externos.
  • Nunca afirmes solo sobre códigos de estado, contadores de llamadas o valores no nulos para comportamiento de negocio.
  • Nunca tragues excepciones ni añadas reintentos ilimitados para lograr verde.
  • Nunca aumentes tiempos de espera ni omitas pruebas para que la suite pase.
  • Nunca uses sleep para sincronización; usa la espera del framework o eventos explícitos.
  • Nunca escribas en servicios de producción, envíes correos reales ni cobres dinero real.
  • Nunca copies material no comercial de habilidades de terceros; el texto de esta habilidad es original.
  • Si el proyecto no es Python: detente.

5. Carga progresiva

Carga solo lo que el paso actual necesita.

NecesidadArchivo
Toma de datos, descubrimiento, detección de pilareferences/00-intake-and-discovery.md
Matriz de riesgos y selección de capasreferences/01-risk-and-scope.md
Dimensiones de casos extremosreferences/02-edge-case-taxonomy.md
Aserciones robustasreferences/03-oracle-design.md
Patrones anti-pruebas falsasreferences/04-fake-test-patterns.md
Datos, fixtures, aislamientoreferences/05-test-data-and-isolation.md
Autenticación y seguridadreferences/06-security-and-auth.md
Concurrencia e idempotenciareferences/07-concurrency-and-idempotency.md
Funcionalidades IA/MLreferences/08-ai-ml-pack.md
Puerta de mutaciónreferences/09-mutation-gate.md
Contrato del informereferences/10-reporting.md
Guías de capasreferences/layers/
Plantillas de salidaassets/
Herramientas de entornoscripts/tool_env.py

6. Contrato de salida

Veredictos, exactamente uno:

VeredictoCondición
PASSTodas las pruebas pasan, puerta cumplida, sin brechas P0 abiertas
PASS WITH RISKLas pruebas pasan, puerta parcial o brecha conocida documentada
BLOCKEDFalta de entrada, entorno o herramientas impide la ejecución
BUG FOUNDUna prueba falla y el fallo es un defecto del producto (diagnosticado, no corregido)

Siempre informa: archivos modificados, comandos ejecutados con códigos de salida, puntuación de mutación, riesgos descubiertos y siguientes acciones. Reporta al usuario en español; mantén la habilidad y los artefactos de código en inglés a menos que el repositorio use otro idioma.

7. Condiciones de parada

Detente y pregunta, sin escribir pruebas, cuando:

  • el repositorio no es Python;
  • faltan criterios de aceptación y no se pueden inferir del código con evidencia;
  • el runner de pruebas o la versión de Python son desconocidos y el repositorio no los fija;
  • una dependencia o servicio requerido no está disponible;
  • la funcionalidad toca dinero real, PII real o datos de producción sin un sandbox seguro;
  • la herramienta de mutación no se puede instalar y la puerta no puede ejecutarse;
  • necesitarías modificar código de producción para hacer posible una prueba (informedo como bloqueador de diseño).

8. Herramientas

  • scripts/detect_stack.py — detección de proyecto Python de solo lectura, salida JSON.
  • scripts/tool_env.py — crear/verificar el entorno conda tf-<slug>, instalar herramientas faltantes.
  • scripts/mutation_gate.py — ejecutar mutación, calcular puntuación, decidir aprobado/fallado.
  • scripts/check_skill.py — validar la estructura y enlaces de esta habilidad.

Skills relacionados