← All skills
paper-review-helper
92 / 100 · Low risk
Fine to try. Some of what it can do is expected: a research skill usually looks things up on the internet.
By caidish/cAI-tools (GitHub) · research · 55 stars · scanned at commit 5f3f090
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. Talks to the reviewer through a local web UI (rendered sections, chat, issue log, decision cards) instead of terminal prompts.
Works with any agent that supports SKILL.md skills.
What this skill can do
Runs commands on your computer
This is disclosed by the author in the skill's SKILL.md or README.
Found in 8 places.
Show 5 more
- plugins/science-skill/skills/paper-review-helper/scripts/review_ui.py, line 635
proc = subprocess.Popen( - plugins/science-skill/skills/paper-review-helper/scripts/review_ui.py, line 639
stdin=subprocess.DEVNULL, - plugins/science-skill/skills/paper-review-helper/scripts/tests/test_review_ui.py, line 49
p = subprocess.run([sys.executable, str(UI), *args, "--workspace", str(ws)], capture_output=True, text=True, timeout=timeout) - plugins/science-skill/skills/paper-review-helper/scripts/tests/test_review_ui.py, line 78
p = subprocess.run([sys.executable, str(TEX), "outline", str(tex), "--out", str(ws / "artifact/outline.json")], capture_output=True, text=True) - plugins/science-skill/skills/paper-review-helper/scripts/tests/test_review_ui.py, line 85
p = subprocess.run([sys.executable, str(TEX), "extract", str(tex), "--id", "02", "--out", str(ws / "artifact/sections/02-intro.md")], capture_output=True, text=
Connects to the internet
The author does not mention this. Expected for a research skill.
Found in 18 places.
Show 15 more
- plugins/science-skill/skills/paper-review-helper/scripts/pdf2tex.py, line 68
resp = requests.get(url, headers=headers) - plugins/science-skill/skills/paper-review-helper/scripts/pdf2tex.py, line 95
resp = requests.get(tex_url, headers=headers) - plugins/science-skill/skills/paper-review-helper/scripts/pdf2tex.py, line 100
resp = requests.get(tex_url, headers=headers) - plugins/science-skill/skills/paper-review-helper/scripts/review_ui.py, line 50
import urllib.request - plugins/science-skill/skills/paper-review-helper/scripts/review_ui.py, line 568
req = urllib.request.Request(url, data=data, headers={"Content-Type": "application/json"} if data else {}) - plugins/science-skill/skills/paper-review-helper/scripts/review_ui.py, line 569
with urllib.request.urlopen(req, timeout=timeout) as resp: - plugins/science-skill/skills/paper-review-helper/scripts/tests/test_review_ui.py, line 13
import urllib.request - plugins/science-skill/skills/paper-review-helper/scripts/tests/test_review_ui.py, line 55
req = urllib.request.Request(url + "api/user", data=json.dumps(body).encode(), headers={"Content-Type": "application/json"}) - plugins/science-skill/skills/paper-review-helper/scripts/tests/test_review_ui.py, line 56
with urllib.request.urlopen(req, timeout=10) as r: - plugins/science-skill/skills/paper-review-helper/scripts/tests/test_review_ui.py, line 101
state = json.loads(urllib.request.urlopen(url + "api/state?v=0&timeout=0").read()) - plugins/science-skill/skills/paper-review-helper/scripts/tests/test_review_ui.py, line 103
check(urllib.request.urlopen(url + "files/images/fig1.png").status == 200, "figure served") - plugins/science-skill/skills/paper-review-helper/scripts/tests/test_review_ui.py, line 122
req = urllib.request.Request(url + "files/../../etc/passwd") - plugins/science-skill/skills/paper-review-helper/scripts/tests/test_review_ui.py, line 124
urllib.request.urlopen(req); check(False, "traversal blocked") - plugins/science-skill/skills/paper-review-helper/scripts/ui/index.html, line 248
const r = await fetch(path, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) }); - plugins/science-skill/skills/paper-review-helper/scripts/ui/index.html, line 302
const r = await fetch(`/api/state?v=${version}&timeout=25`);
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'paper-review-helper' ] || [ -L ~/.agents/skills/'paper-review-helper' ]; then echo 'A skill folder named paper-review-helper already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/caidish/cAI-tools' "$d" && git -C "$d" checkout --quiet '5f3f0903763a178024a4c9c95263f16ec569d9a6' -- 'plugins/science-skill/skills/paper-review-helper' && mkdir -p ~/.agents/skills && cp -R "$d"/'plugins/science-skill/skills/paper-review-helper' ~/.agents/skills/'paper-review-helper' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'paper-review-helper' ~/.claude/skills/'paper-review-helper' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for caidish/cAI-tools shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/caidish/cAI-tools/)
Score history
| Date | Version | Score |
|---|
| 2026-11-12 | 5f3f090 | 92 |