exa
Skill65 starsChanged 2 months agoMITView on GitHub
High-precision semantic search and content retrieval via Exa API. Use when: (1) Deep research requiring semantic understanding, (2) Code documentation and examples lookup, (3) Company/professional research, (4) AI-powered comprehensive research tasks, (5) URL content extraction with structured output. Triggers: "research", "find papers", "code examples", "company info", "LinkedIn profiles", "deep analysis". Differentiator: Exa excels at semantic/neural search while grok-search is better for real-time news and general web content.
- Reads credentials
- Installs packages
2 other projects use a version of this.
Adopted by
Most recently taken up by
- arkan/skillstheir own version, first seen May 14, 2026
- refly-ai/refly-skillstheir own version, first seen Jan 25, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- refly-ai/refly-skills★ 204same name
- arkan/skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository18 other files it gives its agents.
- ace-toolSkill
- agent-wikiSkill
- capability-evolverSkill
- cc-agySkill
- cc-codexSkill
- codex-ccSkill
- context7Skill
- github-trending-analyzerSkill
- grill-meSkill
- grok-searchSkill
- ledger-tasks-yyloSkill
- literature-searcherSkill
- ontolySkill
- plan-ledger-tasks-yyloSkill
- sequential-thinkSkill
- serenaSkill
- timeSkill
- wiki-yyloSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 67
Place before the subcommand:
- Very specific: line 126
Read exa-agent.md before creating a run.
- Very specific: line 159
All commands print JSON (ensure_ascii=False, indent 2) to stdout.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Exa Search
High-precision semantic search via Exa API. Standalone CLI only (no MCP dependency).
Execution Method
# Prerequisites: pip install httpx tenacity
# Environment: EXA_API_KEY (required), EXA_API_URL (optional, default: https://api.exa.ai)
# All examples assume cwd == skills/exa/. The shim auto-chdirs if you launch
# it from elsewhere (e.g., the repo root).
cd skills/exa
python scripts/exa_cli.py --helpAvailable Tools
# Basic semantic search (highlights always on; supports inline category:<type>)
python scripts/exa_cli.py web_search_exa --query "TypeScript design patterns" [--num-results 10]
python scripts/exa_cli.py web_search_exa --query "category:company Anthropic AI safety"
# Batch URL fetch (urls is a repeatable flag; payload field is upstream `ids`)
python scripts/exa_cli.py web_fetch_exa \
--urls "https://a.com" --urls "https://b.com" \
[--max-chars 3000] [--out content.json]
# Advanced filtered search (list params are repeatable flags, no comma syntax)
python scripts/exa_cli.py web_search_advanced_exa --query "transformer" \
[--type auto|fast|instant] [--category research\ paper] \
[--include-domains arxiv.org --include-domains papers.nips.cc] \
[--exclude-domains medium.com] \
[--include-text "attention"] [--exclude-text "tutorial"] \
[--start-date 2024-01-01] [--end-date 2024-12-31] \
[--num-results 10] [--max-age-hours 168] \
[--text] [--highlights] [--summary] \
[--max-chars 5000] # only effective when --text is set; emits stderr warning otherwise
[--out results.json]
# Configuration / connectivity probe (omit --no-test to run a numResults=1 ping)
python scripts/exa_cli.py get_config_info [--no-test]
# Create an Agent run or resume the same retained run
python scripts/exa_cli.py agent_run --query "Research an evidence-backed market map" [--effort low]
python scripts/exa_cli.py agent_run --run-id agent_run_123 [--wait-seconds 750]Tool Capability Matrix
| Tool | Required | Optional | Output |
web_search_exa | --query | --num-results (1-100) | Search results JSON (highlights always present) |
web_fetch_exa | --urls (repeatable, ≥1) | --max-chars (default 3000), --out | /contents response JSON |
web_search_advanced_exa | --query | --type, --category, repeatable --include-domains/--exclude-domains/--include-text/--exclude-text, --start-date, --end-date, --num-results, --max-age-hours, --text, --highlights, --summary, --max-chars, --out | Filtered search results JSON |
get_config_info | – | --no-test | Config + (default) connection_test |
agent_run | exactly one of --query / --run-id | schema/input files, data sources, prior-run continuation, effort, wait controls, --out | Normalized retained-run lifecycle JSON |
Global Options
Place before the subcommand:
| Option | Purpose |
--api-url | Override EXA_API_URL (does not write to os.environ) |
--api-key | Override EXA_API_KEY |
--debug | Enable JSON debug events on stderr (EXA_DEBUG=true) — never logs auth values |
--max-retry-wait <s> | Cap (seconds) for single retry wait + exponential backoff (default 60, env: EXA_MAX_RETRY_WAIT) |
--auth-scheme <scheme> | Authentication scheme: x-api-key (default) or bearer for third-party endpoints (env: EXA_AUTH_SCHEME) |
Tool Routing Guide
| Use Case | Recommended Tool |
| Real-time news, current events | grok-search |
| Semantic/conceptual research | exa (web_search_exa) |
| Domain or date-bounded research | exa (web_search_advanced_exa) |
| Read full content of one or more URLs | exa (web_fetch_exa) |
| Academic papers, technical docs | exa (web_search_advanced_exa --include-domains arxiv.org ...) |
| Open-ended discovery, multi-hop research, structured list building, prior-run follow-up | exa-agent (agent_run) |
| Homogeneous enrichment over known rows | Deterministic script with bounded concurrency, backoff, checkpoint, and stable output file |
Workflow Patterns
Pattern 1: Quick Semantic Search
python scripts/exa_cli.py web_search_exa --query "best practices for React hooks" --num-results 5Pattern 2: Filtered Research (repeatable flags)
python scripts/exa_cli.py web_search_advanced_exa --query "transformer architecture" \
--include-domains arxiv.org --include-domains papers.nips.cc \
--start-date 2023-01-01 --text --summaryPattern 3: Batch URL Read
python scripts/exa_cli.py web_fetch_exa \
--urls "https://example.com/a" --urls "https://example.com/b" \
--max-chars 4000 --out batch.jsonPattern 4: Third-Party Endpoint (Bearer Auth)
# Connect to exa-pool or other Exa-compatible proxy
export EXA_API_URL=https://pool.example.com
export EXA_AUTH_SCHEME=bearer
export EXA_API_KEY=your-bearer-token
python scripts/exa_cli.py web_search_exa --query "AI agents" --num-results 5
# Or use CLI flags for one-off requests
python scripts/exa_cli.py --auth-scheme bearer --api-url https://pool.example.com \
web_search_exa --query "AI agents"Pattern 5: Exa Agent
Read exa-agent.md before creating a run. It defines objective/schema/coverage checks, --run-id versus --previous-run-id, evidence validation, and ZDR limits without duplicating that workflow here.
References
The references/ directory carries 11 prompt-engineering guides. Open them on demand when crafting queries:
| File | When to read |
searching.md | Crafting web_search_exa queries (semantic phrasing, category usage) |
extraction.md | Choosing between highlights / text / summary on advanced search |
filtering.md | Building include/exclude domain & date filters |
synthesis.md | Aggregating multiple result sets into a coherent answer |
source-quality.md | Vetting source credibility |
patterns-code.md | Code/library research recipes |
patterns-companies.md | Company research recipes |
patterns-news.md | Current-events research recipes |
patterns-papers.md | Academic paper recipes |
patterns-people.md | People search recipes |
patterns-relationships.md | Multi-entity relationship research |
Error Handling
| Error | Recovery |
EXA_API_KEY not configured | Set environment variable or pass --api-key |
| Search/fetch HTTP 408/429/5xx | Automatic retry with exponential backoff (max 4 attempts, capped by --max-retry-wait) |
| Agent create network/408/429/5xx | Single attempt; report uncertain upstream state and do not create a duplicate |
| Agent running deadline | Resume the same ID with agent_run --run-id ... |
| HTTP 401 | Verify API key |
| Timeout | Reduce --num-results or retry |
Output Format
All commands print JSON (ensure_ascii=False, indent 2) to stdout. With --out
<file>, the response JSON is written to that path and stdout becomes
{"status":"ok","file":"<file>"}. Errors go to stderr as
{"error":"<message>"} with non-zero exit.
Agent creation and interruption additionally emit one-line JSON progress events to stderr so the retained run ID remains recoverable without corrupting stdout.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

