Not in the top 1,000 by GitHub stars

Zachariah9420/lit-review-skill

Literature-fetching & citation-auditing skill for LLM agents (Claude/Codex) — 讓 AI 引用經得起追問:找文獻、查核引用真偽與支持度、文獻支撐寫作,防幻覺引用。

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 8525664b324b

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 8525664b324bf3cae0c51d374f196eba59c633d5

git clone --filter=blob:none --no-checkout https://github.com/Zachariah9420/lit-review-skill.git .hotskills/zachariah9420-lit-review-skill && git -C .hotskills/zachariah9420-lit-review-skill checkout --detach 8525664b324bf3cae0c51d374f196eba59c633d5 # Copy each selected skill directory from .hotskills/zachariah9420-lit-review-skill into .claude/skills/<skill-name>/
32GitHub stars
0stars in 7 days
1skill in this repository
4commits in 30 days

Heat

1.4
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Oct 25, 202632

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

lit-review

When your agent uses it

根據使用者的文章或論文草稿,自動用 Semantic Scholar、Crossref、arXiv API 搜尋相關文獻,並查核既有引用(文獻是否真實存在、書目欄位是否正確、內容是否支持文中論點),也能從主題出發寫出「每個宣稱都有真實文獻支撐」的帶引用文章;另含研究生工具組:文獻矩陣、領域地圖、research gap 偵測、閱讀筆記卡、引用完整性檢查、中英術語一致性、口試/審稿預演、新文獻追蹤、引用需求標記(annotate)、反面證據搜尋(counter)、證據強度評級(strength)、claim-evidence 總表(claims)、撤稿查詢(retract)。凡是使用者提到找文獻、找 paper、補參考文獻、查核引用、檢查 citation、驗證參考文獻、related work、literature review,貼文章要求配文獻、問「這段話有沒有文獻支持」、要求「寫一篇帶參考文獻的文章」、要整理文獻比較表、問已指名兩概念的交集有沒有人做過、要準備口試文獻答辯時,都要使用本 skill。本 skill 的 gap 指令只查證使用者已指名的 X 與 Y 交集;若使用者連題目都還沒有、需要生成並逐一淘汰候選方向,那是題目生成,不在本 skill 範圍(環境裝有 research-gap-hunter 時交給它,沒有就如實說明本 skill 只能查證已指名的交集)。本 skill 的 map 指令盤的是**文獻**——奠基文獻是哪幾篇、關鍵作者是誰、近三年往哪走;若使用者要的是「這個領域現在有哪些**做法**、每一種買到什麼付出什麼、哪些已經飽和」,那是技術盤點不是文獻盤點,交給 research-gap-hunter 的 landscape,沒有那個 skill 就如實說明本 skill 的 map 只回答文獻層的問題。

What it loads into context

Frontmatter

530 tokens

Always available to the agent

SKILL.md

9,964 tokens

When the skill is activated

Reference documents

32,557 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. 開跑前先確認自己是不是完整的
  2. 指令介面(明確指定功能,跳過推斷)
  3. 輸出格式硬規則(中文報告)
  4. 全文取得的分工(不要越界)
  5. 使用者偏好(不要替使用者做決定)
  6. 工具
  7. 模式 A:找文獻
  8. 模式 B:查核引用
  9. 模式 C:文獻支撐寫作
  10. 報告格式
  11. 改動本 skill 前必讀:迴歸測試
  12. 隔離原則(判讀效力的來源)
  13. 原則
  14. 給 Codex / 其他 agent

Scripts executed separately

  • assets/gen_diagram.py
  • evals/doc_scan.py
  • evals/make_fixtures.py
  • evals/mutation_check.py
  • evals/test_regression.py
  • evals/zip_check.py
  • scripts/_i18n.py
  • scripts/cite_integrity.py
  • scripts/lit_api.py
  • scripts/package_skill.py

Files

  • .claude-plugin/plugin.jsonasset846 bytes
  • .gitignoreasset235 bytes
  • LICENSEasset1,070 bytes
  • README.mddoc20,905 bytes
  • README.zh-TW.mddoc17,355 bytes
  • SKILL.mdcore31,098 bytes
  • SKILL.mdcore31,098 bytes
  • SKILL.mdcore31,098 bytes
  • SKILL.mdcore31,098 bytes
  • SKILL.mdcore31,098 bytes
  • SKILL.mdcore31,098 bytes
  • SKILL.mdcore31,098 bytes
  • SKILL.mdcore31,098 bytes
  • USAGE.mddoc13,358 bytes
  • USAGE.zh-TW.mddoc11,683 bytes
  • assets/architecture-dark.svgasset8,167 bytes
  • assets/architecture-en-dark.svgasset8,264 bytes
  • assets/architecture-en-light.svgasset8,264 bytes
  • assets/architecture-light.svgasset8,167 bytes
  • assets/gen_diagram.pyruns8,597 bytes
  • evals/README.mddoc8,194 bytes
  • evals/doc_scan.pyruns4,881 bytes
  • evals/fixtures/apa_style.mddoc210 bytes
  • evals/fixtures/big_range.mddoc1,401 bytes
  • evals/fixtures/charrefs.docxasset954 bytes
  • evals/fixtures/dup_refs.mddoc85 bytes
  • evals/fixtures/fake.docxasset43 bytes
  • evals/fixtures/heading_in_title.mddoc164 bytes
  • evals/fixtures/list_root.jsonasset134 bytes
  • evals/fixtures/not_json.txtdoc24 bytes
  • evals/fixtures/overcite.mddoc210 bytes
  • evals/fixtures/ranges.mddoc264 bytes
  • evals/fixtures/single_work.jsonasset241 bytes
  • evals/fixtures/two_works.jsonasset232 bytes
  • evals/fixtures/unnumbered_list.mddoc279 bytes
  • evals/fixtures/vancouver.mddoc461 bytes
  • evals/fixtures/zh_literals.jsonasset11,917 bytes
  • evals/fixtures/zh_messages.jsonasset16,356 bytes
  • evals/make_fixtures.pyruns6,020 bytes
  • evals/mutation_check.pyruns24,841 bytes
  • evals/test_regression.pyruns175,887 bytes
  • evals/zip_check.pyruns4,022 bytes
  • examples/planted_errors_test.mddoc1,555 bytes
  • references/api-notes.mddoc19,188 bytes
  • references/grad-toolkit.mddoc11,471 bytes
  • references/prompts.mddoc3,911 bytes
  • scripts/_i18n.pyruns6,367 bytes
  • scripts/cite_integrity.pyruns17,998 bytes
  • scripts/lit_api.pyruns124,132 bytes
  • scripts/package_skill.pyruns5,974 bytes
Read SKILL.md

# lit-review:文獻抓取與引用查核

## 開跑前先確認自己是不是完整的

這支 skill 的核心是一支腳本:`scripts/lit_api.py`。**沒有它,這裡的每一個查核都做不到**——存在性、書目比對、撤稿、滾雪球、全文定位全部靠它。另外 `references/grad-toolkit.md`(研究生工具組各指令的工序)與 `references/api-notes.md`(各 API 的坑)也是執行時要讀的。

**有些安裝管道只給 `SKILL.md` 一個檔案**(目錄站的單檔安裝、把這份貼進對話、只複製一個檔)。那種情況下腳本不存在,而你不會收到任何錯誤——你只會照著指示去呼叫一支不在的程式,然後很容易改成「憑記憶回答」,那正是這支 skill 存在要防的事。

所以第一件事:**確認 `scripts/lit_api.py` 讀得到**。讀不到就**在開始之前告訴使用者**,逐字說這一句:

> 我拿到的是單檔版的 lit-review,`scripts/lit_api.py` 不在,所以我沒辦法做任何存在性查核、書目比對或撤稿查詢。要完整版請跑
> `git clone https://github.com/Zachariah9420/lit-review-skill ~/.claude/skills/lit-review`,
> 或 `claude plugin marketplace add Zachariah9420/claude-research-skills` 再 `claude plugin install lit-review@zachariah-research-skills`。
View the complete source on GitHub

Skills included

  • lit-review

Repository facts

License
MIT
Created
Jul 29, 2026
Last pushed
Oct 14, 2026
Forks
3
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 4, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 7 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 299 signals by file

.claude-plugin/plugin.json

  • Network accessline 5
    "author": {     "name": "Zachariah9420",     "url": "https://github.com/Zachariah9420"
  • Network accessline 6
    "name": "Zachariah9420",     "url": "https://github.com/Zachariah9420"   },
  • Network accessline 7
    "url": "https://github.com/Zachariah9420"
  • Network accessline 8
    },   "homepage": "https://github.com/Zachariah9420/lit-review-skill",   "repository": "https://github.com/Zachariah9420/lit-review-skill",
  • Network accessline 9
    "homepage": "https://github.com/Zachariah9420/lit-review-skill",
  • Network accessline 10
    "repository": "https://github.com/Zachariah9420/lit-review-skill",

.gitignore

  • Access to secretsline 2
    [Credential-related source omitted]

README.md

  • Network accessline 64
    **If you already found a paper and just want its citation string, use the [Google Scholar Button](https://chromewebstore.google.com/detail/google-scholar-button/ldipcbpaocekfooobnbcddclnhejkcpn) (official, by Google) — it is faster and this
  • Network accessline 115
    git clone https://github.com/Zachariah9420/lit-review-skill ~/.claude/skills/lit-review
  • Access to secretsline 151
    [Credential-related source omitted]

README.zh-TW.md

  • Network accessline 30
    **如果你已經找到論文、只是要一段引用格式,請用 [Google Scholar Button](https://chromewebstore.google.com/detail/google-scholar-button/ldipcbpaocekfooobnbcddclnhejkcpn)(Google 官方出品)——它更快,本工具不跟它競爭。** 它還能透過你的大學圖書館取得全文,那是正當的授權途徑,也比本工具能合法做到的更好。
  • Network accessline 81
    git clone https://github.com/Zachariah9420/lit-review-skill ~/.claude/skills/lit-review
  • Access to secretsline 117
    [Credential-related source omitted]

SKILL.md

  • Network accessline 16
    > 我拿到的是單檔版的 lit-review,`scripts/lit_api.py` 不在,所以我沒辦法做任何存在性查核、書目比對或撤稿查詢。要完整版請跑 > `git clone https://github.com/Zachariah9420/lit-review-skill ~/.claude/skills/lit-review`,
  • Network accessline 17
    > `git clone https://github.com/Zachariah9420/lit-review-skill ~/.claude/skills/lit-review`,
  • Access to secretsline 130
    [Credential-related source omitted]

USAGE.md

  • Network accessline 32
    git clone https://github.com/Zachariah9420/lit-review-skill ~/.claude/skills/lit-review
  • Access to secretsline 96
    [Credential-related source omitted]

USAGE.zh-TW.md

  • Network accessline 32
    git clone https://github.com/Zachariah9420/lit-review-skill ~/.claude/skills/lit-review
  • Access to secretsline 96
    [Credential-related source omitted]

assets/architecture-dark.svg

  • Network accessline 1
    <svg xmlns="http://www.w3.org/2000/svg" width="1274" height="622" viewBox="0 0 1274 622" font-family="system-ui,-apple-system,'Segoe UI','Noto Sans TC',sans-serif">

assets/architecture-en-dark.svg

  • Network accessline 1
    <svg xmlns="http://www.w3.org/2000/svg" width="1274" height="622" viewBox="0 0 1274 622" font-family="system-ui,-apple-system,'Segoe UI','Noto Sans TC',sans-serif">

assets/architecture-en-light.svg

  • Network accessline 1
    <svg xmlns="http://www.w3.org/2000/svg" width="1274" height="622" viewBox="0 0 1274 622" font-family="system-ui,-apple-system,'Segoe UI','Noto Sans TC',sans-serif">

assets/architecture-light.svg

  • Network accessline 1
    <svg xmlns="http://www.w3.org/2000/svg" width="1274" height="622" viewBox="0 0 1274 622" font-family="system-ui,-apple-system,'Segoe UI','Noto Sans TC',sans-serif">

assets/gen_diagram.py

  • Executable scriptline 1
    Executable file
  • Network accessline 106
    t = THEMES[theme]     p = []     p.append(f'<svg xmlns="http://www.w3.org/2000/svg" width="{W}" height="{H}" viewBox="0 0 {W} {H}" font-family="system-ui,-apple-system,\'Segoe UI\',\'Noto Sans TC\',sans-serif">')
  • Network accessline 107
    p = []     p.append(f'<svg xmlns="http://www.w3.org/2000/svg" width="{W}" height="{H}" viewBox="0 0 {W} {H}" font-family="system-ui,-apple-system,\'Segoe UI\',\'Noto Sans TC\',sans-serif">')     p.append(f'<rect width="{W}" height="{H}" rx=
  • Network accessline 108
    p.append(f'<svg xmlns="http://www.w3.org/2000/svg" width="{W}" height="{H}" viewBox="0 0 {W} {H}" font-family="system-ui,-apple-system,\'Segoe UI\',\'Noto Sans TC\',sans-serif">')

evals/doc_scan.py

  • Executable scriptline 1
    Executable file

evals/fixtures/zh_literals.json

  • Access to secretsline 9
    [Credential-related source omitted]
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 41
    [Credential-related source omitted]
  • Access to secretsline 85
    [Credential-related source omitted]

evals/fixtures/zh_messages.json

  • Access to secretsline 29
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Network accessline 44
    "fulltext.how.ill": "館際合作/文獻傳遞服務",   "fulltext.how.library": "透過你所在機構的圖書館取得(Google Scholar Button 的「find full text in your university library」或圖書館 link resolver)",   "fulltext.how.publisher": "https://doi.org/{doi}(出版社頁面,可能需訂閱)",
  • Network accessline 45
    "fulltext.how.library": "透過你所在機構的圖書館取得(Google Scholar Button 的「find full text in your university library」或圖書館 link resolver)",   "fulltext.how.publisher": "https://doi.org/{doi}(出版社頁面,可能需訂閱)",   "fulltext.need_mailto": "Unpaywall 要求提供聯絡 ema
  • Network accessline 46
    "fulltext.how.publisher": "https://doi.org/{doi}(出版社頁面,可能需訂閱)",
  • Access to secretsline 47
    [Credential-related source omitted]
  • Access to secretsline 62
    [Credential-related source omitted]
  • Access to secretsline 101
    [Credential-related source omitted]

evals/make_fixtures.py

  • Executable scriptline 1
    Executable file
  • Network accessline 19
    DOC_XML = ('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'            '<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">'
  • Network accessline 20
    '<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">'
  • Network accessline 30
    CONTENT_TYPES_XML = ('<?xml version="1.0" encoding="UTF-8"?><Types xmlns="http://schemas.openxml'

evals/mutation_check.py

  • Executable scriptline 1
    Executable file
  • Network accessline 207
    '    pass',      ["CX-19n"]),     ("DOI 判定不清網址前綴 → https://doi.org/… 被當成標題去搜", "lit_api.py",
  • Network accessline 208
    ["CX-19n"]),     ("DOI 判定不清網址前綴 → https://doi.org/… 被當成標題去搜", "lit_api.py",      '    return bool(re.match(r"^10\\.\\d{4,9}/\\S+", _clean_doi(ident)))',
  • Network accessline 209
    ("DOI 判定不清網址前綴 → https://doi.org/… 被當成標題去搜", "lit_api.py",
  • Access to secretsline 254
    [Credential-related source omitted]
  • Access to secretsline 298
    [Credential-related source omitted]
  • Access to secretsline 326
    [Credential-related source omitted]
  • Access to secretsline 327
    [Credential-related source omitted]
  • Access to secretsline 328
    [Credential-related source omitted]
  • Access to secretsline 335
    [Credential-related source omitted]

evals/test_regression.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 19
    [Credential-related source omitted]
  • Access to secretsline 59
    [Credential-related source omitted]
  • Network accessline 415
    {"doi": "10.1037/0003-066X.55.1.68"}) is True)     check("XF-04b", "same_work 認得帶 doi.org 前綴的寫法",           la.same_work({"doi": "https://doi.org/10.1/A"}, {"doi": "10.1/a"}) is True)
  • Network accessline 416
    check("XF-04b", "same_work 認得帶 doi.org 前綴的寫法",           la.same_work({"doi": "https://doi.org/10.1/A"}, {"doi": "10.1/a"}) is True)     check("XF-04c", "不同 DOI 仍判為不同作品(修正未過度寬鬆)",
  • Network accessline 417
    la.same_work({"doi": "https://doi.org/10.1/A"}, {"doi": "10.1/a"}) is True)
  • Network accessline 707
    def s2_404(pid):         raise urllib.error.HTTPError("https://api.semanticscholar.org/graph/v1/paper/" + pid,
  • Network accessline 708
    raise urllib.error.HTTPError("https://api.semanticscholar.org/graph/v1/paper/" + pid,
  • Network accessline 788
    def s2_404(pid):         raise urllib.error.HTTPError("https://api.semanticscholar.org/graph/v1/paper/" + pid,
  • Network accessline 789
    raise urllib.error.HTTPError("https://api.semanticscholar.org/graph/v1/paper/" + pid,
  • Network accessline 916
    def fake_s2(pid):             if s2 is None:                 raise http_err("https://api.semanticscholar.org/graph/v1/paper/" + pid, 404)
  • Network accessline 917
    if s2 is None:                 raise http_err("https://api.semanticscholar.org/graph/v1/paper/" + pid, 404)             return dict(s2)
  • Network accessline 918
    raise http_err("https://api.semanticscholar.org/graph/v1/paper/" + pid, 404)
  • Network accessline 981
    code, exc, d, _ = run("ARXIV:2410.01234", s2=w_s2,                           arxiv=[dict(w_pre, doi="https://doi.org/10.1000/widget.2025.7")],
  • Network accessline 982
    arxiv=[dict(w_pre, doi="https://doi.org/10.1000/widget.2025.7")],
  • Network accessline 1125
    m:較強訊號查詢失敗、較弱訊號找到時,信心不得高於 medium,且要說哪條路沒走完。     n:「可能的正式版」整體依(作者重疊、題目相似)排序:自填 DOI 對不上的那筆不得佔第一格。     o:網址形式的 DOI(https://doi.org/…)要被認成 DOI。
  • Network accessline 1126
    n:「可能的正式版」整體依(作者重疊、題目相似)排序:自填 DOI 對不上的那筆不得佔第一格。     o:網址形式的 DOI(https://doi.org/…)要被認成 DOI。     p:只剩一個字母的作者名(「J.」)沒有鑑別力,作者重疊回 None 而不是 1.0。
  • Network accessline 1127
    o:網址形式的 DOI(https://doi.org/…)要被認成 DOI。
  • Network accessline 1243
    s2_pid.append(pid)             if s2 is None:                 raise http_err("https://api.semanticscholar.org/graph/v1/paper/" + pid, 404)
  • Network accessline 1244
    if s2 is None:                 raise http_err("https://api.semanticscholar.org/graph/v1/paper/" + pid, 404)             return dict(s2)
  • Network accessline 1245
    raise http_err("https://api.semanticscholar.org/graph/v1/paper/" + pid, 404)
  • Network accessline 1373
    code, exc, d = run("https://doi.org/10.1000/j.1", works={"10.1000/j.1": msg("10.1000/j.1", title=w_title)})
  • Network accessline 1374
    check("CX-19o", "網址形式的 DOI 被認成 DOI 並走 DOI 路徑",           la3.looks_like_doi("https://doi.org/10.1000/j.1") and not la3.looks_like_doi("Risk/Benefit Analysis")           and exc is None and code == 0 and d.get("version_link") == "input_doi_i
  • Network accessline 1375
    la3.looks_like_doi("https://doi.org/10.1000/j.1") and not la3.looks_like_doi("Risk/Benefit Analysis")
  • Network accessline 1434
    import zipfile     la_path = os.path.join(SKILL, "scripts", "lit_api.py")     s2_url = "https://api.semanticscholar.org/graph/v1/paper/search?query=widgets"
  • Network accessline 1435
    la_path = os.path.join(SKILL, "scripts", "lit_api.py")     s2_url = "https://api.semanticscholar.org/graph/v1/paper/search?query=widgets"     page = "https://www.semanticscholar.org/product/api"
  • Network accessline 1436
    s2_url = "https://api.semanticscholar.org/graph/v1/paper/search?query=widgets"
  • Network accessline 1437
    page = "https://www.semanticscholar.org/product/api"
  • Access to secretsline 1438
    [Credential-related source omitted]
  • Network accessline 1466
    real_open, real_sleep, real_argv = urllib.request.urlopen, time.sleep, sys.argv
  • Network accessline 1467
    urllib.request.urlopen, time.sleep = fake_urlopen, sleeps.append
  • Network accessline 1480
    exc = e         finally:             urllib.request.urlopen, time.sleep, sys.argv = real_open, real_sleep, real_argv
  • Network accessline 1481
    finally:             urllib.request.urlopen, time.sleep, sys.argv = real_open, real_sleep, real_argv         return res, exc, len(calls), sleeps, err.getvalue(), out.getvalue(), code
  • Network accessline 1482
    urllib.request.urlopen, time.sleep, sys.argv = real_open, real_sleep, real_argv
  • Access to secretsline 1485
    [Credential-related source omitted]
  • Access to secretsline 1490
    [Credential-related source omitted]
  • Network accessline 1496
    _, _, _, _, err_cr, _, _ = drive([429, "ok"], url="https://api.crossref.org/works?query=x")
  • Access to secretsline 1497
    [Credential-related source omitted]
  • Access to secretsline 1499
    [Credential-related source omitted]
  • Access to secretsline 1500
    [Credential-related source omitted]
  • Access to secretsline 1507
    [Credential-related source omitted]
  • Access to secretsline 1523
    [Credential-related source omitted]
  • Access to secretsline 1525
    [Credential-related source omitted]
  • Access to secretsline 1538
    [Credential-related source omitted]
  • Access to secretsline 1540
    [Credential-related source omitted]
  • Access to secretsline 1560
    [Credential-related source omitted]
  • Access to secretsline 1580
    [Credential-related source omitted]
  • Access to secretsline 1637
    [Credential-related source omitted]
  • Access to secretsline 1638
    [Credential-related source omitted]
  • Access to secretsline 1639
    [Credential-related source omitted]
  • Access to secretsline 1644
    [Credential-related source omitted]
  • Access to secretsline 1646
    [Credential-related source omitted]
  • Access to secretsline 1791
    [Credential-related source omitted]
  • Access to secretsline 1795
    [Credential-related source omitted]
  • Access to secretsline 1854
    [Credential-related source omitted]
  • Network accessline 2039
    def fake_s2(pid):             if s2 is None:                 raise http_err("https://api.semanticscholar.org/graph/v1/paper/" + pid, 404)
  • Network accessline 2040
    if s2 is None:                 raise http_err("https://api.semanticscholar.org/graph/v1/paper/" + pid, 404)             return dict(s2)
  • Network accessline 2041
    raise http_err("https://api.semanticscholar.org/graph/v1/paper/" + pid, 404)
  • Access to secretsline 2067
    [Credential-related source omitted]
  • Access to secretsline 2071
    [Credential-related source omitted]
  • Access to secretsline 2134
    [Credential-related source omitted]
  • Access to secretsline 2155
    [Credential-related source omitted]
  • Access to secretsline 2214
    [Credential-related source omitted]
  • Network accessline 2228
    ((0, "how_to_get"), [en("fulltext.how.publisher", doi="10.1/x"), en("fulltext.how.library"), en("fulltext.how.ill")]),             ((1, "_note"), en("fulltext.note"))])         zh_r, en_r = frun(s2_pdf="https://example.org/x.pdf")
  • Network accessline 2229
    ((1, "_note"), en("fulltext.note"))])         zh_r, en_r = frun(s2_pdf="https://example.org/x.pdf")         pair("fulltext.ok", zh_r, en_r, expect=[((0, "status"), en("fulltext.status.ok"))])
  • Network accessline 2230
    zh_r, en_r = frun(s2_pdf="https://example.org/x.pdf")
  • Network accessline 2235
    ((0, "error"), en("fulltext.s2_oa_failed", err="simulated s2 outage"))])         os.environ["CROSSREF_MAILTO"] = "test@example.org"         zh_r, en_r = frun(s2_pdf="https://repo.example.org/x.pdf",
  • Network accessline 2236
    [Credential-related source omitted]
  • Access to secretsline 2236
    [Credential-related source omitted]
  • Network accessline 2237
    zh_r, en_r = frun(s2_pdf="https://repo.example.org/x.pdf",
  • Access to secretsline 2241
    [Credential-related source omitted]
  • Access to secretsline 2243
    [Credential-related source omitted]
  • Network accessline 2283
    import io     import urllib.request     real_open, real_sleep, real_argv = urllib.request.urlopen, time.sleep, sys.argv
  • Network accessline 2285
    real_open, real_sleep, real_argv = urllib.request.urlopen, time.sleep, sys.argv
  • Network accessline 2292
    err, out, code = io.StringIO(), io.StringIO(), 0         os.environ["LIT_LANG"] = lang         urllib.request.urlopen, time.sleep, sys.argv = urlopen, lambda s: None, ["lit_api.py"] + argv
  • Network accessline 2293
    [Credential-related source omitted]
  • Access to secretsline 2293
    [Credential-related source omitted]
  • Network accessline 2294
    urllib.request.urlopen, time.sleep, sys.argv = urlopen, lambda s: None, ["lit_api.py"] + argv
  • Network accessline 2300
    code = e.code         finally:             urllib.request.urlopen, time.sleep, sys.argv = real_open, real_sleep, real_argv
  • Network accessline 2301
    finally:             urllib.request.urlopen, time.sleep, sys.argv = real_open, real_sleep, real_argv             os.environ["LIT_LANG"] = "zh"
  • Network accessline 2302
    urllib.request.urlopen, time.sleep, sys.argv = real_open, real_sleep, real_argv
  • Access to secretsline 2303
    [Credential-related source omitted]
  • Access to secretsline 2306
    [Credential-related source omitted]
  • Network accessline 2310
    [Credential-related source omitted]
  • Network accessline 2311
    [Credential-related source omitted]
  • Network accessline 2312
    [Credential-related source omitted]
  • Access to secretsline 2312
    [Credential-related source omitted]
  • Access to secretsline 2314
    [Credential-related source omitted]
  • Access to secretsline 2341
    [Credential-related source omitted]
  • Access to secretsline 2370
    [Credential-related source omitted]
  • Access to secretsline 2378
    [Credential-related source omitted]
  • Access to secretsline 2447
    [Credential-related source omitted]
  • Access to secretsline 2448
    [Credential-related source omitted]
  • Access to secretsline 2449
    [Credential-related source omitted]
  • Access to secretsline 2451
    [Credential-related source omitted]
  • Access to secretsline 2452
    [Credential-related source omitted]
  • Access to secretsline 2463
    [Credential-related source omitted]
  • Access to secretsline 2464
    [Credential-related source omitted]
  • Access to secretsline 2465
    [Credential-related source omitted]
  • Access to secretsline 2467
    [Credential-related source omitted]
  • Access to secretsline 2471
    [Credential-related source omitted]
  • Access to secretsline 2501
    [Credential-related source omitted]
  • Access to secretsline 2502
    [Credential-related source omitted]
  • Access to secretsline 2503
    [Credential-related source omitted]
  • Access to secretsline 2506
    [Credential-related source omitted]
  • Access to secretsline 2507
    [Credential-related source omitted]
  • Access to secretsline 2508
    [Credential-related source omitted]
  • Access to secretsline 2511
    [Credential-related source omitted]
  • Access to secretsline 2512
    [Credential-related source omitted]
  • Access to secretsline 2515
    [Credential-related source omitted]
  • Access to secretsline 2522
    [Credential-related source omitted]
  • Access to secretsline 2524
    [Credential-related source omitted]
  • Access to secretsline 2526
    [Credential-related source omitted]
  • Access to secretsline 2528
    [Credential-related source omitted]
  • Access to secretsline 2533
    [Credential-related source omitted]
  • Access to secretsline 2534
    [Credential-related source omitted]
  • Access to secretsline 2537
    [Credential-related source omitted]
  • Access to secretsline 2538
    [Credential-related source omitted]
  • Access to secretsline 2539
    [Credential-related source omitted]
  • Access to secretsline 2542
    [Credential-related source omitted]
  • Access to secretsline 2549
    [Credential-related source omitted]
  • Access to secretsline 2551
    [Credential-related source omitted]
  • Access to secretsline 2567
    [Credential-related source omitted]
  • Access to secretsline 2573
    [Credential-related source omitted]
  • Access to secretsline 2580
    [Credential-related source omitted]
  • Access to secretsline 2581
    [Credential-related source omitted]
  • Access to secretsline 2591
    [Credential-related source omitted]
  • Access to secretsline 2592
    [Credential-related source omitted]
  • Access to secretsline 2594
    [Credential-related source omitted]
  • Access to secretsline 2603
    [Credential-related source omitted]
  • Access to secretsline 2604
    [Credential-related source omitted]
  • Access to secretsline 2605
    [Credential-related source omitted]
  • Access to secretsline 2607
    [Credential-related source omitted]
  • Access to secretsline 2641
    [Credential-related source omitted]
  • Access to secretsline 2650
    [Credential-related source omitted]
  • Access to secretsline 2672
    [Credential-related source omitted]
  • Access to secretsline 2676
    [Credential-related source omitted]
  • Access to secretsline 2680
    [Credential-related source omitted]
  • Access to secretsline 2689
    [Credential-related source omitted]
  • Access to secretsline 2691
    [Credential-related source omitted]
  • Access to secretsline 2753
    [Credential-related source omitted]
  • Access to secretsline 2754
    [Credential-related source omitted]
  • Access to secretsline 2788
    [Credential-related source omitted]
  • Access to secretsline 2798
    [Credential-related source omitted]
  • Access to secretsline 2821
    [Credential-related source omitted]
  • Access to secretsline 2836
    [Credential-related source omitted]
  • Access to secretsline 2838
    [Credential-related source omitted]

evals/zip_check.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 50
    [Credential-related source omitted]

references/api-notes.md

  • Network accessline 16
    - 端點:`https://api.openalex.org/works`,免金鑰、額度非常大方(每日 10 萬次)。
  • Network accessline 24
    - 端點:`https://api.semanticscholar.org/graph/v1/`
  • Network accessline 25
    - 涵蓋:約 2 億篇,CS/AI 領域最全;有摘要、被引數、跨庫 ID(DOI/arXiv/PubMed)、開放取用 PDF 連結。 - 速率:無 key 走共享池,**很容易 429**(腳本已內建 1.5s 間隔 + 退避重試,連續 verify 多筆會慢,屬正常);有 key 約 1 req/s。key 免費申請:https://www.semanticscholar.org/product/api - `search`(`/paper/search`):關鍵字相關性
  • Network accessline 26
    - 速率:無 key 走共享池,**很容易 429**(腳本已內建 1.5s 間隔 + 退避重試,連續 verify 多筆會慢,屬正常);有 key 約 1 req/s。key 免費申請:https://www.semanticscholar.org/product/api
  • Network accessline 35
    - 端點:`https://api.crossref.org/works`
  • Network accessline 44
    - 端點:`https://export.arxiv.org/api/query`,回 Atom XML(腳本已轉 JSON)。
  • Network accessline 109
    - `versions` 的輸入與判定順序:輸入可為 `ARXIV:` 編號(前導空白與結尾的 `vN` 版本後綴先清掉)、DOI(`DOI:` 前綴或直接貼 `https://doi.org/…` 網址皆可)或完整標題。訊號由強到弱:①**S2 版本合併訊號**(S2 對 arXiv 論文的記錄若帶非 10.48550 的 DOI,仍要再向 Crossref 取權威書目覆核):Crossref 查無該 DOI(404,DataCite 的 Zenodo/OSF 之類常見)或
  • Access to secretsline 135
    [Credential-related source omitted]

scripts/_i18n.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 5
    [Credential-related source omitted]
  • Access to secretsline 14
    [Credential-related source omitted]
  • Access to secretsline 15
    [Credential-related source omitted]
  • Access to secretsline 19
    [Credential-related source omitted]
  • Access to secretsline 36
    [Credential-related source omitted]
  • Access to secretsline 37
    [Credential-related source omitted]
  • Access to secretsline 57
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]
  • Access to secretsline 60
    [Credential-related source omitted]
  • Access to secretsline 80
    [Credential-related source omitted]
  • Access to secretsline 81
    [Credential-related source omitted]
  • Access to secretsline 91
    [Credential-related source omitted]
  • Access to secretsline 93
    [Credential-related source omitted]
  • Access to secretsline 99
    [Credential-related source omitted]
  • Access to secretsline 104
    [Credential-related source omitted]

scripts/cite_integrity.py

  • Executable scriptline 1
    #!/usr/bin/env python3

scripts/lit_api.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 14
    [Credential-related source omitted]
  • Access to secretsline 67
    [Credential-related source omitted]
  • Access to secretsline 70
    [Credential-related source omitted]
  • Access to secretsline 71
    [Credential-related source omitted]
  • Access to secretsline 231
    [Credential-related source omitted]
  • Access to secretsline 233
    [Credential-related source omitted]
  • Network accessline 250
    "The link works, but the version may be the author's manuscript rather than the publisher's "               "typeset version; take page numbers for citations from the publisher's version"},     "fulltext.how.publisher": {"zh": "https://doi.
  • Network accessline 251
    "typeset version; take page numbers for citations from the publisher's version"},     "fulltext.how.publisher": {"zh": "https://doi.org/{doi}(出版社頁面,可能需訂閱)",                                "en": "https://doi.org/{doi} (publisher page; may re
  • Network accessline 252
    "fulltext.how.publisher": {"zh": "https://doi.org/{doi}(出版社頁面,可能需訂閱)",
  • Network accessline 253
    "en": "https://doi.org/{doi} (publisher page; may require a subscription)"},
  • Access to secretsline 378
    [Credential-related source omitted]
  • Access to secretsline 380
    [Credential-related source omitted]
  • Access to secretsline 383
    [Credential-related source omitted]
  • Access to secretsline 385
    [Credential-related source omitted]
  • Access to secretsline 415
    [Credential-related source omitted]
  • Access to secretsline 416
    [Credential-related source omitted]
  • Network accessline 466
    S2_BASE = "https://api.semanticscholar.org/graph/v1"
  • Network accessline 467
    S2_FIELDS = "title,abstract,year,authors,venue,externalIds,citationCount,openAccessPdf" CROSSREF_BASE = "https://api.crossref.org" ARXIV_BASE = "https://export.arxiv.org/api/query"
  • Network accessline 468
    CROSSREF_BASE = "https://api.crossref.org"
  • Network accessline 469
    ARXIV_BASE = "https://export.arxiv.org/api/query"
  • Network accessline 470
    OPENALEX_BASE = "https://api.openalex.org"
  • Network accessline 508
    S2_API_PAGE = "https://www.semanticscholar.org/product/api"
  • Access to secretsline 514
    [Credential-related source omitted]
  • Access to secretsline 520
    [Credential-related source omitted]
  • Access to secretsline 525
    [Credential-related source omitted]
  • Network accessline 538
    if wait > 0:         time.sleep(wait)     req = urllib.request.Request(url, data=data,
  • Network accessline 539
    time.sleep(wait)     req = urllib.request.Request(url, data=data,                                  headers=headers or {"User-Agent": "lit-review-skill/1.0"})
  • Network accessline 540
    req = urllib.request.Request(url, data=data,
  • Network accessline 547
    if w > 0:                     time.sleep(w)             with urllib.request.urlopen(req, timeout=SOCKET_TIMEOUT) as r:
  • Network accessline 548
    time.sleep(w)             with urllib.request.urlopen(req, timeout=SOCKET_TIMEOUT) as r:                 return r.read().decode("utf-8", "replace")
  • Network accessline 549
    with urllib.request.urlopen(req, timeout=SOCKET_TIMEOUT) as r:
  • Access to secretsline 582
    [Credential-related source omitted]
  • Access to secretsline 587
    [Credential-related source omitted]
  • Network accessline 632
    for a in w.get("authorships") or []],         "venue": src.get("display_name"),         "doi": (w.get("doi") or "").replace("https://doi.org/", "") or None,
  • Network accessline 633
    "venue": src.get("display_name"),         "doi": (w.get("doi") or "").replace("https://doi.org/", "") or None,         "citationCount": w.get("cited_by_count"),
  • Network accessline 634
    "doi": (w.get("doi") or "").replace("https://doi.org/", "") or None,
  • Access to secretsline 668
    [Credential-related source omitted]
  • Access to secretsline 715
    [Credential-related source omitted]
  • Access to secretsline 742
    [Credential-related source omitted]
  • Network accessline 764
    ATOM = "{http://www.w3.org/2005/Atom}"
  • Network accessline 792
    "authors": [a.findtext(ATOM + "name") for a in e.findall(ATOM + "author")],             "abstract": re.sub(r"\s+", " ", e.findtext(ATOM + "summary") or "").strip(),             "doi": e.findtext("{http://arxiv.org/schemas/atom}doi"),
  • Network accessline 793
    "abstract": re.sub(r"\s+", " ", e.findtext(ATOM + "summary") or "").strip(),             "doi": e.findtext("{http://arxiv.org/schemas/atom}doi"),             "pdf": next((l.get("href") for l in e.findall(ATOM + "link")
  • Network accessline 794
    "doi": e.findtext("{http://arxiv.org/schemas/atom}doi"),
  • Possible obfuscationline 867
    st.text = re.sub(r"[\x00-\x08\x0b\x0c\x0e-\x1f]", "", str(text))
  • Network accessline 899
    styled(rec, "research-notes", notes)         if e.get("doi") or e.get("arxiv"):             url = f"https://doi.org/{e['doi']}" if e.get("doi") else f"https://arxiv.org/abs/{e['arxiv']}"
  • Network accessline 900
    if e.get("doi") or e.get("arxiv"):             url = f"https://doi.org/{e['doi']}" if e.get("doi") else f"https://arxiv.org/abs/{e['arxiv']}"             styled(ET.SubElement(ET.SubElement(rec, "urls"), "related-urls"), "url", url)
  • Network accessline 901
    url = f"https://doi.org/{e['doi']}" if e.get("doi") else f"https://arxiv.org/abs/{e['arxiv']}"
  • Network accessline 908
    """「https://doi.org/10.x/y」「doi:10.x/y」都正規化成「10.x/y」。arXiv 的 doi 欄位與 S2 的
  • Access to secretsline 1235
    [Credential-related source omitted]
  • Network accessline 1242
    else:             try:                 u = (f"https://api.unpaywall.org/v2/{urllib.parse.quote(doi, safe='/')}"
  • Network accessline 1243
    try:                 u = (f"https://api.unpaywall.org/v2/{urllib.parse.quote(doi, safe='/')}"                      f"?email={urllib.parse.quote(mailto)}")
  • Network accessline 1244
    u = (f"https://api.unpaywall.org/v2/{urllib.parse.quote(doi, safe='/')}"
  • Access to secretsline 1304
    [Credential-related source omitted]
  • Network accessline 1530
    都不會變紅,它證明的只是它自己抄對了。     """     # 先把「doi:」與「https://doi.org/」前綴清掉再認:使用者貼的常常就是網址,以前這種輸入
  • Network accessline 1531
    """     # 先把「doi:」與「https://doi.org/」前綴清掉再認:使用者貼的常常就是網址,以前這種輸入     # 不被認成 DOI,整串網址被當成標題去搜,最後落到「請確認輸入為 DOI:x」——把問題推給使用者。
  • Network accessline 1532
    # 先把「doi:」與「https://doi.org/」前綴清掉再認:使用者貼的常常就是網址,以前這種輸入
  • Access to secretsline 1823
    [Credential-related source omitted]
  • Network accessline 2002
    accept = {"ris": "application/x-research-info-systems",                   "bibtex": "application/x-bibtex"}[fmt]         url = "https://doi.org/" + urllib.parse.quote(args.doi, safe="/")
  • Network accessline 2003
    "bibtex": "application/x-bibtex"}[fmt]         url = "https://doi.org/" + urllib.parse.quote(args.doi, safe="/")         headers = {"Accept": accept, "User-Agent": "lit-review-skill/1.0"}
  • Network accessline 2004
    url = "https://doi.org/" + urllib.parse.quote(args.doi, safe="/")
  • Network accessline 2044
    lines = ["TY  - GEN", f"TI  - {p['title']}"]         lines += [f"AU  - {a}" for a in p["authors"]]         lines += [f"PY  - {p['year']}", f"UR  - https://arxiv.org/abs/{p['arxiv']}",
  • Network accessline 2045
    lines += [f"AU  - {a}" for a in p["authors"]]         lines += [f"PY  - {p['year']}", f"UR  - https://arxiv.org/abs/{p['arxiv']}",                   "PB  - arXiv", f"N1  - arXiv:{p['arxiv']} [preprint]"]
  • Network accessline 2046
    lines += [f"PY  - {p['year']}", f"UR  - https://arxiv.org/abs/{p['arxiv']}",
  • Network accessline 2056
    print(f"@misc{{{key},\n  title={{{p['title']}}},\n  author={{{authors}}},\n"               f"  year={{{p['year']}}},\n  eprint={{{p['arxiv']}}},\n"               f"  archivePrefix={{arXiv}},\n  url={{https://arxiv.org/abs/{p['arxiv']}}}\n}}
  • Network accessline 2058
    f"  archivePrefix={{arXiv}},\n  url={{https://arxiv.org/abs/{p['arxiv']}}}\n}}")
  • Access to secretsline 2164
    [Credential-related source omitted]

scripts/package_skill.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 27
    [Credential-related source omitted]
  • Access to secretsline 51
    [Credential-related source omitted]

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 9 facts
  • Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionassets/gen_diagram.py:108High confidence
  • Contacts schemas.openxmlformats.org, which SKILL.md, the README and the plugin manifest do not mentionevals/make_fixtures.py:20High confidence
  • Contacts schemas.openxml, which SKILL.md, the README and the plugin manifest do not mentionevals/make_fixtures.py:30High confidence
  • Contacts api.crossref.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/lit_api.py:468High confidence
  • Contacts export.arxiv.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/lit_api.py:469High confidence
  • Contacts api.openalex.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/lit_api.py:470High confidence
  • Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/lit_api.py:764High confidence
  • Contacts arxiv.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/lit_api.py:794High confidence
  • Contacts api.unpaywall.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/lit_api.py:1244High confidence
Signal confidence: 276 facts

and 226 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/plugin.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.