Our review
Executes research on any topic by directly querying the Exa API via curl, producing structured markdown reports without consuming Claude Code tokens.
Strengths
- Zero Claude token consumption
- Direct API access with flexible search types (web, code, company)
- Saves results to local markdown files for future reference
- Provides structured final reports with executive summary and sources
Limitations
- Requires an Exa API key and initial setup
- Results depend on Exa's coverage and quality
- No built-in error handling or retries for API failures
When you need thorough research on a topic without depleting Claude Code tokens, especially for complex or multi-source queries.
For simple lookups that Claude can handle directly with minimal token cost, or when you need real-time data that Exa may not have indexed.
Security analysis
CautionThe skill employs Bash and curl to call an external API, loading an API key from a decrypted secret. While the intended workflow is safe, the dynamic construction of a curl command with user input and the use of powerful system tools introduces moderate risk. Proper input sanitization is implied but not explicitly enforced.
- β’Uses Bash to run curl with user-supplied query in JSON string; potential for shell injection if topic is not properly escaped.
- β’Decrypts an API key from an encrypted file using sops, necessitating access to sensitive credentials.
Examples
/freesearch AI coding tools with persistent memoryFree research on latest developments in quantum computingResearch the best practices for API rate limiting without spending tokensname: freesearch description: TRULY FREE research via Exa API - zero Claude tokens. Uses Exa directly, no Gemini CLI wrapper. homepage: https://github.com/Khamel83/oneshot allowed-tools: Read, Write, Edit, Bash metadata: {"oneshot":{"emoji":"π","requires":{"bins":["curl"]}}}
/freesearch - TRULY FREE Research
Uses 0 Claude Code tokens. Calls Exa API directly via curl.
When To Use
User says:
/freesearch [topic]- Slash command- "Free research on [topic]"
- "Research without burning tokens"
How It Works
Direct API calls via curl:
- Ask 2-3 clarifying questions (goal, depth, audience)
- Create
docs/research/{date}_{topic}_in_progress.md - Search Exa API:
- web search for overview
- code search for technical details
- company/person search if relevant
- Update in-progress file with raw results
- Create
docs/research/{date}_{topic}_final.mdwith:- Executive summary
- Key findings
- Sources with links
- Related topics
- Return file path to Claude for reading
Exa API Configuration
The EXA_API_KEY is loaded from encrypted secrets:
# Decrypt and load key (done via skill wrapper)
EXA_KEY=$(sops --decrypt --output-type json ~/github/oneshot/secrets/research_keys.json.encrypted | grep -o '"EXA_API_KEY": "[^"]*"' | cut -d'"' -f4)
API Endpoint: https://api.exa.ai/search
Research Prompt Template
curl -s -X POST 'https://api.exa.ai/search' \
-H "x-api-key: $EXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "[TOPIC]",
"type": "auto",
"numResults": 10,
"contents": {
"text": {
"maxCharacters": 20000
}
}
}'
Output Locations
Project research files:
docs/research/{YYYY-MM-DD}_{topic_slug}_in_progress.md
docs/research/{YYYY-MM-DD}_{topic_slug}_final.md
Historical research:
research/{topic_slug}/research.md
Quick Wins to Implement
Based on competitor research, these features should be added to ONE_SHOT:
/browsecommand - Visual skill discovery with fuzzy searchbd testframework - Skill testing framework- Diff preview - Show changes before applying
- Skill analytics - Track most-used skills
Example Usage
User says: /freesearch AI coding tools with persistent memory
You do:
-
Ask clarifying questions:
- "What's your goal?"
- "How deep should I go?"
-
Create in-progress file with initial query
-
Search Exa API:
web_search_exa: "AI coding tools persistent memory cross-session"get_code_context_exa: "AI coding task orchestration memory"
-
Update in-progress file with findings
-
Create final report with executive summary
-
Return:
Key findings: - MCP Task Orchestrator, Cipher, Pieces AI Memory, Cursor Rules - All use RAG + vector stores for persistent context π Full research: docs/research/2025-01-31_ai_persistent_memory_final.md
File Format Template
In-Progress Template
# Research: {Topic}
**Started:** {timestamp}
**Status:** In Progress
## Search Queries Used
- {query1}
- {query2}
## Raw Results
### Source 1
- **URL:** {url}
- **Title:** {title}
- **Snippet:** {content}
### Source 2
- **URL:** {url}
- **Title:** {title}
- **Snippet:** {content}
## Initial Notes
{ongoing analysis}
Final Template
# Research: {Topic}
**Completed:** {timestamp}
**Duration:** {duration}
## Executive Summary
{2-3 sentence overview}
## Key Findings
1. {finding with citation}
2. {finding with citation}
## Sources
1. [{Title}]({url}) - {description}
2. [{Title}]({url}) - {description}
## Related Topics
- {topic for further research}
## Full Details
{detailed analysis}
---
π **In-progress research:** docs/research/{date}_{topic}_in_progress.md
Why This Exists
The deep-research skill wraps Gemini CLI in a Claude sub-agent, which still burns tokens. This skill calls Exa API directly via curl:
- β 0 Claude Code tokens for research
- β Only main conversation tokens (clarifying questions, summary)
- β Same quality research (Exa's neural search)
- β
Saves to project
docs/research/(tracked in git)
Tips
- Research takes 10-30 seconds (Exa is fast)
- Always save to
docs/research/NOT~/github/oneshot/research/ - Include user's goal in the prompt for better results
- Link in-progress file in final report for drill-down
Keywords
free research, exa api, zero tokens, web search, research save
Prompt Engineering
Data & AI
Prompt engineering best practices and templates to maximize AI outputs.
Data Visualization
Data & AI
Generates data visualizations and charts tailored to your data.
RAG Architecture Setup
Data & AI
Setup guide for RAG (Retrieval-Augmented Generation) architectures.