VE

verify-translator

Automates the verification of Zotero translators by running linting, tests, and updating metadata before PR submission.

Install

mkdir -p .claude/skills/verify-translator && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/6296" && unzip -o skill.zip -d .claude/skills/verify-translator && rm skill.zip

Installs to .claude/skills/verify-translator

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Verify a Zotero translator after every addition or modification, and before submitting a PR. Runs linting, tests, and metadata updates.
135 charsno explicit “when” trigger
Advanced

Key capabilities

  • Update translator metadata
  • Run linting on translator code
  • Execute headless browser tests
  • Verify Git branch status

How it works

The skill runs automated linting, metadata updates, and headless Chromium tests against live sites to ensure translator quality.

Inputs & outputs

You give it
Translator filename
You get back
Verified translator code and test results

When to use verify-translator

  • Update translator metadata after modifications
  • Run linting on translator code to fix style errors
  • Execute headless tests using Zotero Connector
  • Prepare a branch for a Zotero PR

About this skill

Fetch documentation

Fetch and read:

Update lastUpdated

This must be done every time translator code is modified. Zotero uses lastUpdated to determine when to push updates to users.

node .bin/update-metadata.mjs "<translator filename>"

Lint

npm run lint -- "<translator filename>"

Use --fix for auto-fixable errors. Fix any remaining errors manually.

Run tests

node .bin/run-tests.mjs "<translator filename>"

This launches Chrome with the Zotero Connector extension and runs the translator's test cases against live sites.

Add --headed for any site behind Cloudflare or a similar anti-bot wall — headless Chrome identifies itself as HeadlessChrome and those sites refuse it outright, so every test fails with "Detection failed" for reasons that have nothing to do with the translator. That symptom — all tests failing detection at once, including ones that used to pass — almost always means the wall, not your code. Headed usually loads the same pages with no challenge at all.

All tests must pass. If a test fails:

  1. Read the failure output carefully.
  2. Check whether the target site has changed.
  3. Fix the translator code or update the test case (using create-test skill).
  4. Re-run tests until all pass.

Retire IDs of deleted translators

If this change deletes a translator, or stops using its ID because it was merged into or replaced by another translator, add the ID and a short reason to deleted.txt and increment the number on the file's first line. Both edits are required — clients don't pick up the change without the increment.

Ensure user is working in a Git branch

git branch --show-current

If on master, create a new branch.

Create a PR

Guide the user through creating a PR on https://github.com/zotero/translators. Keep the description concise. Encourage the user to write/review the description.

When not to use it

  • Non-Zotero translator development

Prerequisites

Node.js environmentZotero Connector extensionGit repository access

Limitations

  • All tests must pass
  • Requires manual fix of remaining linting errors

How it compares

It enforces a mandatory verification workflow before PR submission, whereas manual testing might overlook metadata or linting requirements.

Compared to similar skills

verify-translator side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
verify-translator (this skill)14moNo flagsAdvanced
dependency-upgrade265moReviewIntermediate
woocommerce-dev-cycle53moNo flagsIntermediate
lint-and-validate66moReviewBeginner

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry