Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when the user explicitly wants to upload a final or near-final PDF to paperreview.ai for an external second opinion. Skip this for local paper critique, which should go through `paper-review-pipeline` first.
.claude/skills/cnfjlhj-paperreview/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 262% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -31% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -47% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -16% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -58% | 0% |
Submit a paper PDF to paperreview.ai using the same HTTP flow as the website:
1) Request a presigned upload URL 2) Upload the PDF directly to S3 3) Confirm the upload to start processing and receive a token
This skill uses a small Python script so it can run deterministically without a browser. The public version requires you to provide your own email when submitting.
--submit as an irreversible external side effect (creates a real submission and returns a token).--dry-run first to validate the file and show what would happen.The public version does not ship with a fixed email address.
--email you@example.com when doing a real submissionbashpython scripts/submit_http.py --pdf "/path/to/paper.pdf" --dry-run
bashpython scripts/submit_http.py --pdf "/path/to/paper.pdf" --venue ICLR --email "you@example.com" --submit
By default, after a successful submit the token is also written next to the PDF as:
<pdf>.paperreview.token.txtTo disable token file writing:
bashpython scripts/submit_http.py --pdf "/path/to/paper.pdf" --venue ICLR --email "you@example.com" --submit --no-token-file
When the review is ready, paperreview.ai can be queried with:
GET /api/review/<token>202 means still processing200 means ready (JSON review payload)This skill provides a polling script that saves timestamped artifacts next to the PDF:
<pdf>.paperreview.<timestamp>.json (raw JSON, includes _retrieved_at and _token)<pdf>.paperreview.<timestamp>.md (human-readable Markdown)Run (default: 10 minutes, up to 48 hours):
bashpython scripts/watch_review.py --pdf "/path/to/paper.pdf"
One-shot check (useful for debugging / cron):
bashpython scripts/watch_review.py --pdf "/path/to/paper.pdf" --once
0 and prints basic validation info.0 and prints a token: line. Save the token immediately..json + .md next to the PDF and exits 0.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 24,214 | 5,714 | -76% | 1 | 1 | 0% | 1,626 | 971 | -40% | 0 | 0 | — |
case-02 | fail→pass | 15,112 | 15,007 | -1% | 1 | 1 | 0% | 710 | 2,570 | +262% | 0 | 0 | — |
case-03 | fail→fail | 6,352 | 6,453 | +2% | 1 | 1 | 0% | 402 | 970 | +141% | 0 | 0 | — |
case-04 | pass→pass | 34,180 | 8,802 | -74% | 1 | 1 | 0% | 2,108 | 2,184 | +4% | 0 | 0 | — |
case-05 | pass→pass | 11,943 | 11,607 | -3% | 1 | 1 | 0% | 2,216 | 3,092 | +40% | 0 | 0 | — |
case-06 | pass→pass | 12,524 | 7,360 | -41% | 1 | 1 | 0% | 2,411 | 2,055 | -15% | 0 | 0 | — |
case-07 | fail→pass | 10,453 | 3,137 | -70% | 1 | 1 | 0% | 1,800 | 1,246 | -31% | 0 | 0 | — |
case-08 | fail→pass | 24,258 | 2,623 | -89% | 1 | 1 | 0% | 2,100 | 1,105 | -47% | 0 | 0 | — |
case-09 | fail→pass | 7,813 | 2,401 | -69% | 1 | 1 | 0% | 1,332 | 1,115 | -16% | 0 | 0 | — |
case-10 | fail→pass | 12,774 | 1,991 | -84% | 1 | 1 | 0% | 2,326 | 987 | -58% | 0 | 0 | — |
case-11 | fail→pass | 8,852 | 1,634 | -82% | 1 | 1 | 0% | 1,592 | 939 | -41% | 0 | 0 | — |
case-12 | pass→pass | 5,751 | 1,202 | -79% | 1 | 1 | 0% | 950 | 838 | -12% | 0 | 0 | — |
case-13 | pass→pass | 4,106 | 1,365 | -67% | 1 | 1 | 0% | 658 | 866 | +32% | 0 | 0 | — |
case-14 | fail→pass | 5,619 | 2,163 | -62% | 1 | 1 | 0% | 855 | 991 | +16% | 0 | 0 | — |
case-15 | pass→pass | 7,518 | 1,423 | -81% | 1 | 1 | 0% | 1,087 | 869 | -20% | 0 | 0 | — |
case-16 | fail→pass | 7,638 | 1,606 | -79% | 1 | 1 | 0% | 1,300 | 862 | -34% | 0 | 0 | — |
case-17 | fail→pass | 6,097 | 1,638 | -73% | 1 | 1 | 0% | 997 | 868 | -13% | 0 | 0 | — |
case-18 | fail→pass | 5,392 | 1,304 | -76% | 1 | 1 | 0% | 820 | 825 | +1% | 0 | 0 | — |
case-19 | fail→pass | 5,949 | 1,815 | -69% | 1 | 1 | 0% | 837 | 852 | +2% | 0 | 0 | — |
case-20 | pass→pass | 9,065 | 2,156 | -76% | 1 | 1 | 0% | 1,461 | 1,012 | -31% | 0 | 0 | — |
case-21 | pass→pass | 8,319 | 1,600 | -81% | 1 | 1 | 0% | 1,310 | 868 | -34% | 0 | 0 | — |
case-22 | pass→pass | 5,982 | 1,702 | -72% | 1 | 1 | 0% | 926 | 880 | -5% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +50 percentage points is the difference between those two pass rates over the 19 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.