All skills
agents365-ai avatar

/scholar-deep-research

@72ee04b

Use when the user asks for a literature review, academic deep dive, research report, state-of-the-art survey, topic scoping, comparative analysis of methods/papers, grant background, or any request that needs multi-source scholarly evidence with citations. Also trigger proactively when a user question clearly requires academic grounding (e.g. "what's known about X", "compare approach A vs B in the literature", "summarize the field of Y"). Runs an 8-phase (Phase 0..7), script-driven research workflow across 7 federated sources (OpenAlex, arXiv, Crossref, PubMed, DBLP, bioRxiv, Exa) with optional Semantic Scholar / Brave MCP enrichment, with deduplication, transparent ranking, dual-backend citation chasing (OpenAlex + Semantic Scholar), self-critique, and structured report output with verifiable citations.

Use this Skill: https://skilld.dev/gh/agents365-ai/365-skills/scholar-deep-research

This session only. Nothing lands on disk.

referencesstate_schema.md

≈711 tokens on demand. Your agent reads this file only when SKILL.md points to it.

research_state.json schema

The state file is the single source of truth for a research run. Every script reads and writes it through research_state.py subcommands or the matching apply_* library functions in that module — no script touches the JSON directly. The shape is versioned via schema_version; loading a state file from an unsupported version returns state_schema_mismatch (exit 4) rather than silently coercing.

Run python scripts/research_state.py --schema for the machine-readable version with every subcommand expanded.

Abbreviated shape

{
  "schema_version": 1,
  "question": "...",
  "archetype": "literature_review",
  "phase": 3,
  "created_at": "...",
  "updated_at": "...",
  "queries": [
    {"source": "openalex", "query": "...", "hits": 42, "new": 30, "round": 1}
  ],
  "papers": {
    "doi:10.1038/nature12373": {
      "id": "doi:10.1038/nature12373",
      "title": "...",
      "authors": ["..."],
      "year": 2013,
      "venue": "Nature",
      "citations": 523,
      "abstract": "...",
      "source": ["openalex", "crossref"],
      "score": 0.81,
      "score_components": {
        "relevance": 0.9,
        "citations": 0.8,
        "recency": 0.6,
        "venue": 1.0
      },
      "selected": true,
      "depth": "full",
      "tier": "deep",
      "triage_score": 0.74,
      "triage_components": {
        "relevance": 0.8,
        "citation_density": 0.6,
        "recency": 0.9,
        "has_pdf": 1.0,
        "abstract_quality": 1.0
      },
      "evidence": {
        "method": "...",
        "findings": ["..."],
        "limitations": "..."
      },
      "discovered_via": "search"
    }
  },
  "triage_complete": true,
  "triage_meta": {
    "weights": {},
    "deep_ratio": 0.5,
    "skim_ratio": 0.5,
    "triaged_at": "..."
  },
  "themes": [{"name": "...", "paper_ids": ["..."]}],
  "tensions": [
    {"topic": "...", "sides": [{"position": "...", "paper_ids": ["..."]}]}
  ],
  "self_critique": {"findings": [], "resolved": [], "appendix": "..."},
  "report_path": "reports/slug_20260411.md"
}

ID normalization

Paper IDs are normalized in priority order: doi:... → openalex:W... → arxiv:... → pmid:.... dedupe_papers.py depends on this ordering, and merging logic prefers the higher-priority ID when the same paper is discovered through multiple sources.

What's settable directly

Only archetype and report_path are settable via research_state.py set --field .... phase is not settable — it advances only through research_state.py advance, which runs the gate predicates in _gates.py. Every collection field (papers, queries, themes, tensions, self_critique) is mutable only through its dedicated subcommand. Widening the SETTABLE_FIELDS whitelist is a security decision — don't do it casually.

Source: SKILL.md on GitHub

1 warning4mo3 checks · Risk SAFE
  • Gen Agent Trust Hub4mo

    This skill is a robust academic research tool that automates literature reviews across multiple scholarly databases. It uses strict input validation for paper identifiers and handles sensitive API keys through environment variables. While the skill executes a local script from a companion 'paper-fetch' skill to download PDFs, this is a standard design pattern within the author's ecosystem. It also processes external PDF text, which carries a minor risk of indirect prompt injection common to all document-reading agents.

  • Socket4mo

    No alerts

  • Snyk4mo

    Risk: MEDIUM · 1 issue

Signed by skilld at 72ee04b. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 11 hours ago.

Activeupdated 3 weeks ago
homepage
https://github.com/Agents365-ai/365-skills
platforms
[macos, linux, windows]
Other metadata
compatibility
Requires Python 3.9+ with httpx and pypdf (see requirements.txt). Optional: `pip install docling` to enable layout-aware markdown PDF extraction (`extract_pdf.py --engine docling`); auto-used as a fallback for scanned/sparse PDFs. Works offline-first (no MCP required) but enriches with Semantic Scholar / Brave MCP tools when available.
metadata
{
  "openclaw": {
    "requires": {
      "bins": [
        "python3"
      ]
    },
    "emoji": "🔬"
  },
  "hermes": {
    "tags": [
      "research",
      "literature-review",
      "academic",
      "papers",
      "citations",
      "survey"
    ],
    "category": "research"
  },
  "pimo": {
    "tags": [
      "research",
      "literature-review",
      "academic"
    ],
    "category": "research"
  },
  "author": "Agents365-ai",
  "version": "0.17.0"
}

README badge

README badge for agents365-ai/365-skills/scholar-deep-research