Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add oscardvs/zoteus --skill library-upkeepgit clone --depth 1 https://github.com/oscardvs/zoteusWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/oscardvs/zoteus/library-upkeep)<a href="https://agentmods.dev/skills/oscardvs/zoteus/library-upkeep"><img src="https://agentmods.dev/badge/skills/oscardvs/zoteus/library-upkeep/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/oscardvs/zoteus/library-upkeep"><img src="https://agentmods.dev/badge/skills/oscardvs/zoteus/library-upkeep.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00096 | $0.00889 |
| Opus 5.5 | $0.00038 | $0.00356 |
| Sonnet 5.5 | $0.00019 | $0.00178 |
| Haiku 4.5 | $0.00010 | $0.00089 |
Grade A, and why
library-upkeep scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 25d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 38 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Add to and organize the Zotero library
These steps use the Zoteus tools, named zotero_*. They change the user's library, so show what will change and get a yes before every write, and ask again before any change that touches many items.
What needs a Zotero API key
With the Zotero desktop app running, these writes to the personal library need no key: adding items by identifier, attachments, annotations, and trash and restore. The following go to the Zotero cloud and need an API key with write access, set in this plugin's settings:
- metadata edits, tags, collections and saved searches
- every write to a group library
- any write while the desktop app is closed
When a write is refused for lack of a key, say that plainly rather than retrying.
Add papers
- By identifier:
zotero_importwithaction:"by_identifier",identifier(a DOI, arXiv id, ISBN, PMID or ADS bibcode),save_to_library:trueandcheck_duplicates:true. Addcollection_keyto file the item at once. Only when the user confirms they want a second copy of a match, save again withallow_duplicate:true. - From a web page:
zotero_importwithaction:"by_url". When it returns several choices, let the user pick. - From a bibliography file:
zotero_importwithaction:"by_file"and eithertext(the file's contents) orpath. BibTeX, RIS and CSL-JSON are parsed with no network access. - Attach the open-access PDF:
zotero_attach_filewithparentandfind_oa:true. Tell the user which version it found: an accepted manuscript is not the published version of record. When there is no free copy, say so; this is not a way around a paywall.
Organize
- Collections: find keys with
zotero_list_collections. Usezotero_manage_collectionswithactionset to"create","rename","add_items"or"remove_items". - Tags: list them with
zotero_list_tags. Usezotero_manage_tagswithaction:"add"or"remove",tagsanditem_keys. Tag names are case-sensitive. To check tags against a controlled vocabulary, usezotero_tag_audit. - Metadata:
zotero_update_itemwithitem_keyand apatchof plain field values, for example{"title": "New title"}. Passdry_run:truefirst to show the change. - Duplicates:
zotero_merge_itemswithmaster_keyandduplicate_keyspreviews by default. Show the plan field by field, and run it withdry_run:falseonly after the user agrees. It fills only fields the master lacks and moves the emptied copies to the trash. - Highlights and notes on a PDF:
zotero_annotatewithaction:"add",parent(the item or its PDF) andannotations, each withtype(highlight,underlineornote), the exact passage astext, and an optionalcomment. Taketextverbatim fromzotero_get_fulltext. No page coordinates are needed.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 25d ago First seen · 38 lines · 96 tokens per session scan A a1a3849745e3
library-upkeep is a skill published in the GitHub repository oscardvs/zoteus (61 stars, last pushed 3d ago), licensed MIT. It adds 96 tokens to every session and 889 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-28.
Other skills, from other repositories
PDF files: create, read, merge, fill, OCR, edit text.
wowerpoint
Turn one document into a kawaii NotebookLM slide deck. Use for "wowerpoint this", "make a deck about ", "turn this report into slides", or any request to render a single document as shareable narrative slides.
save-as-pdf
Reformat the current HTML design into a paginated, paper-ready PDF. The "Instant" export already gives the user a PDF at the design's native pixel size — this path is for when they want real pages.
Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting/decrypting PDFs, extracting images, and…
docs-artifact
Use when creating, editing, or reviewing a document for the user (Word, Google Docs, or a document delivered as PDF), or when the task calls for a standalone written deliverable such as a memo, report, proposal, or brief. Also use to answer questions that require inspecting an existing document; not for a short chat…
form-filling
Fill out online forms (Google Forms, Typeform and similar) or PDF, Word and DocuSign forms; prepare a reviewable draft and get approval before submitting or sending.