Academic Writing Loop:Corrección de inglés académico (1 pasada / bucle)
Corrige el PDF de un artículo académico en inglés como un corrector de estilo experimentado. El estándar se basa en la guía Guide to Academic and Scientific Publication de Linda Olson (Proof-Reading-Service.com, 2014), organizada en references/proofreading_checklist.md como lista de verificación. El principio central de la guía es: "Sigue las normas de la revista, sé preciso y consistente". Muchas variaciones ortográficas son correctas por sí mismas, pero la inconsistencia dentro de un artículo es un error. Por lo tanto, las decisiones de estilo se registran en style_sheet.md y se siguen en todas las rondas.
| Modo | Qué se hace | Qué se entrega al usuario |
|---|---|---|
| 1 pasada | Corrige el PDF una sola vez | PDF con marcas (resaltado y comentarios de corrección), informe de corrección, hoja de estilo |
| loop | Corregir → Reflejar en el manuscrito (LaTeX) y regenerar el PDF → Un corrector diferente vuelve a corregir el nuevo PDF, repitiendo hasta que no haya más observaciones o se alcance el límite de rondas | PDF corregido, PDF original con marcas, informes por ronda y su evolución, historial de cambios, consultas al autor |
A continuación, <skill_dir> es el directorio donde se encuentra este SKILL.md, <ws> es la carpeta de trabajo y AWL es la abreviatura de python <skill_dir>/scripts/awl.py. En entornos sin python, usa python3.
0. Inicio: Determinar el modo y el PDF
Uso:
/academic-writing-loop 1pasada paper.pdf
/academic-writing-loop loop paper.pdf
/academic-writing-loop loop 3 paper.pdf ← Especifica el número máximo de rondas (por defecto 5)
loop N significa "corregir un máximo de N veces, reflejar (regenerar el PDF) un máximo de N−1 veces". Siempre termina con una corrección, por lo que se sabe qué queda en la versión final del PDF.
Tiempo estimado (prueba: artículo de 2 páginas, 640 palabras): Una pasada toma unos 15 minutos. Loop: la primera ronda de corrección es la más larga; en total unos 45 minutos (3 correcciones, 2 aplicaciones). Escala aproximadamente de forma lineal con el número de páginas.
- Lee el modo y el PDF del mensaje (argumentos del skill). Los separadores pueden ser espacios, "、" o ",".
- 1 pasada:
1pasadaunaoncesingle1 - loop:
loopbucle. El número inmediatamente después es el máximo de rondas (número de correcciones, por defecto 5). - PDF: termina en
.pdf. Las rutas relativas se resuelven desde el directorio de trabajo; si no se encuentra, se busca por nombre de archivo. - Si no hay modo, pregunta usando la herramienta de preguntas (AskUserQuestion, o chat si no está disponible):
1 pasada/loop (corregir → modificar → volver a corregir). Si falta el PDF, también pregunta.
- 1 pasada:
- Si el mensaje incluye el nombre de la revista de destino, la URL de las normas para autores o la especificación US/UK, se utiliza. Si no, no se pregunta (sin revista de destino = convenciones generales del inglés académico; ortografía = la mayoritaria en el manuscrito).
- Verifica PyMuPDF:
python -c "import fitz". Si no está, ejecutapython -m pip install pymupdf(necesario para el PDF anotado y la información de posición. Si no se puede instalar, continúa sin PDF anotado e informa al usuario).
1. Configuración (común a ambos modos)
La carpeta de trabajo es <carpeta del PDF>/<nombre del PDF>_awl/ (si no se puede escribir, se crea dentro del directorio de trabajo).
AWL init <ws> --pdf <pdf> --mode once|loop [--max-rounds 5] [--journal "<revista de destino>"]
AWL extract <ws>/rounds/r01/paper.pdf -o <ws>/rounds/r01/paper.txt
AWL scan <ws>/rounds/r01/paper.txt -o <ws>/rounds/r01/scan.md
<ws>/
├── state.json Modo, límite de rondas, motivo de finalización (gestionado por awl.py)
├── style_sheet.md Decisiones de estilo (comunes a todas las rondas)
├── original/ PDF recibido. No se modifica.
├── src/ Código fuente para editar (solo loop)
├── rounds/rNN/ paper.pdf paper.txt scan.md corrections.json report.md annotated.pdf
│ revision_log.json (loop) src/ changes.diff (loop)
├── author_queries.md Consultas al autor (loop)
└── work/ Imágenes de páginas, etc.
- Si
extractadvierte "very little text per page", es un PDF escaneado. Indica que se necesita OCR (skill pdf). Si el texto no está en inglés, informa que este skill no aplica y se detiene. - Si se conoce la revista de destino y se tiene acceso a la web, se leen las normas oficiales para autores (Author guidelines / Instructions for authors) y se escriben las reglas de idioma y formato (US/UK, número de palabras, estructura del resumen, títulos, sistema de citas, figuras, tablas, abreviaturas, número de palabras clave) en
style_sheet.mdbajo "Revista de destino / Normas". Las normas tienen prioridad (guía §3). - En modo loop, informa al usuario en 2-3 líneas: carpeta de trabajo, número máximo de rondas, y que a partir de ahora se procederá sin pedir confirmación. En modo de una pasada, como es breve, se puede resumir en la respuesta final.
2. Una ronda de corrección (procedimiento común a ambos modos)
El contenido de la corrección sigue references/proofreader_brief.md (procedimiento, cómo escribir observaciones, formato JSON) y references/proofreading_checklist.md (categorías y gravedad).
Quién corrige
- Modo 1 pasada: Lo puede hacer el propio agente.
- Modo loop: Cada ronda se asigna a un nuevo subagente (herramienta Agent). Un corrector que no tiene el contexto de quien hizo la revisión anterior puede juzgar solo por "lo que realmente dice el PDF", no por "lo que se pretendía corregir". Releer las propias correcciones en el mismo contexto aumenta los descuidos.
- Artículos largos (más de aprox. 12 páginas / 7000 palabras): Divide el rango de páginas (6-8 páginas cada vez, en cortes de sección) y asigna a varios subagentes en paralelo. Luego, fusiona con
AWL mergey verifica la consistencia de todo el artículo (ortografía, terminología, abreviaturas, citas y referencias, numeración de figuras y tablas, títulos) utilizando el resumen delscan.md, ya sea personalmente o mediante el agente de fusión. - En entornos donde no se pueden usar subagentes, el proceso se realiza secuencialmente. A partir de la segunda ronda del bucle, es obligatorio leer el texto extraído del nuevo PDF para corregir (no juzgar de memoria).
Instrucciones para el corrector (escribir todas las rutas como rutas absolutas; el shell del subagente puede restablecer el directorio de trabajo en cada llamada)
Eres un corrector de estilo especializado en inglés académico. Primero, lee <skill_dir>/references/proofreader_brief.md y
<skill_dir>/references/proofreading_checklist.md hasta el final y sigue sus procedimientos, criterios y formato de salida.
- PDF a corregir: <ws>/rounds/rNN/paper.pdf (texto extraído: <ws>/rounds/rNN/paper.txt)
- Candidatos para verificación mecánica: <ws>/rounds/rNN/scan.md
- Decisiones de estilo: <ws>/style_sheet.md (en la ronda 1, completa la configuración básica, términos y abreviaturas)
- Observaciones de la ronda anterior: <ws>/rounds/r(NN-1)/corrections.json ← Solo a partir de la ronda 2
- Páginas a cargo: todas ← Cuando se divide, especificar "p.1–8", etc.
- Salida: <ws>/rounds/rNN/corrections.json (al dividir, corrections.partK.json)
- Herramientas: python <skill_dir>/scripts/awl.py (validate / report / annotate),
python <skill_dir>/scripts/pdf_tools.py render (para ver páginas con figuras/tablas como imagen)
- Notas del entorno: <ejemplo: Windows. Las rutas contienen caracteres japoneses y espacios; enciérralas entre comillas. No escribas fuera de <ws> y <skill_dir>>
No alteres el significado del autor. No corrijas números, fórmulas, citas textuales o títulos de referencias; si tienes dudas, inclúyelas en query.
Finalmente, devuelve "número de incidencias (error/claridad/estilo/consulta al autor) · tendencia de errores más comunes · resultado de validate".
Después de la corrección, verifica siempre (incluso si se asignó a un subagente, ejecútalo tú mismo)
AWL validate <ws>/rounds/rNN/corrections.json # Hasta que sea VALID, haz que el corrector lo corrija
AWL report <ws>/rounds/rNN/corrections.json # → report.md
AWL annotate <ws>/rounds/rNN/paper.pdf <ws>/rounds/rNN/corrections.json -o <ws>/rounds/rNN/annotated.pdf
validate comprueba si cada original de las observaciones existe realmente en el texto del PDF. Las observaciones no encontradas son errores de transcripción o correcciones sobre texto inexistente; en ambos casos no sirven ni para anotar ni para corregir.
3. Modo 1 pasada
- Realiza la §2 para la ronda r01.
- Ejecuta
AWL finalize <ws>→ genera<ws>/<nombre del PDF>_proofread.pdf(versión anotada) y<ws>/report.md. - La respuesta al usuario debe ser breve:
- Número de incidencias (error / claridad / estilo / consulta al autor) y comentario general (2-3 frases)
- Las 3-5 tendencias de error más comunes, cada una con un ejemplo real (original → propuesta de corrección) y el nombre de la regla
- Lista de consultas al autor (breve)
- Ubicación de los archivos (en el PDF anotado, al pasar el ratón sobre los resaltados o en la lista de comentarios se ven las propuestas y la razón)
- No pegues el informe completo. Al final, si es modo loop, añade una frase indicando que se puede llegar hasta la aplicación de correcciones y regeneración del PDF.
4. Modo loop
4.1 Preparación del código fuente para editar (se puede hacer en paralelo con la corrección de r01)
init muestra los candidatos a código fuente junto al PDF.
- Hay código LaTeX (.tex, carpeta, .zip / .tar.gz de Overleaf o arXiv): Copia/descomprime en
<ws>/src/(el archivo principal contiene\documentclassy\begin{document}). Compila una vez y verifica que la fuente corresponde a la misma versión del PDF:
Si la similitud es inferior a 0.95, es probable que las versiones sean diferentes. Pregunta al usuario cuál usar.python <skill_dir>/scripts/build_pdf.py <ws>/src/<main>.tex --out <ws>/work/source_build.pdf AWL extract <ws>/work/source_build.pdf -o <ws>/work/source_build.txt AWL compare <ws>/rounds/r01/paper.txt <ws>/work/source_build.txt - No se encuentran candidatos: Pregunta una sola vez si existe código fuente (LaTeX / zip de Overleaf). Si lo hay, la aplicación de correcciones es más precisa y rápida.
- Sin código fuente: Reconstruye LaTeX a partir del PDF siguiendo el procedimiento de
references/pdf_to_latex.md(asignar a un subagente, en paralelo con la corrección de r01. Para 10 páginas, 20-40 minutos). Debes asegurarte de que el diseño sea aproximado y que el texto en inglés se copie literalmente, incluidos los errores. - Manuscrito en Word (.docx): Este bucle edita LaTeX. Si se desea mantener el diseño, es más fiable aplicar las correcciones manualmente en Word usando el PDF anotado y el informe de una sola pasada. Pregunta al usuario qué opción prefiere.
- Una vez preparado, ejecuta
python <skill_dir>/scripts/snapshot.py <ws>/src <ws>/rounds/r01.
4.2 Ronda r (r = 1, 2, …)
(a) Corrección: §2. Al terminar, muestra una línea de progreso al usuario. Ejemplo: r02 corrección completada: errores 9 / claridad 4 (anterior 41 / 17), observaciones anteriores resueltas 52/58
(b) Decidir si continuar: Ejecuta AWL status <ws> y sigue la indicación de la última línea NEXT:. Las condiciones para detenerse las determina el script (no se decide por impresión del momento):
- Las observaciones de error + claridad han llegado a 0 (convergencia).
- Se ha alcanzado el número máximo de rondas.
- El número de observaciones de error + claridad no ha disminuido respecto a la ronda anterior (las reescrituras solo están yendo y viniendo).
Si
NEXT: STOP, ve a §4.3. La decisión se toma inmediatamente después de la corrección, por lo que el PDF final siempre estará corregido.
(c) Aplicar correcciones (aplica las observaciones de la ronda r y genera el PDF de la ronda r+1): Inicia al subagente encargado de la revisión con las instrucciones siguientes y espera a que termine. Luego, verifica tú mismo:
- Existen
rounds/r{r+1}/paper.pdf,paper.txtyscan.md. La compilación ha sido exitosa y no hay referencias indefinidas. - Existe
rounds/r{r}/revision_log.jsonyAWL verify <ws> --round rse ejecuta correctamente (los elementos que fallen por problemas de extracción se verifican con la imagen de la página; si tienenverified_manually, es suficiente). - Si la compilación falla, restaura los archivos dañados desde
rounds/r{r}/src/y vuelve a aplicar las correcciones. No se debe enviar un PDF antiguo como nueva versión para corregir.
→ Vuelve a (a) como r+1.
Instrucciones para el revisor (rutas absolutas)
Eres un editor del lado del autor que aplica las correcciones de estilo al manuscrito. Primero, lee
<skill_dir>/references/reviser_brief.md hasta el final y sigue sus reglas (no cambiar significado ni datos,
no modificar el texto de las queries, orden local → global) según corresponda.
- Código fuente a editar: <ws>/src/ (principal: <main>.tex)
- Observaciones de esta ronda: <ws>/rounds/rNN/corrections.json (también consulta report.md)
- Decisiones de estilo: <ws>/style_sheet.md (si se decide no aplicar algo por intención del autor o convención del campo, añádelo a "Partes no modificadas")
- Consultas al autor: <ws>/author_queries.md (añade las queries)
- Nuevo PDF: <ws>/rounds/rMM/paper.pdf (MM = NN+1). Sigue el procedimiento de compilación, extracción, scan, snapshot, revision_log.json y verify según la §4 de reviser_brief.md.
- Notas del entorno: <igual que para el corrector>
Finalmente, devuelve "número de aplicaciones/desestimaciones/consultas al autor · resultado de la compilación · resultado de verify · añadidos a la hoja de estilo".
4.3 Finalización
- Ejecuta
AWL finalize <ws>(si se detiene por una razón distinta a la decisión del script, como una interrupción del usuario, añade--reason "<motivo>"). Se generan<nombre del PDF>_corrected.pdf(versión final),<nombre del PDF>_proofread_r01.pdf(versión anotada del PDF original),<nombre del PDF>_corrected_remaining.pdf(si quedan observaciones),changelog.mdyprogress.md. Las consultas al autor de la última ronda no pasan por el revisor, por lo quefinalizelas añade aauthor_queries.md. - PDF con cambios resaltados (opcional): Copia
<ws>/srca<ws>/work/diff_src/para no ensuciarsrc/.Sicp -r <ws>/src <ws>/work/diff_src latexdiff <ws>/rounds/r01/src/<main>.tex <ws>/src/<main>.tex > <ws>/work/diff_src/diff.texlatexdifftermina con código distinto de 0 odiff.texestá vacío (en MiKTeX puede fallar por falta de módulos Perl), no lo generes y continúa, mencionándolo brevemente en la respuesta. Si tiene éxito, ejecutabuild_pdf.py <ws>/work/diff_src/diff.tex --out <ws>/<nombre del PDF>_diff.pdf. - Redacta
<ws>/final_report.md:# Informe de corrección de estilo: <Título del artículo> - Modo / Número de rondas / Motivo de finalización / Revista de destino · Ortografía · Sistema de citas (hoja de estilo) ## Evolución (tabla de progress.md) ## Tendencias del inglés original (resumen de r01 y número de incidencias por categoría. Ejemplos reales de errores frecuentes y reglas) ## Principales correcciones aplicadas (ejemplos representativos de changelog.md) ## Consultas al autor (author_queries.md, por orden de prioridad) ## Observaciones restantes (puntos clave del report.md de la última ronda) ## Lista de archivos - La respuesta al usuario debe ser breve: número de rondas y evolución (número de errores + claridad), tendencia de errores más comunes, principales consultas al autor, observaciones restantes y ubicación de los archivos. No pegues el informe completo.
Reanudación tras interrupción
Si existe <ws>/state.json, usa AWL status <ws> para ver el estado y reanuda desde el paso indicado en NEXT:. init no sobrescribe una carpeta de trabajo existente (solo con --force para reiniciar).
Principios y su razón
- No cambiar el significado / no inventar contenido: La corrección se aplica a las palabras, no al contenido de la investigación. No se modifican números, datos, fórmulas, citas textuales, títulos de referencias ni la fuerza de las afirmaciones. Los puntos que el corrector no pueda decidir por sí mismo se devuelven al autor como consulta. Como se trata de un manuscrito real, reescribir basándose en suposiciones puede distorsionar los argumentos del autor.
- La consistencia se mantiene con la hoja de estilo: Como diferentes correctores leen en cada ronda, si no se registran las decisiones, se produce un vaivén ("corregir a UK → volver a US"). Las decisiones se toman en el orden: normas de la revista → artículos publicados → mayoría del manuscrito, y no se cambian durante el proceso.
- Separar corrección y aplicación: El corrector solo mira el PDF y hace observaciones; el revisor verifica la corrección antes de aplicarla y el siguiente corrector lo comprueba de forma independiente. Esto permite detectar más fácilmente los descuidos y los errores introducidos durante la revisión que si el mismo agente verificara sus propias correcciones.
- Incluir comprobaciones mecánicas:
validate(si la observación corresponde a un texto real),verify(si la corrección ha llegado al PDF) ycompare(si la reconstrucción es igual al original) son herramientas numéricas para verificar las suposiciones del modelo de lenguaje. No se omiten. - Delegar la decisión de parar al script: Sigue el
NEXT:destatus. Un corrector siempre encontrará algo que sugerir, por lo que continuar según la impresión solo generará un vaivén de preferencias de estilo. - No consultar al usuario entre rondas: Al elegir el modo loop, la ejecución hasta el límite de rondas está aprobada. Solo se informa con una línea de progreso; se detiene para consultar solo en caso de bloqueo (error de compilación no reparable, discrepancia entre fuente y PDF, PDF ilegible).
- No modificar los archivos originales: No se escribe en
original/ni en el PDF o fuente originales de la carpeta del usuario. Las ediciones se realizan en la copia de<ws>/src/. - Las reglas antiguas de la guía se tratan como estilo: La guía (2014) desaconseja el split infinitive y el singular "they", pero muchos manuales de estilo actuales los permiten. No se marcan como error a menos que las normas de la revista lo exijan.