Reads an academic paper end to end and produces two files — a reader-friendly overview (`<paper_name>-overview.md`) and a mathematically rigorous deep read (`<paper_name>-output.md`) with zero logical jumps. Use ONLY when the user explicitly invokes `/read-paper`, `/paper-reader`, or says "read this paper", "解析这篇文章", "读这篇论文". Never auto-trigger from keywords alone. The skill orchestrates eight sub-skills (pdf-ingest, prereq-probe, paper-overview, contrib-extract, pipeline-walk, math-explain, zero-jump-check, concise-complete) in a strict protocol: ingest → prereq probe → overview → chunk-by-chunk deep read with visible per-chunk self-checks.
Read an academic paper and produce two markdown files:
<paper_name>-overview.md — a reader-friendly eight-section overview (via paper-overview sub-skill).<paper_name>-output.md — a mathematically rigorous deep read with chunk-by-chunk self-checks.The deep-read output file <paper_name>-output.md:
where ... is ... block, term-by-term dissection, explicit assumptions, and an approximation audit.Default output language is English. If the user writes the request in another language or explicitly asks for a language, follow the user.
Command-only. Activate ONLY on explicit user invocation (/read-paper, /paper-reader, "read this paper", "解析这篇文章", "读这篇论文"). Do NOT auto-activate just because a PDF is in the conversation — the user has to ask.
Load each sub-skill's SKILL.md from ~/.claude/skills/<name>/SKILL.md the first time you need it in a run. The sub-skills are independent — any of them can also be called directly by the user in any other context.
| Sub-skill | Path | Role here |
|---|---|---|
pdf-ingest | ~/.claude/skills/pdf-ingest/SKILL.md | Step 1: dual-channel extraction from the PDF. |
prereq-probe | ~/.claude/skills/prereq-probe/SKILL.md | Step 1.2: scan for non-universal prerequisites, probe user knowledge, write knowledge_map. |
paper-overview | ~/.claude/skills/paper-overview/SKILL.md | Step 1.5: eight-section reader-friendly overview (written before the deep read). |
contrib-extract | ~/.claude/skills/contrib-extract/SKILL.md | Step 2: one chunk per contribution, novelty-focused. |
pipeline-walk | ~/.claude/skills/pipeline-walk/SKILL.md | Step 3: one chunk per pipeline stage, in the paper's own order. |
math-explain | ~/.claude/skills/math-explain/SKILL.md | Per-chunk check #1: intra-formula rigor (the five-item checklist). |
zero-jump-check | ~/.claude/skills/zero-jump-check/SKILL.md | Per-chunk check #2: inter-formula continuity. |
concise-complete | ~/.claude/skills/concise-complete/SKILL.md | Per-chunk check #3: information-entropy maximization without loss. |
paper_name to the PDF basename without extension (e.g. 2501.11873v2.pdf → paper_name = 2501.11873v2).paper_name from the paper title (short, lowercase, hyphenated).<paper_name>-output.md in the current working directory.<paper_name>_temp/ in the current working directory.If the input is a PDF: run bash ~/.claude/skills/pdf-ingest/scripts/ingest.sh <paper>.pdf. This produces <paper_name>_temp/text.txt and <paper_name>_temp/page-NN.png. Do not begin explanation until both channels exist.
If the input is already text, create the temp dir yourself and dump the text into <paper_name>_temp/text.txt. No image channel in that case — note this in the output file and rely on the text alone.
After ingestion and before the overview, scan the paper for non-universal prerequisite concepts and map the user's knowledge.
~/.claude/skills/prereq-probe/SKILL.md.<paper_name>_temp/knowledge_map.md already exists, skip to step 4 — do not re-ask the user.text.txt (max 7).AskUserQuestion to probe user knowledge top-down (cascade infers dependents automatically).<paper_name>_temp/knowledge_map.md.knowledge_map.md into working memory. All subsequent writing steps consult this map to control expansion depth.Why before the overview: The overview (Step 1.5) already needs to decide how deeply to explain background concepts. If the overview is written before knowledge is mapped, it must guess the reader's level — and guessing wrong produces either a bloated tutorial or an incomprehensible summary.
What happens if there are no non-universal concepts: Skip the AskUserQuestion phase. Write an empty knowledge_map (just the header) and continue. Do not ask the user pointless questions.
After ingestion and before the deep read, produce a reader-friendly overview of the entire paper by invoking paper-overview. This step:
~/.claude/skills/paper-overview/SKILL.md.<paper_name>_temp/text.txt or the arxiv read result), write <paper_name>-overview.md following paper-overview's eight-section structure and lightweight self-checks.<paper_name>-output.md.Why this step exists: The overview builds a global map of the paper (problem context, key concepts with analogies, structured Before/After comparisons, experiment tables) before the chunk-by-chunk deep read begins. This global map serves two purposes:
During chunk-by-chunk writing (Step 3): When writing contribution or pipeline chunks, you may reference the overview file for:
old-vs-new blocks should be consistent with the overview's, but more detailed).Do NOT copy-paste from the overview into the output. The output must stand alone — but the overview informs its writing.
Read text.txt (fast scan: abstract, introduction, method headings, conclusion). Produce an ordered list:
contrib-extract.pipeline-walk.Write this list at the top of <paper_name>-output.md as a visible table of contents so the reader knows what is coming.
For each chunk in order:
Write the chunk. Use contrib-extract for contribution chunks or pipeline-walk for pipeline chunks. Append the chunk to <paper_name>-output.md — never overwrite existing chunks. Before writing any non-universal concept, look it up in knowledge_map.md and apply the expansion rule: known → one-line reference; partial → definition + intuition + one formula; unknown → full canonical-form derivation chain. If the concept is not in knowledge_map, treat it as unknown.
Verify formulas against the image channel. For every equation you wrote, open the corresponding page-NN.png with the Read tool and verify the symbols/subscripts. If the text channel mangled anything, correct it using the image as ground truth.
Source-fidelity check. Re-read the corresponding section(s) of the paper paragraph by paragraph. Verify that every design decision, design rationale, quantitative specific, hyperparameter-to-hypothesis mapping, and contrast-with-standard-practice in the paper is present in the chunk. If anything is missing, add it to the chunk now, before running the self-checks. (See contrib-extract's source-fidelity check section for the full checklist.)
Recursive self-check loop. Run all three self-checks on the chunk. If any check triggers a modification, re-run ALL three checks on the modified chunk. Repeat until a full pass produces zero modifications. The reason for re-running all three: a zero-jump-check patch may insert new formulas that need math-explain treatment; a math-explain expansion may add text that needs concise-complete pruning; a concise-complete rewrite may create a new seam that zero-jump-check must audit.
LOOP:
modified = false
(a) math-explain checklist — every formula has canonical-form derivation
(including the non-universal-concept chain: if a concept like SAE is
used, verify it was derived from a known parent before first use),
self-contained `where` block, term-by-term insight, explicit assumptions,
approximation audit, paper equation number cited.
→ If any formula fails: expand the chunk. Set modified = true.
(b) zero-jump-check — every seam inside the chunk AND the seam from the
previous chunk to this one, INCLUDING concept-prerequisite gaps
(a concept used but never introduced from known foundations).
→ If any jump found: insert intermediate steps. Set modified = true.
(c) concise-complete — every sentence minimal, no filler, no ambiguous
pronouns, all subjects/verbs/objects intact.
→ If any sentence rewritten: set modified = true.
IF modified → go to LOOP
ELSE → all checks pass, exit loop
Show the self-check pass to the user. Append a short "self-check pass" block under the chunk listing what was found and what was fixed in each iteration of the loop. The user must see the work. If the loop ran more than one iteration, show each iteration's findings. Empty passes (nothing to fix) are still listed as "no issues".
Append only. If a later chunk reveals a problem in an earlier chunk, do NOT silently rewrite the earlier chunk. Append a clearly-marked correction block at the end of the affected chunk.
When every chunk has been written and passed all three self-checks, tell the user:
<paper_name>-overview.md) — the quick-read version.<paper_name>-output.md) — the formula-level version.<paper_name>_temp/) and that it may be kept or deleted.Answer follow-up questions from the user using the same four-ingredient + zero-jump + concise-complete rules. Follow-ups are not exempt.
# <Paper title (always in the paper's original language — never translate)> — paper-reader output
<optional one-line citation>
## Table of contents
- Contributions
- C1: ...
- C2: ...
- Pipeline
- Stage 1: ...
- Stage 2: ...
- ...
## Contributions
### C1: <headline>
<contrib-extract block: motivation / intuition+scenario / core formula with full math-explain treatment>
_self-check pass (C1):_
- math-explain: ...
- zero-jump-check: ...
- concise-complete: ...
### C2: ...
## Pipeline
### Stage 1: <name>
<pipeline-walk block: motivation / intuition+scenario / canonical-form-first derivation / term dissection / bridge to next stage>
_self-check pass (Stage 1):_
- math-explain: ...
- zero-jump-check: ...
- concise-complete: ...
### Stage 2: ...
knowledge_map.md before writing. Apply the expansion rule from prereq-probe: known → one-line reference; partial → definition + intuition + one formula; unknown → full canonical-form derivation chain. Never write a full derivation for a concept the user already knows, and never skip one for a concept they do not.pdftotext output for an equation you haven't cross-referenced against the page PNG.Each rule exists because skipping it produces a specific, visible failure: