Paper Reading logo

Paper Reading

Community
Immortalqx
paper-reading

Deep, critical paper-reading workflow that produces a structured reading note. Use when the user wants to read, understand, summarize, break down, or take notes on a single research paper. English triggers: "read this paper", "read the paper", "paper reading", "paper notes", "deeply read", "critically read", "summarize this paper", "break down the paper", "explain this paper", "walk me through this paper", "help me understand this paper". Chinese triggers: "读论文", "精读论文", "理解论文", "拆解 论文", "整理论文笔记", "帮我看这篇论文", "分析这篇论文". Also triggers when the user hands over a .pdf, an arXiv URL or ID, or a paper title and asks for deep understanding. NOT for quick one-paragraph overviews (use alphaxiv), broad literature surveys (use research-lit), or simulated peer review (use mock-review).

Overview

PublisherImmortalqx
Repositorymy_codex_skills
Skill namepaper-reading
Stars
56
Forks
0
Bundled files
10
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 10 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by Immortalqx on GitHub. Read the source before you install it.

Installation

Install the Paper Reading AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/Immortalqx/my_codex_skills/tree/main/paper-reading
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/Immortalqx/my_codex_skills.git /tmp/my_codex_skills
mkdir -p .claude/skills
cp -r /tmp/my_codex_skills/paper-reading .claude/skills/paper-reading
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Paper Reading in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Paper Reading on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Paper Reading is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Paper Reading

Paper request: $ARGUMENTS

This skill produces a deep, critical, structured reading note for a single research paper. The note follows a fixed 9-section template, embeds cropped figures from the paper, cites every claim with a numbered reference, and links only to external sources. The final note is written in the same language the user used to invoke the skill unless the user explicitly asks for another language.

Core Boundary

This skill is a personal reading note tool, not a peer review, not a survey, not a quick lookup.

Rules:

  • Read the whole paper, including appendices. A skim of abstract plus experiments is not a reading.
  • Be objective and critical. Quote the paper, do not advertise it. Words like "groundbreaking", "novel", "amazing", "revolutionary" require verifiable evidence and are usually wrong.
  • Every claim must be traceable: cite the section, figure, or table. Every cited paper must have been re-fetched and read in original, not relied on from a secondary summary.
  • Crop figures, do not paste whole pages. A figure that occupies half a page and is mostly whitespace or another figure is not informative. Crop further to the region that carries the argument.
  • Numbered citations [1], [2], etc. The reference list at the end of the note contains only external links (arXiv, DOI, publisher page). No local file paths in the reference list.
  • All downloaded papers live in the project that triggered the skill, never inside this skill's folder. The skill folder is meant to be reusable across projects.
  • The final note is in the user's language. Chinese question -> Chinese note. English question -> English note. Explicit specification -> that specification.

Required Resources

Read these bundled files in this order, before drafting the final note:

  • references/note-template.md - 9-section reading note structure
  • references/benchmark-guard.md - how to verify that each benchmark actually tests what the paper claims
  • references/related-work-schema.md - columns to use in related_work_matrix.md
  • references/critical-reading-checklist.md - objective and critical reading rules
  • references/output-contract.md - non-negotiable output rules: citation style, figure policy, anti-patterns, self-check

Use scripts when available. Each script is self-contained and prints usage on --help:

  • scripts/extract_text.py - extract structured text from the PDF, with === PAGE N === markers
  • scripts/split_sections.py - heuristic section splitter, writes sections.json
  • scripts/render_pages.py - render each PDF page to a PNG, writes pages.json sidecar with the actual page-number width
  • scripts/locate_figures.py - find figure captions and crop the figure body from the rendered page

For page rendering, render_pages.py can also delegate to the pdf skill's converter script if that skill is installed alongside this one. In the standard skills-root layout, the delegate path is ../pdf/scripts/convert_pdf_to_images.py relative to this skill directory. If the installation layout differs, resolve the installed pdf skill directory first and pass its scripts/convert_pdf_to_images.py path to --delegate.

Working Directory Contract

All output lives in the project that triggered the skill, not in the skill folder. Output is split into two locations: human deliverable (the final reading note) and agent scratch (intermediate artifacts). Humans look at the first, the agent owns the second.

Project paper directory (REQUIRED)

Before downloading any PDF, resolve the project paper directory in this order:

  1. If the user names a path (for example "save to references/papers/" or "save to my project's paper drive"), use that path verbatim.
  2. Else, probe the current working directory for an existing paper directory in this order and use the first match:
    • papers/
    • references/papers/
    • docs/papers/
  3. Else, create <cwd>/papers/ and use it.

Record the resolved path in Phase 2 when filling benchmark_audit.md (each row has a local_path column). Never write PDFs into the skill folder.

Working layout

<project_root>/
├── papers/                              <- resolved project paper directory
│   └── <author>__<year>__<slug>.pdf
├── readings/<paper-slug>/               <- HUMAN DELIVERABLE (visible to user)
│   ├── paper_note.md
│   └── figures/
│       └── figure_N.png
└── x_temp/paper-reading/<paper-slug>/   <- AGENT SCRATCH (intermediate only)
    ├── pages/                           <- page_NN.png from render_pages.py
    │   └── pages.json                   <- width sidecar (consumed by locate_figures.py)
    ├── figures/                         <- scratch cropped figure_N.png + figure_N.meta.json
    ├── text/
    │   ├── full.txt                     <- extract_text.py output
    │   └── sections.json                <- split_sections.py output
    ├── benchmark_audit.md               <- Phase 2 output
    └── related_work_matrix.md           <- Phase 3 output

The paper-slug is a filesystem-safe identifier derived from the paper title. Lowercase, alphanumerics and hyphens only.

Where the final note lives

The final paper_note.md lives in <project_root>/readings/<slug>/, not in x_temp/. x_temp/ is agent scratch space; humans do not look there. After Phase 5 synthesis, the agent must write paper_note.md to readings/<slug>/. Any cropped figures referenced by the final note must be copied into readings/<slug>/figures/ so the note stays self-contained. The audit (benchmark_audit.md) and matrix (related_work_matrix.md) stay in x_temp/paper-reading/<slug>/ because they are intermediate artifacts. Create the readings/<slug>/ and readings/<slug>/figures/ directories if they do not exist.

If <project_root>/readings/ already exists with prior notes, append to it. If the user names a different "human deliverable" path, use that path verbatim and skip the readings/ default.

Workflow

The workflow is five sequential phases. Do not skip phases. Do not run phases in parallel: each later phase depends on output from the earlier ones.

Phase 1: Skim and frame the problem

Goal: in plain words, what problem is this paper solving, and what is the problem class it belongs to?

  1. Run extract_text.py <paper.pdf> --output <working>/text/ to produce text/full.txt and text/pages.json.
  2. Run split_sections.py <working>/text/ to produce text/sections.json.
  3. Read in this order: abstract, introduction, related work, experiments.
  4. Write a 1-paragraph "what is this paper about" and a 3-5 bullet list of the paper's claimed contributions. These are intermediate notes; they feed into Phase 5.
  5. Do not yet download benchmark or prior-art papers. Do not yet crop figures. This sub-step is for framing only.
  6. Read 2 foundational works to understand the problem class. Pick from the target paper's related work: one paper that defines the problem class the target paper belongs to (for example, for a VLA paper, RT-2 or OpenVLA), and one that introduces a key dataset or benchmark the target paper uses. Read abstract and introduction only — not the full paper. These two reads are what make §3 of the final note informative; without them, the agent can only paraphrase the target paper's introduction and the note's "what is this problem" section becomes empty.

Phase 2: Benchmark audit

Goal: verify that every benchmark the paper uses actually tests what the paper claims it tests. This guards against the common failure mode where a benchmark designed for task A is borrowed by a paper on task B without explanation.

For each benchmark named in the experiments section:

  1. Find or download the benchmark's original paper into the resolved project paper directory.
  2. Read the original paper's abstract, introduction, and task definition section. Skim the rest.
  3. Fill one row in benchmark_audit.md using the schema in references/benchmark-guard.md.
  4. If a benchmark's original purpose and the way the paper uses it are mismatched, mark the row with mismatch: yes and note the original task vs the paper's task in the cell.
  5. Do not silently accept the paper's framing. If the paper says "we use X for Y" but X was designed for Z, the note must say so.

A benchmark-mismatch warning must appear in paper_note.md section 7 if any row is flagged. See references/benchmark-guard.md for the full audit schema and worked examples.

Phase 3: Prior art and classic works

Goal: understand the lineage of ideas and identify the most classic prior work in the subfield.

  1. From the introduction's related work and the experiments' comparison tables, extract the set of papers the target paper directly compares against. Cap at 15 papers total for this phase. If the paper cites more, pick the 15 that are most central to the paper's claim. (A minimum of 5 keeps the matrix representative; fewer than 5 means the target paper has almost no direct baselines and the matrix will be thin.)
  2. Identify the 1-3 "most classic" works in this subfield (often older, highly-cited, foundational). These may or may not be in the comparison set; include them anyway.
  3. Download each into the project paper directory. Prefer, in order: arXiv, publisher OA, OpenReview, author website, project page. Do not bypass paywalls.
  4. For each, read abstract, introduction, and experiments. Do not read the full paper. The goal is to understand: what problem, what method, what result, why it matters in the lineage.
  5. Save one row per paper to related_work_matrix.md using the columns defined in references/related-work-schema.md.

Phase 4: Deep read and figure capture

Goal: now that benchmarks and prior art are understood, re-read the entire paper carefully and capture every key figure as a cropped image.

  1. Run render_pages.py <paper.pdf> --output <working>/pages/ to produce pages/page_NN.png and pages/pages.json (the sidecar that records the actual page-number width). Use --dpi 150 as a sensible default; bump to 300 if figure text is too small.
  2. Re-read the paper from start to finish: method, experiments, limitations, conclusion, appendix. Earlier reading of benchmarks and prior art makes this re-read substantively deeper than the first skim.
  3. For each Figure N, Table N, or other visually informative element that the note will reference, run locate_figures.py <paper.pdf> --text-dir <working>/text/ --pages-dir <working>/pages/ --output <working>/figures/ --figure N to produce figures/figure_N.png plus figures/figure_N.meta.json.
  4. Visually QA every cropped figure immediately. Open the PNG and confirm:
    • The crop contains the figure body, not just the caption or whitespace.
    • The crop is not clipped at top, bottom, or sides.
    • The figure is readable at note-zoom (text inside the figure is legible).
  5. If a crop is bad, retry with --bbox "x,y,w,h" to specify the crop region manually in PNG pixels. Do not embed a broken figure into the note.

Phase 5: Synthesize the final note

Goal: produce a single paper_note.md that any reader (including the user, six months from now) can use to recall the paper's contribution and the reading session's verdict.

  1. Open references/note-template.md and follow the 9-section structure verbatim. Section order is fixed.
  2. Use numbered citations [1], [2], ... everywhere a paper, book, or report is referenced. Put the reference list at the end of the note; the list contains only external URLs.
  3. Copy every figure that the final note embeds from <working>/figures/ into <project_root>/readings/<slug>/figures/, then insert the copied cropped figures in the section that references them, with ![Figure N: <caption summary>](figures/figure_N.png). Never link to a whole-page render. Never point the final note at x_temp/.
  4. Apply the rules in references/output-contract.md strictly: numbered citations only, external links only in the reference list, no anachronistic critique, no "rather than" sentence pattern, no process narration in the final note.
  5. Apply the rules in references/critical-reading-checklist.md: every claim cites a section, figure, or table; numbers carry units and sample sizes; overclaims are flagged in-line; unevaluated scenarios are noted.
  6. Write the final note in the user's language. If the user asked in Chinese, write Chinese. If in English, write English. The template's section labels can be translated. If the user explicitly specifies a language, use that.
  7. Before declaring done, run the self-check in references/output-contract.md. If any item fails, fix and re-run.

Critical Reading Rules

Read references/critical-reading-checklist.md for the full set. The most important rule in one line:

Authors claim X. Evidence is at section Y / figure Z. Evidence supports claim: yes / no / partial. State the verdict in the note.

Never write a claim without a citation. Never write a number without units and sample size. Never write a critique from a later vocabulary that the early work could not have used. Flag every benchmark that the paper borrows from a mismatched original purpose.

Failure Handling

  • PDF text extraction fails -> fall back to OCR via pdftoppm + tesseract if available, otherwise ask the user for a text version.
  • Benchmark original paper cannot be legally obtained -> record the URL and the source gap in benchmark_audit.md; do not silently treat absence as confirmation.
  • arXiv download fails -> try the publisher's HTML page, OpenReview, or the author's homepage. If none works, record the failure and continue.
  • Figure auto-crop is wrong after one attempt -> re-run locate_figures.py with --bbox "x,y,w,h" to specify the crop manually in PNG pixels. Do not embed a broken figure.
  • A cited paper's external link is dead -> replace with the closest equivalent URL (publisher page, DOI resolver, arXiv abstract page) and note the change in the reference list.
  • The user's request is ambiguous about which paper -> ask one concise question before downloading anything.
  • The paper is in a language the user did not specify -> default to writing the note in that paper's language only if the user agrees.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Paper Reading AI skill do?

Deep, critical paper-reading workflow that produces a structured reading note. Use when the user wants to read, understand, summarize, break down, or take notes on a single research paper. English triggers: "read this paper", "read the paper", "paper reading", "paper notes", "deeply read", "critically read", "summarize this paper", "break down the paper", "explain this paper", "walk me through this paper", "help me understand this paper". Chinese triggers: "读论文", "精读论文", "理解论文", "拆解 论文", "整理论文笔记", "帮我看这篇论文", "分析这篇论文". Also triggers when the user hands over a .pdf, an arXiv URL or ID, or a p...

Why use Paper Reading on TypingMind?

Because you install it once and use it with any model. Paper Reading is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Paper Reading in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Immortalqx/my_codex_skills/tree/main/paper-reading. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Paper Reading?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Paper Reading?

As many as you like. As long as a model supports skills, you can use Paper Reading with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Paper Reading AI skill free?

Yes. It is published on GitHub by Immortalqx under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇