Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Workflow for updating the LLM landscape paper pool (section/x_llm_papers.md) using fetch_llm_papers.py. Covers full re-fetch, resume from checkpoint, and adding new topics. USE FOR: Refreshing citation counts, expanding topic coverage. DO NOT USE FOR: Adding hand-curated entries to section files (use add-new-entry-from-temp-md), updating RAG/Agent citation sections in best_practices.md (use update-cite-count).
.claude/skills/kimtth-fetch-llm-papers/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 61% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 232% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 74% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 229% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 94% | 0% |
The pool file section/x_llm_papers.md is a compact list of high-citation CS papers covering the LLM landscape, fetched from the Semantic Scholar API and ranked by citation count. It includes a topic coverage summary and per-paper topic tags. It is generated and maintained by code/fetch_llm_papers.py.
The section ### **LLM Research (Ranked by cite count >=150)** in section/models_research.md links to this file with a single descriptive line.
Script: code/fetch_llm_papers.py Python env: .venv\Scripts\python.exe
| Argument | Default | Purpose | |----------|---------|---------| | --output | section/x_llm_papers.md | Output markdown file for the paper pool | | --min-citations | 150 | Minimum citation count filter | | --top-n | 50 | Max papers returned per topic query | | --request-delay | 2.0 | Delay between Semantic Scholar requests | | --jitter | 0.5 | Random extra delay between requests | | --api-key-env | S2_API_KEY | Env var containing a Semantic Scholar API key | | --reset | (flag) | Delete existing checkpoint and start from scratch | | --topics | (all) | Limit run to matching topic names (substring, case-insensitive) | | --refresh-existing | (flag) | Refresh existing papers with the Semantic Scholar batch API, without search queries | | --batch-size | 100 | Paper IDs per --refresh-existing batch | | --annotate-existing | (flag) | Rewrite the existing markdown with inferred topic tags without API calls | | --annotate-source | (output file) | Optional source for annotation; supports git:<rev>:<path> |
Use this for the fastest routine update when the current topic coverage is still appropriate.
powershell.venv\Scripts\python.exe code/fetch_llm_papers.py ` --refresh-existing ` --min-citations 150 ` --batch-size 100
--batch-size if unauthenticated requests are rate-limited.Use when topics have been added/modified or citation counts are stale.
powershell.venv\Scripts\python.exe code/fetch_llm_papers.py ` --reset ` --min-citations 150 ` --top-n 50 ` --request-delay 2.0 ` --jitter 0.5
--reset deletes any existing checkpoint so all 41 topics are re-queried.section/x_llm_papers.md is rewritten with topic coverage, topic tags, and sequential numbering sorted by citation count.$env:S2_API_KEY before running. The script sends it as the x-api-key header.The script saves a checkpoint (section/x_llm_papers.checkpoint.json) after each successful query and after each completed topic. If the run is interrupted by a rate-limit (HTTP 429), simply re-run without --reset:
powershell.venv\Scripts\python.exe code/fetch_llm_papers.py ` --min-citations 150 ` --top-n 50
The script prints [resume] Loaded N papers, M completed topics, Q cached queries from checkpoint. and skips already-finished topics. Query-level cache entries prevent successful queries from being reissued during resume.
If a query fails after retries, the script writes partial progress, keeps the current topic incomplete, and exits with a [pause] message. Re-run later without --reset.
Use this when the paper pool already exists and you only need topic coverage or tag extraction refreshed:
powershell.venv\Scripts\python.exe code/fetch_llm_papers.py ` --annotate-existing ` --min-citations 150
To rebuild annotations from the committed version of the file, useful after a partial write or parser change:
powershell.venv\Scripts\python.exe code/fetch_llm_papers.py ` --annotate-existing ` --annotate-source git:HEAD:section/x_llm_papers.md ` --min-citations 150
powershell.venv\Scripts\python.exe code/fetch_llm_papers.py ` --topics "PEFT" "Reasoning" ` --min-citations 150 ` --top-n 50
Matches topic names by substring (case-insensitive). New papers for matched topics are merged into the existing pool if a checkpoint exists; otherwise starts fresh for those topics only.
Topics are defined in the TOPICS dict at the top of fetch_llm_papers.py. Each key is a topic label; the value is a list of Semantic Scholar search query strings.
Rules:
paperId.--reset to re-fetch from scratch (checkpoint is stale once TOPICS changes).Current topic areas (41 total):
| Category | Topics | |----------|--------| | Core LLM | Reasoning in LLMs, LLM Overview & History, Scaling Laws, LLM Architecture Innovations | | Training | Alignment & RLHF, RLAIF & Constitutional AI, RLVR & Process Reward Models, Instruction Tuning & SFT, PEFT & LoRA, Self-Supervised & Representation Learning | | Inference | Efficient LLMs: Training & Inference, Inference-Time Scaling & Test-Time Compute, LLMOps & Model Serving | | Applications | LLM Agents, Retrieval-Augmented Generation (RAG), GraphRAG & Knowledge Graphs, LLMs for Code, LLMs for Healthcare & Science, LLM for Robotics & Embodied AI, Function Calling & Tool Use, GUI Agents, Tabular Data & NL2SQL | | Multimodal | Multimodal LLMs, Multilingual & Low-Resource LLMs, Speech & Audio Language Models, Small Language Models, Mixture of Experts | | Evaluation | Evaluation of LLMs & Agents, Hallucination in LLMs, Trustworthy & Secure LLMs | | Generation | Structured Generation & Constrained Decoding | | Other | Prompt Engineering & In-Context Learning, Context Engineering, LLM Memory & Personalization, Embeddings & Vector Search, Data for LLMs, LLM Governance, Privacy & Copyright, Interpretability & Mechanistic Understanding, AIOps & Observability, Federated & Personalized AI, Continual Learning & Model Merging |
Each entry in section/x_llm_papers.md:
N. [Title📑](https://arxiv.org/abs/XXXX.XXXXX): First sentence of abstract. [Mon YYYY] (Citations: N,NNN; Topics: Topic A, Topic B)## Topic Coverage, a count of inferred topic tags across all papers.1., 2., ...) by citation count descending.2305.xxxxx → [May 2023]).fieldsOfStudy containing "Computer Science" are included.--annotate-existing.section/x_llm_papers.checkpoint.json — JSON with these keys:
json{ "completed_topics": ["Reasoning in LLMs", "LLM Agents", ...], "failed_queries": ["..."], "query_cache": { "normalized query": [ ... ] }, "papers": [ { "paperId": "...", "title": "...", "citationCount": 123, ... } ] }
--reset.python -c "import json; cp=json.load(open('section/x_llm_papers.checkpoint.json', encoding='utf-8')); print(len(cp['papers']), 'papers,', len(cp['completed_topics']), 'topics done,', len(cp.get('query_cache', {})), 'cached queries')"--reset: The checkpoint from a previous run skips topics that already completed. After editing TOPICS, always use --reset to re-fetch all topics.--reset). Increase --request-delay or --backoff to slow down further.completed_topics after a 429 or timeout. The script intentionally leaves incomplete topics out of completed_topics so resume can retry only the missing query work."Computer Science" in fieldsOfStudy and a topic/core LLM relevance match. Some highly cited ML papers may be excluded if they drift too far from the LLM landscape. This is intentional.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 10,168 | 6,238 | -39% | 1 | 1 | 0% | 1,774 | 2,858 | +61% | 0 | 0 | — |
case-02 | fail→pass | 7,257 | 6,105 | -16% | 1 | 1 | 0% | 980 | 3,257 | +232% | 0 | 0 | — |
case-03 | fail→fail | 11,359 | 6,428 | -43% | 1 | 1 | 0% | 217 | 2,844 | +1211% | 0 | 0 | — |
case-04 | pass→pass | 9,475 | 9,521 | +0% | 1 | 1 | 0% | 1,804 | 4,421 | +145% | 0 | 0 | — |
case-05 | pass→pass | 6,121 | 9,647 | +58% | 1 | 1 | 0% | 1,209 | 3,661 | +203% | 0 | 0 | — |
case-10 | fail→pass | 8,885 | 2,656 | -70% | 1 | 1 | 0% | 1,689 | 2,945 | +74% | 0 | 0 | — |
case-06 | pass→pass | 8,972 | 6,865 | -23% | 1 | 1 | 0% | 1,591 | 3,768 | +137% | 0 | 0 | — |
case-07 | fail→pass | 21,003 | 2,651 | -87% | 1 | 1 | 0% | 881 | 2,897 | +229% | 0 | 0 | — |
case-08 | pass→pass | 11,222 | 4,318 | -62% | 1 | 1 | 0% | 2,008 | 3,326 | +66% | 0 | 0 | — |
case-09 | fail→pass | 8,359 | 3,309 | -60% | 1 | 1 | 0% | 1,623 | 3,145 | +94% | 0 | 0 | — |
case-11 | fail→pass | 8,885 | 3,814 | -57% | 1 | 1 | 0% | 1,477 | 3,127 | +112% | 0 | 0 | — |
case-12 | fail→pass | 12,190 | 2,082 | -83% | 1 | 1 | 0% | 2,023 | 2,828 | +40% | 0 | 0 | — |
case-13 | fail→pass | 14,790 | 8,460 | -43% | 1 | 1 | 0% | 2,207 | 3,913 | +77% | 0 | 0 | — |
case-14 | pass→pass | 9,160 | 2,895 | -68% | 1 | 1 | 0% | 1,400 | 2,879 | +106% | 0 | 0 | — |
case-15 | fail→pass | 11,674 | 2,793 | -76% | 1 | 1 | 0% | 1,845 | 2,910 | +58% | 0 | 0 | — |
case-16 | pass→pass | 13,931 | 4,861 | -65% | 1 | 1 | 0% | 2,423 | 3,212 | +33% | 0 | 0 | — |
case-17 | fail→pass | 10,758 | 1,721 | -84% | 1 | 1 | 0% | 1,804 | 2,708 | +50% | 0 | 0 | — |
case-18 | fail→pass | 11,631 | 7,316 | -37% | 1 | 1 | 0% | 1,830 | 3,190 | +74% | 0 | 0 | — |
case-19 | fail→pass | 10,773 | 1,692 | -84% | 1 | 1 | 0% | 1,788 | 2,683 | +50% | 0 | 0 | — |
case-20 | fail→pass | 8,492 | 2,424 | -71% | 1 | 1 | 0% | 1,359 | 2,901 | +113% | 0 | 0 | — |
case-21 | fail→fail | 8,426 | 1,670 | -80% | 1 | 1 | 0% | 1,346 | 2,701 | +101% | 0 | 0 | — |
case-22 | pass→pass | 8,153 | 2,313 | -72% | 1 | 1 | 0% | 1,505 | 2,763 | +84% | 0 | 0 | — |
case-23 | fail→fail | 25,992 | 2,252 | -91% | 1 | 1 | 0% | 2,658 | 2,830 | +6% | 0 | 0 | — |
case-24 | pass→pass | 6,298 | 2,103 | -67% | 1 | 1 | 0% | 891 | 2,788 | +213% | 0 | 0 | — |
case-25 | pass→pass | 11,441 | 3,841 | -66% | 1 | 1 | 0% | 1,753 | 3,062 | +75% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted, and 23 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +52 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.