Copilot for scientific paper review. Use when reviewing a research paper (PDF/LaTeX), guiding section-by-section analysis, logging issues, and generating structured review responses.
Guide the reviewer through a structured review and produce a formal review response. The conversation runs in a local web UI, not in the terminal: you post each section there, the reviewer reads it rendered (math, figures, inline markers), chats, logs issues, and submits decisions on cards. You block on ask / wait until they respond.
Paths below are relative to this skill's directory. $S = scripts/review_ui.py, $T = scripts/tex_tools.py. Every command prints one JSON object; read it. Full CLI reference: references/ui-protocol.md.
Locate paper from $ARGUMENTS. PDF ā create <paper-name>-review/, copy it in as original.pdf. Folder ā prefer .tex over PDF. Nothing found ā AskUserQuestion for the path (the only terminal question you ask).
PDF ā LaTeX (if no .tex): check MATHPIX_APP_ID and MATHPIX_API_KEY. If set, run python scripts/pdf2tex.py "<pdf>" "<paper-folder>" ā <paper-folder>/<pdf_id>/<pdf_id>.tex with images/. If missing, tell the reviewer once and work from the PDF text (figures not extractable).
Start the UI: python $S start --workspace <paper-folder> opens the browser and prints url. Tell the reviewer the review happens there. If it fails (see artifact/ui-server.log), fall back to AskUserQuestion for every decision below.
Outline: with .tex, python $T outline <tex> --out artifact/outline.json then python $S meta --outline artifact/outline.json. Without, python $S meta --title "<title>" --sections "Abstract|Introduction|...".
Workspace:
<paper-folder>/
āāā original.pdf, <pdf_id>/<pdf_id>.tex, <pdf_id>/images/ # sources
āāā artifact/
āāā outline.json # sections, line ranges, figures, skip flags
āāā sections/NN-<slug>.md # what the reviewer sees, with markers
āāā programs/ # math verification scripts
āāā review-log.md # your log (format below)
āāā issues-major.md, issues-minor.md, ui-transcript.md # written by `export`
āāā REVIEW.md # final review
āāā ui-state.json, ui-server.json, ui-server.log # UI runtime (do not edit)
Loop over outline entries with "skip": false (appendix, supplement, references are skipped unless the reviewer asks). Use the outline id as the section id. For each:
Extract: python $T extract <tex> --id NN --out artifact/sections/NN-<slug>.md gives rough Markdown (math kept, \cite ā [cite: ā¦], figures inline) plus NN-<slug>.md.figures.json. More than 5 paragraphs ā split into NNa, NNb, ⦠by paragraph groups (subsections are already separate entries). Without .tex, write the Markdown yourself from the PDF text.
Mark: read the file, Edit in inline markers (table below) where you see problems. Keep markers outside $ā¦$. Log substantive findings: python $S issue --severity major|minor --section NN --location "para 2" --text "ā¦".
Post: python $S section --id NN --title "<title>" --file artifact/sections/NN-<slug>.md --figures artifact/sections/NN-<slug>.md.figures.json --source "<tex> L<start>-<end>". Then python $S say --section NN --text "<2-3 sentences: what this section claims and what to look at>".
Ask (blocks until the reviewer acts; run with a long Bash timeout such as 1800000 ms):
python $S ask --section NN --prompt "Questions or concerns about this section? Rate its clarity when you are done." --options "Clear|Somewhat unclear|Confusing" --text-label "Questions / concerns" --timeout 1500
Act on status:
message ā the reviewer chatted. Answer it: citations ā WebSearch (DOI, authors, title); background ā WebSearch / WebFetch; math ā write a script to artifact/programs/, run it; figures ā read images/ or use /vision. Reply with python $S say --section NN --file reply.md (or --text), then python $S wait --id <question_id> --timeout 1500. Repeat.pending ā python $S wait --id <question_id> --timeout 1500 again.answered ā answer.choice is the clarity rating, answer.text the closing remarks. If the remarks ask something, answer with say before moving on.issues: what the reviewer logged in the UI. Acknowledge, do not re-log.Log to artifact/review-log.md, then continue with the next section.
## [Section] - [Timestamp]
### Clarity
Clear / Somewhat unclear / Confusing
### Reviewer Questions
- Q: ⦠/ A: ā¦
### Issues Identified
- [MAJOR] ⦠/ [MINOR] ā¦
### Tools Used
- WebSearch: "query" ā finding
Classify: major = methodology flaws, unsupported claims, logical errors; minor = grammar, typos, unclear wording.
Decision card: write artifact/decision-summary.md (issue counts from python $S issues, the major issues, the sections rated unclear) and post it: python $S section --id decision --title "Decision" --file artifact/decision-summary.md. Then ask with a form (copy references/decision-fields.json to artifact/):
python $S ask --section decision --prompt "Your overall decision." --fields artifact/decision-fields.json --timeout 1500
answer.values ā recommendation, journal, editor_questions, comments.
Export: python $S export writes issues-major.md, issues-minor.md, ui-transcript.md.
Write artifact/REVIEW.md (template below), post it as --id review --title "Draft review", then:
python $S ask --section review --prompt "Approve this review or request changes." --options "Approve|Request changes" --text-label "What to change" --timeout 1500
On "Request changes", revise, re-post the same id, ask again.
python $S stop. Tell the reviewer where REVIEW.md is.
# Review of [Paper Title]
## Summary
[1-2 sentences]
## Overall Recommendation
[Reviewer's decision + justification]
## Major Issues
1. **Issue**: [description]
- **Location**: Section X, paragraph Y / Equation N
- **Impact**: [why this matters]
- **Suggestion**: [fix, or note if unfixable]
## Minor Issues
[Grouped by type: grammar, clarity, formatting]
## Reviewer Misunderstandings Analysis
[For each confusion during review:]
- **Confusion**: [what]
- **Cause**: paper vagueness / reader knowledge gap
- **Recommendation**: [should the paper clarify?]
## Constructive Feedback
[Positives + specific improvements]
## Editor Questions Response
[If provided]
Write these into the section Markdown; the UI renders them as colored badges the reviewer can click to log an issue.
| Marker | Meaning | Default severity |
|---|---|---|
[G: ā¦] |
grammar error | minor |
[C: ā¦] |
clarity issue | minor |
[?] or [?: ā¦] |
ambiguous / unsupported claim | major |
[REF?] or [REF?: ā¦] |
missing or questionable citation | major |
[EQ?] or [EQ?: ā¦] |
equation to verify (place after the $$ block) |
major |
start on an existing workspace resumes its state (sections, chat, issues). Check python $S status, read artifact/review-log.md, and continue from the first section not marked done.