[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7ASFSGJF6G9KM40S1QJPR57":3,"skill-same:01M7ASFSGJF6G9KM40S1QJPR57":73},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":6,"ownerDescription":29,"updatedAt":30,"install":31,"resources":44},"01M7ASFSGJF6G9KM40S1QJPR57","research",null,"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\u002Fsentiment, 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 users can override. Use when the user makes any research request that doesn't obviously match a more-specific specialist skill (e.g., \"research [topic]\", \"look into [topic]\", \"what do we know about [topic]\", \"investigate [topic]\", \"find me information on [topic]\", \"do some research on [topic]\", \"I need to understand [topic]\"). Output is a markdown briefing (default) or .docx document (on request) with full citations and an audit log.","GongYuanCaiJi\u002Fdsh-claude-skills","GongYuanCaiJi","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F129952120?v=4","01M7AK39Q4W3VPF7C1K8M58BFX","劉昱廷 Yu-Ting Liu","01M7APPQ7AEZTDQB0N6HCPTR2X",0,"MIT","https:\u002F\u002Fgithub.com\u002FGongYuanCaiJi\u002Fdsh-claude-skills\u002Fblob\u002Fmain\u002Fresearch\u002Fresearch\u002Fskills\u002Fresearch\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: research\ndescription: 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\u002Fsentiment, 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 users can override. Use when the user makes any research request that doesn't obviously match a more-specific specialist skill (e.g., \"research [topic]\", \"look into [topic]\", \"what do we know about [topic]\", \"investigate [topic]\", \"find me information on [topic]\", \"do some research on [topic]\", \"I need to understand [topic]\"). Output is a markdown briefing (default) or .docx document (on request) with full citations and an audit log.\n---\n\n# Research — Hybrid Router + Fallback\n\n**The runtime orchestrator for the research domain.** Architecture C: deterministic classification → specialist delegation OR own plan-decompose-search-synthesize-cite workflow.\n\n## Portability\n\nRequires `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.\n\n## Distinct From `engineering\u002Fautoresearch-agent`\n\nThese two skills share the word \"research\" but serve **completely different use cases**:\n\n- **`research\u002Fresearch\u002F`** (this skill) — research-query router + fallback workflow (\"Research X\")\n- **`engineering\u002Fautoresearch-agent\u002F`** — Karpathy's autonomous file-optimization experiment loop (\"Make this code faster\")\n\nNo overlap. They coexist.\n\n## Hybrid Architecture (C)\n\nEvery invocation produces one of three outcomes:\n\n1. **Delegation** — Classified as specialist-domain. Routes there. User sees the specialist's output.\n2. **Fallback execution** — Classified as general research. Runs own plan → search → synthesize workflow.\n3. **Clarification request** — Classification ambiguous OR a single bare-noun signal matched. Asks one forcing question (with a recommended answer) to disambiguate, then routes.\n\nThe skill **never silently runs its fallback** when a specialist would have done better. **Routing transparency** is what makes the hybrid architecture trustworthy.\n\n## Specialist Registry\n\n| Specialist | Routing signals | Domain |\n|---|---|---|\n| `pulse` | reddit \u002F hn \u002F x \u002F buzz \u002F sentiment \u002F trending \u002F \"what's people saying\" \u002F \"pulse on\" \u002F \"take the pulse\" \u002F \"current conversation\" | Multi-source recency research |\n| `grants` | NIH \u002F grant \u002F R01 \u002F K-award \u002F RePORTER \u002F NOSI \u002F \"grants for\" \u002F FDA \u002F \"study section\" \u002F \"principal investigator\" | NIH grant-funding intelligence |\n| `litreview` | literature review \u002F PICO \u002F SPIDER \u002F systematic review \u002F \"review papers on\" \u002F meta-analysis | Academic literature orientation |\n| `syllabus` | syllabus \u002F course outline \u002F curriculum \u002F \"reading list\" \u002F \"for my class\" \u002F \"for my students\" | Course supplementary reading |\n| `patent` | prior art \u002F FTO \u002F freedom to operate \u002F patent \u002F \"patent landscape\" \u002F invention \u002F novelty search \u002F \"ip landscape\" | Patent prior-art + landscape |\n| `dossier` | \"dossier on\" \u002F \"due diligence\" \u002F \"background check\" \u002F \"prep me for\" \u002F \"competitor research\" \u002F \"investor diligence\" \u002F \"interview prep\" \u002F \"background on\" | Decision-grade entity research |\n\n**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.\n\n## Agent Integrity Rules\n\nThis skill obeys the research-pack convention:\n\n- **Execution discipline (fallback only)**: Sequential searches. 1 q\u002Fsec rate limit. Confirm response received before next call.\n- **Source discipline**: Cite only sources returned by this session's tool calls. Training knowledge labeled `[Background — not from search]` and excluded from counts.\n- **Three-count tracking (fallback only)**: Queries sent \u002F sources received \u002F sources cited.\n- **Retry policy**: On failure → wait 3s → retry once → log. After 3 consecutive failures: stop, alert user.\n- **Routing discipline**: Never delegate silently. Always state the decision + accept override.\n\n## Phase 1: Grill-Me Intake (2–4 Questions)\n\nIntake is intentionally minimal — the goal is to route fast, not to interrogate. One question per turn.\n\n### Q1 (always) — Research question\n\n> **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.**\n\n**Refuse mush.** If user says \"research AI\", push back once: \"What about AI specifically — adoption, safety, capability, funding, regulation, comparison? Pick an angle.\"\n\n### Q2 (always) — Output preference\n\n> **What output do you want? Pick one:**\n> 1. Quick chat briefing (5-min read, markdown in chat)\n> 2. Standalone document (.docx with citations, shareable)\n\nForcing choice. Document mode triggers deeper search budgets and full audit logs.\n\n### Q3 (asked only when classification returns `ask` or `fallback` with no signals) — Domain disambiguation\n\n> **Quick clarification — pick the closest match** *(recommended: {N} — your question matched a `{specialist}` signal)*:\n> 1. Academic literature (papers, peer-reviewed)\n> 2. Industry \u002F trends (what's the buzz, news, sentiment)\n> 3. Specific entity (a company, person, organization)\n> 4. Technology \u002F patents (prior art, IP landscape)\n> 5. Grant funding (NIH, foundations)\n> 6. Course material (syllabus or curriculum)\n> 7. None of the above — run general research\n\nWhen 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).**\n\n### Q4 (asked only if Q3 was needed AND user picked \"none of the above\") — General-research scope\n\n> **For general research, what's your time horizon — quick scan (5 searches) or thorough (15 searches)?**\n\nSkip if a specialist took over.\n\n**Stop condition:** After Q4 (or earlier if dependency skips applied), commit and start Phase 2. **Most invocations exit intake after Q1 + Q2.**\n\n## Phase 2: Deterministic Classification\n\nThis is **deterministic, not LLM-reasoned** — for speed, debuggability, and consistency.\n\n```python\nSIGNALS = {\n  pulse:    [\"reddit\", \"hn\", \"hacker news\", \"x.com\", \"twitter\", \"buzz\",\n             \"sentiment\", \"trending\", \"what are people saying\",\n             \"what's happening\", \"the conversation around\",\n             \"pulse on\", \"take the pulse\", \"current conversation\"],\n  grants:   [\"nih\", \"grant\", \"grants for\", \"r01\", \"r21\", \"k-award\", \"reporter\",\n             \"nosi\", \"funding\", \"fda\", \"study section\", \"principal investigator\"],\n  litreview:[\"literature review\", \"lit review\", \"litreview\", \"pico\", \"spider\",\n             \"systematic review\", \"review papers on\", \"research papers on\",\n             \"papers about\", \"meta-analysis\"],\n  syllabus: [\"syllabus\", \"course outline\", \"curriculum\", \"reading list\",\n             \"for my class\", \"for my students\", \"course material\"],\n  patent:   [\"prior art\", \"fto\", \"freedom to operate\", \"patent\",\n             \"patent landscape\", \"invention\", \"novelty search\",\n             \"patent search\", \"ip landscape\"],\n  dossier:  [\"dossier on\", \"due diligence\", \"background check\",\n             \"prep me for\", \"competitor research\", \"investor diligence\",\n             \"interview prep\", \"research my competitor\", \"background on\"]\n}\n\n# Signals are case-insensitive literal phrases (multi-word substring match).\n# Bracketed placeholders (e.g., \"research [company]\") are intentionally NOT\n# signals — they over-trigger on generic \"research X\" queries that should\n# fall back to general research, not auto-route to dossier.\n# STRONG signal = multi-word phrase (contains a space): pairs verb with noun\n# (\"dossier on\", \"prior art\") and routes reliably.\n# BARE-NOUN signal = single word (\"funding\", \"fda\", \"patent\", \"grant\"):\n# too weak to silent-route on alone — it must trigger Q3 with a\n# recommended answer instead.\n\nFor each specialist S:\n  score[S] = count of SIGNALS[S] phrases matched in question (case-insensitive substring)\n\nif max(score) >= 2:\n  route_to = argmax(score)                  # high confidence — silent route\nelif max(score) == 1 and only one specialist has score 1:\n  if the matched phrase is multi-word (contains a space):\n    route_to = that specialist              # strong phrase — silent route\n  else:\n    route_to = \"ask\"                        # bare noun — ask Q3, recommend that specialist\nelse:\n  route_to = \"fallback\"                     # ambiguous or no match — ask Q3 \u002F run fallback\n```\n\n**Implementation:** `scripts\u002Fclassifier.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.\n\n## Phase 3a: Specialist Delegation (≥2 signals OR one strong multi-word phrase)\n\nWhen delegating:\n\n1. Pass the user's question **verbatim** plus the output preference (Q2)\n2. **Let the specialist run its own grill-me intake** — do NOT pre-answer specialist questions\n3. Return specialist output as the user-visible result\n4. Tag the result with `[Delegated to: research → {specialist}]` in the chat output so the user knows what skill produced it\n5. Tag the audit log via `scripts\u002Frouting_transparency_logger.py --action record_delegation`\n\n## Phase 3b: Own Fallback Workflow\n\nIf routing produced no specialist match (and Q3 confirmed general research), run the 8-step fallback:\n\n1. **Decompose** — break the question into 3–5 sub-questions (what \u002F why \u002F how \u002F who \u002F what's next). Show the decomposition before searching. `scripts\u002Ffallback_decomposer.py --question \"...\"` gives a deterministic starting point.\n2. **Source selection** — per sub-question: recency → WebSearch+WebFetch (+Reddit\u002FHN on signal); technical\u002Fdocs → WebSearch+WebFetch; academic → Consensus MCP if connected, else WebSearch with `scholar.google.com` site filter; data\u002Fnumbers → WebFetch primary documents; entity-level → offer `dossier` re-route.\n3. **Search** — sequential per sub-question, 1 q\u002Fsec, 2–4 queries per source, broad-to-narrow.\n4. **Read + extract** — WebFetch high-signal results; note every source URL.\n5. **Synthesize** — 2–4 paragraphs per sub-question with inline citations; surface disagreement when sources disagree.\n6. **Cross-cutting patterns** — 1–2 paragraphs across sub-questions: consensus, controversy, gaps.\n7. **Output** — markdown brief by default; DOCX if user picked document mode.\n8. **Audit log** — three counts (sent \u002F received \u002F cited) + per-source reliability tier (primary \u002F secondary \u002F tertiary).\n\n## Routing Transparency Protocol (Mandatory)\n\nAfter classification, the skill **always**:\n\n1. **States the decision** in one sentence: \"Routing to `litreview` because you mentioned PICO and meta-analysis (2 signals).\"\n2. **Offers override**: \"If you want general research instead OR a different specialist, say so now.\"\n3. **Proceeds with the recommended route if the user doesn't object** — no timers, no countdowns.\n4. **If user overrides** → accept, re-route, log the override via `routing_transparency_logger.py --action record_override`.\n\n**Never delegates silently.** This is the trust-building property that makes the hybrid pattern work.\n\n## Output Format\n\n**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).\n\n**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.\n\n### Audit log block (fallback mode)\n\n```\nQueries sent: N | Sources received: M | Sources cited: K\nFailures: F (3-consecutive-failures triggered: yes\u002Fno)\nPer-source tier: [URL — primary | secondary | tertiary]\nRouting decision: fallback (no specialist matched)\nSub-questions: [list]\n```\n\nAll routing decisions + overrides also logged to `~\u002F.research_sessions\u002F\u003Csession>.json` via `routing_transparency_logger.py`.\n\n## Failure Modes\n\n| Failure | Behavior |\n|---|---|\n| Single bare-noun signal (e.g., \"funding\", \"fda\") | Ask Q3 with the matched specialist pre-marked as the recommended answer. Never silent-route. |\n| Classification ambiguous (multiple 1-signal matches or none) | Ask Q3 (domain disambiguation). |\n| Specialist delegation fails | Note in chat. Offer to retry or fall back to general research. |\n| User overrides routing | Accept. Re-route. Log the override. |\n| Fallback search returns thin results | Surface explicitly. Suggest the question may be too niche or too new. Do not fabricate. |\n| 3 consecutive tool failures in fallback | Stop, alert user, share what was collected. |\n| Question is non-research (e.g., \"write me code\") | Decline politely. Suggest the appropriate skill. |\n| Sub-question can't be answered | Note as \"limited public signal on this\"; don't omit silently. |\n| Output format mismatch | Honor Q2; if unavailable, fall back to markdown with note. |\n| Specialist skill missing from environment | Skip it in classification scoring; route to fallback or next-best specialist. |\n\n## Anti-Patterns Rejected\n\n- LLM-reasoned classification (must be deterministic keyword + intent matching)\n- Silent delegation (always surface routing decision)\n- Refusing to route to a specialist when ≥2 signals match\n- Silent-routing on a single bare-noun signal (\"research FDA approval trends\" must ask, not auto-route to grants)\n- Wall-clock affordances (\"auto-proceed after Ns\") — the model cannot wait; proceed with the recommended route if the user doesn't object\n- Pre-answering the specialist's grill-me intake (let it run its own)\n- Fabricating sources in fallback when search is thin\n- Skipping audit log in fallback mode\n- Treating \"dossier on [company]\" as fallback when `dossier` is the right specialist (the verb-noun-paired phrase routes; the generic \"research X\" form does not)\n- Auto-routing generic \"research [topic]\" queries to a specialist (\"research Microsoft\" alone is ambiguous — could be dossier or general; ask Q3 instead of guessing)\n\n## Tooling\n\n- **`scripts\u002Fclassifier.py`** — Deterministic SIGNALS matching → routing decision (`specialist` \u002F `ask` + recommended \u002F `fallback`) + per-specialist score + matched phrases. `--question \"...\" --output json`.\n- **`scripts\u002Frouting_transparency_logger.py`** — JSON-backed audit log at `~\u002F.research_sessions\u002F\u003Csession>.json`. Records every routing decision, override, and delegation handoff.\n- **`scripts\u002Ffallback_decomposer.py`** — Heuristic question → 3–5 sub-questions (what \u002F why \u002F how \u002F who \u002F what's next).\n\n### Reference Docs (each cites 7+ authoritative sources)\n\n- **`references\u002Fhybrid_router_architecture.md`** — router-vs-run trade-offs + routing transparency principle\n- **`references\u002Fdeterministic_classification_canon.md`** — why keyword > LLM-reasoned for routing\n- **`references\u002Ffallback_workflow_canon.md`** — plan-decompose-search-synthesize methodology\n\n## Dependencies\n\n- **`WebSearch`** + **`WebFetch`** — Required for fallback workflow\n- **Specialist skills** — Required for delegation: `pulse`, `grants`, `litreview`, `syllabus`, `patent`, `dossier`. If a specialist is missing, the router skips it and routes to fallback instead.\n- **Node.js `docx` library** — Required if user picks document output (Q2 = standalone)\n- **Consensus MCP** — Optional; used in fallback if academic sub-questions surface\n\n---\n\n**Version:** 1.1.0\n**Source spec:** [`megaprompts\u002F13-research-megaprompt.md`](..\u002F..\u002F..\u002F..\u002Fmegaprompts\u002F13-research-megaprompt.md)\n**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.\n","# Research — Hybrid Router + Fallback\n\n**The runtime orchestrator for the research domain.** Architecture C: deterministic classification → specialist delegation OR own plan-decompose-search-synthesize-cite workflow.\n\n## Portability\n\nRequires `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.\n\n## Distinct From `engineering\u002Fautoresearch-agent`\n\nThese two skills share the word \"research\" but serve **completely different use cases**:\n\n- **`research\u002Fresearch\u002F`** (this skill) — research-query router + fallback workflow (\"Research X\")\n- **`engineering\u002Fautoresearch-agent\u002F`** — Karpathy's autonomous file-optimization experiment loop (\"Make this code faster\")\n\nNo overlap. They coexist.\n\n## Hybrid Architecture (C)\n\nEvery invocation produces one of three outcomes:\n\n1. **Delegation** — Classified as specialist-domain. Routes there. User sees the specialist's output.\n2. **Fallback execution** — Classified as general research. Runs own plan → search → synthesize workflow.\n3. **Clarification request** — Classification ambiguous OR a single bare-noun signal matched. Asks one forcing question (with a recommended answer) to disambiguate, then routes.\n\nThe skill **never silently runs its fallback** when a specialist would have done better. **Routing transparency** is what makes the hybrid architecture trustworthy.\n\n## Specialist Registry\n\n| Specialist | Routing signals | Domain |\n|---|---|---|\n| `pulse` | reddit \u002F hn \u002F x \u002F buzz \u002F sentiment \u002F trending \u002F \"what's people saying\" \u002F \"pulse on\" \u002F \"take the pulse\" \u002F \"current conversation\" | Multi-source recency research |\n| `grants` | NIH \u002F grant \u002F R01 \u002F K-award \u002F RePORTER \u002F NOSI \u002F \"grants for\" \u002F FDA \u002F \"study section\" \u002F \"principal investigator\" | NIH grant-funding intelligence |\n| `litreview` | literature review \u002F PICO \u002F SPIDER \u002F systematic review \u002F \"review papers on\" \u002F meta-analysis | Academic literature orientation |\n| `syllabus` | syllabus \u002F course outline \u002F curriculum \u002F \"reading list\" \u002F \"for my class\" \u002F \"for my students\" | Course supplementary reading |\n| `patent` | prior art \u002F FTO \u002F freedom to operate \u002F patent \u002F \"patent landscape\" \u002F invention \u002F novelty search \u002F \"ip landscape\" | Patent prior-art + landscape |\n| `dossier` | \"dossier on\" \u002F \"due diligence\" \u002F \"background check\" \u002F \"prep me for\" \u002F \"competitor research\" \u002F \"investor diligence\" \u002F \"interview prep\" \u002F \"background on\" | Decision-grade entity research |\n\n**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.\n\n## Agent Integrity Rules\n\nThis skill obeys the research-pack convention:\n\n- **Execution discipline (fallback only)**: Sequential searches. 1 q\u002Fsec rate limit. Confirm response received before next call.\n- **Source discipline**: Cite only sources returned by this session's tool calls. Training knowledge labeled `[Background — not from search]` and excluded from counts.\n- **Three-count tracking (fallback only)**: Queries sent \u002F sources received \u002F sources cited.\n- **Retry policy**: On failure → wait 3s → retry once → log. After 3 consecutive failures: stop, alert user.\n- **Routing discipline**: Never delegate silently. Always state the decision + accept override.\n\n## Phase 1: Grill-Me Intake (2–4 Questions)\n\nIntake is intentionally minimal — the goal is to route fast, not to interrogate. One question per turn.\n\n### Q1 (always) — Research question\n\n> **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.**\n\n**Refuse mush.** If user says \"research AI\", push back once: \"What about AI specifically — adoption, safety, capability, funding, regulation, comparison? Pick an angle.\"\n\n### Q2 (always) — Output preference\n\n> **What output do you want? Pick one:**\n> 1. Quick chat briefing (5-min read, markdown in chat)\n> 2. Standalone document (.docx with citations, shareable)\n\nForcing choice. Document mode triggers deeper search budgets and full audit logs.\n\n### Q3 (asked only when classification returns `ask` or `fallback` with no signals) — Domain disambiguation\n\n> **Quick clarification — pick the closest match** *(recommended: {N} — your question matched a `{specialist}` signal)*:\n> 1. Academic literature (papers, peer-reviewed)\n> 2. Industry \u002F trends (what's the buzz, news, sentiment)\n> 3. Specific entity (a company, person, organization)\n> 4. Technology \u002F patents (prior art, IP landscape)\n> 5. Grant funding (NIH, foundations)\n> 6. Course material (syllabus or curriculum)\n> 7. None of the above — run general research\n\nWhen 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).**\n\n### Q4 (asked only if Q3 was needed AND user picked \"none of the above\") — General-research scope\n\n> **For general research, what's your time horizon — quick scan (5 searches) or thorough (15 searches)?**\n\nSkip if a specialist took over.\n\n**Stop condition:** After Q4 (or earlier if dependency skips applied), commit and start Phase 2. **Most invocations exit intake after Q1 + Q2.**\n\n## Phase 2: Deterministic Classification\n\nThis is **deterministic, not LLM-reasoned** — for speed, debuggability, and consistency.\n\n```python\nSIGNALS = {\n  pulse:    [\"reddit\", \"hn\", \"hacker news\", \"x.com\", \"twitter\", \"buzz\",\n             \"sentiment\", \"trending\", \"what are people saying\",\n             \"what's happening\", \"the conversation around\",\n             \"pulse on\", \"take the pulse\", \"current conversation\"],\n  grants:   [\"nih\", \"grant\", \"grants for\", \"r01\", \"r21\", \"k-award\", \"reporter\",\n             \"nosi\", \"funding\", \"fda\", \"study section\", \"principal investigator\"],\n  litreview:[\"literature review\", \"lit review\", \"litreview\", \"pico\", \"spider\",\n             \"systematic review\", \"review papers on\", \"research papers on\",\n             \"papers about\", \"meta-analysis\"],\n  syllabus: [\"syllabus\", \"course outline\", \"curriculum\", \"reading list\",\n             \"for my class\", \"for my students\", \"course material\"],\n  patent:   [\"prior art\", \"fto\", \"freedom to operate\", \"patent\",\n             \"patent landscape\", \"invention\", \"novelty search\",\n             \"patent search\", \"ip landscape\"],\n  dossier:  [\"dossier on\", \"due diligence\", \"background check\",\n             \"prep me for\", \"competitor research\", \"investor diligence\",\n             \"interview prep\", \"research my competitor\", \"background on\"]\n}\n\n# Signals are case-insensitive literal phrases (multi-word substring match).\n# Bracketed placeholders (e.g., \"research [company]\") are intentionally NOT\n# signals — they over-trigger on generic \"research X\" queries that should\n# fall back to general research, not auto-route to dossier.\n# STRONG signal = multi-word phrase (contains a space): pairs verb with noun\n# (\"dossier on\", \"prior art\") and routes reliably.\n# BARE-NOUN signal = single word (\"funding\", \"fda\", \"patent\", \"grant\"):\n# too weak to silent-route on alone — it must trigger Q3 with a\n# recommended answer instead.\n\nFor each specialist S:\n  score[S] = count of SIGNALS[S] phrases matched in question (case-insensitive substring)\n\nif max(score) >= 2:\n  route_to = argmax(score)                  # high confidence — silent route\nelif max(score) == 1 and only one specialist has score 1:\n  if the matched phrase is multi-word (contains a space):\n    route_to = that specialist              # strong phrase — silent route\n  else:\n    route_to = \"ask\"                        # bare noun — ask Q3, recommend that specialist\nelse:\n  route_to = \"fallback\"                     # ambiguous or no match — ask Q3 \u002F run fallback\n```\n\n**Implementation:** `scripts\u002Fclassifier.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.\n\n## Phase 3a: Specialist Delegation (≥2 signals OR one strong multi-word phrase)\n\nWhen delegating:\n\n1. Pass the user's question **verbatim** plus the output preference (Q2)\n2. **Let the specialist run its own grill-me intake** — do NOT pre-answer specialist questions\n3. Return specialist output as the user-visible result\n4. Tag the result with `[Delegated to: research → {specialist}]` in the chat output so the user knows what skill produced it\n5. Tag the audit log via `scripts\u002Frouting_transparency_logger.py --action record_delegation`\n\n## Phase 3b: Own Fallback Workflow\n\nIf routing produced no specialist match (and Q3 confirmed general research), run the 8-step fallback:\n\n1. **Decompose** — break the question into 3–5 sub-questions (what \u002F why \u002F how \u002F who \u002F what's next). Show the decomposition before searching. `scripts\u002Ffallback_decomposer.py --question \"...\"` gives a deterministic starting point.\n2. **Source selection** — per sub-question: recency → WebSearch+WebFetch (+Reddit\u002FHN on signal); technical\u002Fdocs → WebSearch+WebFetch; academic → Consensus MCP if connected, else WebSearch with `scholar.google.com` site filter; data\u002Fnumbers → WebFetch primary documents; entity-level → offer `dossier` re-route.\n3. **Search** — sequential per sub-question, 1 q\u002Fsec, 2–4 queries per source, broad-to-narrow.\n4. **Read + extract** — WebFetch high-signal results; note every source URL.\n5. **Synthesize** — 2–4 paragraphs per sub-question with inline citations; surface disagreement when sources disagree.\n6. **Cross-cutting patterns** — 1–2 paragraphs across sub-questions: consensus, controversy, gaps.\n7. **Output** — markdown brief by default; DOCX if user picked document mode.\n8. **Audit log** — three counts (sent \u002F received \u002F cited) + per-source reliability tier (primary \u002F secondary \u002F tertiary).\n\n## Routing Transparency Protocol (Mandatory)\n\nAfter classification, the skill **always**:\n\n1. **States the decision** in one sentence: \"Routing to `litreview` because you mentioned PICO and meta-analysis (2 signals).\"\n2. **Offers override**: \"If you want general research instead OR a different specialist, say so now.\"\n3. **Proceeds with the recommended route if the user doesn't object** — no timers, no countdowns.\n4. **If user overrides** → accept, re-route, log the override via `routing_transparency_logger.py --action record_override`.\n\n**Never delegates silently.** This is the trust-building property that makes the hybrid pattern work.\n\n## Output Format\n\n**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).\n\n**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.\n\n### Audit log block (fallback mode)\n\n```\nQueries sent: N | Sources received: M | Sources cited: K\nFailures: F (3-consecutive-failures triggered: yes\u002Fno)\nPer-source tier: [URL — primary | secondary | tertiary]\nRouting decision: fallback (no specialist matched)\nSub-questions: [list]\n```\n\nAll routing decisions + overrides also logged to `~\u002F.research_sessions\u002F\u003Csession>.json` via `routing_transparency_logger.py`.\n\n## Failure Modes\n\n| Failure | Behavior |\n|---|---|\n| Single bare-noun signal (e.g., \"funding\", \"fda\") | Ask Q3 with the matched specialist pre-marked as the recommended answer. Never silent-route. |\n| Classification ambiguous (multiple 1-signal matches or none) | Ask Q3 (domain disambiguation). |\n| Specialist delegation fails | Note in chat. Offer to retry or fall back to general research. |\n| User overrides routing | Accept. Re-route. Log the override. |\n| Fallback search returns thin results | Surface explicitly. Suggest the question may be too niche or too new. Do not fabricate. |\n| 3 consecutive tool failures in fallback | Stop, alert user, share what was collected. |\n| Question is non-research (e.g., \"write me code\") | Decline politely. Suggest the appropriate skill. |\n| Sub-question can't be answered | Note as \"limited public signal on this\"; don't omit silently. |\n| Output format mismatch | Honor Q2; if unavailable, fall back to markdown with note. |\n| Specialist skill missing from environment | Skip it in classification scoring; route to fallback or next-best specialist. |\n\n## Anti-Patterns Rejected\n\n- LLM-reasoned classification (must be deterministic keyword + intent matching)\n- Silent delegation (always surface routing decision)\n- Refusing to route to a specialist when ≥2 signals match\n- Silent-routing on a single bare-noun signal (\"research FDA approval trends\" must ask, not auto-route to grants)\n- Wall-clock affordances (\"auto-proceed after Ns\") — the model cannot wait; proceed with the recommended route if the user doesn't object\n- Pre-answering the specialist's grill-me intake (let it run its own)\n- Fabricating sources in fallback when search is thin\n- Skipping audit log in fallback mode\n- Treating \"dossier on [company]\" as fallback when `dossier` is the right specialist (the verb-noun-paired phrase routes; the generic \"research X\" form does not)\n- Auto-routing generic \"research [topic]\" queries to a specialist (\"research Microsoft\" alone is ambiguous — could be dossier or general; ask Q3 instead of guessing)\n\n## Tooling\n\n- **`scripts\u002Fclassifier.py`** — Deterministic SIGNALS matching → routing decision (`specialist` \u002F `ask` + recommended \u002F `fallback`) + per-specialist score + matched phrases. `--question \"...\" --output json`.\n- **`scripts\u002Frouting_transparency_logger.py`** — JSON-backed audit log at `~\u002F.research_sessions\u002F\u003Csession>.json`. Records every routing decision, override, and delegation handoff.\n- **`scripts\u002Ffallback_decomposer.py`** — Heuristic question → 3–5 sub-questions (what \u002F why \u002F how \u002F who \u002F what's next).\n\n### Reference Docs (each cites 7+ authoritative sources)\n\n- **`references\u002Fhybrid_router_architecture.md`** — router-vs-run trade-offs + routing transparency principle\n- **`references\u002Fdeterministic_classification_canon.md`** — why keyword > LLM-reasoned for routing\n- **`references\u002Ffallback_workflow_canon.md`** — plan-decompose-search-synthesize methodology\n\n## Dependencies\n\n- **`WebSearch`** + **`WebFetch`** — Required for fallback workflow\n- **Specialist skills** — Required for delegation: `pulse`, `grants`, `litreview`, `syllabus`, `patent`, `dossier`. If a specialist is missing, the router skips it and routes to fallback instead.\n- **Node.js `docx` library** — Required if user picks document output (Q2 = standalone)\n- **Consensus MCP** — Optional; used in fallback if academic sub-questions surface\n\n---\n\n**Version:** 1.1.0\n**Source spec:** [`megaprompts\u002F13-research-megaprompt.md`](..\u002F..\u002F..\u002F..\u002Fmegaprompts\u002F13-research-megaprompt.md)\n**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.\n",{"name":5,"description":7},"main","992d25a425dee442a1f6a628d00a4fed33efe839","research\u002Fresearch\u002Fskills\u002Fresearch","https:\u002F\u002Fgithub.com\u002FGongYuanCaiJi\u002Fdsh-claude-skills","https:\u002F\u002Fgithub.com\u002FGongYuanCaiJi","漏洞研究、根因分析、黑箱測試｜做 AI agent 工具｜Vulnerability research, root-cause analysis, AI agent tooling","2026-08-16 04:26:20",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add GongYuanCaiJi\u002Fdsh-claude-skills --skill research",{"tool":37,"command":38},"bunx","bunx skills add GongYuanCaiJi\u002Fdsh-claude-skills --skill research",{"tool":40,"command":41},"pnpm","pnpm dlx skills add GongYuanCaiJi\u002Fdsh-claude-skills --skill research","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FGongYuanCaiJi\u002Fdsh-claude-skills\u002Fblob\u002Fmain\u002Fresearch\u002Fresearch\u002Fskills\u002Fresearch\u002FSKILL.md",true,[45,51,55,59,65,69],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"references\u002Fdeterministic_classification_canon.md","REFERENCE","参考文档",10088,"https:\u002F\u002Fgithub.com\u002FGongYuanCaiJi\u002Fdsh-claude-skills\u002Fblob\u002Fmain\u002Fresearch\u002Fresearch\u002Fskills\u002Fresearch\u002Freferences\u002Fdeterministic_classification_canon.md",{"path":52,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":53,"sourceHtmlUrl":54},"references\u002Ffallback_workflow_canon.md",12041,"https:\u002F\u002Fgithub.com\u002FGongYuanCaiJi\u002Fdsh-claude-skills\u002Fblob\u002Fmain\u002Fresearch\u002Fresearch\u002Fskills\u002Fresearch\u002Freferences\u002Ffallback_workflow_canon.md",{"path":56,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":57,"sourceHtmlUrl":58},"references\u002Fhybrid_router_architecture.md",10666,"https:\u002F\u002Fgithub.com\u002FGongYuanCaiJi\u002Fdsh-claude-skills\u002Fblob\u002Fmain\u002Fresearch\u002Fresearch\u002Fskills\u002Fresearch\u002Freferences\u002Fhybrid_router_architecture.md",{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"scripts\u002Fclassifier.py","SCRIPT","脚本",7002,"https:\u002F\u002Fgithub.com\u002FGongYuanCaiJi\u002Fdsh-claude-skills\u002Fblob\u002Fmain\u002Fresearch\u002Fresearch\u002Fskills\u002Fresearch\u002Fscripts\u002Fclassifier.py",{"path":66,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":67,"sourceHtmlUrl":68},"scripts\u002Ffallback_decomposer.py",4075,"https:\u002F\u002Fgithub.com\u002FGongYuanCaiJi\u002Fdsh-claude-skills\u002Fblob\u002Fmain\u002Fresearch\u002Fresearch\u002Fskills\u002Fresearch\u002Fscripts\u002Ffallback_decomposer.py",{"path":70,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":71,"sourceHtmlUrl":72},"scripts\u002Frouting_transparency_logger.py",7591,"https:\u002F\u002Fgithub.com\u002FGongYuanCaiJi\u002Fdsh-claude-skills\u002Fblob\u002Fmain\u002Fresearch\u002Fresearch\u002Fskills\u002Fresearch\u002Fscripts\u002Frouting_transparency_logger.py",[74,81,88,95,102,109],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":19},"01M7ASG5XZVP67CMMRENYFQWPW","syllabus","Generates a curated supplementary reading list from any course syllabus using Consensus academic search. Grill-me intake (syllabus input format + course audience + year range) plus a grouping forcing-options checkpoint before any search runs — so the reading list matches the course's level and recency need. Parses the syllabus to extract topics and learning outcomes, searches Consensus for recent peer-reviewed papers per topic, and produces a professionally formatted .docx with clickable Consensus links, plain-language summaries calibrated to audience level, and Bloom-higher-order discussion questions tied to course learning goals. Use when the user uploads a syllabus, course outline, or curriculum document and wants supplementary readings (e.g., 'create a reading list from this syllabus', 'find recent papers for my course') — even casual mentions with a syllabus attached should trigger this skill.","https:\u002F\u002Fgithub.com\u002FGongYuanCaiJi\u002Fdsh-claude-skills\u002Fblob\u002Fmain\u002Fresearch\u002Fsyllabus\u002Fskills\u002Fsyllabus\u002FSKILL.md",[],[],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":19},"01M7ASFFNCMS1X5X276VE277KW","pulse","Multi-source recency research skill that takes the pulse of any topic across Reddit, Hacker News, the open web, and optionally X\u002FTwitter within a configurable recent window (default 30 days). Forcing intake clarifies topic specificity, angle (trend\u002Fsentiment\u002Fproblems\u002Fopportunities\u002Fcomparison), time window, and platform scope before searching. Returns a synthesized briefing with citations, engagement metrics, and cross-platform pattern analysis. Use when the user requests multi-source recency intelligence on a topic (e.g., 'pulse on [topic]', 'what's happening with [topic]', 'what are people saying about [topic]', 'current conversation about [topic]', 'take the pulse of [topic]', 'trending: [topic]', 'find me info on [topic]'), and for competitor research, trend discovery, tool comparisons, and audience sentiment analysis.","https:\u002F\u002Fgithub.com\u002FGongYuanCaiJi\u002Fdsh-claude-skills\u002Fblob\u002Fmain\u002Fresearch\u002Fpulse\u002Fskills\u002Fpulse\u002FSKILL.md",[],[],{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":19},"01M7ASF2BM8D9CDRQV1VBV7FV6","patent","Patent prior-art and landscape intelligence skill — not generic patent help. Commits to one of five sub-use-cases via forcing intake (novelty search \u002F freedom-to-operate \u002F competitive landscape \u002F acquisition diligence \u002F litigation prior-art) before any search runs. Searches Google Patents, Espacenet, USPTO, and optionally Lens.org for citation-graph signals. Output is an editable Word document (.docx) with verdict, ranked closest art (claim-text extracted), CPC-class-aware landscape, family-resolved hits, geographic coverage, FTO flags where applicable, strategy recommendations, and full audit log. Use when the user asks for patent searching or analysis (e.g., 'prior art search for [invention]', 'freedom to operate analysis for [product]'). Produces search signal, not legal advice — always recommends consulting a patent attorney before filing or licensing decisions. Trademark, copyright, and trade-secret questions are out of scope.","https:\u002F\u002Fgithub.com\u002FGongYuanCaiJi\u002Fdsh-claude-skills\u002Fblob\u002Fmain\u002Fresearch\u002Fpatent\u002Fskills\u002Fpatent\u002FSKILL.md",[],[],{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":101,"publishedAt":19},"01M7ASERRV1ES4S7QJRTTYWK0H","notebooklm","Browser automation skill for controlling Google's NotebookLM. Use when the user wants anything done in NotebookLM (e.g., 'open NotebookLM', 'check my [name] notebook', 'ask my notebook about X', 'add [source] to NotebookLM', 'generate a Video Overview from my notebook', 'use NotebookLM Studio'). Handles reading and querying notebooks, adding sources (URLs, text, files, YouTube links, synthesized content), generating Studio outputs (Audio\u002FVideo Overviews, Mind Maps, Reports incl. Briefing Doc\u002FStudy Guide\u002FFAQ, Flashcards, Quiz, slide decks, infographics — discover the exact set from the live Studio panel; the UI evolves fast), and creating new notebooks. Requires browser automation environment — fails gracefully when unavailable.","https:\u002F\u002Fgithub.com\u002FGongYuanCaiJi\u002Fdsh-claude-skills\u002Fblob\u002Fmain\u002Fresearch\u002Fnotebooklm\u002Fskills\u002Fnotebooklm\u002FSKILL.md",[],[],{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":19},"01M7ASEANH3H547WQBZ7X8W5CX","litreview","Academic literature orientation skill that searches papers via free keyless APIs (PubMed E-utilities + OpenAlex) by default — with the Consensus MCP as an optional enhancement lane when connected — builds a strategic search plan using PICO (default) or SPIDER \u002F Decomposition \u002F hybrid as fallbacks, and synthesizes findings into a formatted Word (.docx) research guide. Grill-me intake (research question specificity + framework hint + tentative depth) before the recon search; a second forcing checkpoint after Phase 2 confirms framework + sub-areas + depth before searches consume budget. Configurable depth (5\u002F10\u002F20 queries) controls coverage vs. speed. Output is a 'launching pad' — an orientation guide that lets a researcher dive in confidently, not a finished review. Use when the user starts literature-oriented research (e.g., 'litreview on [topic]', 'literature review on [topic]', 'I'm starting a literature review on X', 'I'm writing a paper on X', 'help me research X', 'I'm doing research on X', 'can you help me research X'). Do NOT use for single one-off paper searches wanting a quick list — that's a plain PubMed\u002FOpenAlex (or Consensus) query.","https:\u002F\u002Fgithub.com\u002FGongYuanCaiJi\u002Fdsh-claude-skills\u002Fblob\u002Fmain\u002Fresearch\u002Flitreview\u002Fskills\u002Flitreview\u002FSKILL.md",[],[],{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":19},"01M7ASDW5Q72HMZK5CXNFK9EFK","grants","NIH grant research skill for clinical researchers. Grill-me intake (research idea + career stage + preliminary data + environment + submission posture + known institute targets) locks down the funding strategy before any search runs. Runs a 5-facet Consensus positioning analysis (with draft Significance\u002FInnovation language), maps the research to the right NIH institutes and study sections via RePORTER, finds NOSIs and funded overlap, and produces an editable Word document (.docx) with budget\u002Fscope-aware mechanism recommendations, submission timelines, and a mandatory program officer recommendation. Use when the user asks about research funding or makes any grant-related request (e.g., 'grants for [topic]', 'find grants for my research idea', 'what grants match my research', 'help me find NIH funding', 'grant opportunities for my research'). NIH-only scope — non-NIH funders (PCORI, DOD CDMRP, VA, foundations) are out of scope and flagged at intake.","https:\u002F\u002Fgithub.com\u002FGongYuanCaiJi\u002Fdsh-claude-skills\u002Fblob\u002Fmain\u002Fresearch\u002Fgrants\u002Fskills\u002Fgrants\u002FSKILL.md",[],[]]