¿Qué hace Paper Review Loop:Revisión → Revisión → Re-revisión?
Revisa un PDF de artículo como experto y, siguiendo las observaciones, revisa el manuscrito, reconstruye el PDF y vuelve a revisar la versión revisada. Repite este ciclo tantas veces como sea posible dentro del límite de tiempo fijado por el usuario. Al final, se entregan tres cosas:
- El PDF revisado (versión final) y los PDFs de cada ronda.
- Los informes de revisión de cada ronda (7 ítems) y la evolución de las evaluaciones y el estado de las observaciones.
- Una lista de tareas que solo el autor puede realizar (experimentos adicionales, etc.; se trasladan aquí en lugar de al texto para evitar la fabricación).
A continuación, <skill_dir> es el directorio donde se encuentra este SKILL.md, y <ws> es la carpeta de trabajo. Los nombres de scripts como loop_state.py se abrevian como python <skill_dir>/scripts/loop_state.py. En entornos sin python, usar python3.
0. Primero: Preguntar el límite de tiempo
- Identificar el PDF objetivo. Si no está en el mensaje, preguntar. Comprobar si en la misma ubicación del PDF o como adjunto hay código fuente LaTeX (carpeta, .zip, .tar.gz de arXiv, .tex). Tener el fuente mejora mucho la calidad y velocidad de la revisión.
- Preguntar el límite de tiempo. Si hay herramientas de pregunta (AskUserQuestion), usarlas; si no, preguntar por chat y esperar la respuesta. Si el mensaje de inicio ya especifica el tiempo, usarlo y no volver a preguntar.
- Pregunta 1 "Límite de tiempo":
Solo revisión (sin bucle de revisión)/1 hora/2 horas/3 horas(también se puede "30 minutos", "5 horas", etc.) - Pregunta 2 "Destino de publicación / Criterios de evaluación" (agrupar en el mismo diálogo; omitir si ya se sabe):
Sin especificar (criterios de conferencia internacional top)/NeurIPS・ICML・ICLR/Revista (Aceptar / Menor / Mayor / Rechazar)
- Pregunta 1 "Límite de tiempo":
- Inmediatamente después de recibir la respuesta, iniciar el cronómetro. El tiempo de configuración también está incluido en el presupuesto.
(También se pueden usarpython <skill_dir>/scripts/loop_state.py init <ws> --hours 2 --paper <pdf> --venue "<destino>"--minutes 90o--review-only) - Si hay herramientas anti-sueño (como keep-awake en Claude Desktop), activarlas por la duración del presupuesto. Si el PC se duerme, los bucles largos se detendrán.
- Informar al usuario en 2-3 líneas: hora límite, carpeta de trabajo, que a partir de ahora se ejecutará de forma autónoma sin confirmaciones, y que puede interrumpir en cualquier momento.
1. Configuración
La carpeta de trabajo será <carpeta del PDF>/<nombre del PDF>_review_loop/ (si no se puede escribir, bajo el directorio de trabajo).
<ws>/
├── state.json Registro del temporizador y cada fase (gestionado por loop_state.py)
├── original/ PDF y fuente recibidos. No modificar.
├── src/ Fuente para edición (main.tex, figures/, *.bib)
├── work/ Archivos temporales como imágenes de páginas
├── rounds/
│ ├── r01/ paper.pdf(=PDF original) paper.txt review.md issues.json response.md src/
│ ├── r02/ paper.pdf(1ª revisión) paper.txt review.md issues.json response.md src/ changes.diff
│ └── ...
├── issue_tracker.md Evolución de evaluaciones y estado de observaciones (generado por loop_state.py summary)
├── author_todo.md Problemas que solo el autor puede resolver (experimentos adicionales, etc.)
└── final_report.md
loop_state.py start <ws> --round 0 --phase setup- Copiar el PDF a
original/yrounds/r01/paper.pdf, y extraer el texto:python <skill_dir>/scripts/pdf_tools.py text <ws>/rounds/r01/paper.pdf -o <ws>/rounds/r01/paper.txt - Preparar el fuente editable en
src/(omitir en modo solo revisión).- Si hay fuente LaTeX: Copiar/extraer en
src/(el archivo que contiene\documentclassy\begin{document}es el principal). Compilar una vez conbuild_pdf.pypara confirmar que funciona. - Si solo hay PDF: Reconstruir el fuente LaTeX siguiendo el procedimiento de
references/pdf_to_latex.md. Es el paso más pesado (de 20 a 40 minutos para 10 páginas), así que informar al usuario de que consumirá presupuesto.
- Si hay fuente LaTeX: Copiar/extraer en
python <skill_dir>/scripts/snapshot.py <ws>/src <ws>/rounds/r01loop_state.py end <ws> --round 0 --phase setup
La revisión de la ronda 1 se realiza sobre el PDF original, por lo que puede ejecutarse en paralelo con la reconstrucción del fuente. Si se dispone de subagentes, lanzar simultáneamente el responsable de la revisión y el de la reconstrucción.
2. Bucle
División de roles y su motivo
- La revisión se asigna a un subagente nuevo en cada ronda (herramienta Agent). Un revisor que no tiene el contexto de quien ha hecho la revisión juzga basándose únicamente en lo que realmente está escrito en el PDF, no en "lo que pretendía corregir". Si se autoevalúa en el mismo contexto, la evaluación se vuelve indulgente.
- La revisión también se asigna a un subagente, y el agente principal se dedica exclusivamente a la orquestación (reloj, lanzamiento, verificación, agregación). De esta manera, incluso en bucles de varias horas, el contexto principal no se expande y todo el estado queda registrado en archivos.
- En entornos sin subagentes, hacer todo secuencialmente por uno mismo. En ese caso, antes de cada revisión, extraer de nuevo el texto del nuevo PDF y leerlo, evaluando basándose en el papel, no en la memoria.
Ronda r (r = 1, 2, …)
(a) Revisión
loop_state.py start <ws> --round r --phase review- Iniciar el subagente con el "Mensaje de instrucción para el revisor" de abajo y esperar a que termine.
- Verificar la salida: que
review.mdcontenga las secciones necesarias (para r≥2, también la sección 0) y queissues.jsonsea legible como JSON. Si falta algo, pedir al mismo revisor que lo corrija. loop_state.py end <ws> --round r --phase review, seguido deloop_state.py summary <ws>(actualizaissue_tracker.md).- Dar al usuario una línea de progreso. Ejemplo:
r02 Revisión completada: Global 3→4, Mayores sin resolver 5→2, tiempo restante 1h12m
(b) Decidir si continuar
- Ejecutar
loop_state.py status <ws>. Como Claude no puede percibir el tiempo transcurrido, la decisión sobre el tiempo debe basarse estrictamente en esta salida. - Si
NEXT: STOP, ir a §3. La decisión se toma inmediatamente después de la revisión, por lo que el PDF final siempre estará revisado. - Incluso si es
CONTINUE, si en el últimoissues.jsonno quedan observaciones constatusopen/partially_resolved(todas estánresolvedoneeds_authordiferidas con[AUTHOR TODO]), se puede terminar. Si ya no hay nada que corregir en el texto, más rondas solo servirían para pulir la redacción. Explicar el motivo en el informe final.
(c) Revisión (correspondiente a la revisión de la ronda r, creando el PDF de r+1)
loop_state.py start <ws> --round r --phase revise. Anotar la hora derevise byque aparece en el status.- Iniciar el subagente con el "Mensaje de instrucción para el revisor" de abajo y esperar a que termine.
- Verificar: que existan
rounds/r{r+1}/paper.pdfypaper.txt, que la compilación haya sido exitosa con cero referencias indefinidas, y que existarounds/r{r}/response.md. Si la compilación falla, restaurar los archivos dañados desderounds/r{r}/src/y rehacer los cambios. Nunca pasar un PDF antiguo como versión revisada a la revisión. loop_state.py end <ws> --round r --phase revise→ ir a (a) con r+1.
El responsable de la revisión no debe comenzar nuevas correcciones después de la hora revise by; debe completar la compilación y finalizar. Esto es para reservar tiempo para la siguiente revisión.
Mensaje de instrucción para el revisor
Eres el revisor de este artículo. Primero, lee <skill_dir>/references/reviewer_guide.md y
<skill_dir>/references/review_template.md hasta el final, y sigue el perfil del revisor, los criterios y el formato de salida.
- Objeto de revisión: <ws>/rounds/rNN/paper.pdf (texto extraído: <ws>/rounds/rNN/paper.txt)
- Ronda: NN
- Observaciones de la ronda anterior: <ws>/rounds/r(NN-1)/issues.json ← solo a partir de la ronda 2
- Destino de publicación / Escala de evaluación: <venue o "Sin especificar">
- Idioma del informe de revisión: Español
- Salida: <ws>/rounds/rNN/review.md y <ws>/rounds/rNN/issues.json
- Ayuda: python <skill_dir>/scripts/pdf_tools.py (puedes usar render para convertir páginas con figuras/tablas en imágenes y consultarlas)
La justificación de la evaluación se basa ÚNICAMENTE en el contenido de este PDF. No se ha proporcionado la intención del revisor ni el documento de respuesta.
Las partes marcadas con [AUTHOR TODO] son meras promesas, trátalas como no resueltas.
Finalmente, devuelve en 4 líneas: "Evaluación global / Confianza / Número de problemas mayores sin resolver / Número de nuevas observaciones".
Mensaje de instrucción para el revisor
Eres el autor de este artículo y vas a revisar el manuscrito basándote en la revisión. Primero, lee
<skill_dir>/references/revision_guide.md hasta el final y, en particular, respeta la regla de "no fabricar".
- Fuente a editar: <ws>/src/ (principal: <main>.tex)
- Revisión actual: <ws>/rounds/rNN/review.md, <ws>/rounds/rNN/issues.json
- Evolución: <ws>/issue_tracker.md (solo lectura, generado automáticamente. No editarlo)
- Tareas del autor: <ws>/author_todo.md (crearlo si no existe; añadir y actualizar)
- Tiempo: Debes completar la compilación antes de <revise_by>. El tiempo restante se puede consultar con
python <skill_dir>/scripts/loop_state.py status <ws>
- Al terminar:
1. python <skill_dir>/scripts/build_pdf.py <ws>/src/<main>.tex --out <ws>/rounds/r(NN+1)/paper.pdf
(corregir hasta que no haya errores ni referencias indefinidas)
2. python <skill_dir>/scripts/pdf_tools.py text <ws>/rounds/r(NN+1)/paper.pdf -o <ws>/rounds/r(NN+1)/paper.txt
3. python <skill_dir>/scripts/snapshot.py <ws>/src <ws>/rounds/r(NN+1) --prev <ws>/rounds/rNN
4. Escribir <ws>/rounds/rNN/response.md (formato según revision_guide.md)
Finalmente, devuelve: "IDs de observaciones atendidas / IDs transferidos a tareas del autor / Resultado de compilación (número de páginas, referencias indefinidas, número de AUTHOR TODO)".
Si se encarga la reconstrucción desde PDF, indicar: "Lee <skill_dir>/references/pdf_to_latex.md, reconstruye <ws>/original/<name>.pdf en <ws>/src/, guarda el PDF compilado en <ws>/rounds/r01/reconstructed.pdf, y escribe las diferencias en <ws>/src/RECONSTRUCTION_NOTES.md".
3. Finalización
loop_state.py finish <ws> --reason "<Límite de tiempo / No quedan observaciones subsanables en el texto / Solo revisión>"→loop_state.py summary <ws>- Si se ha realizado al menos una revisión, copiar el PDF más reciente como
<ws>/<nombre del PDF>_revised.pdf. - Escribir
<ws>/final_report.md:
# Informe de revisión y corrección: <título del artículo>
- Límite de tiempo / Tiempo empleado / Número de rondas / Motivo de finalización
## Evolución de la evaluación (tabla de issue_tracker.md)
## Resumen de la revisión del manuscrito original (r01) (resumen de Justification y debilidades principales)
## Principales observaciones resueltas con las correcciones
## Problemas restantes
### Los que se pueden solucionar modificando el texto pero no se terminaron a tiempo
### Los que requieren trabajo del autor (prioridades altas de author_todo.md)
## Evaluación de la última ronda y condiciones para inclinar la balanza hacia la aceptación
## Lista de archivos
- La respuesta al usuario debe ser breve: número de rondas, evolución de la evaluación, principales observaciones resueltas, problemas importantes restantes y las 3 tareas principales del autor, y ubicación de los archivos. No pegar la revisión completa, solo indicar los archivos. En modo solo revisión, incluir en la respuesta los puntos clave de la revisión de r01 (Justification, Rating, debilidades principales, preguntas para el Rebuttal).
Reanudación tras interrupción
Si existe <ws>/state.json y el status es running, consultar loop_state.py status <ws> y el contenido de rounds/, y reanudar desde la fase siguiente a la última completada. Si se vuelve a ejecutar init, el reloj se reinicia, por lo que solo se debe hacer con --force cuando el usuario quiera un nuevo presupuesto.
Principios y su motivo
- No fabricar: No crear resultados experimentales, números, datos, citas ni demostraciones. Se trata de un manuscrito de investigación real; si se introduce un solo número inventado, constituiría una falta de integridad científica y causaría un daño grave al usuario. Para las observaciones que requieran nuevos resultados, ajustar las afirmaciones del texto al alcance de la evidencia y trasladar los experimentos necesarios a
[AUTHOR TODO]yauthor_todo.md. - No relajar los criterios de revisión: Evaluar con los mismos criterios aunque avancen las rondas.
[AUTHOR TODO]sigue sin resolverse; solo reformular no constituye nueva evidencia. La evaluación solo mejora cuando el problema se resuelve en el papel. De lo contrario, este bucle se convertiría en un mero trabajo para inflar la puntuación aparente. - Dejar las decisiones sobre el tiempo al script: No intuir el tiempo transcurrido. Consultar
statusen cada ronda. - No pedir confirmación al usuario entre rondas: Al recibir el límite de tiempo, se aprueba la ejecución de todo el bucle. Los informes se limitan a una línea de progreso; solo detenerse para consultar en caso de bloqueadores (compilación imposible de arreglar, PDF ilegible, etc.).
- No modificar los archivos originales: Tratar
original/como solo lectura; las ediciones se realizan en copias dentro desrc/.