library-upkeep

library-upkeep is a skill for Claude Code from oscardvs/zoteus. It costs 96 tokens per session (889 once invoked), scanned A, original, MIT.

A guide for adding research papers to Zotero and keeping the library organized. Zotero is a reference manager, and the guide covers identifiers, PDFs, duplicates, metadata, tags, collections, annotations, and restoring deleted items.

In plain words
What is it for?
Use it to import papers by DOI, arXiv ID, ISBN, PMID, URL, BibTeX, or RIS; attach PDFs; merge duplicates; organize collections; and edit or restore items.
Why use it?
It makes library changes deliberate by showing what will change and requiring confirmation before writes. It also explains which operations need a Zotero API key or the desktop app.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the zoteus plugin — 4 skills, 1 MCP server shipped together

Good fit Use it to import papers by DOI, arXiv ID, ISBN, PMID, URL, BibTeX, or RIS; attach PDFs; merge duplicates; organize collections; and edit or restore items.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/oscardvs/zoteus/library-upkeep
Install

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.

Any agent
npx skills add oscardvs/zoteus --skill library-upkeep
Clone the repo
git clone --depth 1 https://github.com/oscardvs/zoteus

Made for: Claude Code.

Or install zoteus, the plugin that ships this one along with the rest of its 4 skills, 1 MCP server.

Wrote 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.

agentmods badge for library-upkeep

README.md
[![agentmods](https://agentmods.dev/badge/skills/oscardvs/zoteus/library-upkeep/github.svg)](https://agentmods.dev/skills/oscardvs/zoteus/library-upkeep)
Your own site
<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.

agentmods 80×15 button for library-upkeep

Your own site · 80×15
<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>
Per session 96 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 889 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce 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

Measured 25d ago against content hash a1a3849745e3, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

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.

plugins/zoteus/skills/library-upkeep/SKILL.md · 38 lines

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_import with action:"by_identifier", identifier (a DOI, arXiv id, ISBN, PMID or ADS bibcode), save_to_library:true and check_duplicates:true. Add collection_key to file the item at once. Only when the user confirms they want a second copy of a match, save again with allow_duplicate:true.
  • From a web page: zotero_import with action:"by_url". When it returns several choices, let the user pick.
  • From a bibliography file: zotero_import with action:"by_file" and either text (the file's contents) or path. BibTeX, RIS and CSL-JSON are parsed with no network access.
  • Attach the open-access PDF: zotero_attach_file with parent and find_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. Use zotero_manage_collections with action set to "create", "rename", "add_items" or "remove_items".
  • Tags: list them with zotero_list_tags. Use zotero_manage_tags with action:"add" or "remove", tags and item_keys. Tag names are case-sensitive. To check tags against a controlled vocabulary, use zotero_tag_audit.
  • Metadata: zotero_update_item with item_key and a patch of plain field values, for example {"title": "New title"}. Pass dry_run:true first to show the change.
  • Duplicates: zotero_merge_items with master_key and duplicate_keys previews by default. Show the plan field by field, and run it with dry_run:false only 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_annotate with action:"add", parent (the item or its PDF) and annotations, each with type (highlight, underline or note), the exact passage as text, and an optional comment. Take text verbatim from zotero_get_fulltext. No page coordinates are needed.

Read the full file on GitHub · 38 lines

Changes

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.

  1. 25d ago First seen · 38 lines · 96 tokens per session scan A a1a3849745e3

Subscribe to this mod's changes

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.

Related

Other skills, from other repositories

pdf

PDF files: create, read, merge, fill, OCR, edit text.

NousResearch/hermes-agent · 18 tokens

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.

thedotmack/claude-mem · 53 tokens

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.

asgeirtj/system_prompts_leaks · 9 tokens

pdf

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…

asgeirtj/system_prompts_leaks · 92 tokens

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…

asgeirtj/system_prompts_leaks · 84 tokens

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.

asgeirtj/system_prompts_leaks · 40 tokens