Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Systematic Review Pipeline Orchestrator - Coordinates systematic literature review automation Manages the complete 7-stage PRISMA 2020 pipeline from research question to RAG system Delegates to specialized agents (I1, I2, I3) while enforcing human checkpoints Use when: conducting systematic reviews, building knowledge repositories, PRISMA automation Triggers: systematic review, PRISMA, literature review automation
.claude/skills/brycewang-stanford-i0/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 46% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 96% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 83% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 35% | 0% |
No prerequisites required for this agent.
diverga_mark_checkpoint("SCH_DATABASE_SELECTION", decision, rationale)diverga_mark_checkpoint("SCH_SCREENING_CRITERIA", decision, rationale)diverga_mark_checkpoint("SCH_RAG_READINESS", decision, rationale)Read .research/decision-log.yaml directly to verify prerequisites. Conversation history is last resort.
Agent ID: I0 Category: I - Systematic Review Automation Tier: HIGH (Opus) Icon: 📚🔄
Orchestrates the complete 7-stage PRISMA 2020 systematic literature review pipeline. Acts as the conductor, delegating to specialized agents (I1, I2, I3) while managing checkpoints and ensuring human approval at critical decision points.
Stage 1: Research Domain Setup → config.yaml, project initialization
Stage 2: Query Strategy → Boolean search strings, database selection
Stage 3: Paper Retrieval → I1-paper-retrieval-agent
Stage 4: Deduplication → 02_deduplicate.py
Stage 5: PRISMA Screening → I2-screening-assistant (Groq LLM)
Stage 6: PDF Download + RAG → I3-rag-builder
Stage 7: Documentation → PRISMA diagram generationyamlRequired: - research_question: "string" - domain: "string" Optional: - project_type: "enum[knowledge_repository, systematic_review]" - databases: "list[string]" - year_range: "list[int, int]" - language: "string"
yamlmain_output: pipeline_status: "enum[completed, in_progress, error]" stages_completed: "list[int]" checkpoints_passed: "list[string]" statistics: papers_identified: "int" papers_after_dedup: "int" papers_screened: "int" papers_included: "int" pdfs_downloaded: "int" rag_chunks: "int" outputs: prisma_diagram: "string" rag_database: "string" statistics_report: "string"
| Checkpoint | Level | Stage | What Happens | |------------|-------|-------|--------------| | SCH_DATABASE_SELECTION | 🔴 REQUIRED | 2 | Present database options (SS, OA, arXiv, Scopus, WoS), WAIT | | SCH_SCREENING_CRITERIA | 🔴 REQUIRED | 5 | Present inclusion/exclusion criteria, WAIT for approval | | SCH_RAG_READINESS | 🟠 RECOMMENDED | 6 | Confirm PDF count and RAG readiness | | SCH_PRISMA_GENERATION | 🟡 OPTIONAL | 7 | Generate PRISMA diagram |
I0 must ask user to select project type at Stage 1:
knowledge_repository:
systematic_review:
python# Stage 3: Paper Retrieval Task( subagent_type="diverga:i1", model="sonnet", prompt=""" [Paper Retrieval] Project: {project_path} Query: {boolean_query} Databases: {selected_databases} Execute: python scripts/01_fetch_papers.py Then: python scripts/02_deduplicate.py Report: Papers retrieved and deduplicated counts. """ ) # Stage 5: PRISMA Screening Task( subagent_type="diverga:i2", model="sonnet", prompt=""" [PRISMA Screening] Project: {project_path} Project Type: {project_type} Research Question: {research_question} 🔴 CHECKPOINT: SCH_SCREENING_CRITERIA Present inclusion/exclusion criteria and WAIT for approval. Execute: python scripts/03_screen_papers.py LLM Provider: groq (100x cheaper than Claude) """ ) # Stage 6: RAG Building Task( subagent_type="diverga:i3", model="haiku", prompt=""" [RAG Building] Project: {project_path} Execute in sequence: 1. python scripts/04_download_pdfs.py 2. python scripts/05_build_rag.py 🟠 CHECKPOINT: SCH_RAG_READINESS Report: PDFs downloaded, vector DB built. """ )
| Stage | Task | Recommended Provider | Cost/100 papers | |-------|------|---------------------|-----------------| | 5 | PRISMA Screening | Groq (llama-3.3-70b) | $0.01 | | 6 | RAG Queries | Groq (llama-3.3-70b) | $0.02 | | - | Fallback | Claude Haiku | $0.15 |
Total cost for 500-paper systematic review: ~$0.07 (vs $7.50 with Claude only)
| Keywords (EN) | Keywords (KR) | Action | |---------------|---------------|--------| | systematic review, PRISMA | 체계적 문헌고찰, 프리즈마 | Activate I0 orchestrator | | literature review automation | 문헌고찰 자동화 | Activate I0 orchestrator | | systematic review automation | 문헌고찰 자동화 | Activate I0 orchestrator | | build knowledge repository | 지식 저장소 구축 | Activate I0 (knowledge_repository mode) |
I0 can invoke existing Diverga agents for enhanced functionality:
python# Literature review strategy Task(subagent_type="diverga:b1", ...) # B1-systematic-literature-scout # Quality appraisal Task(subagent_type="diverga:b2", ...) # B2-evidence-quality-appraiser # Meta-analysis (if project type allows) Task(subagent_type="diverga:c5", ...) # C5-meta-analysis-master
yamlrequires: [] sequential_next: ["I1-paper-retrieval-agent"] parallel_compatible: ["B1-literature-review-strategist"]
When running in Claude Code with Agent Teams support (CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1):
I0 acts as Team Lead for the scholarag-pipeline team:
TeamCreate(team_name="scholarag-pipeline", description="PRISMA 2020 systematic review pipeline")
TaskCreate(subject="I1: Fetch from Semantic Scholar") → task-1 TaskCreate(subject="I1: Fetch from OpenAlex") → task-2 TaskCreate(subject="I1: Fetch from arXiv") → task-3 TaskCreate(subject="Deduplicate papers", blockedBy=[1,2,3]) → task-4 TaskCreate(subject="I2: AI-PRISMA screening", blockedBy=[4]) → task-5 TaskCreate(subject="I3: Build RAG vector DB", blockedBy=[5]) → task-6
Task(team_name="scholarag-pipeline", name="fetcher-ss", subagent_type="diverga:i1", prompt="Fetch papers from Semantic Scholar for query: {query}. Save to data/raw/semantic_scholar/") Task(team_name="scholarag-pipeline", name="fetcher-oa", subagent_type="diverga:i1", prompt="Fetch papers from OpenAlex for query: {query}. Save to data/raw/openalex/") Task(team_name="scholarag-pipeline", name="fetcher-arxiv", subagent_type="diverga:i1", prompt="Fetch papers from arXiv for query: {query}. Save to data/raw/arxiv/")
TeamDelete() after pipeline completion or on errorIf Agent Teams not available, fall back to sequential Task() calls (current behavior).
| Mode | DB Fetch Time | Total Pipeline | |------|--------------|----------------| | Sequential | ~90 min | ~4-6 hours | | Teams (3 parallel) | ~30 min | ~2.5-4 hours |
Teams mode spawns N independent sessions. Each session consumes separate API tokens. For budget-conscious runs, sequential mode is recommended.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | fail→fail | 12,599 | 24,848 | +97% | 1 | 1 | 0% | 2,897 | 8,754 | +202% | 0 | 0 | — |
case-05 | fail→fail | 15,469 | 18,578 | +20% | 1 | 1 | 0% | 3,046 | 5,962 | +96% | 0 | 0 | — |
case-01 | fail→fail | 27,233 | 17,669 | -35% | 1 | 1 | 0% | 6,262 | 6,344 | +1% | 0 | 0 | — |
case-02 | fail→fail | 18,900 | 20,625 | +9% | 1 | 1 | 0% | 4,136 | 7,281 | +76% | 0 | 0 | — |
case-03 | fail→fail | 29,517 | 23,089 | -22% | 1 | 1 | 0% | 5,692 | 6,483 | +14% | 0 | 0 | — |
case-06 | fail→fail | 35,941 | 35,907 | -0% | 1 | 1 | 0% | 6,181 | 8,735 | +41% | 0 | 0 | — |
case-07 | fail→pass | 14,251 | 6,700 | -53% | 1 | 1 | 0% | 2,825 | 4,058 | +44% | 0 | 0 | — |
case-08 | fail→pass | 14,925 | 5,324 | -64% | 1 | 1 | 0% | 2,484 | 3,634 | +46% | 0 | 0 | — |
case-09 | pass→pass | 12,815 | 5,023 | -61% | 1 | 1 | 0% | 2,111 | 3,519 | +67% | 0 | 0 | — |
case-10 | pass→pass | 13,941 | 6,257 | -55% | 1 | 1 | 0% | 2,656 | 3,976 | +50% | 0 | 0 | — |
case-11 | pass→pass | 19,270 | 10,304 | -47% | 1 | 1 | 0% | 3,304 | 4,658 | +41% | 0 | 0 | — |
case-12 | pass→pass | 10,458 | 6,438 | -38% | 1 | 1 | 0% | 2,008 | 3,835 | +91% | 0 | 0 | — |
case-13 | pass→pass | 8,596 | 3,344 | -61% | 1 | 1 | 0% | 1,876 | 3,166 | +69% | 0 | 0 | — |
case-14 | pass→pass | 16,098 | 6,490 | -60% | 1 | 1 | 0% | 2,640 | 3,843 | +46% | 0 | 0 | — |
case-15 | fail→pass | 8,313 | 2,856 | -66% | 1 | 1 | 0% | 1,611 | 3,157 | +96% | 0 | 0 | — |
case-16 | fail→pass | 8,173 | 2,185 | -73% | 1 | 1 | 0% | 1,635 | 2,998 | +83% | 0 | 0 | — |
case-17 | fail→pass | 11,838 | 3,195 | -73% | 1 | 1 | 0% | 2,369 | 3,191 | +35% | 0 | 0 | — |
case-18 | fail→pass | 10,460 | 3,349 | -68% | 1 | 1 | 0% | 1,904 | 3,204 | +68% | 0 | 0 | — |
case-19 | pass→pass | 11,885 | 2,698 | -77% | 1 | 1 | 0% | 2,319 | 3,032 | +31% | 0 | 0 | — |
case-20 | fail→pass | 9,435 | 2,234 | -76% | 1 | 1 | 0% | 1,627 | 2,960 | +82% | 0 | 0 | — |
case-21 | pass→pass | 5,839 | 3,172 | -46% | 1 | 1 | 0% | 1,011 | 3,175 | +214% | 0 | 0 | — |
case-22 | fail→pass | 14,324 | 1,875 | -87% | 1 | 1 | 0% | 806 | 2,896 | +259% | 0 | 0 | — |
case-23 | fail→pass | 13,925 | 1,790 | -87% | 1 | 1 | 0% | 2,383 | 2,848 | +20% | 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. 23 cases were attempted. The headline lift of +39 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.