litreview – skill Dữ liệu & Khoa học cho agent AI
Tìm kiếm tài liệu học thuật qua các API PubMed và OpenAlex miễn phí, không cần khóa; tùy chọn bổ sung kết quả bằng Consensus MCP khi được kết nối; xây dựng kế hoạch tìm kiếm theo PICO, SPIDER, phân rã hoặc kết hợp; và tạo hướng dẫn nghiên cứu dạng Word có định dạng. Sử dụng bước tiếp nhận yêu cầu ngắn và các điểm kiểm tra sau khi khảo sát để conf
Cài skill litreview bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/litreview-0535c.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /litreview – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/litreview-0535c.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $litreview – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/litreview-0535c.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /litreview – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/litreview-0535c.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /litreview – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
Litreview — Academic Literature Orientation
> Portability: Works anywhere with outbound HTTPS — the default search lane is free keyless APIs (PubMed E-utilities + OpenAlex, no account, no key, no MCP). The Consensus MCP is an optional enhancement lane used only when connected in this session. Node.js with docx package is required for document generation, and (in CLI) bash_tool. Works in Claude Code CLI natively and in Claude.ai with Code Execution.
Produce a launching pad — not a finished literature review, but an orientation document that gives a researcher entering an unfamiliar field everything they need to start reading and searching with confidence. Think: what a generous colleague who knows the field would tell you over coffee.
Search Lanes
| Lane | When | How |
|---|---|---|
| Free lane (default) | Always available; no key, no plan, no MCP | PubMed E-utilities + OpenAlex via scripts/free_search.py or direct HTTPS (URL templates below) |
| Consensus lane (optional enhancement) | Only when Consensus MCP tools are available in this session | Run Consensus queries *in addition to* the free lane for its synthesized answer cards |
Lane check (one runtime check — replaces all tier detection): if the Consensus MCP tools are not available in this session, use the free lane — do not attempt tier detection, do not parse marketing copy, do not ask the user about their Consensus plan. If Consensus IS available, additionally run its searches and merge results (dedupe by DOI/title).
Free-lane URL templates (exact)
PubMed E-utilities (keyless; etiquette: ≤3 requests/second):
1. Search → PMIDs: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=<urlencoded-query>&retmode=json&retmax=20&sort=relevance
— read esearchresult.idlist (PMIDs) and esearchresult.count.
2. PMIDs → metadata: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=<pmid1,pmid2,...>&retmode=json
— per result[<pmid>] read title, authors[].name, pubdate, fulljournalname, articleids[] (the idtype: "doi" entry).
3. Era-gating: append &datetype=pdat&mindate=2021&maxdate=3000 (recent) or &maxdate=2015 (historical).
4. Paper URL: https://pubmed.ncbi.nlm.nih.gov/<PMID>/.
OpenAlex (keyless; add &mailto=<email> for the polite pool — faster + more reliable):
1. Search: https://api.openalex.org/works?search=<urlencoded-query>&per-page=20&mailto=<email>
— per results[] read display_name (title), publication_year, cited_by_count, doi, id (OpenAlex URL), authorships[].author.display_name, primary_location.source.display_name (venue).
2. Era-gating: &filter=from_publication_date:2021-01-01 or &filter=to_publication_date:2015-12-31.
3. Review articles: &filter=type:review.
OpenAlex's cited_by_count is the citation-count source for the cross-search intelligence layer (PubMed esummary returns no counts).
Agent Integrity Rules (Research-Pack Convention)
Inherited from the research-pack convention; locked verbatim per PR #657's cross-skill consistency audit.
- Source discipline. Only cite papers returned by THIS session's searches (free lane and/or Consensus). Training knowledge labeled
[Not from search — model knowledge]and excluded from cited count. Sparse results stated explicitly, never silently filled. - Counting discipline. Three numbers tracked: searches executed / unique papers received (deduplicated by DOI/title) / papers cited. Every cited paper has a retrievable URL from this session (PubMed, DOI, OpenAlex, or Consensus). Use
scripts/citation_tracker.pyfor deterministic counts. - Rate-limit etiquette. PubMed E-utilities: ≤3 requests/second keyless. OpenAlex: polite pool via
mailto. Consensus (if connected): 1 query/sec, sequential execution mandatory. Default discipline: sequential, 1 query/sec across all lanes. - Retry policy. On failure → wait 3s → retry once → log. After 3 consecutive failures: stop, alert user, share what was collected.
- Lane check. One runtime check at session start: Consensus MCP tools available or not. No tier detection, ever.
See [references/search_budget_allocation.md](references/search_budget_allocation.md) for the sequential-execution rationale + budget ceilings.
Error Handling
| Failure | Behavior |
|---|---|
| Rate-limit / HTTP error on any lane | Wait 3s, retry once, log outcome |
| Search returns 0 results | Note explicitly; "either niche terminology or genuine gap"; never silently fill |
| Network unavailable (free lane exits 2) | Stop, alert user — the free lane needs outbound HTTPS; nothing to detect or upgrade |
| 3 consecutive failures | Stop searching, alert user, share what's collected, ask how to proceed |
| Sub-area returns thin results (<5 papers) | Flag in audit; suggest manual Google Scholar / Scopus supplementation |
| User wants to adjust sub-areas | Update table, re-confirm before searching |
| DOCX validation fails | Unpack XML, fix, repack |
Phase 0: Grill-Me Intake (3 forcing questions, one at a time)
Each question carries explicit "why I'm asking". Stop condition: max 3 before Phase 1.
Q1 (root) — Research question specificity
> State the research question in 1–2 sentences. Specific is better — "How do LLMs perform on clinical reasoning tasks compared to physicians?" beats "AI in medicine". Vague questions produce vague reviews.
>
> *Why I'm asking:* The reconnaissance search hinges on precise terminology. Vague questions produce thin recon results that don't yield a useful framework breakdown.
Refuse mush. Re-ask once with examples if user is too broad. If still vague, deliver with explicit "broad-scope orientation, not depth review" caveat.
Q2 (depends on Q1) — Framework hint
> Framework — pick one or say "you pick":
>
> 1. PICO (Population / Intervention / Comparison / Outcome — most clinical questions)
> 2. SPIDER (Sample / Phenomenon / Design / Evaluation / Research-type — social/qualitative)
> 3. Decomposition (Problem / Solution / Evaluation / Limitations — technology-focused)
> 4. Hybrid (you pick which components from which framework)
> 5. You pick — analyze Q1 and recommend
>
> *Why I'm asking:* PICO is the default for ~70% of clinical questions but maps poorly to qualitative work or technology evaluation. Picking upfront saves the recon search from suggesting a misaligned framework.
Forcing choice with default ("you pick"). The skill surfaces its own framework recommendation after the recon search so user can override. Use scripts/framework_recommender.py for the heuristic.
See [references/framework_selection.md](references/framework_selection.md) for PICO / SPIDER / Decomposition canon.
Q3 (depends on Q1) — Tentative depth
> Tentative depth — pick one. Final confirmation comes after the framework breakdown:
>
> 1. Quick scan (5 searches)
> 2. Standard review (10 searches)
> 3. Deep dive (20 searches)
>
> *Why I'm asking:* I ask this twice — once now to calibrate the recon search emphasis, once after the framework breakdown to confirm. Tentative answer affects which sub-areas to surface first; final answer drives search budget allocation.
Forcing choice. Re-asked at the post-Phase-2 checkpoint after the user has seen the framework breakdown.
Stop condition: 3 questions max before Phase 1. The post-Phase-2 checkpoint is its own grill-me moment (framework table + sub-area-adjustment + depth-reconfirmation).
Phase 1: Initial Reconnaissance
One broad recon search to map themes, terminology, methodological distinctions.
- Run the lane check (Consensus available or not), then:
- Free lane:
python scripts/free_search.py --query "<broad version of Q1>" --source both --max 20(or the esearch/works URL templates above) - If Consensus is available, additionally run one broad Consensus search and merge
- Query: broad version of Q1 (terminology variants are okay; first search casts wide)
- Record:
citation_tracker.py --action record_search --session NAME --query "..." - Record received count:
citation_tracker.py --action record_papers_received --session NAME --count N
Synthesize for the checkpoint:
- Themes that surfaced
- Terminology variations (e.g., "LLM" vs "large language model" vs "GPT-style model")
- Methodological distinctions (clinical trials vs benchmark eval vs case study)
- Coverage gaps (sub-questions absent from recon results)
Phase 2: Framework Selection + Sub-area Generation
Choose framework (from Q2 OR override based on recon):
- PICO — most clinical questions (~70% default)
- SPIDER — social / qualitative
- Decomposition — technology focus (Problem / Solution / Evaluation / Limitations)
- Hybrid — explicit cross-framework mapping
Generate 4-5 sub-area questions mapped to framework components. Each becomes a targeted Phase 3 search.
Checkpoint (grill-me f
… (nội dung đầy đủ có trong gói tải về)
Skill liên quan
- constant-time-analysis – Phân tích mã mật mã để phát hiện các thao tác làm rò rỉ dữ liệu bí mật qua sự khác biệt…
- llm-wiki – Dùng khi xây dựng hoặc duy trì một cơ sở tri thức cá nhân bền vững (second brain) trong…
- pytorch-fsdp – Huấn luyện dữ liệu song song với phân mảnh đầy đủ (fully sharded data-parallel) cho mô…
- pytorch-lightning – Vòng lặp huấn luyện gọn gàng với hỗ trợ phân tán tích hợp sẵn.
- context7-auto-research – Tự động lấy tài liệu thư viện/framework mới nhất cho Claude Code qua API Context7. Dùng…
- market-research – Dùng khi thực hiện phương pháp nghiên cứu thị trường: ước lượng quy mô thị trường theo…
- qmd – Tìm kiếm lai (hybrid) cục bộ trên ghi chú, tài liệu và bản chép lời.
- research-grants – Hỗ trợ chuẩn bị và đánh giá đề xuất nghiên cứu cho NSF, NIH, DOE, DARPA và NSTC Đài…