juanandresgs/claude-ctrl/deep-research
Claude Code and agent skill by juanandresgs/claude-ctrl
- community
Checking that the SKILL.md file is still in the repository.
Multi-model deep research with comparative assessment (OpenAI + Perplexity + Gemini). Queries 3 deep research providers in parallel and produces a comparative synthesis.
Install
npx vskill@latest install juanandresgs/claude-ctrl/deep-researchSKILL.md
Deep Research: Multi-Model Comparative Analysis
Query up to 3 deep research models (OpenAI o3-deep-research, Perplexity sonar-deep-research, Gemini deep-research-pro) in parallel, then produce a comparative assessment highlighting agreements, disagreements, and unique insights.
Setup Check
The skill requires at least one API key. Check ~/.claude/.env:
First-Time Setup
If no config exists, create it:
DO NOT stop if the config doesn't exist. Create it and tell the user to add keys.
Research Execution
Step 1: Run the deep research script
CRITICAL: This script takes 2-10 minutes. It runs blocking — do NOT use run_in_background. This skill runs in a forked context, so blocking is correct.
Create the output directory and run the script:
Set timeout: 1920000 on the Bash tool call (script's 1800s timeout + 120s buffer = 1920s = 32 min).
The script will:
- Detect which API keys are configured
- Launch available providers in parallel
- Poll async providers (OpenAI, Gemini) until complete
- Write
raw_results.jsonto the output directory - Print progress to stderr
IMPORTANT: Deep research models take 2-10 minutes per provider. The script handles all polling internally. Do NOT interrupt it.
Step 2: Read and parse the results
Use the Read tool to read raw_results.json from the output directory. The file is a JSON object:
Note: citation_validation and validation fields within citations are only present if --validate=1 or higher was used. The comparison_matrix key is always present — it is computed deterministically by the script from markdown headings and citation URLs.
Step 3: Check for provider failures
MANDATORY: Before synthesis, check if success_count < provider_count (or check the warnings array in the JSON). If ANY providers failed:
- Immediately tell the user with a
WARNING:prefix — which providers failed, their error messages, and elapsed time - You SHOULD supplement failed providers with WebSearch to fill knowledge gaps
- Note which findings in your synthesis came from WebSearch rather than deep research
Do NOT silently skip failed providers. The user must know about failures before reading the report.
Synthesis: Produce the Comparative Report
Read ALL provider reports carefully. Then produce a report in this structure:
Adaptation rules:
- If only 1 provider succeeded: Skip comparative sections, note limited analysis. Begin Executive Summary with a note about which provider(s) failed and why.
- If only 2 providers succeeded: Pairwise comparison instead of tri-model. Begin Executive Summary with a note about which provider failed and why.
- If 0 providers succeeded: Report the errors and suggest checking API keys
Save All Outputs
The output directory was already created in Step 1. The script already wrote raw_results.json there.
Write these additional files to the same directory:
| File | Contents | |
|---|---|---|
report.md | Your comparative synthesis (the report above) | |
comparison-matrix.md | Topic coverage matrix (see below) | |
openai.md | OpenAI's full report text (from results[].report where provider=openai) | |
perplexity.md | Perplexity's full report text | |
gemini.md | Gemini's full report text |
Only write provider files for providers that succeeded. The raw individual reports are often 5-40K chars — preserve them in full, don't truncate.
Comparison Matrix
The script produced a comparison_matrix object inside raw_results.json and a standalone comparison_matrix.json. Start from the pre-built matrix. The script matched topics using heading text similarity. Review the results:
- Render the matrix as-is for topics with
match_method: "exact"or"heading-fuzzy"— these are high-confidence matches. - Review `unmatched_hints` — these are unique topics the code couldn't match, along with their body keywords. If any cover the same subject across providers despite different headings, merge them in your synthesis and note the merge with
[llm-merged]. - The matrix is your scaffold, not your constraint. Code handles structure; you handle meaning.
How to render the matrix:
- Read
comparison_matrix.topicsfrom the JSON — each entry hasname, one key per provider ("detailed","mentioned", or"absent"), andagreement. - Render it as a markdown table.
- Use
comparison_matrix.citation_overlapto call out URLs cited by multiple providers (these are the highest-confidence sources). - Use
comparison_matrix.statsfor the summary line (consensus/majority/unique counts).
Example output format:
Your job in synthesis: Read the structured matrix and explain the interesting patterns — which consensus findings are most significant, which unique-provider findings deserve follow-up, which majority findings have the strongest evidence. The matrix gives you the structure; you provide the interpretation.
Coverage levels (defined by word count in the section body):
- Detailed — 100+ words (substantial section)
- Mentioned — 1–99 words (brief reference)
- Absent — Topic not found in provider's report
Tell the user where the reports were saved and list the files.
Graceful Degradation
| Keys Available | Behavior | |
|---|---|---|
| 0 | Error with setup instructions | |
| 1 | Single provider report, note limited comparison | |
| 2 | Pairwise comparison | |
| 3 | Full tri-model comparison |
Write Context Summary (MANDATORY — do this LAST)
Write a compact result summary so the parent session receives key findings:
Keep under 2000 characters. This is consumed by a hook — the parent session will see it automatically.
After the Report
End with:
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/deep-research/SKILL.md
Popularity
- Repository stars
- 192
- Repository forks
- 29
- 7-day trend score
- 26
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/juanandresgs/claude-ctrl/deep-research)