Subagent Driven Review logo

Subagent Driven Review

Community
wentorai
subagent-driven-review

Use parallel subagents to scale large reviews, with an honest model of where the speedup actually comes from (LLM reasoning, not API throughput)

Overview

Publisherwentorai
RepositoryResearch-Claw
Skill namesubagent-driven-review
Stars
859
Forks
117
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by wentorai on GitHub. Read the source before you install it.

Installation

Install the Subagent Driven Review AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/wentorai/Research-Claw/tree/main/skills/subagent-driven-review
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/wentorai/Research-Claw.git /tmp/Research-Claw
mkdir -p .claude/skills
cp -r /tmp/Research-Claw/skills/subagent-driven-review .claude/skills/subagent-driven-review
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Subagent Driven Review in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Subagent Driven Review on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Subagent Driven Review is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Subagent-Driven Literature Review

RC native tools — this skill's pipeline ships as four built-in RC tools. Call them directly; do not shell out to any rp.py script or write curl:

  • rp_search({ query, limit?, min_year? }) — Scopus relevance search enriched with OpenAlex abstracts + OA PDF links. The Elsevier key is built in.
  • rp_abstracts({ dois }) — batch abstracts + OA links for a DOI list (OpenAlex, no key).
  • rp_cite({ doi, direction?, limit? }) — citation traversal (direction: both / backward / forward).
  • rp_fulltext({ doi, out? }) — OA full text (Elsevier ScienceDirect OA → OpenAlex OA fallback); pass out to also save the text to a file.

Results return inline as JSON (there is no --json <file> flag). To persist a result set, save the returned JSON with the workspace file tools.

Overview

Core principle: Fresh subagent per batch + consolidation between batches = parallel reasoning with quality control.

For large reviews (50+ papers), subagents help in two real ways:

  1. Context management — each subagent reads abstracts / full text in its own context, so the main context stays clean for consolidation and decisions.
  2. Parallel LLM reasoning — scoring, extraction, and summarizing happen concurrently.

What subagents do NOT speed up: API throughput

Read this before claiming "5x faster." All subagents egress from the same IP and share the same server-side rate limits (Scopus weekly quota; OpenAlex polite-pool ~10 req/s). Splitting work across 5 subagents does not give you 5x the API calls — the publisher counts them together.

Worse: rp_lib's rate limiter is per-process. Parallel subagents each run their own limiter and do not coordinate, so naïvely fanning out 10 subagents all calling rp_search can collectively blow past the per-IP ceiling and trigger 429s.

What does hold up under parallelism:

  • The disk cache is shared on the filesystem. If two subagents request the same DOI, the second hits cache. Pre-warming the cache (see below) makes fan-out safe.
  • rp_lib retries 429/5xx with exponential backoff, so bursts degrade gracefully rather than failing — but that's damage control, not throughput.

Honest mental model: API-bound steps (search, abstract fetch, citation fetch) are capped by the server, so keep the number of subagents doing live API calls small (≤3–4). Reasoning-bound steps (scoring an abstract you already have, extracting from full text already on disk) parallelize freely — fan those out widely.

The pattern that actually scales: fetch once, fan out reasoning

Main agent (1 process, respects the rate limiter):
  1. rp_search ...           -> candidates with abstracts (cached to disk)
  2. rp_abstracts <dois>     -> fill any gaps (cached to disk)
Now every abstract is on disk. Dispatch N subagents to SCORE in parallel —
they read from cache, do no (or minimal) live API calls, and can't 429 each other.

This converts an API-bound problem into a reasoning-bound one, which is the only kind subagents genuinely accelerate.

When to Use

Use the subagent approach when:

  • Large searches: 50+ candidates to screen
  • Parallelizable reasoning: papers scored/extracted independently
  • Deep dive: multiple papers need detailed extraction from full text
  • Context pressure: main context filling up

Do NOT use when:

  • Small searches (<20 papers) — overhead not worth it
  • You need real-time visibility into every paper
  • Papers require cross-comparison during screening

Use Cases

1. Parallel Scoring (most common)

Scenario: Scopus search returned 100 candidates (abstracts already attached by rp_search).

Pattern:

Main agent:
1. rp_search "<query>" --limit 100
   (abstracts now cached on disk for every hit)
2. Split the 100 records into 5 batches of 20
3. Dispatch 5 subagents IN PARALLEL — each SCORES its batch from the records
   it's handed (no live API calls needed; abstracts are already in the JSON)
4. Main agent consolidates into papers-reviewed.json

The speedup here is real because the scoring is reasoning-bound — the API work was already done once by the main agent.

Prompt template for a scoring subagent:

Score these 20 candidate papers for relevance to [QUERY].

Records (each has title, journal, year, cited_by, abstract):
[paste the 20 JSON records from initial-search-results.json]

Use the evaluating-paper-relevance rubric:
  Keywords (0-3) + Data type (0-4) + Specificity (0-3) = score 0-10.
Score from the abstract in the record. If a record has "abstract": "",
score from title + journal + cited_by and flag it.

Return JSON only (do NOT touch papers-reviewed.json):
{
  "scored": [
    {"doi": "10.x/...", "score": 8, "status": "relevant", "reason": "...", "no_abstract": false},
    ...
  ],
  "stats": {"highly_relevant": 3, "relevant": 5, "not_relevant": 12}
}

2. Deep Dive on Priority Papers

Scenario: Screening flagged 15 papers (score ≥8); extract data from each.

These subagents do make live calls (rp_fulltext), so cap concurrency at ~3–4 and let the shared disk cache + 429 backoff absorb collisions.

Prompt template:

Deep dive on DOI [10.xxxx/yyyy] for [QUERY].

1. Run: rp_fulltext "10.xxxx/yyyy" --out papers/<slug>.xml
   - source "elsevier-oa": text saved to disk, grep/scan it
   - source "openalex-oa": fetch the returned pdf_url (free copy) and read it
   - available:false: no OA copy exists -> extract from abstract only
2. Extract, by domain: data tables/measurements, methods, key results,
   data-availability (GEO/SRA accession, code repo).

Return JSON only (do NOT touch papers-reviewed.json):
{
  "doi": "10.xxxx/yyyy",
  "full_text_source": "elsevier-oa" | "openalex-oa" | "paywalled",
  "data_sources": ["Table 1", "Figure 3", "Supplementary Data"],
  "key_measurements": ["..."],
  "methods_summary": "...",
  "key_findings": ["..."],
  "data_availability": "GEO: GSE12345" | "Code: github.com/..." | null
}

3. Citation Network Exploration

Scenario: One strong seed; explore both directions.

rp_cite <doi> --direction both already returns backward + forward in a single call with abstracts attached, so you usually do not need two subagents per seed — one subagent per seed runs the call and scores both lists. Fan out across seeds, not across directions.

Prompt template:

Explore citations for seed DOI [10.xxxx/yyyy], relevant to [QUERY].

1. Run: rp_cite "10.xxxx/yyyy" --direction both --limit 50 \
       
2. Score every returned backward + forward record (abstracts are included).
3. Return only papers scoring >= 5 (the enqueue threshold):

{
  "seed_doi": "10.xxxx/yyyy",
  "backward_relevant": [{"doi": "...", "score": 8, "title": "...", "reason": "..."}],
  "forward_relevant":  [{"doi": "...", "score": 7, "title": "...", "reason": "..."}]
}

Do NOT touch papers-reviewed.json — return results only.

4. Domain-Specific Extraction

Adapt the deep-dive prompt's extraction list to the domain:

  • Genomics: GEO/SRA/ENA accessions, sample sizes, sequencing method, DE results
  • Computational: algorithm, code repo, benchmark datasets, performance metrics
  • Clinical: study design, N + demographics, intervention, primary outcomes, stats
  • Ecology: sites/coordinates, sampling method, taxa, environmental measurements

Workflow: Parallel Scoring

  1. Fetch once (main agent): rp_search → abstracts cached. Fill gaps with rp_abstracts if needed.
  2. Split: 15–25 records per subagent. Hand each subagent its records inline.
  3. Dispatch in parallel: single message, multiple Task calls. Safe to go wide here — subagents score from handed-in records, not the network.
  4. Collect: validate every DOI was scored; check rubric was applied.
  5. Consolidate: merge, dedupe by DOI, sort by score, write all to papers-reviewed.json:
    json
    {
      "10.1234/example.2023": {
        "status": "highly_relevant",
        "score": 9,
        "source": "scopus_search",
        "screened_by": "subagent_batch1",
        "timestamp": "2025-10-11T14:30:00Z",
        "found_data": ["measurements", "methods"]
      }
    }
  6. Quality check: if one batch's hit-rate is wildly off from the others, the rubric may have been applied inconsistently — re-score that batch.
  7. Summarize: generate SUMMARY.md, sorted by score, flag which papers need deep dive.

Workflow: Citation Exploration

  1. Pick 2–3 strong seeds (score ≥7).
  2. Dispatch one subagent per seed running rp_cite --direction both (cap ~3–4 live).
  3. Consolidate: merge, dedupe, drop DOIs already in papers-reviewed.json, build the next screening queue.
  4. Score the new queue (parallel scoring workflow above).
  5. Iterate with stopping criteria: depth ≤2, total ≤200, or diminishing returns.

Consolidation Patterns

  • JSON aggregation: subagents return JSON; main agent merges, sorts by score, writes papers-reviewed.json. Subagents never write tracking files (avoids conflicts).
  • Progressive: consolidate after each subagent (sequential) — slower, incremental visibility.
  • Batch: dispatch N in parallel, consolidate the batch, repeat — the default balance.

Common Mistakes

  • Claiming linear speedup from fan-out → API throughput is server-capped and shared across subagents; only reasoning parallelizes. Fetch once, then fan out scoring.
  • Fanning out live API calls → many subagents each running rp_search/fulltext share one IP and one quota, and rp_lib's limiter is per-process so they don't coordinate → 429s. Keep live-API subagents to ≤3–4; pre-warm the disk cache.
  • Subagents writing tracking files → conflicts. Subagents return JSON; main agent writes papers-reviewed.json.
  • Inconsistent scoring → give every subagent the same rubric inline.
  • No quality review → never blindly trust merged output; spot-check.
  • Duplicate work → split DOI lists with no overlap; dedupe on merge.
  • Using PubMed/ChEMBL/Unpaywall prompts → removed. The only data tools are rp_search/abstracts/cite/fulltext (Scopus + OpenAlex).

Cost Considerations

Subagents cost tokens. Rough per-subagent: scoring 20 records ~10–15K; deep dive 1 paper ~5–10K; citation exploration ~8–12K. Use subagents for 50+ papers; screen small searches manually. Parallelize reasoning; serialize or cap API work.

Decision Tree

Literature review task?
├─ <20 papers?      → screen manually (no subagents)
├─ 20-50 papers?
│  ├─ time-sensitive? → subagents (2-3 scoring batches)
│  └─ not urgent?     → screen manually
└─ 50+ papers?
   ├─ fetch once (main agent: rp_search/abstracts)
   ├─ score          → many parallel subagents (cache-fed, safe to go wide)
   ├─ deep dive      → ≤3-4 live subagents (rp_fulltext)
   └─ citations      → one subagent per seed (rp_cite), ≤3-4 live

Integration with Other Skills

  • searching-literature (rp_search): the main agent runs this once to populate the cache before fan-out.
  • evaluating-paper-relevance: the rubric subagents apply when scoring.
  • traversing-citations (rp_cite): what citation subagents run.

Next Steps After Subagent Review

  1. Review consolidated results for quality/consistency.
  2. Identify gaps — expected papers missing?
  3. Deep dive on highly relevant papers (≤3–4 live subagents).
  4. Generate final SUMMARY.md with statistics and key findings.

Frequently asked questions

What does the Subagent Driven Review AI skill do?

Use parallel subagents to scale large reviews, with an honest model of where the speedup actually comes from (LLM reasoning, not API throughput)

Why use Subagent Driven Review on TypingMind?

Because you install it once and use it with any model. Subagent Driven Review is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Subagent Driven Review in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/wentorai/Research-Claw/tree/main/skills/subagent-driven-review. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Subagent Driven Review?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Subagent Driven Review?

As many as you like. As long as a model supports skills, you can use Subagent Driven Review with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Subagent Driven Review AI skill free?

It is published on GitHub by wentorai. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇