| name | preparar-entrega-examen |
| description | Prepara todos los recursos de una entrega de examen a partir del material en MAT_PROF. Úsame cuando el usuario quiera generar plantilla.py, ficheros de ejemplo, convertir el enunciado a PDF, generar el corrector o validar el enunciado en busca de ambigüedades. |
Skill: Preparar Entrega de Examen
Reparto de responsabilidades
- Este
SKILL.md es el contrato operativo de la skill: cuándo se usa, qué genera y qué validaciones debe pedir.
- Los workflows
/.agents/workflows/01a-generar-entrega.md, 01b-modificar-corrector.md, 01c-verificar-alineacion-corrector-examen.md y 01d-empaquetar-entrega.md describen el orden global del proceso.
- La guía
resources/guia_corrector.md es la fuente única de verdad técnica para cualquier detalle interno del corrector.
- Si una regla del corrector aparece resumida aquí y desarrollada en la guía, prevalece siempre la guía.
Cuándo usar esta skill
- El usuario quiere iniciar la preparación de una nueva entrega de examen.
- Se necesita validar el enunciado, convertirlo a PDF o generar la plantilla y los ejemplos.
- Se detectan ambigüedades antes de generar ningún fichero.
- Se quiere generar el corrector
Cuándo NO usar esta skill
- Para el empaquetado final en
.tgz — eso lo ejecuta la skill empaquetar-entrega.
- Para configurar el servidor DLSI (es manual; ver
README.md).
Procedimiento
1. Derivar nombres canónicos
A partir del <Grupo> dentro de la carpeta MAT_PROF (ej: FPIB-Junio25), calcular:
recursos_nombre → recursos_FPIB_Junio25
corrector_nombre → corrector_FPIB_Junio25
Regla: usar guiones bajos, nombre de asignatura primero y luego la convocatoria.
2. Validar el enunciado (OBLIGATORIO antes de cualquier generación)
- Intentar leer el fichero
MAT_PROF/<Grupo>/enunciado.md.
- Si el fichero NO existe → DETENERSE y pedir al profesor que suba el enunciado en formato Markdown (.md) antes de continuar.
- Una vez leído, buscar: especificaciones de entrada/salida incompletas, tipos ambiguos, casos borde no definidos, inconsistencias entre ejercicios. Los ejercicios del enunciado deben estar completos y ser comprensibles para los alumnos que tengan que realizar el examen. Todos los ejercicios deben incluir ejemplos de entradas y salidas, para que el alumno pueda comprobar si sus resultados coinciden con los esperados.
- Si se detectan ambigüedades o inconsistencias → DETENERSE y listar cada problema al profesor. No continuar hasta confirmación explícita de que enunciado.md está correcto.
3. Convertir el enunciado a PDF
La conversión de enunciado.md a enunciado.pdf se realiza automáticamente durante el empaquetado final (con la skill empaquetar-entrega). Se asegura que el enunciado editable (enunciado.md) solo viva en MAT_PROF/<Grupo>/ y nunca en RECURSOS/<Grupo>/.
4. Generar plantilla.py
- Leer el enunciado e identificar el código que debería ser proporcionado al alumno (imports, funciones stub, constantes, etc.).
- Escribir
RECURSOS/<Grupo>/Archivos/plantilla.py con solo ese código, sin implementar nada que el alumno deba hacer.
- Añadir obligatoriamente un bloque
if __name__ == "__main__": al final del fichero que llame a todas las funciones pedidas en el examen con valores de ejemplo representativos (los mismos que se incluyeron en enunciado.md). Este bloque sirve al alumno para comprobar que su implementación funciona antes de entregar.
- Los valores usados en este bloque NO deben coincidir con los valores que el corrector usará más tarde para evaluar (ver paso 6). Escoger datos distintos pero igualmente representativos.
- El bloque main debe imprimir el resultado de cada llamada de forma clara (ej:
print("nombre_funcion:", nombre_funcion(arg1, arg2))).
Ejemplo de estructura mínima del bloque __main__:
if __name__ == "__main__":
print("funcion_a:", funcion_a(valor_ejemplo_1))
print("funcion_b:", funcion_b(valor_ejemplo_2, valor_ejemplo_3))
- Mostrar el fichero al profesor y pedir validación explícita antes de continuar.
5. Generar ficheros de ejemplo para el alumno
- Si los ejercicios del enunciado incluyen trabajar con ficheros de entrada externos, crear ficheros de entrada de ejemplo que el alumno puede usar para probar el funcionamiento de su código.
- Estos deben ser distintos a los que usará el corrector para evaluar.
- Ubicarlos en
RECURSOS/<Grupo>/Archivos/.
- Mostrarlos al profesor y pedir validación explícita.
6. Generar solucion.py
Antes de generar el corrector, el agente debe crear CORRECTOR/<Grupo>/solucion.py con la implementación completa y correcta de todas las funciones pedidas en el examen.
- Este fichero sirve como referencia interna del profesor y como base para construir los casos de prueba del corrector.
- Debe estar bien documentado (docstrings, comentarios explicativos).
- Mostrar el fichero al profesor y pedir validación explícita antes de continuar.
solucion.py NO se incluirá en el .tgz del corrector — es un fichero de uso interno exclusivo del profesor.
7. Generar el corrector (<corrector_nombre>.py)
📖 Referencia obligatoria: Antes de generar el corrector, leer la guía completa en
.agents/skills/preparar-entrega-examen/resources/guia_corrector.md.
Contiene la estructura obligatoria del corrector, tipos de pruebas, plantillas de código y checklist de calidad.
El agente debe generar el corrector a partir del enunciado y ubicarlo en CORRECTOR/<Grupo>/.
Pauta operativa mínima:
- El corrector debe cumplir íntegramente lo que se especifica en
.agents/skills/preparar-entrega-examen/resources/guia_corrector.md.
- La suma de las puntuaciones asignadas a las pruebas de cada ejercicio debe coincidir exactamente con la puntuación asignada a ese ejercicio en el enunciado.
- Si hay dudas sobre la puntuación de un ejercicio o apartado, el agente debe detenerse y preguntar al profesor.
- Antes de seguir, el profesor debe validar explícitamente el corrector generado.
- Mostrar el corrector al profesor y pedir validación explícita antes de continuar.
- El nombre del fichero DEBE ser
<corrector_nombre>.py (ej: corrector_FPIB_Junio26.py).
8. Generar plantilla-correccion.py
El agente debe generar el fichero CORRECTOR/<Grupo>/plantilla-correccion.py.
- Este fichero contendrá todo el código incluido en
RECURSOS/<Grupo>/Archivos/plantilla.py (imports, funciones stub, constantes, etc.).
- Además, incluirá un bloque
if __name__ == "__main__": en el que se llamará, en un solo bloque de código, directamente a las funciones con todas las pruebas especificadas en el corrector y se imprimirá (print) resultado esperado vs resultado obtenido de la llamada. Esto permitirá al profesor pegar el código del alumno en la parte superior y ejecutar rápidamente una traza de su código frente a todas las pruebas.
- Mostrar el fichero al profesor y pedir validación explícita.
9. Dejar preparada la prueba manual y salida para empaquetado
El agente debe copiar en la carpeta CORRECTOR/<Grupo> los recursos situados en RECURSOS/<Grupo>/Archivos (enunciado.pdf, ficheros auxiliares y plantilla.py) necesarios para que el profesor pueda realizar la prueba manual del corrector. Una vez copiados en CORRECTOR, el fichero plantilla.py se debe renombrar como solucion.py y será el fichero que use el profesor para implementar su solución de examen y probar el corrector.
La responsabilidad de la skill en esta fase es dejar preparados los prerrequisitos para que el workflow 01d pueda empaquetar sin ambigüedad una vez que el profesor haya validado el corrector de manera manual.
Prerrequisitos que debe dejar resueltos:
MAT_PROF/<Grupo>/alumnado.md y profesorado.md con los DNIs.
RECURSOS/<Grupo>/Archivos/ con el PDF del enunciado del examen, plantilla.py y ficheros de ejemplo.
CORRECTOR/<Grupo>/<corrector_nombre>.py generado por el agente.
Verificación
El agente DEBE confirmar cada bloque antes de darlo por completado.
Nota: este checklist valida la entrega completa. El checklist técnico del corrector vive únicamente en resources/guia_corrector.md.
Fase 1 — Nombres y material de entrada
Fase 2 — Validación del enunciado
Fase 3 — Recursos generados
Fase 4 — Prerrequisitos para empaquetado