claude/skills/deep-research/SKILL.md
Multi-source deep research using Exa MCP. Breaks topics into sub-questions, searches with category-aware queries, deep-reads key sources, and synthesizes cited reports. Use when the user wants thorough research, deep dives, competitive analysis, technology evaluation, tool/library comparison, company research, market landscape analysis, or any question requiring synthesis from multiple sources. Triggers on "research", "deep dive", "investigate", "what's the current state of", "compare", "对比", "比较", "哪个好", "推荐几个", "evaluate", "帮我调研", "深入研究", "研究下", "research this company", "competitor analysis", "company overview", "market landscape", "who are the players in", "alternatives to".
npx skillsauth add dragonkid/dotfiles deep-researchInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Produce thorough, cited research reports by breaking topics into sub-questions and searching with Exa's category-aware tools.
Always spawn Task agents for search and deep-read steps. Agent returns distilled findings only — main context stays clean.
When dispatching agents, include tool routing and category restrictions in the prompt. Agents don't see this skill — they only know what you tell them. Example:
Research [topic]. For GitHub projects, use `gh api repos/{owner}/{repo}` for
metadata/README — not web search. For community reception, use Exa
web_search_advanced_exa with category "tweet" or includeDomains ["reddit.com"].
Category restrictions: "company" allows NO date/text/domain filters;
"tweet" allows NO includeText/excludeText/includeDomains/excludeDomains.
Return distilled findings with source URLs.
Not everything should go through Exa. Pick the right tool for each data source:
| Data source | Tool | Why |
|-------------|------|-----|
| GitHub repo metadata (stars, language, topics) | gh api repos/{owner}/{repo} | Structured data, zero noise, instant |
| GitHub README | gh api repos/{owner}/{repo}/readme --jq '.content' \| base64 -d | Full content, no web scraping |
| Community discussions (Reddit, HN, Twitter) | Exa web_search_advanced_exa | Category-aware, highlights mode |
| News, papers, blogs | Exa web_search_advanced_exa | Category filters, date filters |
| Full page content | Exa crawling_exa | Deep reads, maxCharacters control |
When dispatching research agents, include tool routing in the prompt so agents use the right tool for each source.
Ask 1-2 quick clarifying questions:
If the user says "just research it" — skip ahead with reasonable defaults.
Before web research, check the Obsidian vault for existing notes on the topic. This avoids duplicating prior research and surfaces useful context:
Grep pattern="<topic keywords>" path="~/Documents/second-brain" glob="*.md"
If related notes found:
## Related section laterIf nothing found, proceed directly to web research.
If the topic has strong time-sensitivity signals (product launches, breaking news, market events, "最近", "现在", "刚出的", recent dates, or anything where community reaction in the last 30 days matters more than authoritative analysis), add a note at the end of the report:
> Tip: 这个主题时效性强,可以用 `/last30days <topic>` 获取 Reddit/X/YouTube/Polymarket 的社区实时讨论和 engagement 数据,与本报告互补。
This complements deep-research's authoritative sources (papers, blogs, company data) with community sentiment and engagement signals that Exa cannot capture (Reddit upvotes, X likes, YouTube transcript content, Polymarket odds).
Break the topic into 3-5 research sub-questions. For each, decide the best Exa category:
| Sub-question type | Tool | Category | Why |
|-------------------|------|----------|-----|
| Current events, press | web_search_advanced_exa | news | Journalism, announcements |
| Academic findings | web_search_advanced_exa | research paper | arXiv, peer-reviewed |
| Company/market data | web_search_advanced_exa | company | Homepages, metadata |
| Community sentiment | web_search_advanced_exa | tweet | Developer opinions, discussions |
| Expert perspectives | web_search_advanced_exa | personal site | Independent analysis, blogs |
| General / mixed | web_search_exa | (none) | Broad coverage |
For each sub-question, generate 2-3 keyword variations — Exa returns different results for different phrasings. Run variations in parallel, merge and deduplicate.
Example for sub-question "What are the main AI applications in healthcare?":
Search parameters:
highlights mode for search results (10x fewer tokens than full text)numResults: 10-15 per variationstartPublishedDate for recency (last 12 months)includeDomains: ["arxiv.org"] if neededThese restrictions cause 400 errors if violated:
company: NO date filters, NO text filters, NO includeDomains/excludeDomainspeople: NO date filters, NO text filters, NO excludeDomains. includeDomains only accepts LinkedIntweet: NO includeText, excludeText, includeDomains, excludeDomains, moderationfinancial report: NO excludeTextresearch paper, personal site, news: all filters workincludeText/excludeText only support single-item arraysWhen a category restricts filters you need, drop the category and use web_search_exa with keywords in the query instead.
For the 3-5 most promising URLs from search results, fetch full content:
crawling_exa(url: "<url>", maxCharacters: 10000)
Use text mode (not highlights) for deep reads — you need the full context to synthesize accurately.
Structure the report with inline citations:
# [Topic]: Research Report
*Generated: [date] | Sources: [N] | Confidence: [High/Medium/Low]*
## Executive Summary
[3-5 sentence overview of key findings]
## 1. [First Major Theme]
[Findings with inline citations]
- Key point ([Source Name](url))
- Supporting data ([Source Name](url))
## 2. [Second Major Theme]
...
## Key Takeaways
- [Actionable insight 1] ([Source Name](url))
- [Actionable insight 2] ([Source Name](url))
Every takeaway must cite at least one supporting source so the reader can verify and judge independently.
## Sources
1. [Title](url) — [one-line summary]
2. ...
## Methodology
Searched [N] queries across [categories used]. Analyzed [M] sources.
Sub-questions investigated: [list]
For broad topics, parallelize sub-questions across Task agents:
Launch 3 research agents:
1. Agent 1: Sub-questions 1-2 (news + research paper categories)
2. Agent 2: Sub-questions 3-4 (company + general categories)
3. Agent 3: Sub-question 5 + cross-cutting themes (tweet + personal site)
Each agent searches, reads sources, and returns findings. Main session synthesizes into the final report.
When the research target is a company or market landscape, use this pre-planned sub-question template instead of designing from scratch:
category: "company", find companies in the spaceincludeDomains for TechCrunch/Crunchbase/Bloombergcategory: "news", startPublishedDate for recent coveragecategory: "tweet", developer/user sentimentcategory: "people", key executives and teamDynamic tuning for company lists:
numResults: 10-20numResults: 50-100Output format for company lists: use structured table (name, description, funding, headcount) instead of prose. For single-company deep dives, use the standard report template.
Business-oriented research: When the goal is a business decision (investor diligence, market sizing, competitive positioning, vendor evaluation), read references/business-research-modes.md first to get the analysis checklist for that mode. Use the checklist to plan sub-questions, then execute searches with the tool routing and category rules from this skill. The checklist defines what to collect; this skill defines how to search.
For complex topics that benefit from structured output, use Exa's deep search:
web_search_advanced_exa(
query: "compare frontier AI model releases 2025-2026",
type: "deep",
numResults: 10
)
Deep search runs multiple query variations internally and returns synthesized results. Use type: "deep" when a single sub-question is complex enough to warrant multi-step reasoning. Don't use for simple factual lookups — auto is faster and cheaper.
tools
Use when user wants to manage TODO items - adding tasks, listing pending items, marking done, removing, or searching. Triggers on /todo command or TODO-related requests.
tools
Use when creating a new skill, updating an existing skill, or troubleshooting skill frontmatter, gating, or slash command registration issues in OpenClaw.
tools
手动触发自我改进与记忆维护。分析近期 memory 文件,维护工作区文件,提出改进提案。触发方式:/self_improve 或用户说"自我改进"、"self improve"。
testing
测试 OpenClaw 配置中 LLM provider 的可用性。触发方式:/provider_check 或用户问"测试 provider 可用性"、"检查 provider 状态"、"provider 健康检查"。