Claude Code, Plugin
Lit Review Skill
Literature-fetching & citation-auditing skill for LLM agents (Claude/Codex) — 讓 AI 引用經得起追問:找文獻、查核引用真偽與支持度、文獻支撐寫作,防幻覺引用。
Compatibility: Not stated.
Grade B
Minor issues only, no Medium or High. Worth a quick look at the findings below before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
Rescanned at commit 8525664b324b, unchanged since the check below.
PERMISSION_DELETE_FILES NETWORK_NO_FIXED_HOST SECRETS_PATH_DOTENV SECRETS_ENV_READ
Why this grade
- PERMISSION_DELETE_FILES Low
Contains a call that can delete files.
evals/doc_scan.py, line 36
n_cases = len(subprocess.run( - NETWORK_NO_FIXED_HOST Low
Makes a network call whose host is not written as a fixed address.
scripts/lit_api.py, line 549
with urllib.request.urlopen(req, timeout=SOCKET_TIMEOUT) as r: - SECRETS_PATH_DOTENV Low
Mentions a .env file.
evals/mutation_check.py, line 298
("cite_integrity 不讀 .env → .env 裡的 LIT_LANG 對它無效", "cite_integrity.py", - SECRETS_ENV_READ Note
Reads an environment variable whose name contains KEY, SECRET, TOKEN, PASSWORD or CREDENTIAL.
evals/mutation_check.py, line 254
' if _s2_429_seen and not os.environ.get("S2_API_KEY"):',
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Concern
can delete files.
PERMISSION_DELETE_FILES
evals/doc_scan.py, line 36
n_cases = len(subprocess.run(
evals/doc_scan.py, line 39
actual = subprocess.run([sys.executable, os.path.join(R, "evals", "test_regression.py")],
evals/doc_scan.py, line 90
st = subprocess.run(["git", "status", "--short"], capture_output=True, text=True,
Show more
evals/mutation_check.py, line 359
p = subprocess.run([sys.executable, os.path.join(root, "evals", "test_regression.py")],
evals/mutation_check.py, line 375
shutil.rmtree(work, ignore_errors=True)
evals/test_regression.py, line 65
p = subprocess.run([PY, os.path.join(SKILL, "scripts", script), *[str(a) for a in args]],
evals/test_regression.py, line 1557
shutil.rmtree(tree, ignore_errors=True)
evals/test_regression.py, line 1578
r = subprocess.run([PY, os.path.join(BASE, "zip_check.py"), p], capture_output=True,
evals/test_regression.py, line 1587
shutil.rmtree(tmp, ignore_errors=True)
evals/test_regression.py, line 1608
shutil.rmtree(tmp, ignore_errors=True)
evals/test_regression.py, line 1869
shutil.rmtree(iso, ignore_errors=True)
evals/test_regression.py, line 1929
shutil.rmtree(tmp, ignore_errors=True)
evals/test_regression.py, line 2277
shutil.rmtree(tmp, ignore_errors=True)
evals/test_regression.py, line 2614
shutil.rmtree(root, ignore_errors=True)
evals/test_regression.py, line 2759
return subprocess.run(["git", "-C", tree, *a], capture_output=True, text=True, encoding="utf-8",
evals/test_regression.py, line 2769
r = subprocess.run([PY, os.path.join(tree, "scripts", "package_skill.py"), "-o", zp], capture_output=True,
Install and update
Pass
No install-time script found, and dependencies are pinned or absent.
Network
Concern
can reach a host that is not written as a fixed address.
NETWORK_NO_FIXED_HOST
scripts/lit_api.py, line 549
with urllib.request.urlopen(req, timeout=SOCKET_TIMEOUT) as r:
evals/test_regression.py, line 1466
real_open, real_sleep, real_argv = urllib.request.urlopen, time.sleep, sys.argv
evals/test_regression.py, line 1467
urllib.request.urlopen, time.sleep = fake_urlopen, sleeps.append
Show more
evals/test_regression.py, line 1482
urllib.request.urlopen, time.sleep, sys.argv = real_open, real_sleep, real_argv
evals/test_regression.py, line 2285
real_open, real_sleep, real_argv = urllib.request.urlopen, time.sleep, sys.argv
evals/test_regression.py, line 2294
urllib.request.urlopen, time.sleep, sys.argv = urlopen, lambda s: None, ["lit_api.py"] + argv
evals/test_regression.py, line 2302
urllib.request.urlopen, time.sleep, sys.argv = real_open, real_sleep, real_argv
evals/test_regression.py, line 2875
socket.create_connection = _blocked
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
evals/mutation_check.py, line 254
' if _s2_429_seen and not os.environ.get("S2_API_KEY"):',
evals/mutation_check.py, line 273
# I18N-*(2026-10-14 英文輸出模式):語言解析、退回、旗標、.env、表的完整性、呼叫端漏中文、說明文字跳脫。
evals/mutation_check.py, line 298
("cite_integrity 不讀 .env → .env 裡的 LIT_LANG 對它無效", "cite_integrity.py",
Show more
evals/mutation_check.py, line 325
("load_dotenv 改回 setdefault → 殼層的 LIT_LANG=\"\" 被當成已設,.env 的 LIT_LANG=en 永遠進不來", "_i18n.py",
evals/mutation_check.py, line 335
("--lang 後面接空字串也照寫 LIT_LANG → 一個空旗標把環境變數與 .env 的 en 蓋回 zh", "_i18n.py",
evals/mutation_check.py, line 349
# 2026-10-14 第五輪:.env 的行內註解比照 python-dotenv 剝掉(沒有引號的值);拿掉剝除就是這個缺陷。
evals/test_regression.py, line 17
I18N-* 英文輸出模式(LIT_LANG=en):表的完整性、呼叫端契約、中文不變、英文無 CJK、語言解析、--lang、.env、打包
evals/test_regression.py, line 19
本套件把 LIT_LANG 釘在 zh(main() 開頭):殼層、cwd 或 ~/.env 裡的 LIT_LANG=en 不得讓既有案例變紅。
evals/test_regression.py, line 1422
a:Semantic Scholar 第一次回 429 就要在 stderr 給可執行的指引(申請網址、.env 那一行、.env 讀取
evals/test_regression.py, line 2515
pin = (os.environ.get("S2_API_KEY"), os.environ.get("CROSSREF_MAILTO"))
scripts/lit_api.py, line 525
if _s2_429_warned or os.environ.get("S2_API_KEY"): # 例外是 OpenAlex 的,光看它看不出 S2 曾經 429
scripts/lit_api.py, line 582
key = os.environ.get("S2_API_KEY")
scripts/lit_api.py, line 587
return 1.0 if os.environ.get("S2_API_KEY") else 1.5
scripts/lit_api.py, line 2164
if _s2_429_seen and not os.environ.get("S2_API_KEY"):
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Pass
No encoded or minified payload found.
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit 8525664b324b. can delete files. can reach a host that is not written as a fixed address. reads a credential or environment file.
Date and source
Date checked:
github.com
Commit graded: 8525664b324bf3cae0c51d374f196eba59c633d5
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.