Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Default entry point for any research request — a hybrid router that classifies the question deterministically and either delegates to a specialist research skill (pulse for trends/sentiment, grants for NIH funding, litreview for academic literature, syllabus for course reading, patent for prior-art + IP landscape, dossier for entity research) or runs its own plan-decompose-multi-source-search-synthesize-cite fallback workflow when no specialist matches. Always surfaces the routing decision so us
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 224% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -5% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 84% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -2% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -6% | 0% |
The runtime orchestrator for the research domain. Architecture C: deterministic classification → specialist delegation OR own plan-decompose-search-synthesize-cite workflow.
Requires WebSearch + WebFetch for the fallback workflow; specialist skills (pulse, grants, litreview, syllabus, patent, dossier) must be present for delegation to work. Node.js with docx package required if Q2 = document mode. Works in Claude Code CLI natively. In Claude.ai with web tools + Code Execution, the workflow is supported.
engineering/autoresearch-agentThese two skills share the word "research" but serve completely different use cases:
research/research/ (this skill) — research-query router + fallback workflow ("Research X")engineering/autoresearch-agent/ — Karpathy's autonomous file-optimization experiment loop ("Make this code faster")No overlap. They coexist.
Every invocation produces one of three outcomes:
The skill never silently runs its fallback when a specialist would have done better. Routing transparency is what makes the hybrid architecture trustworthy.
| Specialist | Routing signals | Domain | |---|---|---| | pulse | reddit / hn / x / buzz / sentiment / trending / "what's people saying" / "pulse on" / "take the pulse" / "current conversation" | Multi-source recency research | | grants | NIH / grant / R01 / K-award / RePORTER / NOSI / "grants for" / FDA / "study section" / "principal investigator" | NIH grant-funding intelligence | | litreview | literature review / PICO / SPIDER / systematic review / "review papers on" / meta-analysis | Academic literature orientation | | syllabus | syllabus / course outline / curriculum / "reading list" / "for my class" / "for my students" | Course supplementary reading | | patent | prior art / FTO / freedom to operate / patent / "patent landscape" / invention / novelty search / "ip landscape" | Patent prior-art + landscape | | dossier | "dossier on" / "due diligence" / "background check" / "prep me for" / "competitor research" / "investor diligence" / "interview prep" / "background on" | Decision-grade entity research |
Escalation → deep-research: when a wrong answer is expensive (strategy, comparing N options, hypothesis validation, mapping a field) and rigor matters more than speed, escalate to the deep-research skill instead of the fast fallback workflow — it runs a triangulated, multi-round, adversarial investigation and persists an auditable, reusable research folder. This router is the fast path; deep-research is the heavyweight one.
This skill obeys the research-pack convention:
[Background — not from search] and excluded from counts.Intake is intentionally minimal — the goal is to route fast, not to interrogate. One question per turn.
> What's the research question? State it in 1–2 sentences. Specific is better than broad — "AI for healthcare" gets you a vague survey; "How are health systems integrating LLM-based clinical decision support?" gets you a useful answer.
Refuse mush. If user says "research AI", push back once: "What about AI specifically — adoption, safety, capability, funding, regulation, comparison? Pick an angle."
> What output do you want? Pick one: > 1. Quick chat briefing (5-min read, markdown in chat) > 2. Standalone document (.docx with citations, shareable)
Forcing choice. Document mode triggers deeper search budgets and full audit logs.
ask or fallback with no signals) — Domain disambiguation> Quick clarification — pick the closest match (recommended: {N} — your question matched a `{specialist}` signal): > 1. Academic literature (papers, peer-reviewed) > 2. Industry / trends (what's the buzz, news, sentiment) > 3. Specific entity (a company, person, organization) > 4. Technology / patents (prior art, IP landscape) > 5. Grant funding (NIH, foundations) > 6. Course material (syllabus or curriculum) > 7. None of the above — run general research
When the classifier returned ask (single bare-noun signal), pre-mark the recommended option. Skip if classification produced a silent route (≥2 signals OR one strong multi-word phrase).
> For general research, what's your time horizon — quick scan (5 searches) or thorough (15 searches)?
Skip if a specialist took over.
Stop condition: After Q4 (or earlier if dependency skips applied), commit and start Phase 2. Most invocations exit intake after Q1 + Q2.
This is deterministic, not LLM-reasoned — for speed, debuggability, and consistency.
pythonSIGNALS = { pulse: ["reddit", "hn", "hacker news", "x.com", "twitter", "buzz", "sentiment", "trending", "what are people saying", "what's happening", "the conversation around", "pulse on", "take the pulse", "current conversation"], grants: ["nih", "grant", "grants for", "r01", "r21", "k-award", "reporter", "nosi", "funding", "fda", "study section", "principal investigator"], litreview:["literature review", "lit review", "litreview", "pico", "spider", "systematic review", "review papers on", "research papers on", "papers about", "meta-analysis"], syllabus: ["syllabus", "course outline", "curriculum", "reading list", "for my class", "for my students", "course material"], patent: ["prior art", "fto", "freedom to operate", "patent", "patent landscape", "invention", "novelty search", "patent search", "ip landscape"], dossier: ["dossier on", "due diligence", "background check", "prep me for", "competitor research", "investor diligence", "interview prep", "research my competitor", "background on"] } # Signals are case-insensitive literal phrases (multi-word substring match). # Bracketed placeholders (e.g., "research [company]") are intentionally NOT # signals — they over-trigger on generic "research X" queries that should # fall back to general research, not auto-route to dossier. # STRONG signal = multi-word phrase (contains a space): pairs verb with noun # ("dossier on", "prior art") and routes reliably. # BARE-NOUN signal = single word ("funding", "fda", "patent", "grant"): # too weak to silent-route on alone — it must trigger Q3 with a # recommended answer instead. For each specialist S: score[S] = count of SIGNALS[S] phrases matched in question (case-insensitive substring) if max(score) >= 2: route_to = argmax(score) # high confidence — silent route elif max(score) == 1 and only one specialist has score 1: if the matched phrase is multi-word (contains a space): route_to = that specialist # strong phrase — silent route else: route_to = "ask" # bare noun — ask Q3, recommend that specialist else: route_to = "fallback" # ambiguous or no match — ask Q3 / run fallback
Implementation: scripts/classifier.py --question "..." returns the routing decision + matched signals + per-specialist scores + (for ask) the recommended specialist. Use it; don't re-implement. The SIGNALS map and rules above are kept phrase-for-phrase in sync with the script — drift = bug.
When delegating:
[Delegated to: research → {specialist}] in the chat output so the user knows what skill produced itscripts/routing_transparency_logger.py --action record_delegationIf routing produced no specialist match (and Q3 confirmed general research), run the 8-step fallback:
scripts/fallback_decomposer.py --question "..." gives a deterministic starting point.scholar.google.com site filter; data/numbers → WebFetch primary documents; entity-level → offer dossier re-route.After classification, the skill always:
litreview because you mentioned PICO and meta-analysis (2 signals)."routing_transparency_logger.py --action record_override.Never delegates silently. This is the trust-building property that makes the hybrid pattern work.
Markdown brief (Q2 = quick chat briefing): title + *Generated: [DATE] | Routed: [specialist | fallback]*, then TL;DR (2-3 sentences) → Findings (one H3 per sub-question, inline citations) → Cross-Cutting Patterns → Sources (numbered, hyperlinked, reliability tier each) → Audit (three counts + failures).
DOCX (Q2 = standalone document): standard research-pack DOCX patterns — Arial 12pt, navy headings, blue table headers, hyperlinked sources, mandatory audit log section. Reference the docx skill for setup.
Queries sent: N | Sources received: M | Sources cited: K
Failures: F (3-consecutive-failures triggered: yes/no)
Per-source tier: [URL — primary | secondary | tertiary]
Routing decision: fallback (no specialist matched)
Sub-questions: [list]All routing decisions + overrides also logged to ~/.research_sessions/<session>.json via routing_transparency_logger.py.
| Failure | Behavior | |---|---| | Single bare-noun signal (e.g., "funding", "fda") | Ask Q3 with the matched specialist pre-marked as the recommended answer. Never silent-route. | | Classification ambiguous (multiple 1-signal matches or none) | Ask Q3 (domain disambiguation). | | Specialist delegation fails | Note in chat. Offer to retry or fall back to general research. | | User overrides routing | Accept. Re-route. Log the override. | | Fallback search returns thin results | Surface explicitly. Suggest the question may be too niche or too new. Do not fabricate. | | 3 consecutive tool failures in fallback | Stop, alert user, share what was collected. | | Question is non-research (e.g., "write me code") | Decline politely. Suggest the appropriate skill. | | Sub-question can't be answered | Note as "limited public signal on this"; don't omit silently. | | Output format mismatch | Honor Q2; if unavailable, fall back to markdown with note. | | Specialist skill missing from environment | Skip it in classification scoring; route to fallback or next-best specialist. |
dossier is the right specialist (the verb-noun-paired phrase routes; the generic "research X" form does not)scripts/classifier.py — Deterministic SIGNALS matching → routing decision (specialist / ask + recommended / fallback) + per-specialist score + matched phrases. --question "..." --output json.scripts/routing_transparency_logger.py — JSON-backed audit log at ~/.research_sessions/<session>.json. Records every routing decision, override, and delegation handoff.scripts/fallback_decomposer.py — Heuristic question → 3–5 sub-questions (what / why / how / who / what's next).references/hybrid_router_architecture.md — router-vs-run trade-offs + routing transparency principlereferences/deterministic_classification_canon.md — why keyword > LLM-reasoned for routingreferences/fallback_workflow_canon.md — plan-decompose-search-synthesize methodologyWebSearch + WebFetch — Required for fallback workflowpulse, grants, litreview, syllabus, patent, dossier. If a specialist is missing, the router skips it and routes to fallback instead.docx library — Required if user picks document output (Q2 = standalone)Version: 1.1.0 Source spec: megaprompts/13-research-megaprompt.md Build pattern: Path B (direct conversion). v1.1.0: bare-noun signals now ask instead of silent-routing; 5s auto-proceed affordance removed; context-economy trim per the 2026-06 newgen audit.
Other measured skills in the registry, with their headline benchmark lift.