4.3 KiB
4.3 KiB
| name | description |
|---|---|
| scientific-deep-research | Literature research on a scientific question: find relevant papers (arXiv, OpenAlex, Semantic Scholar), prefer the peer-reviewed version of arXiv preprints (Crossref, dblp), download the PDFs, extract and read the text, and write research.md with structured per-paper summaries, a synthesis and a references.bib in BibTeX. Use for "survey the literature", "find papers on", "state of the art", "related work", or any task that needs citations. |
Scientific deep research
Output: research.md (summaries + synthesis), references.bib, and the PDFs
in papers/. Every claim in research.md is tied to a paper you actually
opened; every BibTeX entry comes from a resolver, never from memory.
Tool: papers.py (stdlib only; pip install pymupdf for
text). Copy it into the project: cp <skill-dir>/papers.py .. Be polite to
the APIs: one call per second, CONTACT_EMAIL=you@uni.de in the environment.
Procedure
- Frame the question in one sentence plus 3-6 search phrases (synonyms, method names, the application). Write them at the top of research.md.
- Search:
python papers.py search "<phrase>" --max 25 [--since 2018]for each phrase. Merged, deduplicated candidates land incandidates.json, ranked by citations (recent papers have few - don't drop them for that). - Screen by title + abstract (
candidates.json): keep 8-15 papers that answer the question, including 2-3 recent ones and the most-cited classic. Note why each was kept in one line. Follow references of the best paper if coverage is thin (searchwith its key terms). - Resolve the citable version:
python papers.py resolve <arxiv id | DOI | "title">for every kept paper. For an arXiv preprint it looks for the journal or conference version (Semantic Scholar -> Crossref -> dblp) and prints which to cite. Cite the published version when one exists; otherwise cite the preprint and mark it(preprint)in research.md. - BibTeX:
python papers.py bibtex <DOI | arXiv id | dblp key>-> append toreferences.bib. Keys are<lastname><year><firstword>; use exactly these keys in the text as[@key]. One entry per paper, no duplicates. - Download and read:
python papers.py download <arxiv id | DOI> --out papers/(arXiv PDF, or the open-access copy OpenAlex knows; otherwise say "no OA PDF" and work from the abstract, marked as such). Thenpython papers.py text papers/x.pdfand read the .txt withread_filein ranges: abstract, introduction, method, results tables, conclusion. Don't read reference lists. - Summarize each paper with the template below - numbers from the results, not adjectives. 120-200 words each.
- Synthesize: what the field agrees on, where results conflict, which method fits the question, open problems. Reference papers by key.
- Verify before finishing: every
[@key]in research.md exists in references.bib and vice versa (grep -o '@\w*' research.md | sort -uagainstgrep -o '^@\w*{\K[^,]*' references.bib); every summary names the version read (published / preprint / abstract only).
research.md template
# <Question>
Date, search phrases, databases, number screened / kept.
## Summary of findings (10-15 lines)
...with [@key] references...
## Papers
### <Title> [@key]
Authors, venue + year (or "arXiv preprint"), DOI/arXiv, read: full text | abstract only
- **Problem:** ...
- **Method:** ...
- **Data / setup:** ...
- **Results:** the numbers (metric, value, baseline, dataset)
- **Limitations:** stated by the authors or evident
- **Relevance to the question:** ...
## Synthesis
Agreement, contradictions, best-fit method, open questions.
## Not covered
Papers without accessible PDF, areas not searched.
## References
See references.bib (keys above).
Rules
- No citation without a resolved record. If a resolver finds nothing, the paper is "unverified" and goes into "Not covered", not into the text.
- Never "improve" numbers from memory; quote what the PDF says and the page.
- Preprint vs. published: results can differ between versions - say which one you read.
- Keep the PDFs and
candidates.json; the user may want to continue. - 10 well-read papers beat 40 abstracts. Stop searching when new queries return papers you already have.