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
| Package | Version | Source | Known vuln | Notes |
| 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
29 files · 462.0 KB · 8940 lines
Python 4f · 7138LMarkdown 16f · 1529LJSON 5f · 229LTOML 1f · 22LShell 1f · 19LCSV 1f · 2LText 1f · 1L
├─
▾
📁
docs
│ └─
📝
best-practices.md
Markdown
51L · 2.5 KB
├─
▾
📁
examples
│ ├─
▾
📁
end-to-end
│ │ ├─
▾
📁
exports
│ │ │ ├─
📄
report.csv
CSV
2L · 563 B
│ │ │ └─
📄
report_GB-T7714.txt
Text
1L · 156 B
│ │ ├─
📝
README.md
Markdown
23L · 1.2 KB
│ │ ├─
📝
paper_excerpt.md
Markdown
1L · 56 B
│ │ ├─
📋
report.json
JSON
145L · 4.9 KB
│ │ ├─
📝
report.md
Markdown
45L · 3.0 KB
│ │ └─
📋
research_refs.json
JSON
1L · 453 B
│ ├─
📋
demo_refs.json
JSON
10L · 1.7 KB
│ └─
📋
medical_refs.json
JSON
68L · 2.6 KB
├─
▾
📁
mcp
│ ├─
📝
MCP_SUBMISSION.md
Markdown
40L · 2.4 KB
│ ├─
📝
README.md
Markdown
109L · 3.7 KB
│ ├─
📄
pyproject.toml
TOML
22L · 771 B
│ ├─
🐍
server.py
Python
264L · 12.8 KB
│ ├─
🔧
sync_engine.sh
Shell
19L · 919 B
│ └─
🐍
verify_refs.py
Python
3381L · 174.3 KB
├─
▾
📁
references
│ ├─
📝
INDEX.md
Markdown
13L · 866 B
│ ├─
📝
anti-patterns.md
Markdown
26L · 1.8 KB
│ ├─
📝
competitive-landscape.md
Markdown
128L · 8.3 KB
│ ├─
📝
faq.md
Markdown
130L · 8.3 KB
│ ├─
📝
medical-mode.md
Markdown
64L · 3.4 KB
│ ├─
📝
report-template.md
Markdown
88L · 3.6 KB
│ ├─
📝
search-strategies.md
Markdown
60L · 3.0 KB
│ └─
📝
verification-details.md
Markdown
185L · 10.9 KB
├─
▾
📁
scripts
│ └─
🐍
verify_refs.py
Python
3381L · 174.3 KB
├─
▾
📁
tools
│ └─
🐍
agentskills_check.py
Python
112L · 4.4 KB
├─
📝
README.md
Markdown
283L · 15.5 KB
├─
📝
SKILL.md
Markdown
283L · 15.5 KB
└─
📋
_meta.json
JSON
5L · 130 B
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 仅用于发布链)