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.

referencescli_contract.md

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

CLI contract

Every script in scripts/ follows the same agent-native contract. This is the long-form reference; agents typically discover it by running scripts and reading the JSON envelope, but it's documented here for humans, new contributors, and anyone debugging an unexpected response shape.

Stdout is JSON-only

Every script prints exactly one JSON envelope to stdout and exits with a code from the stable vocabulary below. No prose is ever mixed into stdout — diagnostics and progress logs go to stderr.

Success envelope

{
  "ok": true,
  "data": { ... },
  "meta": {
    "request_id": "...",
    "latency_ms": 123,
    "cli_version": "<X.Y.Z, matches scripts/_common.py:VERSION>",
    "schema_version": 1
  }
}

Failure envelope

{
  "ok": false,
  "error": {
    "code": "snake_case_routing_key",
    "message": "human sentence",
    "retryable": true,
    "...extra context fields...": "..."
  },
  "meta": { ... }
}

code is the routing key — a stable, snake_case identifier the agent can match against. message is the human-friendly sentence. retryable tells the agent whether a re-run might succeed without intervention.

Exit codes

Code Meaning
0 success
1 runtime error (e.g. malformed upstream response, missing dependency)
2 upstream / network error (retryable)
3 validation error (bad input)
4 state error (missing, corrupt, or schema mismatch)

Schema introspection

Every script supports --schema, which prints its full parameter schema (types, defaults, choices, required flags, subcommands where applicable) as JSON and exits 0. An agent discovering an unfamiliar script should run --schema before --help — it is machine-parseable and covers everything --help does.

python scripts/search_openalex.py --schema
python scripts/research_state.py --schema   # includes every subcommand

The top-level schema response carries cli_version so an agent caching a schema can detect drift. Per-subcommand schemas carry meta.{since, tier, dangerous_if} so agents can detect new commands and graduated-safety paired-flag requirements.

Export bibliography exception

export_bibtex.py without --output writes raw BibTeX/RIS/CSL text to stdout for pipe compatibility:

python scripts/export_bibtex.py --state research_state.json --format bibtex > refs.bib

This is the one place where stdout is not the JSON envelope — it's the deliberate TTY/pipe affordance for human users and shell pipelines. Agents that need a structured response should always pass --output <path>; that path returns {"ok": true, "data": {"output": "...", "format": "bibtex", "count": N}} like every other script.

Idempotency on mutating commands

Every mutating command accepts --idempotency-key <k>. The first successful run writes {response, signature} to ${SCHOLAR_CACHE_DIR:-.scholar_cache}/<sha256>.json. A retry with the same key replays the cached response. The same key with different semantic arguments returns idempotency_key_mismatch rather than silently serving stale data. Combining --idempotency-key with --dry-run is rejected at the boundary — a dry run doesn't mutate, so caching it is meaningless.

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 14 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