From arxiv-paper-get
Download arXiv papers — fetches PDF + LaTeX source (.tar.gz), extracts source, creates a local workspace. Use when the user shares an arXiv URL and wants to save the paper locally.
How this skill is triggered — by the user, by Claude, or both
Slash command
/arxiv-paper-get:arxiv-paper-getThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Download an arXiv paper to a local workspace. Fetches **both** PDF and LaTeX source
Download an arXiv paper to a local workspace. Fetches both PDF and LaTeX source
(.tar.gz) in parallel, extracts the source into a source/ subdirectory, and writes
a metadata file + report skeleton.
Trigger when the user sends any of these:
arxiv.org/abs/… or arxiv.org/pdf/… URL2506.01966 or arxiv:2506.01966Do NOT trigger when the user is only asking a question about a paper (e.g., "What does 2506.01966 say about…") without asking to download it.
Before running the workflow, check whether the arxiv-paper-get CLI is installed:
arxiv-paper-get --help
If the command is not found, do NOT proceed silently. Tell the user:
arxiv-paper-getis not installed yet. Install it with:uv tool install git+https://github.com/hao1305430263/arxiv-paper-getThis only needs to be done once — it compiles the Python script into a global command.
After installation, verify with arxiv-paper-get --help and continue.
Once the CLI is confirmed available:
From the user's message, extract the full arXiv URL.
If the user only gives an ID (e.g., 2506.01966), construct the URL:
https://arxiv.org/abs/2506.01966
arxiv-paper-get "https://arxiv.org/abs/XXXX.XXXXX"
The default base directory is ./papers (relative to CWD). To override:
arxiv-paper-get "https://arxiv.org/abs/XXXX.XXXXX" "/path/to/custom/dir"
The command prints a JSON object to stdout on success. Key fields:
| Field | Description |
|---|---|
paper_dir | Path to the paper workspace |
pdf_path | Path to the downloaded PDF (or null) |
source_path | Path to the source tarball (or null) |
source_extract_dir | Path to extracted source, typically paper_dir/source/ (or null) |
report_path | Path to the report skeleton .md |
pdf_ok | true if PDF downloaded successfully |
source_ok | true if LaTeX source downloaded successfully |
source_extracted | true if source was extracted |
After the command finishes, summarize:
📥 Downloaded: {title}
📄 PDF: {pdf_path or "not available"}
📦 Source: {source_extract_dir or "not available"}
📝 Report skeleton: {report_path}
If the source tarball was not available (common for older papers), note it:
LaTeX source is not available for this paper — PDF only.
papers/{Paper Title}/
├── {Paper Title}.pdf # PDF file
├── source/ # Extracted LaTeX source (if available)
│ ├── main.tex
│ └── ...
├── metadata.json # Full paper metadata
└── {Paper Title}_report.md # Report skeleton for note-taking
The LaTeX source tarball is auto-cleaned after successful extraction. If extraction fails, the tarball is kept for manual inspection.
pathlib.Path throughout.
Path-traversal guards use Path.relative_to() for cross-platform safety.arxiv.org and export.arxiv.org.User: download https://arxiv.org/abs/2506.01966
Agent: [checks: arxiv-paper-get --help → OK]
Agent: *runs `arxiv-paper-get "https://arxiv.org/abs/2506.01966"`*
📥 Downloaded: Matrix Is All You Need
📄 PDF: papers/Matrix_Is_All_You_Need/Matrix_Is_All_You_Need.pdf
📦 Source: papers/Matrix_Is_All_You_Need/source/
📝 Report skeleton: papers/Matrix_Is_All_You_Need/Matrix_Is_All_You_Need_report.md
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub hao1305430263/arxiv-paper-get --plugin arxiv-paper-get