From rp1-base
Orchestrates autonomous deep research on codebases and technical topics using map-reduce explorer architecture for structured report output.
npx claudepluginhub rp1-run/rp1 --plugin rp1-baseThis skill is limited to using the following tools:
Extract these parameters from the user's input:
Orchestrates autonomous deep research on codebases and technical topics via map-reduce explorer architecture with sub-agents, generating structured reports.
Orchestrates multi-agent research across web, codebase, and community sources for broad, mixed, or ambiguous analyze/investigate requests needing evidence synthesis.
Share bugs, ideas, or general feedback.
Extract these parameters from the user's input:
| Parameter | Required | Default | Description |
|---|---|---|---|
RESEARCH_TOPIC | Yes | - | The user's research topic or questions (freeform text) |
Environment values (resolve via shell):
RP1_ROOT: !rp1 agent-tools rp1-root-dir (extract data.root from JSON response)You are executing the Deep Research workflow. You coordinate autonomous research through a map-reduce architecture: clarify intent, spawn parallel explorers, synthesize findings, and delegate report generation.
CRITICAL: Commands CAN spawn agents. You will spawn research-explorer agents for exploration and research-reporter for report generation. Do NOT delegate orchestration to another agent.
stateDiagram-v2
[*] --> clarify
clarify --> plan : intent_clear
plan --> explore : plan_ready
explore --> synthesize : exploration_complete
synthesize --> report : synthesis_complete
report --> [*] : done
On each phase transition, report via:
rp1 agent-tools emit \
--workflow deep-research \
--type status_change \
--run-id {RUN_ID} \
--step {CURRENT_STATE} \
--data '{"status": "running"}'
RUN_ID as a UUID at workflow startState Progression Protocol:
--step with --data '{"status": "running"}' when you enter that state→ [*] transitions): report with --data '{"status": "completed"}' when the step's work finishesExample sequence:
--step clarify --data '{"status": "running"}' # entering clarify phase
--step plan --data '{"status": "running"}' # intent clear, entering plan phase
--step explore --data '{"status": "running"}' # plan ready, entering explore phase
--step synthesize --data '{"status": "running"}' # exploration done, entering synthesize phase
--step report --data '{"status": "running"}' # synthesis done, entering report phase
--step report --data '{"status": "completed"}' # report work finished, workflow done
Goal: Understand exactly what the user wants to research before spawning explorers.
Analyze the RESEARCH_TOPIC to identify:
Use AskUserQuestion if RESEARCH_TOPIC is ambiguous about:
Clear requests (skip clarification):
Ambiguous requests (ask clarification):
After clarification (or immediately if clear), construct:
RESEARCH_INTENT:
- mode: single-project | multi-project | technical-investigation
- primary_questions: [list of specific questions to answer]
- target_projects: [list of project paths, or ["."] for current]
- focus_areas: [architecture | patterns | implementation | integration | performance]
- depth: overview | standard | deep
Goal: Define explorer assignments for parallel execution.
Based on RESEARCH_INTENT:
Single-project mode:
Multi-project mode:
Technical investigation mode:
For each explorer, prepare:
CRITICAL: Spawn ALL explorers in a SINGLE message with PARALLEL Task tool calls.
For each explorer:
Task tool: subagent_type: rp1-base:research-explorer prompt: Explore and return JSON findings. EXPLORATION_TARGET: {target} QUESTIONS: {stringify(questions)} EXPLORATION_TYPE: {type} KB_PATH: {kb_path}
Return structured JSON per output contract.
Naming convention: explorer-{n} where n is 1, 2, 3...
Wait for ALL explorers to complete before proceeding.
CRITICAL: Use extended thinking for this entire phase.
Parse JSON output from each explorer:
Handle failures:
Combine findings from all explorers:
Using extended thinking, analyze merged findings to:
Based on synthesis, create actionable recommendations:
Identify diagrams that would aid understanding:
For each diagram, specify:
Construct the synthesis data JSON for the reporter:
{
"topic": "<research topic>",
"scope": "single-project | multi-project | technical-investigation",
"projects_analyzed": ["<path1>", "<path2>"],
"research_questions": ["<q1>", "<q2>"],
"executive_summary": "<1-2 paragraph summary>",
"findings": [
{
"id": "F-001",
"category": "<category>",
"title": "<title>",
"description": "<description>",
"confidence": "high | medium | low",
"evidence": [...]
}
],
"comparative_analysis": {
"aspects": ["<aspect1>", "<aspect2>"],
"comparison_table": [
{"aspect": "<aspect>", "project_a": "<approach>", "project_b": "<approach>", "analysis": "<comparison>"}
]
},
"recommendations": [
{
"id": "R-001",
"action": "<action>",
"priority": "high | medium | low",
"rationale": "<why>",
"implementation_notes": "<how>"
}
],
"diagram_specs": [
{
"id": "D-001",
"title": "<title>",
"type": "flowchart | sequence | er | class",
"description": "<what to visualize>",
"elements": ["<element descriptions>"]
}
],
"sources": {
"codebase": ["<file:line> - <description>"],
"external": ["<URL> - <description>"]
},
"metadata": {
"explorers_spawned": "<count>",
"kb_status": {"<project>": {"available": true, "files_loaded": ["..."]}},
"files_explored": "<total_count>",
"web_searches": "<total_count>"
}
}
The reporter handles output file naming (slugification, directory creation, deduplication).
Task tool: subagent_type: rp1-base:research-reporter prompt: Generate research report. SYNTHESIS_DATA: {stringify(synthesis_data)} RP1_ROOT: {{$RP1_ROOT}} REPORT_TYPE: {standard | comparative}
Return JSON with report status and path.
Parse JSON output:
Handle failure:
After extracting report_path, register it in the artifact database:
rp1 agent-tools emit \
--workflow deep-research \
--type artifact_registered \
--run-id {RUN_ID} \
--step report \
--data '{"path": "{report_path}", "feature": "research"}'
Output a concise summary to the user:
## Research Complete
**Topic**: {research_topic}
**Scope**: {scope}
**Projects Analyzed**: {project_list}
### Key Findings
{2-3 sentence summary of most important findings}
### Recommendations
- {Top recommendation 1}
- {Top recommendation 2}
### Report
Full report saved to: `{report_path}`
**Methodology**:
- Explorers spawned: {count}
- KB files loaded: {list or "none available"}
- Files explored: {count}
- Web searches: {count}
- Diagrams generated: {count}
EXECUTE IMMEDIATELY:
If blocked:
CRITICAL - Keep Output Focused:
| Error | Action |
|---|---|
| Ambiguous topic | Ask ONE clarifying question |
| No target projects | Default to current directory |
| Explorer JSON invalid | Skip explorer, continue if >50% succeed |
| >50% explorers fail | Abort with clear error message |
| Reporter fails | Output synthesis summary directly to user |
| No findings | Report "no significant findings" with methodology |