/cs-research¶
Command: /cs:research <research question>
The cs-research persona is the default entry point for any research request. Routes to a specialist or runs fallback. Always transparent about the routing decision.
Distinct from engineering/autoresearch-agent¶
These share the word "research" but serve different use cases:
- /cs:research (this command) — research-query routing + fallback workflow
- engineering/autoresearch-agent — autonomous file-optimization experiment loop (Karpathy pattern)
No overlap. Don't confuse them.
When to Run¶
- Default for ANY research request — let the router pick the right tool
- You're not sure which specialist applies
- You want fallback if no specialist fits
- You want one consistent entry point for research work
When NOT to Run¶
- You already know which specialist applies — invoke it directly (
/cs:litreview,/cs:grants, etc.) and skip the routing step - You want file-optimization experiments — use
engineering/autoresearch-agent
The 6 Routing Targets¶
| Specialist | Routes when question mentions |
|---|---|
pulse |
reddit / hn / x / buzz / sentiment / trending / "pulse on" |
grants |
NIH / grant / R01 / K-award / RePORTER / "grants for" |
litreview |
literature review / PICO / SPIDER / systematic review |
syllabus |
syllabus attached / course outline / reading list |
patent |
prior art / FTO / freedom to operate / patent / novelty |
dossier |
"dossier on" / due diligence / background check / "prep me for" |
Minimal Intake (2-4 Questions)¶
| Q | Asks | When |
|---|---|---|
| Q1 | Research question (1-2 sentences, specific) | Always |
| Q2 | Output: quick chat brief OR standalone .docx | Always |
| Q3 | Domain disambiguation (7-option pick-list) | Only when classification is ambiguous (≤1 signal) |
| Q4 | Time horizon for general research (quick 5 vs thorough 15) | Only when Q3 was needed AND user picked "none of the above" |
Most invocations exit at Q2.
Routing Transparency (Mandatory)¶
After classification, the skill always:
- States the decision in one sentence: "Routing to
litreviewbecause you mentioned PICO and systematic review (2 signals)." - Offers override: "If you want general research instead or a different specialist, say so."
- Waits 1 turn for confirmation (or auto-proceeds after 5s in interactive contexts).
- If user overrides → accepts, re-routes, logs the override.
Never delegates silently. This is the trust-building property that makes the hybrid pattern work.
What You Get¶
If delegated to specialist: the specialist's full output (markdown briefing OR .docx, depending on specialist). Tagged with [Delegated to: research → {specialist}].
If fallback: the skill runs its own 8-step workflow and produces:
# [Research Question] — Briefing
*Generated: [DATE] | Routed: fallback*
## TL;DR
[2-3 sentences]
## Findings
### [Sub-question 1]
[2-4 paragraphs with inline citations]
### [Sub-question 2]
...
## Cross-Cutting Patterns
[1-2 paragraphs]
## Sources
[Numbered + hyperlinked + reliability tier per source]
## Audit
[Three counts + per-source tier + failures]
DOCX version uses same structure with research-pack styling.
Discipline¶
- Deterministic classification (NOT LLM-reasoned) — keyword signal matching via
classifier.py - Routing transparency mandatory — never silent
- Specialist delegation is pass-through — don't pre-answer specialist questions
- Fallback after Q3 when no specialist matches
- Refuse generic "research [topic]" to a specialist without paired specialist-noun
- Three-count tracking in fallback mode
- Source discipline — cite only this-session tool calls
Workflow¶
# Phase 1 intake (Q1 + Q2 minimum)
# Phase 2 classification
python ../skills/research/scripts/classifier.py --question "<Q1>"
# Returns: {route_to: "litreview", confidence: "high (2 signals)", matched: [...]}
# Phase 3a delegation (if specialist matched at ≥2 signals)
python ../skills/research/scripts/routing_transparency_logger.py \
--action record_delegation --session NAME --target litreview --signals "..."
# Pass question to /cs:litreview verbatim; let it run its own intake
# Phase 3b fallback (if no specialist matched)
python ../skills/research/scripts/fallback_decomposer.py --question "<Q1>"
# Returns 3-5 sub-questions
# Run 8-step fallback workflow: source-select → search → read+extract → synthesize → cross-cut → output → audit
Stop Conditions¶
- Specialist delegated → specialist's stop condition applies
- Fallback complete → markdown brief or DOCX delivered
- Q3 picked but no clear specialist → ask Q4 (time horizon), then run fallback
- User says "stop" → produce partial result with what's been collected
Trigger Phrases¶
- "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]"
- Plus: any research request that doesn't obviously match a more-specific specialist
Anti-Patterns Rejected¶
- LLM-reasoned classification (must be deterministic keyword matching)
- Silent delegation (always surface routing decision)
- Refusing to route to a specialist when ≥2 signals match
- Routing to a specialist when classification is genuinely ambiguous (≤1 signal)
- Pre-answering the specialist's grill-me intake
- Running fallback when a specialist would clearly do better
- Fabricating sources in fallback when search is thin
- Skipping audit log in fallback mode
- Treating "dossier on [company]" as fallback when
dossieris the right specialist - Treating "what are people saying about X" as fallback when
pulsematches - Auto-routing generic "research [topic]" without paired specialist-noun (ask Q3 instead)
Related¶
- Agent:
cs-research - Skill:
research - Source spec:
megaprompts/13-research-megaprompt.md - Routing targets:
/cs:pulse,/cs:litreview,/cs:grants,/cs:dossier,/cs:patent,/cs:syllabus - Adjacent (NOT a routing target):
/cs:notebooklm(different mode),engineering/autoresearch-agent(different use case)
Version: 1.0.0
Source: Path-B direct conversion of megaprompts/13-research-megaprompt.md