Multi-directional deep research with sub-agents, scoring, source verification, and cited synthesis. Use for comprehensive research, deep analysis, or evidence-backed answers. Produces executive summary + markdown report. Supports search tools, playwright-cli, and MCP.
71
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Multi-stage research: plan → sequential search (with per-direction review) → escalate if needed → synthesize.
Architecture:
Key invariants:
[N] citation[unverified — single source]Before planning, detect the available search/fetch method. Try each in order, stop at first that works.
| Priority | Method | Detection |
|---|---|---|
| 1 | Built-in search tool | Check tool list for websearch (OpenCode), WebSearch (Claude Code), or IDE-native search equivalent — search must return URLs from a query, not just fetch a known URL |
| 2 | playwright-cli (headless) | Run playwright-cli --version via shell; success = available |
| 3 | Playwright MCP | Check tool list for browser_navigate + browser_snapshot tools |
| 4 | Other MCP search/fetch tools | Check tool list for any MCP tool that accepts a query string and returns results |
Output of this phase — two variables passed to every worker:
search_method: short name, e.g. built-in, playwright-cli, playwright-mcp, mcp_bravesearch_instructions: a brief how-to for that method (see examples below)Instruction examples by method:
# built-in
search_method: built-in
search_instructions: >
Use the built-in search tool (websearch in OpenCode, WebSearch in Claude Code) to run each query
and get result URLs. Then use the built-in fetch tool (webfetch / WebFetch) to retrieve full
page content for each accepted URL.
Run all queries as parallel tool calls in one message where the IDE supports it.
# playwright-cli
search_method: playwright-cli
search_instructions: >
Use shell to navigate and extract content:
playwright-cli open
playwright-cli goto "https://www.google.com/search?q=<encoded_query>"
playwright-cli snapshot
Read the snapshot text to extract result URLs, then for each URL:
playwright-cli goto "<url>"
playwright-cli snapshot
Run queries sequentially (one browser session, sequential navigation).
# playwright-mcp
search_method: playwright-mcp
search_instructions: >
Use browser_navigate(url) to open a page and browser_snapshot() to extract its content.
For search, navigate to a search engine with the query in the URL:
browser_navigate("https://www.google.com/search?q=<encoded_query>")
browser_snapshot()
Extract result URLs from the snapshot, then for each URL:
browser_navigate("<url>")
browser_snapshot()
Run queries sequentially.
# other MCP (fill in actual tool name)
search_method: mcp_<toolname>
search_instructions: >
Use mcp_<toolname>_search(query) to search and mcp_<toolname>_fetch(url) to fetch.
Run all queries as parallel tool calls in one message if the tool supports it.If no method is available: stop, report to user, do not proceed.
Decompose the research topic into 3–6 non-overlapping directions.
For each direction, define:
direction: one-sentence description of what to investigatesearch_queries: 3–5 query variations (broad + narrow + negation/criticism)acceptance_criteria: what makes a source acceptable (see deep-research-worker.md for authority scores and recency defaults)output_file: path like <tmp_dir>/<slug>.md (where <tmp_dir> is created in this phase)Create a temporary directory using the system temp facility:
mktemp -d "${TMPDIR:-/tmp}/deep-research-XXXXXX"Save the returned path as tmp_dir — pass it to all workers and use in Phase 4–5.
Output the plan as a markdown list before proceeding. Do not ask for approval — proceed automatically.
Example direction definition:
Direction: Current adoption rates and market data
Queries:
- "deep learning adoption enterprise 2024 statistics"
- "AI deployment survey 2024 2025"
- "machine learning production usage report"
Acceptance: data from surveys, analyst reports, or official sources; published 2022+
Output: <tmp_dir>/adoption-rates.mdLaunch sub-agents one at a time. After each completes, the main agent reviews the output and scores it before launching the next.
Invoke the deep-research-worker subagent for each direction. Pass as task prompt:
direction: {direction}
search_queries:
{search_queries}
acceptance_criteria: {acceptance_criteria}
output_file: {output_file}
search_method: {search_method}
search_instructions: |
{search_instructions}After each worker completes, the main agent reads {output_file} and evaluates:
| Check | Pass condition |
|---|---|
| Accepted sources | ≥ 2 sources with authority score ≥ 3 |
| Coverage | At least 1 fact per search query angle |
| Confidence floor | ≥ 1 fact with confidence = high or medium |
| No fabrication | All facts have traceable source URL |
Workers are NOT launched simultaneously. Sequential execution allows the main agent to adjust remaining directions based on what earlier workers found.
Triggered inline during Phase 2 when the main agent's post-worker review fails any check.
Direction quality score — computed by main agent after reading each worker's output:
| Metric | Weight | How to score |
|---|---|---|
| Accepted source count | 30% | 0 sources=0, 1=5, 2=8, 3+=10 |
| Avg authority score of accepted sources | 30% | avg of per-source scores (1–5), scaled ×2 |
| Confidence distribution | 20% | high=10, medium=6, low=2 (use best fact's confidence) |
| Coverage of search angles | 20% | (angles with ≥1 fact) / (total angles) × 10 |
Weighted total: sum of (metric score × weight). Max = 10.
Escalation threshold: direction score < 6.0
Escalation procedure:
[insufficient data — score: X.X] in final report; list all queries attemptedRead all <tmp_dir>/*.md files.
Produce the final report using assets/report_template.md.
Synthesis rules:
**[FACT]** — directly from source with citation [N]**[SYNTHESIS]** — agent's analysis or inference (no citation)confidence: high[unverified — single source]Citation format: [N] inline, full entry in Bibliography section.
research_<topic-slug>_<YYYYMMDD>.md in the working directory.## Findings, ## Gaps, ## Bibliography sections[N] citation count in body[direction name], [url])<tmp_dir>/<tmp_dir>/ directory — only after step 2 passes.Executive summary format:
Research complete: [topic]
Key findings: [2–3 sentences]
Confidence: [high/medium/low] — based on [N] sources across [M] directions
Gaps: [what was not found, if any]
Full report: [file path]| Situation | Action |
|---|---|
| Sub-agent finds 0 accepted sources | Retry with 3 alternative queries; if still 0 → mark gap |
| Sub-agent fails/crashes | Note in report; continue with remaining directions |
| Contradictory sources on key fact | Report both sides; do NOT pick one silently |
| Topic too broad to decompose | Split into sub-topics; cap at 6 directions total; workers MUST NOT spawn sub-workers |
assets/report_template.mdb4ba256
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.