zotero-sholar
Analysis
The skill mostly matches its Zotero-saving purpose, but it uses a Zotero API key to write to your library and has weak URL validation before automatically downloading and uploading PDFs.
Findings (4)
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
Checks for instructions or behavior that redirect the agent, misuse tools, execute unexpected code, cascade across systems, exploit user trust, or continue outside the intended task.
if 'arxiv.org' in args.url: ... urllib.request.urlretrieve(pdf_url, pdf_path) ... zot.attachment_simple([pdf_path], item_key)
A user-controlled URL triggers a network download and Zotero upload based only on a substring match, so a crafted URL containing 'arxiv.org' but pointing elsewhere could cause unintended content to be fetched and attached.
dependencies = ["pyzotero>=1.6.0"]
The skill relies on uv to auto-install a version-ranged external dependency when the script is run.
Checks whether tool use, credentials, dependencies, identity, account access, or inter-agent boundaries are broader than the stated purpose.
需要配置 `ZOTERO_CREDENTIALS` 环境变量,格式为 `userID:apiKey`
The skill requires a Zotero user ID and API key, which grants account-level API access needed to create library items.
Checks for exposed credentials, poisoned memory or context, unclear communication boundaries, or sensitive data that could leave the user's control.
note_template['note'] = f"<h3>AI 摘要</h3><p>{args.summary}</p>"AI-generated or user-supplied summary text is saved as a persistent Zotero note.
