shelf-overview
SkillMediaHolistic, quantified quality read of one or more SHELVES (a tradition, a partner's canon, a collection). Stratified random draw, 4 books × 4 pages spread through each book, Opus reviewers reading every page against its image, a show / caveat / don't verdict per book with showcase pages, and per-shelf rates with by-book CIs plus a frame-weighted total. Use when asked "how good is shelf X?", "what can we show <partner>?", "holistic quality review", or "read the books in <tradition>".
Use shelf-overview in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add shelf-overview and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the shelf-overview skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
What this skill tells your AI
The instructions your AI receives, as published by embassy-of-the-free-mind/sourcelibrary-v2 in .claude/skills/shelf-overview/SKILL.md and read by Ahel’s review.
Shelf overview
Why. A partner (Eternity / Francis Pedraza, the Kabbalah Centre, a library) judges us by opening books on the shelves it cares about. This answers two questions with one read: which books and pages can we show, and how often does a page on this shelf carry a serious error (per shelf, with an honest interval). It also feeds the defect register (#6056).
0. Claim and scope
- Comment "taking this: shelf overview of " on #6056 (or the partner's issue).
- Done already, don't redo (
scripts/eval/results/spot-check/overview-2026-10-07/): Tengyur, Nālandā Sanskrit, Chinese (Eternity shelf), Pali, Hebrew (Eternity shelf), Arabic and Persian. - Also done (
overview-2026-10-07-eternity2/): Hindu/Vedanta/Bhakti Sanskrit, Greek+Latin classics, Chan/Zen, Latin Kabbalah, Korean, Japanese. Their keyword frames are in that run'sdraw-log.json(desc+frame_ids). - Mongolian has nothing to read (2026-10-07: 108 Kanjur volumes, all hidden, 0 OCR pages). Re-check before drawing.
- A keyword frame drags in false positives (an author named in a title, a Reuchlin dictionary). Read 15 random titles from each frame before you draw, and tighten the frame rather than redraw after.
1. Define strata → strata.json
[{ "name", "desc", "ids": [book ids] }], one entry per shelf. Build the id lists with a Mongo query and write them
to the scratchpad, not to your context.
- Usual filter:
visible: true, pages_translated ≥ 8. Include hidden books only if the shelf is about to be published (the Tengyur was). - Exclude
hidden_reasonmatching /rights/. - Search the concept, not one word. "Nālandā" means the 17 masters' works, and their Tengyur volumes are titled by volume, not by author.
2. Draw (Mongo read, $0)
node --env-file=.env.production.local scripts/eval/spot-check/overview-draw.mjs --strata <strata.json> --out scripts/eval/results/spot-check/overview-<date>[-<tag>] --seed <YYYYMMDDNN> [--books 4] [--bins 4]
- Each book gets one random translated page from each quarter of the book: start, two middles, end.
- A page number below 1 is itself a finding.
3. Review: one Opus reviewer per stratum, at most 6. Run them from the script, not from this session
scripts/eval/spot-check/run-reviewers.sh <dir>/packets <scratchpad>/overview (add CURATION-ADDENDUM.md as a third
argument for the curation check). It launches the prompt below as headless claude -p --model opus calls in
parallel, retries a call that ends without its file, and writes meta/ with each call's cost. Then run
python3 scripts/eval/spot-check/run-cost.py <scratchpad>/overview.
-
Measured on #6174: $0.15–0.20 per page.
-
Agreement with session-run reviews is the same as two script runs agreeing with each other (κ 0.85–0.92).
-
Run it under
nohup, or as a Hetzner job, and leave this window quiet while it runs. -
Every run rereads one stratum (standing rule, #6174). It costs about $2.50 and builds the reviewer-consistency series:
- Pick one packet at random:
ls <dir>/packets | shuf -n1. - Copy it alone into
<scratchpad>/retest-packets/and run the runner again into<scratchpad>/retest. - Run
review-agreement.py RUN=<scratchpad>/overview RETEST=<scratchpad>/retest > <dir>/agreement.md. The weekly subscription report lists everyagreement.mdon main. - Put the κ in your #6056 line.
A serious-flag κ below 0.7 means the stratum's rate is noise-dominated: say so in the report rather than quote the rate.
- Pick one packet at random:
-
To measure reviewer consistency on a whole new shelf, run it twice and compare with
scripts/eval/spot-check/review-agreement.py A=<dir1>/reviews B=<dir2>/reviews. The pattern is in2026-10-07-script-run-reviewers-6174.md.
Fallback when claude -p is unavailable: the Agent tool with model: "opus", run_in_background: true. The prompt is exactly:
Your instructions are the full text of two files, read in this order and followed exactly (skip the leading
<!-- … -->comments): 1.<repo>/scripts/eval/spot-check/REVIEWER.md2.<repo>/scripts/eval/spot-check/OVERVIEW-ADDENDUM.md. The taxonomy is at<repo>/.claude/docs/page-error-taxonomy.md. PACKET_FILE:<dir>/packets/<stratum>.jsonOUTPUT_FILE:<scratchpad>/overview/<stratum>.json
Rules:
- OUTPUT_FILE goes to the scratchpad. The prior-art hook blocks the Write tool under
scripts/eval/, so copy each file in with Bash afterwards. - Add no hints, and never edit a reviewer's verdicts.
- REVIEWER.md is frozen.
4. Collect and score
cp <scratchpad>/overview/reviews/*.json <dir>/reviews/(run-reviewers.sh writes them underreviews/).- Rights notes stay out of the public repo: first copy the unredacted files to ops
quality-sprint/<dir name>/, then runnode scripts/eval/spot-check/redact-rights.mjs <dir>/reviews/*.json. node --env-file=.env.production.local scripts/eval/spot-check/overview-score.mjs --dir <dir> --meta <scratchpad>/overview/metawritesreport.mdandreport.json, and records onebook_checksrow per book (methodshelf-overview, #6174), each with its share of the reviewers' cost from--meta.- The report gives, per stratum: serious-page rate (95% CI resampled by BOOK), wrong-leaf rate, mean OCR and English scores, books with an on-sight defect, show / caveat / don't, showcase URLs, and a total weighted by frame size.
- With 4 books a stratum, quote the CI, not the point estimate. Never pool strata into one number without saying they are weighted.
5. Act (cheap, reversible, inside the spend floor)
do_not_showbecause the text is invented or not on the leaf: hide it withscripts/maintenance/hide-named-books.mjs(reasonbroken_text_<issue>) and hold it withholdBook()fromscripts/lib/pipeline-hold.mjs, stating a release condition.do_not_showfor rights: do not hide on a reviewer's hunch. Note it in the opsrights-screen/and ask Derek.- Metadata errors (author, date, duplicate record) and recurring classes: comment on the class issue, or
gh issue list --searchbefore filing a new one. - A class counts as general only when 3 or more DISTINCT books carry it. Then it needs a model-free detector with
a positive control (
scripts/audit/quality-sprint-classes.mjshas the pattern).
6. Report
- One line on #6056: strata, weighted rate, show/caveat/don't counts, and the PR.
- Showcase pages are partner-facing: list them for Derek. Nothing goes to the partner without Derek's eye
(
feedback_demo_links_checked_by_eye: open two pages yourself first). - Commit
<dir>and open a PR (tier:autoexpected).
Budget: 6 Opus reviewers for 96 pages ≈ $15–19 API-equivalent, about 0.6–0.75 of a weekly point (#6174), $0 API. Stay within 8 agents a session.
Hand-picked variant: the curation check (a worklist, NOT a rate)
Use this when the question is only "which of THESE books can we show ?" and someone has already chosen the
books for interest. First run: Eternity, 107 books, 2026-10-06
(scripts/eval/experiments/2026-10-06-eternity-shelf-review.md). It shares this skill's tools and differs in three ways:
- Pick, don't draw.
strata.jsonlists the chosen ids per tradition ("id"or"id:page"). Runoverview-draw.mjs --picked --strata … --out scripts/eval/results/spot-check/curation-<date>-<tag>: every id is taken, with two consecutive mid-book pages. Finding candidates is a Mongo query per language (public, mostly translated, sorted byread_count), written to the scratchpad. - Reviewer brief: REVIEWER.md, then
scripts/eval/spot-check/CURATION-ADDENDUM.md(not the overview addendum). One Opus reviewer per tradition; each writes<scratchpad>/curation/<tradition>.json, an array of{ book_id, tier, title, note, interest }. Copy them to<dir>/verdicts/with Bash; rights notes go to ops only. - No score.
overview-score.mjsrefuses a--pickedrun. The verdicts go to a PRIVATE collection, where the person choosing what to show opens them:curation-shelf.mjs --slug <private collection> --verdicts <dir>/verdicts [--apply](dry run by default; it refuses a public collection).--listprints the shelf.
Never quote its tier shares as quality: the books were chosen, two pages were read, and a tier-1 book can still hold bad pages. For a number, run the random draw above. What the curation check is good for is the worklist and new defect classes; a class still needs 3 distinct books and a detector (step 5) before it counts as general.
Signals
- GitHub stars
- 21
- Forks
- 4
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
shelf-overview- Source
- github.com/embassy-of-the-free-mind/sourcelibrary-v2
github.com/embassy-of-the-free-mind/sourcelibrary-v2