Paper Review Loop: Revisão → Correção → Re-Revisão
Revise um PDF de artigo como especialista, revise o manuscrito com base nos apontamentos, recrie o PDF e revise novamente. Repita o máximo de vezes possível dentro do tempo limite definido pelo usuário. Ao final, entregue os três itens abaixo:
- PDF revisado (versão final) e PDFs de cada rodada
- Relatórios de revisão de cada rodada (7 itens) e a evolução das avaliações e apontamentos
- Lista de tarefas que só o autor pode realizar (experimentos adicionais, etc. — transferidos para cá em vez do texto, para evitar falsificação)
Abaixo, <skill_dir> é o diretório onde este SKILL.md está localizado, e <ws> é a pasta de trabalho. Nomes de scripts como loop_state.py são abreviações de python <skill_dir>/scripts/loop_state.py. Em ambientes sem python, use python3.
0. Primeiro: Perguntar o Limite de Tempo
- Identifique o PDF alvo. Se não estiver na mensagem, pergunte. Verifique se há código-fonte LaTeX (pasta, .zip, .tar.gz do arXiv, .tex) no mesmo local ou anexado. A presença do fonte melhora muito a qualidade e a velocidade da revisão.
- Pergunte o limite de tempo. Use ferramentas de pergunta como AskUserQuestion, se disponíveis; caso contrário, pergunte no chat e aguarde a resposta. Se o tempo já estiver explícito na mensagem de ativação, use-o sem perguntar novamente.
- Pergunta 1 "Limite de tempo":
Apenas revisão (sem loop de correção)/1 hora/2 horas/3 horas(outros como "30 minutos", "5 horas" também são aceitos) - Pergunta 2 "Local de submissão / Critério de avaliação" (agrupar na mesma caixa de diálogo; omitir se já conhecido):
Não especificado (padrão de conferência internacional de alto nível)/NeurIPS·ICML·ICLR/Periódico (Accept / Minor / Major / Reject)
- Pergunta 1 "Limite de tempo":
- Assim que receber a resposta, inicie o cronômetro. O tempo de configuração está incluído no orçamento.
(Também aceitapython <skill_dir>/scripts/loop_state.py init <ws> --hours 2 --paper <pdf> --venue "<local>"--minutes 90ou--review-only) - Se houver ferramentas anti-sono (como keep-awake no Claude Desktop), ative-as pela duração do orçamento. Se o PC dormir, loops longos podem parar.
- Informe o usuário em 2-3 linhas: horário limite, pasta de trabalho, que o loop prosseguirá autonomamente sem confirmações, e que pode ser interrompido a qualquer momento.
1. Configuração
A pasta de trabalho será <pasta_do_PDF>/<nome_do_PDF>_review_loop/ (se não for gravável, use o diretório de trabalho).
<ws>/
├── state.json Registro do timer e de cada fase (gerenciado por loop_state.py)
├── original/ PDF e fontes recebidos. Não alterar.
├── src/ Fonte editável (main.tex, figures/, *.bib)
├── work/ Arquivos temporários, como imagens de página
├── rounds/
│ ├── r01/ paper.pdf(=PDF original) paper.txt review.md issues.json response.md src/
│ ├── r02/ paper.pdf(1ª correção) paper.txt review.md issues.json response.md src/ changes.diff
│ └── ...
├── issue_tracker.md Evolução das avaliações e apontamentos (gerado por loop_state.py summary)
├── author_todo.md Tarefas que só o autor pode resolver (experimentos adicionais, etc.)
└── final_report.md
- Execute
loop_state.py start <ws> --round 0 --phase setup - Copie o PDF para
original/erounds/r01/paper.pdf, e extraia o texto:python <skill_dir>/scripts/pdf_tools.py text <ws>/rounds/r01/paper.pdf -o <ws>/rounds/r01/paper.txt - Prepare o código-fonte editável em
src/(pule no modo apenas revisão).- Se houver fonte LaTeX: Copie/descompacte para
src/(o arquivo contendo\documentclasse\begin{document}é o principal). Executebuild_pdf.pyuma vez para verificar se compila. - Se houver apenas PDF: Reconstrua o fonte LaTeX seguindo o procedimento em
references/pdf_to_latex.md. É a etapa mais pesada (20-40 min para 10 páginas); avise o usuário que consumirá orçamento.
- Se houver fonte LaTeX: Copie/descompacte para
- Execute
python <skill_dir>/scripts/snapshot.py <ws>/src <ws>/rounds/r01 - Execute
loop_state.py end <ws> --round 0 --phase setup
A revisão da rodada 1 (PDF original) pode ser executada em paralelo com a reconstrução do fonte. Se subagentes estiverem disponíveis, inicie o revisor e o responsável pela reconstrução simultaneamente.
2. Loop
Divisão de Papéis e Justificativa
- A revisão deve ser feita por um novo subagente (ferramenta Agent) a cada rodada. Um revisor sem o contexto de quem fez as correções julga apenas o que está realmente escrito no PDF, não o que o autor pretendia corrigir. Com o mesmo contexto, a autoavaliação tende a ser mais branda.
- As correções também devem ser delegadas a um subagente, enquanto o agente principal atua como orquestrador (cronômetro, inicialização, verificação, sumarização). Assim, mesmo em loops de várias horas, o contexto do principal não incha; todo o estado fica salvo em arquivos.
- Se subagentes não estiverem disponíveis, execute tudo sequencialmente. Nesse caso, antes da revisão, reextraia o texto do novo PDF e avalie com base no papel, não na memória.
Rodada r (r = 1, 2, …)
(a) Revisão
- Execute
loop_state.py start <ws> --round r --phase review - Inicie o subagente com a "Mensagem de instrução para o revisor" abaixo e aguarde a conclusão.
- Valide a saída:
review.mddeve conter as seções necessárias (a partir de r≥2, incluir a seção 0);issues.jsondeve ser JSON válido. Caso falte, peça ao mesmo revisor para corrigir. - Execute
loop_state.py end <ws> --round r --phase review, em seguidaloop_state.py summary <ws>(atualizaissue_tracker.md). - Envie ao usuário apenas uma linha de progresso. Exemplo:
r02 Revisão concluída: Geral 3→4, Major não resolvidos 5→2, restam 1h12min
(b) Decidir se continua
- Execute
loop_state.py status <ws>. Como o Claude não percebe o tempo decorrido, use sempre esta saída para decisões temporais. - Se
NEXT: STOP, vá para §3. A decisão é tomada imediatamente após a revisão, portanto o PDF final estará sempre revisado. - Se
CONTINUE, mas oissues.jsonmais recente não tiver nenhum apontamento comstatusopenoupartially_resolved(todosresolvedouneeds_authorretidos como[AUTHOR TODO]), pode encerrar. Se não houver mais nada para corrigir no texto, rodadas adicionais apenas poliriam a redação. Explique o motivo nofinal_report.
(c) Correção (com base na revisão da rodada r, gerar PDF da rodada r+1)
- Execute
loop_state.py start <ws> --round r --phase revise. Anote o horáriorevise byexibido no status. - Inicie o subagente com a "Mensagem de instrução para o revisor" abaixo e aguarde a conclusão.
- Valide: verifique se
rounds/r{r+1}/paper.pdfepaper.txtexistem, a compilação foi bem-sucedida e não há referências indefinidas, e serounds/r{r}/response.mdexiste. Se a compilação falhar, reverta os arquivos quebrados derounds/r{r}/src/e refaça as alterações. Nunca envie um PDF antigo como versão revisada. - Execute
loop_state.py end <ws> --round r --phase revise→ vá para (a) como r+1.
O responsável pela correção não deve iniciar novas correções após o horário revise by; deve apenas finalizar a compilação. Isso garante tempo para a próxima revisão.
Mensagem de Instrução para o Revisor
Você é o revisor deste artigo. Primeiro, leia <skill_dir>/references/reviewer_guide.md e
<skill_dir>/references/review_template.md até o final e siga o perfil do revisor, os critérios e o formato de saída.
- Objeto da revisão: <ws>/rounds/rNN/paper.pdf (texto extraído: <ws>/rounds/rNN/paper.txt)
- Rodada: NN
- Apontamentos da rodada anterior: <ws>/rounds/r(NN-1)/issues.json ← Apenas para rodada 2 em diante
- Local de submissão / Escala: <venue ou "Não especificado">
- Idioma do relatório: Português
- Saída: <ws>/rounds/rNN/review.md e <ws>/rounds/rNN/issues.json
- Apoio: python <skill_dir>/scripts/pdf_tools.py (use `render` para visualizar páginas com figuras como imagem)
A base da avaliação é apenas o que está escrito neste PDF. A intenção do autor ou a carta-resposta não foram fornecidas.
Trechos marcados com [AUTHOR TODO] são meras promessas; trate-os como não resolvidos.
Ao final, retorne uma linha com "Avaliação geral / Confiança / Número de Major não resolvidos / Número de novos apontamentos".
Mensagem de Instrução para o Responsável pela Correção
Você é o autor deste artigo e deve revisar o manuscrito com base na revisão. Primeiro, leia
<skill_dir>/references/revision_guide.md até o final e siga especialmente a regra "não falsificar".
- Fonte a editar: <ws>/src/ (principal: <main>.tex)
- Revisão atual: <ws>/rounds/rNN/review.md, <ws>/rounds/rNN/issues.json
- Evolução: <ws>/issue_tracker.md (gerado automaticamente; apenas leia, não edite)
- TODO do autor: <ws>/author_todo.md (crie se não existir; adicione e atualize)
- Tempo: termine a compilação até <revise_by>. O tempo restante pode ser verificado com
python <skill_dir>/scripts/loop_state.py status <ws>
- Ao terminar:
1. python <skill_dir>/scripts/build_pdf.py <ws>/src/<main>.tex --out <ws>/rounds/r(NN+1)/paper.pdf
(corrija até que erros e referências indefinidas sejam zero)
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. Escreva <ws>/rounds/rNN/response.md (formato em revision_guide.md)
Ao final, retorne uma linha com "IDs dos apontamentos atendidos / IDs transferidos para author_todo / Resultado da compilação (páginas, referências indefinidas, número de AUTHOR TODO)".
Se a reconstrução a partir do PDF for necessária, instrua: "Leia <skill_dir>/references/pdf_to_latex.md, reconstrua <ws>/original/<nome>.pdf em <ws>/src/, salve o PDF compilado em <ws>/rounds/r01/reconstructed.pdf e escreva as diferenças em <ws>/src/RECONSTRUCTION_NOTES.md".
3. Finalização
- Execute
loop_state.py finish <ws> --reason "<Prazo / Apontamentos corrigíveis no texto esgotados / Apenas revisão>"→ em seguidaloop_state.py summary <ws> - Se houve pelo menos uma correção, copie o PDF mais recente como
<ws>/<nome_do_PDF>_revised.pdf. - Escreva
<ws>/final_report.md:
# Relatório de Revisão e Correção: <Título do Artigo>
- Limite de tempo / Tempo utilizado / Número de rodadas / Motivo do término
## Evolução das Avaliações (tabela do issue_tracker.md)
## Pontos Principais da Revisão do Original (r01) (Resumo da Justificativa e principais Fraquezas)
## Principais Apontamentos Resolvidos nas Correções
## Problemas Restantes
### Que poderiam ser corrigidos no texto mas não foram por falta de tempo
### Que exigem trabalho do autor (prioridades do author_todo.md)
## Avaliação da Rodada Final e Condições para Mudar para Aceitação
## Lista de Arquivos
- Responda ao usuário de forma concisa: número de rodadas, evolução das avaliações, principais apontamentos resolvidos, problemas importantes restantes e top 3 do author_todo, e localização dos arquivos. Não cole a revisão completa; aponte os arquivos. No modo apenas revisão, inclua na resposta os pontos principais do review.md da r01 (Justificativa, Nota, Principais Fraquezas, Perguntas para Rebuttal).
Retomada após Interrupção
Se <ws>/state.json existir e o status for running, execute loop_state.py status <ws> e examine o conteúdo de rounds/ para retomar a partir da fase seguinte à última concluída. Repetir init reinicia o cronômetro; use --force apenas se o usuário desejar um novo orçamento.
Princípios e Justificativas
- Não falsificar: Não crie resultados experimentais, números, dados, citações ou provas. Este é um manuscrito de pesquisa real; qualquer número inventado constitui má conduta científica e causa sérios danos ao usuário. Para apontamentos que exigem novos resultados, ajuste as alegações ao que as evidências suportam e transfira os experimentos necessários para
[AUTHOR TODO]eauthor_todo.md. - Não aliviar os critérios de revisão: Avalie com os mesmos critérios em todas as rodadas.
[AUTHOR TODO]é não resolvido; reformular não substitui novas evidências. A nota só sobe quando o problema é resolvido no papel. Caso contrário, o loop apenas infla artificialmente a pontuação. - Delegar decisões temporais ao script: Não estime o tempo decorrido. Consulte
statusa cada rodada. - Não consultar o usuário entre rodadas: Ao receber o limite de tempo, a execução de todo o loop está aprovada. Envie apenas uma linha de progresso; pare para consultar apenas em caso de bloqueio (falha de compilação impossível de corrigir, PDF ilegível, etc.).
- Não alterar os arquivos originais: Trate
original/como somente leitura; todas as edições devem ser feitas nas cópias emsrc/.