lingzhi227/deep-research
Conduct systematic academic literature reviews in 6 phases, producing structured notes, a curated paper database, and a synthesized final report. Output is organized by phase for clarity.
npx skills add https://github.com/lingzhi227/agent-research-skills --skill deep-research
Activate this skill when the user wants to:
/research <topic> slash commandThis skill conducts systematic academic literature reviews in 6 phases, producing structured notes, a curated paper database, and a synthesized final report. Output is organized by phase for clarity.
Installation: ~/.claude/skills/deep-research/ — scripts, references, and this skill definition.
Output: .//Users/lingzhi/Code/deep-research-output/{slug}/ relative to the current working directory.
You MUST execute all 6 phases in strict order: 1 → 2 → 3 → 4 → 5 → 6. NEVER skip any phase.
This is the single most important rule of this skill. Violations include:
Before starting Phase N+1, you MUST verify that Phase N's required output files exist on disk. If they don't exist, you have NOT completed that phase.
| Phase | Gate: Required Output Files |
|-------|---------------------------|
| 1 → 2 | phase1_frontier/frontier.md exists AND contains ≥10 papers |
| 2 → 3 | phase2_survey/survey.md exists AND paper_db.jsonl has 35-80 papers |
| 3 → 4 | phase3_deep_dive/selection.md AND phase3_deep_dive/deep_dive.md exist AND deep_dive.md contains detailed notes for ≥8 papers |
| 4 → 5 | phase4_code/code_repos.md exists AND contains ≥3 repositories |
| 5 → 6 | phase5_synthesis/synthesis.md AND phase5_synthesis/gaps.md exist |
After completing each phase, print a phase completion checkpoint:
✅ Phase N complete. Output: [list files written]. Proceeding to Phase N+1.
Peer-reviewed conference papers take priority over arXiv preprints. Many arXiv papers have not undergone peer review and may contain unverified claims.
(preprint) in citationsLocation: /Users/lingzhi/Code/documents/tool/paper_finder/paper_finder.py
Searches ai-paper-finder.info (HuggingFace Space) for published conference papers. Supports filtering by conference + year. Outputs JSONL with BibTeX.
python /Users/lingzhi/Code/documents/tool/paper_finder/paper_finder.py --mode scrape --config <config.yaml>
python /Users/lingzhi/Code/documents/tool/paper_finder/paper_finder.py --mode download --jsonl <results.jsonl>
python /Users/lingzhi/Code/documents/tool/paper_finder/paper_finder.py --list-venues
Config example:
searches:
- query: "long horizon reasoning agent"
num_results: 100
venues:
neurips: [2024, 2025]
iclr: [2024, 2025, 2026]
icml: [2024, 2025]
output:
root: /Users/lingzhi/Code/deep-research-output/{slug}/phase1_frontier/search_results
overwrite: true
Location: /Users/lingzhi/.claude/skills/deep-research/scripts/search_semantic_scholar.py
Supports --peer-reviewed-only and --top-conferences filters. API key: /Users/lingzhi/Code/keys.md (field S2_API_Key)
Location: /Users/lingzhi/.claude/skills/deep-research/scripts/search_arxiv.py
For searching recent papers not yet published at conferences. Mark citations with (preprint).
| Script | Location | Key Flags |
|--------|----------|-----------|
| download_papers.py | ~/.claude/skills/deep-research/scripts/ | --jsonl, --output-dir, --max-downloads, --sort-by-citations |
| extract_pdf.py | ~/.claude/skills/deep-research/scripts/ | --pdf, --pdf-dir, --output-dir, --sections-only |
| paper_db.py | ~/.claude/skills/deep-research/scripts/ | subcommands: merge, search, filter, tag, stats, add, export |
| bibtex_manager.py | ~/.claude/skills/deep-research/scripts/ | --jsonl, --output, --keys-only |
| compile_report.py | ~/.claude/skills/deep-research/scripts/ | --topic-dir |
WebSearch + WebFetch to query Semantic Scholar/arXiv APIsWebFetch on ar5iv HTML or Read tool on downloaded PDFsWrite tool for JSONL, notes, report filesSearch the latest conference proceedings and preprints to understand current trends.
phase1_frontier/paper_finder_config.yaml targeting latest 1-2 years→ Output: phase1_frontier/frontier.md, phase1_frontier/search_results/
Build a comprehensive landscape with broader time range. Target 35-80 papers after filtering.
phase2_survey/paper_finder_config.yaml covering 2023-2025python /Users/lingzhi/.claude/skills/deep-research/scripts/paper_db.py mergepython /Users/lingzhi/.claude/skills/deep-research/scripts/paper_db.py filter --min-score 0.80 --max-papers 70→ Output: phase2_survey/survey.md, phase2_survey/search_results/, paper_db.jsonl
This phase is MANDATORY. You must actually READ 8-15 full papers, not just their abstracts.
phase3_deep_dive/selection.mdpython download_papers.py --jsonl paper_db.jsonl --output-dir phase3_deep_dive/papers/ --sort-by-citations --max-downloads 15Read or HTML via WebFetch on ar5iv)phase3_deep_dive/deep_dive.mdPhase 3 Gate: deep_dive.md must contain detailed notes for ≥8 papers, each with methodology and experiment sections filled in. Abstract-only summaries do NOT count.
→ Output: phase3_deep_dive/selection.md, phase3_deep_dive/deep_dive.md, phase3_deep_dive/papers/
This phase is MANDATORY. You must survey the open-source ecosystem.
phase4_code/code_repos.md (must contain ≥3 repositories)Phase 4 Gate: code_repos.md must exist and contain at least 3 repositories with metadata.
→ Output: phase4_code/code_repos.md
Cross-paper analysis. Weight peer-reviewed findings higher.
This phase MUST build on the detailed notes from Phase 3 and the code landscape from Phase 4.
Taxonomy, comparative tables, gap analysis.
Before starting: Verify phase3_deep_dive/deep_dive.md and phase4_code/code_repos.md exist. If not, go back and complete those phases first.
→ Output: phase5_synthesis/synthesis.md, phase5_synthesis/gaps.md
Assemble final report from ALL prior phase outputs. Mark preprint citations with (preprint) suffix.
Before starting: Verify ALL phase outputs exist:
phase1_frontier/frontier.mdphase2_survey/survey.mdphase3_deep_dive/deep_dive.mdphase4_code/code_repos.mdphase5_synthesis/synthesis.md + gaps.mdIf ANY are missing, go back and complete the missing phase(s) first.
→ Output: phase6_report/report.md, phase6_report/references.bib
output/{topic-slug}/
├── paper_db.jsonl # Master database (accumulated)
├── phase1_frontier/
│ ├── paper_finder_config.yaml
│ ├── search_results/
│ └── frontier.md
├── phase2_survey/
│ ├── paper_finder_config.yaml
│ ├── search_results/
│ └── survey.md
├── phase3_deep_dive/
│ ├── papers/
│ ├── selection.md
│ └── deep_dive.md
├── phase4_code/
│ └── code_repos.md
├── phase5_synthesis/
│ ├── synthesis.md
│ └── gaps.md
└── phase6_report/
├── report.md
└── references.bib
arxiv_id when available, otherwise Semantic Scholar paperId[@key] format, key = firstAuthorYearWord (e.g., [@vaswani2017attention])(preprint) when citing non-peer-reviewed workpaper_db.py filter)/Users/lingzhi/.claude/skills/deep-research/references/workflow-phases.md — Detailed 6-phase methodology/Users/lingzhi/.claude/skills/deep-research/references/note-format.md — Note templates, BibTeX format, report structure/Users/lingzhi/.claude/skills/deep-research/references/api-reference.md — arXiv, Semantic Scholar, ar5iv API guideTake lingzhi227/deep-research 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.