reader CLAUDE.md

Repository instructions for Claude Code, an AI coding assistant, when working on the Jina AI Reader codebase. They describe the repository, its related documentation, and common build, run, and test commands.

In plain words
What is it for?
Explaining the codebase structure, running its build and development commands, and following its testing and contribution workflow.
Why use it?
They give the assistant the project context and the exact commands and rules needed to work safely in the repository.

Instructions file

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.

agentmods
npx agentmods add instructions/jina-ai/reader/claude-md
Clone the repo
git clone --depth 1 https://github.com/jina-ai/reader
Per session 2,542 This file is loaded in full into every session.
When invoked 2,542 The same file — it is already loaded in full.
Security scan A 1 finding. Scan, not verified.
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 $0.02542 $0.02542
Opus 5 $0.01271 $0.01271
Sonnet 5 $0.00508 $0.00508
Haiku 4.5 $0.00254 $0.00254

Measured 3d ago against content hash fac7f3591702, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

reader CLAUDE.md scanned grade A with 1 finding 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 3d 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.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

- Engines (URL→HTML): `puppeteer.ts` (browser), `curl.ts` (curl-impersonate), `cf-browser-rendering.ts`. `auto` is the default and is implemented in `crawler.ts`.
CLAUDE.md · 127 lines

How it starts

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

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Repository identity

This is the oss branch of reader-saas, the codebase behind https://r.jina.ai (URL → markdown) and https://s.jina.ai (search → markdown). It is published to https://github.com/jina-ai/reader. The MongoDB-backed SaaS storage layer is not in this branch — only the stateless and bucket-cached storage modes ship here.

Companion docs in this repo:

  • architecture.md — engines, formatting profiles, abuse mitigation, deployment topology.
  • CONTRIBUTING.md — full env var table, dev workflow, test policy.
  • cookbooks.md — header recipes for common downstream pipelines (RAG, embedding, deep research, uploads, etc.).

Common commands

Build / run:

  • npm run build — runs integrity-check.cjs (requires licensed/GeoLite2-City.mmdb to exist) then tsc -p .. The integrity check is not optional — bare tsc will skip it.
  • npm run build:watch — incremental build for the F5 debug flow.
  • npm start — runs the compiled crawler entrypoint (build/stand-alone/crawl.js).
  • npm run dry-runNODE_ENV=dry-run boots search.js, resolves the DI graph, then exits via finalizer.terminate(). Used in the Dockerfile to warm NODE_COMPILE_CACHE.

Local services (docker compose up -d):

  • minio on :9000 (API) / :9001 (console) — also aliased as minio.dev.jina.ai. Only needed when running with BucketStorageLayer.

VSCode F5 launches Debug Stand Alone Crawl (or Search / SERP), which runs Backend:prepare (docker compose + tsc watch) first. --env-file=.secret.local is loaded by Node directly — that file is gitignored and must be created locally.

Three independent stand-alone servers:

  • build/stand-alone/crawl.js — mounts CrawlerHost (the r.jina.ai surface).
  • build/stand-alone/search.js — mounts SearcherHost. At startup it deletes any registry entries tagged 'crawl', so search and crawl are mutually exclusive on a single process.
  • build/stand-alone/serp.js — SERP-only.

Read the full file on GitHub · 127 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. 3d ago First seen · 127 lines · 2,542 tokens per session scan A fac7f3591702

Subscribe to this mod's changes

reader CLAUDE.md is an instructions file published in the GitHub repository jina-ai/reader (11,943 stars, last pushed 3mo ago), licensed Apache-2.0. It adds 2,542 tokens to every session, about $0.0127 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.