Awesome-omni-skill squall-deep-research
Deep research via Codex web search and optionally Gemini deep research. Use when asked to 'deep research', 'squall deep research', 'research deeply', or when a question needs web-sourced evidence. Single-agent, not a swarm. (project)
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data-ai/squall-deep-research" ~/.claude/skills/diegosouzapw-awesome-omni-skill-squall-deep-research && rm -rf "$T"
skills/data-ai/squall-deep-research/SKILL.mdSquall Deep Research
TL;DR - QUICK REFERENCE
Concept Translation Codex web search with modelclink, timeout 600s — proven path, 20+ web searches per querycodexGemini deep research with modelclink— standard search works, deep research needsgeminiGEMINI_API_KEYPrompt engineering Frame as research question with "search the web for...", "cite sources", "include URLs" Output persistence Write results to so they survive context compaction.squall/research/<topic>.mdEntry criteria:
- User needs web-sourced evidence, specifications, or current information
- Question goes beyond what's in the codebase or Claude's training data
- User says "deep research", "web research", or "research deeply"
Single-agent deep research using Squall's CLI model dispatch. Codex performs multi-step web searches and synthesizes sourced reports. Gemini adds depth when available. This is NOT a multi-agent swarm — for parallel team research, use
/squall-research instead.
Workflow
- Check memory — call
category "patterns" to see if prior research exists on this topic. Callmemory
category "tactics" for prompt engineering insights that improve Codex/Gemini research quality.memory - Frame the research question — Convert the user's request into a specific, searchable research prompt
- Dispatch via Squall
— Send to Codex (primary) and optionally Gemini (secondary)clink - Persist results — Write to
.squall/research/<topic>.md - Synthesize and memorize — Summarize key findings for the user with source attribution. Call
with category "pattern" for insights worth remembering across sessions.memorize
┌─────────────────────────────────────────────────────────────┐ │ DEEP RESEARCH WORKFLOW │ │ │ │ Check ──► Frame ──► Craft ──► clink(codex) ──► Persist │ │ memory question prompt │ │ │ │ └──► clink(gemini) ──────────┘ │ │ (optional) ▼ │ │ .squall/research/ │ │ <topic>.md │ │ ▼ │ │ Memorize findings │ └─────────────────────────────────────────────────────────────┘
Key Principles
Principle 1: Codex Web Search is the Primary Path
Codex CLI performs real web searches — not just LLM recall. A single query triggers 20+ searches, opens pages, extracts data, and synthesizes. Proven at ~93s for detailed topics producing 82K input tokens of sourced material. This is the reliable, working-today path.
Principle 2: Prompt Engineering Drives Quality
Research quality depends entirely on how you frame the prompt. Codex responds to specific triggers that activate its search behavior. Vague prompts get vague answers. Specific, data-oriented prompts with explicit search instructions get sourced reports.
Principle 3: Persist Everything
MCP tool results are ephemeral — they vanish during context compaction. Always write research output to
.squall/research/. The file path survives in compaction summaries,
so Claude can Read the file to recover full details later.
Dispatching Research
Primary: Codex Web Search
Use Squall's
clink tool:
Tool: clink Arguments: model: "codex" prompt: "<research prompt — see Prompt Engineering below>" timeout: 600
Codex needs time for multi-step web searches. The 600s timeout prevents premature cutoff. Typical research queries complete in 60-120s.
Optional: Gemini
Tool: clink Arguments: model: "gemini" prompt: "<research prompt>" timeout: 600
Gemini CLI has standard search capabilities via OAuth. For deeper investigation, the Gemini deep research extension requires
GEMINI_API_KEY (paid tier) — see Limitations.
Combining Both
Run Codex and Gemini as parallel
clink calls with different angles:
- Codex: Breadth — cast a wide net with web search, gather many sources
- Gemini: Depth — analyze, synthesize, find patterns across findings
Example: researching "Rust async runtimes"
- Codex prompt: "Search the web for comprehensive comparisons of Rust async runtimes in 2025-2026. Include benchmarks, adoption numbers, and ecosystem compatibility. Cite all sources with URLs."
- Gemini prompt: "Analyze the tradeoffs between tokio, async-std, and smol for building MCP servers. Focus on cancellation safety, memory overhead, and real-world production experience."
Prompt Engineering for Research
What triggers Codex's search behavior
| Prompt pattern | Effect |
|---|---|
| "Search the web for..." | Activates web search mode |
| "Cite sources" / "Include URLs" | Produces attributed results |
| "Find recent..." / "What's the latest..." | Targets current information |
| Specific data points (numbers, specs, versions) | Gets precise answers |
| "Compare X and Y with evidence" | Multi-source synthesis |
Template: Research Prompt
Search the web for [specific topic]. I need: 1. [Specific data point or question] 2. [Another specific question] 3. [Comparison or analysis needed] Requirements: - Cite all sources with URLs - Include specific numbers, dates, and version information - Distinguish between confirmed facts and claims - Note any contradictions between sources
Template: Persist Results
After receiving
clink output, write to disk:
File: .squall/research/<topic-slug>.md # <Topic> > Deep research via Squall/Codex — <date> ## Key Findings <synthesized summary> ## Sources <URLs and attributions from Codex output> ## Raw Output <full Codex response>
Then memorize reusable insights:
Tool: memorize Arguments: category: "pattern" content: "<key finding worth remembering across sessions>" tags: ["research", "<topic-tag>"]
Reference Tables
| Scenario | Model(s) | Timeout | Notes |
|---|---|---|---|
| Quick fact check | Codex | 300s | Single specific question |
| Detailed research | Codex | 600s | Multi-faceted topic, many sources |
| Dual-perspective | Codex + Gemini | 600s each | Parallel calls, different angles |
| API/library research | Codex | 600s | "Search the web for X documentation" |
| Model | Strength | Typical Time | Token Usage |
|---|---|---|---|
| Codex | Web search breadth, 20+ searches, sourced reports | 60-120s | ~82K input |
| Gemini | Analysis depth, synthesis, standard search | 30-90s | Varies |
Anti-Patterns
| Don't | Do Instead |
|---|---|
| Set timeout below 300s for Codex | Use 600s — Codex needs time for web searches |
| Use vague prompts ("tell me about X") | Be specific: "Search the web for X. Include URLs, dates, version numbers." |
| Use this for code review | Use — different tool, different purpose |
| Expect Gemini deep research without API key | Use Codex as primary; Gemini is supplementary |
| Leave results only in context | Always persist to |
| Use this for parallel multi-vector research | Use for swarm-based investigation |
| Frame as a code generation task | Frame as a research question — "search", "find", "compare" |
| Start research without checking memory | Call first — prior research or patterns may already exist |
| Finish without memorizing findings | Call for insights worth preserving across sessions |
Examples
Example 1: Single-Topic Research
User asks: "What are the current rate limits for the xAI Grok API?"
Tool: clink Arguments: model: "codex" prompt: "Search the web for xAI Grok API rate limits as of 2026. I need: 1. Rate limits per tier (free, paid, enterprise) 2. Token limits per request 3. Any recent changes to rate limits Cite all sources with URLs." timeout: 600
Then persist the output to
.squall/research/xai-grok-rate-limits.md.
Example 2: Dual-Model Comparative Research
User asks: "Research how other MCP servers handle streaming responses"
Run in parallel:
Tool: clink (call 1) Arguments: model: "codex" prompt: "Search the web for MCP (Model Context Protocol) servers that implement streaming responses. Find GitHub repos, blog posts, and documentation. Include implementation approaches and any limitations. Cite all sources." timeout: 600 Tool: clink (call 2) Arguments: model: "gemini" prompt: "Analyze the MCP specification's support for streaming responses. What are the protocol-level mechanisms? How do existing implementations handle partial results? What are the tradeoffs?" timeout: 600
Combine outputs into
.squall/research/mcp-streaming-responses.md.
Limitations
- Gemini deep research requires
(paid tier) — not currently configuredGEMINI_API_KEY - Codex deep research model (
) requireso4-mini-deep-research
— not availableOPENAI_API_KEY - Codex normal web search is the reliable path today — uses existing ChatGPT auth
- Results quality depends heavily on prompt engineering — be specific, ask for sources
- No structured output — research results are free-form text, not JSON
Related Skills
- squall-research - Multi-agent swarm research with parallel team members investigating different vectors
- squall-review - Code review via Squall's review tool, not for research
Session Learnings Archive
Insights captured during skill execution:
(Add learnings here as they occur, using this format:)
YYYY-MM-DD: Brief Title
Origin: What triggered this learning Core insight: The key learning Harvested → [Link to where it was integrated] OR "Pending harvest"
<!-- SENTINEL:SESSION_LEARNINGS_END -->