Use this skill when the user wants to read, study, analyze, or deeply understand a research paper (PDF).
npx skills add https://github.com/alaliqing/claude-paper --skill claude-paper-study
> This file is generated from the existing Claude Paper Skill. Its workflow and output requirements are unchanged; only equivalent host metadata, the plugin-root variable, and cross-skill invocation are adapted.
Resolve CLAUDE_PAPER_PLUGIN_ROOT to the absolute plugin/ directory in this package before each shell invocation. From this SKILL.md, that directory is ../../plugin.
Treat every ${CLAUDE_PAPER_PLUGIN_ROOT} reference below as that resolved absolute directory. Do not substitute the current workspace root.
When this workflow asks to launch the viewer, load and follow the claude-paper-webui skill.
Invoke this skill with a paper PDF path.
Language Detection: Detect the user's language from their input and generate ALL materials in that language.
Primary Objective:
Facilitate deep conceptual understanding and research-level thinking.
Secondary Objective:
Create a structured, reusable paper knowledge system.
This workflow is not just for summarizing — it builds a learning environment around the paper.
if [ ! -f "${CLAUDE_PAPER_PLUGIN_ROOT}/.installed" ]; then
echo "First run - installing dependencies..."
cd "${CLAUDE_PAPER_PLUGIN_ROOT}"
npm install || exit 1
# Install Python dependencies for image extraction
python3 -m pip install pymupdf --user 2>/dev/null || pip3 install pymupdf --user 2>/dev/null || echo "Warning: Failed to install pymupdf"
touch "${CLAUDE_PAPER_PLUGIN_ROOT}/.installed"
echo "Dependencies installed!"
fi
Recommended:
Supports multiple input formats:
~/Downloads/paper.pdfhttps://arxiv.org/pdf/1706.03762.pdfhttps://arxiv.org/abs/1706.03762USER_INPUT="<user-input>"
# Check if input is a URL (starts with http:// or https://)
if [[ "$USER_INPUT" =~ ^https?:// ]]; then
# Download PDF from URL
INPUT_PATH=$(node ${CLAUDE_PAPER_PLUGIN_ROOT}/skills/study/scripts/download-pdf.cjs "$USER_INPUT")
else
# Use local path directly
INPUT_PATH="$USER_INPUT"
fi
For URLs, the download script will:
/tmp/claude-paper-downloads//abs/ URLs to PDF URLs automaticallyFor local paths, use the path directly without downloading.
Extract structured information:
PARSE_OUTPUT_DIR=$(mktemp -d)
node ${CLAUDE_PAPER_PLUGIN_ROOT}/skills/study/scripts/parse-pdf.js \
"$INPUT_PATH" \
--output-dir "$PARSE_OUTPUT_DIR"
The command prints a small, strict JSON summary to stdout and writes:
meta.json — title, authors, abstract, links, page count, and a context-safe content previewpaper.txt — complete extracted text without the 50k preview limitUse paper.txt as the source for generating materials. Search it and read relevant sections as needed; do not treat meta.json.content as the complete paper when contentTruncated is true.
After choosing {paper-slug}, create the paper directory and copy both parser artifacts plus the original PDF:
mkdir -p ~/claude-papers/papers/{paper-slug}
cp "<metaPath-from-parser-output>" ~/claude-papers/papers/{paper-slug}/meta.json
cp "<fullTextPath-from-parser-output>" ~/claude-papers/papers/{paper-slug}/paper.txt
cp "$INPUT_PATH" ~/claude-papers/papers/{paper-slug}/paper.pdf
Generate exactly 2 tags in Step 2.5 and add them to the saved meta.json.
Fallback:
If structured parsing fails, extract raw text and continue with degraded structure.
Before generating any files, evaluate:
This assessment determines:
Before generating files, infer exactly 2 tags from semantic understanding of the paper.
Rules:
paper, research, ai, mlExamples:
machine translation, self-attention3d detection, bev transformerprotein folding, structure predictionPersist these 2 tags in both locations:
~/claude-papers/papers/{paper-slug}/meta.json as tags~/claude-papers/index.json entry as tagsCreate folder:
~/claude-papers/papers/{paper-slug}/
15 questions:
Use this format:
### Question
<details>
<summary>Answer</summary>
Detailed explanation.
</details>
---
Include:
At least one runnable demo must be created.
All code demos must be placed in:
~/claude-papers/papers/{paper-slug}/code/
Create the code directory first:
mkdir -p ~/claude-papers/papers/{paper-slug}/code
Guidelines:
Possible types:
Name descriptively:
Avoid generic names.
Create a single self-contained HTML file for interactively exploring the paper's core concepts.
Output path:
~/claude-papers/papers/{paper-slug}/index.html
Choose the interaction pattern that best fits the paper — architecture diagrams, parameter explorers, result dashboards, formula breakdowns, comparison matrices, etc. Let the paper's content dictate the format rather than forcing a fixed layout, focusing on the core ideas of the paper.
Every interactive control (slider, toggle, dropdown) should visibly change the visualization. Include brief explanatory text alongside interactive elements to teach concepts.
mkdir -p ~/claude-papers/papers/{paper-slug}/images
python3 ${CLAUDE_PAPER_PLUGIN_ROOT}/skills/study/scripts/extract-images.py \
paper.pdf \
~/claude-papers/papers/{paper-slug}/images
Rename key images descriptively:
CRITICAL: Read existing index.json first, then append the new paper. Never overwrite the entire file.
If index.json does not exist, create:
{"papers": []}
Append new entry to the papers array:
{
"id": "paper-slug",
"title": "Paper Title",
"slug": "paper-slug",
"authors": ["Author 1", "Author 2"],
"abstract": "Paper abstract...",
"year": 2024,
"date": "2024-01-01",
"tags": ["tag-1", "tag-2"],
"githubLinks": ["https://github.com/..."],
"codeLinks": ["https://..."]
}
IMPORTANT: The index.json file must be located at:
~/claude-papers/index.json
Load and follow the claude-paper-webui skill.
After all files are generated:
Generate a new file inside the same folder:
Examples:
If iterated:
Create:
This makes the paper folder a growing knowledge node.
Take alaliqing/claude-paper-study from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip, npm.
Without those the skill loads but fails at the first command.