zotero-keeper-harness

zotero-keeper-harness is a skill for Claude Code, Codex from u9401066/rootcause-mcp. It costs 48 tokens per session (650 once invoked), scanned A, original, Apache-2.0.

A Cline testing and release guide for Zotero Keeper, a Zotero research-library tool, and its bundled VS Code extension. It also covers a PubMed search component and VSIX packages, which are installable VS Code extensions.

In plain words
What is it for?
Use it to run the full checks, tests, linting, type checks, extension compilation, packaging, and release workflows for Zotero Keeper.
Why use it?
It provides a defined workflow for making scoped changes and checking that the Python package, extension, tests, and release package still work together.

Skill for Claude CodeCodex

Which agent this was written for is unclear — built for cline. Also seen: reads .claude/ paths; built for cline.

Good fit Use it to run the full checks, tests, linting, type checks, extension compilation, packaging, and release workflows for Zotero Keeper.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/u9401066/rootcause-mcp/zotero-keeper-harness
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 u9401066/rootcause-mcp --skill zotero-keeper-harness
Clone the repo
git clone --depth 1 https://github.com/u9401066/rootcause-mcp

Made for: Claude Code, Codex.

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 zotero-keeper-harness

README.md
[![agentmods](https://agentmods.dev/badge/skills/u9401066/rootcause-mcp/zotero-keeper-harness/github.svg)](https://agentmods.dev/skills/u9401066/rootcause-mcp/zotero-keeper-harness)
Your own site
<a href="https://agentmods.dev/skills/u9401066/rootcause-mcp/zotero-keeper-harness"><img src="https://agentmods.dev/badge/skills/u9401066/rootcause-mcp/zotero-keeper-harness/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 zotero-keeper-harness

Your own site · 80×15
<a href="https://agentmods.dev/skills/u9401066/rootcause-mcp/zotero-keeper-harness"><img src="https://agentmods.dev/badge/skills/u9401066/rootcause-mcp/zotero-keeper-harness.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 48 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 650 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.00048 $0.00650
Opus 5 $0.00024 $0.00325
Sonnet 5 $0.00010 $0.00130
Haiku 4.5 $0.00005 $0.00065

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

Security

Grade A, and why

zotero-keeper-harness 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 10d 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.

.cline/skills/zotero-keeper-harness/SKILL.md · 51 lines

How it starts

The opening of the file, as written. The whole thing — 51 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Zotero Keeper: Cline Harness Skill

Use this skill when working in this repository with Cline and you need the reliable loop: understand the Zotero/PubMed boundary, make a scoped change, verify it, and keep the VSIX install path healthy.

What To Use First

  • Rules: .clinerules/
  • Workflows: .clinerules/workflows/
    • Run /zotero-full-check.md for local gates.
    • Run /zotero-release-publish.md for a guided extension release.
    • Run /zotero-skills-audit.md after changing skills or rules.
  • Existing skills: .claude/skills/
    • If a .claude/skills instruction conflicts with current repo behavior, prefer .clinerules/.

Canonical Commands

  • Keeper Python package: cd mcp-server && uv run pytest
  • Keeper lint/type smoke: cd mcp-server && uv run ruff check . && uv run mypy src --ignore-missing-imports
  • Extension: cd vscode-extension && npm run sync-assets && npm run compile && npm test
  • VSIX package smoke: cd vscode-extension && npm run package
  • PubMed submodule smoke: cd external/pubmed-search-mcp && uv run pytest tests/test_mcp_server.py tests/test_settings.py

Product Guardrails

  • Keep Keeper 2.x and PubMed Search MCP 0.6.x on the same MCP SDK v2 runtime; managed-environment upgrades must resolve both packages together.
  • Keep Zotero local-library behavior separate from PubMed literature-search behavior.
  • Use import_articles as the preferred bridge from PubMed results/RIS into Zotero.
  • Require a confirmed collection; set allow_library_root=true only after the user explicitly approves a My Library root import.
  • For Zotero 10+ Local API mutations, first obtain a response-bound server_id from a read or authorization and include it as expected_server_id in the confirm=false preview. Execute the unchanged proposal only after approval; every confirmed mutation requires that identity, and a changed authorization identity requires a fresh read, preview, and approval.
  • Use a response-bound item object version for update_item_fields; use the response-bound library cursor for set_attachment_fulltext. Never substitute the attachment object version or replay a 412 conflict.
  • Keep port 23119 on loopback and the Local API key private. Require authorize_local_writes(require_remembered=true) plus Always Allow before attach_file_to_item.
  • Do not bypass the NCBI email policy; use explicit settings or the git email fallback.
  • Treat VSIX install as a first-class path: bundled repo assets must be synced before compile/package.

Read the full file on GitHub · 51 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. 10d ago First seen · 51 lines · 48 tokens per session scan A f146e47ec259

Subscribe to this mod's changes

zotero-keeper-harness is a skill published in the GitHub repository u9401066/rootcause-mcp (0 stars, last pushed 8d ago), licensed Apache-2.0. It adds 48 tokens to every session and 650 once invoked, about $0.0002 per session on Opus 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-08-31.

Related

Other skills, from other repositories

evaluating-with-leakage-gates

Evaluate an OpenMed de-identification or clinical NER model against the leakage-first release gates G1a through G8, which gate releases on residual PHI leakage rather than on F1. Use when the user wants to run the OpenMed eval harness on a synthetic golden set, decide whether a de-id model is RELEASABLE or…

maziyarpanahi/openmed · 158 tokens

gating-deid-leakage

Add a CI gate that fails the build when an OpenMed de-identification model's recall on a held-out PHI set drops below threshold or any critical identifier leaks. Use when the user wants a pytest test or CLI step that exits nonzero on de-id regression, wants to wire OpenMed's leakage-first release gates into GitHub…

maziyarpanahi/openmed · 152 tokens

building-gold-corpus

Scaffold a synthetic gold-standard annotation project for evaluating OpenMed NER and de-identification models — label schema, annotation guidelines, BRAT or Label Studio config, and disjoint train/dev/test splits. Use when the user wants to create eval fixtures, set up annotation, define a label set, write guidelines…

maziyarpanahi/openmed · 159 tokens

testing

TDD/BDD testing principles. Use when writing tests, reviewing test coverage, setting up testing, or discussing test strategy and test architecture.

TheBeardedBearSAS/claude-craft · 30 tokens

testing-flutter

Testing Flutter 3.44 / BLoC v9 / Riverpod 3 - Stratégie Complète. Use when writing tests, reviewing test coverage, or setting up testing.

TheBeardedBearSAS/claude-craft · 42 tokens

mutation-testing

Use when running mutation testing, killing mutants, verifying test quality, checking mutation score, or analyzing survivors after the test baseline is green.

SebastienDegodez/copilot-instructions · 29 tokens