Skill Trust Decision

cite-holmes

cite-holmes 引用验证工具存在多处文档-行为不符:声明纯标准库但 MCP 服务依赖第三方库;声明无 OS 集成但实际调用本地 ollama 和外部裁判端点;声明仅限学术数据库但存在未声明的网络交互。阴影功能占比较高但无恶意证据。

Install decision first Source: ClawHub Scanned: 15 days ago
Files 29
Artifacts 27
Violations 1
Findings 6
Most direct threat evidence

Why this conclusion was reached

1/4 dimensions flagged
Block
Declared vs actual capability

1 undeclared or violating capabilities were inferred.

Review
Hidden execution and egress

27 lower-risk artifacts were extracted and still need context.

Pass
Attack chain and severe findings

There is no explicit malicious chain in the report.

Pass
Dependencies and supply chain hygiene

Dependencies are present but no obvious high-risk issue stands out.

What drove the risk score up

文档-行为不符(未声明的网络交互) +15

SKILL.md 未声明本地 ollama 调用、外部 judge 端点和 NLI 服务

依赖声明不符 +10

SKILL.md 声称 pure stdlib,但 MCP server 依赖 fastmcp 第三方库

磁盘缓存未声明 +5

~/.cache/cite-holmes/ 持久化缓存在文档中未提及

无恶意行为证据 +-5

所有网络交互均为学术验证相关,无凭证收割或数据外泄

Most important evidence

Medium Doc Mismatch

未声明的本地 ollama 调用

代码中存在 _embed_ollama 函数(scripts/verify_refs.py,约 line 2020),调用 http://127.0.0.1:11434/api/embed 用于本地嵌入向量计算,但 SKILL.md 未声明任何本地服务交互。

scripts/verify_refs.py:2028
在 SKILL.md Security 章节补充:'支持可选本地 ollama 服务 (bge-m3 模型) 用于语义段落检索'
Medium Doc Mismatch

未声明的外部 judge 端点调用

judge_claim_via_endpoint 函数支持调用外部 LLM 裁判服务(--judge-url 参数),可连接 OpenAI 兼容端点或 ollama 原生端点,但文档完全未提及此功能。

scripts/verify_refs.py:2120
在 SKILL.md 补充外部裁判端点说明,明确数据流经用户自控端点而非第三方
Medium Doc Mismatch

未声明的外部 NLI 服务调用

nli_vote 函数调用外部 NLI 服务 (--nli-url),用于第三票聚合,但 SKILL.md 未声明此网络交互。

scripts/verify_refs.py:2075
补充 NLI 服务调用说明
Low Supply Chain

第三方依赖未在 SKILL.md 声明

SKILL.md 声称 'pure standard library',但 mcp/server.py 实际依赖 fastmcp>=2.0 (见 mcp/pyproject.toml)。MCP server 功能为可选组件。

mcp/pyproject.toml:14
如使用 MCP server,在 SKILL.md 补充:'可选 MCP server 需要 fastmcp>=2.0'
Low Sensitive Access

磁盘缓存路径未声明

v1.12 引入的持久化 SQLite 缓存存储在 ~/.cache/cite-holmes/,文档中 Security 章节未提及此持久化行为。

scripts/verify_refs.py:1998
在 Security 章节补充:'可选磁盘缓存 (~/.cache/cite-holmes/),可使用 --no-cache 禁用'
Info Doc Mismatch

fast-judge 预筛未声明

v3.5.0 的 fast-judge 预筛功能(--fast-judge-url)未在 SKILL.md 声明。

scripts/verify_refs.py:1968
补充 fast-judge 功能说明

Declared capability vs actual capability

Filesystem Block
Declared NONE
→
Inferred READ
scripts/verify_refs.py:2970+ open()写入用户指定的输出文件;mcp/sync_engine.sh:6 使用 cp 命令
Network Pass
Declared READ
→
Inferred READ
scripts/verify_refs.py:1952+ 调用本地 ollama (http://127.0.0.1:11434);judge_claim_via_endpoint 调用外部 judge_url
Shell Pass
Declared NONE
→
Inferred NONE
mcp/sync_engine.sh 使用 bash,但仅用于发布链同步,非运行时行为

Suspicious artifacts and egress

Medium External URL
https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills

examples/demo_refs.json:2

Medium External URL
https://www.nature.com/articles/d41586-026-00969-z

examples/demo_refs.json:4

Medium External URL
https://skills.sh

examples/demo_refs.json:5

Medium External URL
https://www.firecrawl.dev/blog/best-claude-code-skills

examples/demo_refs.json:6

Medium External URL
https://www.anthropic.com/engineering/agent-skills-adoption-survey-2026

examples/demo_refs.json:8

Medium External URL
https://doi.org/10.1038/nature12373

examples/end-to-end/exports/report.csv:2

Medium External URL
https://doi.org/10.1038/nature12373.

examples/end-to-end/exports/report_GB-T7714.txt:1

Medium External URL
https://skillhub.cn/skills/indiv-sorsor/cite-holmes

examples/end-to-end/report.md:45

Medium External URL
https://pubmed.ncbi.nlm.nih.gov/34971386/

examples/medical_refs.json:27

Medium External URL
https://zhuanlan.zhihu.com/p/000000000

examples/medical_refs.json:61

Medium External URL
https://doi.org/

mcp/verify_refs.py:473

Medium External URL
https://skillhub.cn/skills/cite-holmes

mcp/verify_refs.py:480

Dependencies and supply chain

PackageVersionSourceKnown vulnNotes
fastmcp >=2.0 mcp/pyproject.toml No 仅 MCP server 需要,CLI 独立运行无需此依赖
sqlite3 stdlib Python 标准库 No v1.12 磁盘缓存使用

File composition

29 files · 8940 lines
Python 4 files · 7138 linesMarkdown 16 files · 1529 linesJSON 5 files · 229 linesTOML 1 files · 22 linesShell 1 files · 19 linesCSV 1 files · 2 lines
Files of concern · 3
mcp/verify_refs.py Python · 3381 lines
https://doi.org/ · https://skillhub.cn/skills/cite-holmes · https://api.crossref.org/works/ · https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi · https://arxiv.org/abs/ · http://www.w3.org/2005/Atom · http://arxiv.org/schemas/atom · https://export.arxiv.org/api/query?id_list= · https://archive.org/wayback/available?url= · https://api.openalex.org/works?search= · https://api.semanticscholar.org/graph/v1/paper/DOI: · https://api.semanticscholar.org/graph/v1/paper/search · https://pubmed.ncbi.nlm.nih.gov/ · https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi · https://ar5iv.labs.arxiv.org/html/ · http://127.0.0.1:11434/api/embed
scripts/verify_refs.py Python · 3381 lines
未声明的本地 ollama 调用 · 未声明的外部 judge 端点调用 · 未声明的外部 NLI 服务调用 · 磁盘缓存路径未声明 · fast-judge 预筛未声明
README.md Markdown · 283 lines
Other files · SKILL.md · server.py · verification-details.md · faq.md · competitive-landscape.md · report.json +3

Security positives

SSRF 防护完整(ssrf_blocked 函数阻止内网/环回地址访问)
CSV 公式注入防护(csv_safe 函数)
BibTeX 字段加固(bib_safe 防止 @entry 逃逸)
速率限制完善(NCBI 3rps、arXiv 3s/req、S2 1.5s/req 全局锁)
无凭证收割行为,API key 仅附加到用户自身请求
网络降级模式设计合理(全局降级检测、诚实快速失败)
无 subprocess 运行时调用(sync_engine.sh 仅用于发布链)