zotero-library-curator
Sit one layer above the standalone zotero-skills skill. This skill
reads the Zotero library, runs audit + hygiene checks, and emits
preview plans. It does NOT perform the changes itself.
For any actual create / update / delete operation, defer to:
- The standalone
zotero-skillsskill (full CRUD, dual local/web API routing); or - The
research-hub zoteroCLI (backfill --tags --notes [--apply], etc., which is preview-first by default).
Prerequisite check (do this first)
Reading the Zotero library requires a connection. The skill works in two modes:
- Read-only audit / preview — needs either
zotero-skills(Zotero local API) or theresearch-hub zoteroCLI to inspect items. - Apply cleanup — out of scope for this skill; hand the approved plan to
zotero-skillsin a separate mutating task.
Before running, verify at least one read path is callable in the current host:
research-hub doctor 2>/dev/null # if research-hub CLI installed
# Also check the current host's registered skills for zotero-skills.
If neither is available, the user installed only the marketplace
plugin without the CLI and without the standalone zotero-skills
skill. Stop and tell them:
This skill audits a Zotero library, which needs Zotero connectivity via one of:
- The standalone
zotero-skillsskill (handles Zotero local API). Install it through the current host's supported skill installer if absent.- Or the
research-hubCLI:pip install research-hub-pipelineEither path needs Zotero configured (local API on port 23119, or Zotero Web API key). Once one is set up, re-run your audit request.
When to use
Trigger phrases:
- "Audit my Zotero library."
- "Find duplicate DOIs in Zotero."
- "Find Zotero items missing required tags."
- "Propose a tag hygiene cleanup plan."
- "Generate a Zotero cleanup preview before I apply anything."
- "Which Zotero collections are bloated / under-used?"
Not for:
- Adding, editing, or deleting items — defer to
zotero-skillsskill. - Backfilling tags/notes on items already in research-hub clusters —
use
research-hub zotero backfill(already preview-first). - Cluster-level operations — use
research-hub clusterscommands. - Searching the library for a specific paper — use
zotero-skillssearch, not the curator.
Inputs
In priority order:
- research-hub cluster registry (
.research_hub/clusters.yaml) — to know which Zotero collections belong to which research clusters. - Zotero library state via local API (fast, read-only) — list
items, list collections, list tags. Use
zotero-skillsREAD Operationspatterns directly; don't reinvent. - research-hub dedup index (
.research_hub/dedup_index.json) — precomputed DOI/title hash table; far cheaper than a fresh scan. - Optional: backfill report from
research-hub zotero backfill(saved to.research_hub/backfill-*.md) — historical state of prior cleanups.
Audit checks
Five checks: duplicate DOI scan, orphan-tag scan, cross-collection cluster mismatch, tag hygiene report, collection bloat / sparsity. Pick the relevant subset for each user request.
Full check details + suggested fixes for each: references/audit-checks.md.
Output discipline
Always emit a preview plan, never apply. The report has 5 sections that map 1:1 onto the audit checks (skip a section if its check returned no findings) plus a "Suggested follow-ups" section listing concrete CLI commands for the user to run.
Full report template: references/report-template.md.
If the report has 0 issues, emit a single OK line and stop.
Token-saving behavior
- Read the dedup index first; only hit the Zotero local API for items not in the index.
- Cap full-library scans at 100 items per audit run unless the user explicitly says "full library".
- Don't quote item titles back if a DOI / Zotero key is enough.
- Cache the report in
.research_hub/curator-<timestamp>.mdif the user asks "save this report".
What NOT to do
- Do NOT call any Zotero create / update / delete endpoint. That's
zotero-skills' or research-hub's job, with explicit user
--apply. - Do NOT rename tags directly — propose, then defer to manual
review or
zotero-skillsbatch update. - Do NOT trash duplicate items automatically — propose, then defer
to
research-hub zotero backfill --applyor manual delete. - Do NOT redocument the zotero-skills CRUD primitives — link to them. The whole point of this skill is to be the layer above.
See also
references/audit-checks.md— full details for each of the 5 audit checksreferences/report-template.md— full curation-report preview template