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.zipInstalls 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.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
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:
- https://www.zotero.org/support/_export/raw/dev/translators
- https://www.zotero.org/support/_export/raw/dev/translators/coding
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:
- Read the failure output carefully.
- Check whether the target site has changed.
- Fix the translator code or update the test case (using
create-testskill). - 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
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.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| verify-translator (this skill) | 1 | 4mo | No flags | Advanced |
| dependency-upgrade | 26 | 5mo | Review | Intermediate |
| woocommerce-dev-cycle | 5 | 3mo | No flags | Intermediate |
| lint-and-validate | 6 | 6mo | Review | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
dependency-upgrade
wshobson
Manage major dependency version upgrades with compatibility analysis, staged rollout, and comprehensive testing. Use when upgrading framework versions, updating major dependencies, or managing breaking changes in libraries.
woocommerce-dev-cycle
woocommerce
Run tests, linting, and quality checks for WooCommerce development. Use when running tests, fixing code style, or following the development workflow.
lint-and-validate
davila7
Automatic quality control, linting, and static analysis procedures. Use after every code modification to ensure syntax correctness and project standards. Triggers onKeywords: lint, format, check, validate, types, static analysis.
coverage
alirezarezvani
Analyze test coverage gaps. Use when user says "test coverage", "what's not tested", "coverage gaps", "missing tests", "coverage report", or "what needs testing".
langfuse-core-workflow-b
jeremylongshore
Execute Langfuse secondary workflow: Evaluation and scoring. Use when implementing LLM evaluation, adding user feedback, or setting up automated quality scoring for AI outputs. Trigger with phrases like "langfuse evaluation", "langfuse scoring", "rate llm outputs", "langfuse feedback", "evaluate ai responses".
prowler
prowler-cloud
Main entry point for Prowler development - quick reference for all components. Trigger: General Prowler development questions, project overview, component navigation (NOT PR CI gates or GitHub Actions workflows).