From rp1-base
Orchestrates autonomous deep research on codebases and technical topics via map-reduce explorer architecture with sub-agents, generating structured reports.
How this skill is triggered — by the user, by Claude, or both
Slash command
/rp1-base:deep-researchThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Extract these parameters from the user's input:
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 work update \
--project "$(pwd)" \
--feature {FEATURE_ID} \
--workflow deep-research \
--run-id {RUN_ID} \
--step {CURRENT_STATE} \
--status started
RUN_ID as a UUID at workflow start; derive FEATURE_ID by slugifying the research topic (e.g., "auth-flow-analysis")State Progression Protocol:
--step with --status started when you enter that state→ [*] transitions): report --status completed when the step's work finishesExample sequence:
--step clarify --status started # entering clarify phase
--step plan --status started # intent clear, entering plan phase
--step explore --status started # plan ready, entering explore phase
--step synthesize --status started # exploration done, entering synthesize phase
--step report --status started # synthesis done, entering report phase
--step report --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:
{% dispatch_agent "rp1-base:research-explorer" %} Explore and return JSON findings. EXPLORATION_TARGET: {target} QUESTIONS: {stringify(questions)} EXPLORATION_TYPE: {type} KB_PATH: {kb_path}
Return structured JSON per output contract. {% enddispatch_agent %}
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).
{% dispatch_agent "rp1-base:research-reporter" %} Generate research report. SYNTHESIS_DATA: {stringify(synthesis_data)} RP1_ROOT: {{$RP1_ROOT}} REPORT_TYPE: {standard | comparative}
Return JSON with report status and path. {% enddispatch_agent %}
Parse JSON output:
Handle failure:
After extracting report_path, register it in the artifact database:
rp1 agent-tools work artifact \
--project "$(pwd)" \
--feature {FEATURE_ID} \
--run-id {RUN_ID} \
--path {report_path}
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 |
npx claudepluginhub rp1-run/rp1Explores codebase topics by searching prior knowledge and conducting multi-angle analysis, outputting structured findings. Supports /research command and optional auto mode.
Launches agent team for parallel deep research on codebases, architectures, or technical topics, building causal models (what exists, why, what breaks) over surface coverage. Use for multi-file investigations or complex questions.
Researches codebases in Phase 1: analyzes architecture, patterns, risks on existing projects; or investigates tech stack, conventions, data-model on zero-base projects using WebSearch + Context7.