Install any skill in seconds. Free to start, no credit card required.
Get Started Free →codealive-ai/exa-native-base
Foundation for the Exa skill collection — how to call Exa (search, contents, answer, similar) from a local script with just an EXA_API_KEY, how to write good semantic queries, and how to orchestrate subagents for deep research. Read this first; the use-case skills (company, people, papers, code, news, finance, personal sites, X) build on it.
Passed 16 of 18 test cases with the skill, and 11 of 18 without it.
and 3 more in the full report
6 fixed13 passed either way3 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 5 test cases the skill fixed. Same model, same prompt, with and without the skill.
We have two direct article URLs (`https://blog.tech.com/p1` and `https://blog.tech.com/p2`) and need their full text and summaries using the local Exa CLI script. What is the exact CLI command?
| Checked | Without skill | With skill |
|---|---|---|
| Uses the contents subcommand with the local Exa script. | Missed | Passed |
The instructions your model reads when the skill loads.
The shared foundation for every Exa skill in this collection. Exa is a semantic search engine (vector embeddings, not keywords) plus content-fetch and answer APIs. These skills call the Exa REST API directly through a local Python script — no MCP server, no SDK install, only an API key.
export EXA_API_KEY=your-key # or create a .env at the repo root: EXA_API_KEY=...
Get a key at https://dashboard.exa.ai/api-keys. The client (_shared/exa_client.py) auto-loads a .env found by walking up from the script, so any skill works from any directory once the key is set. Python 3.8+, standard library only.
One zero-dependency CLI backs all skills: _shared/exa_client.py (also exposed here as scripts/exa.py).
python scripts/exa.py search "<query>" [-n N] [-c CATEGORY] [-t TYPE] [--text] [--json] \
[--include-domains a.com,b.com] [--only-domains a.com] \
[--start-published 2025-01-01] [--include-text "phrase"]
python scripts/exa.py contents <url> [<url> ...] [--text] [--summary]
python scripts/exa.py answer "<question>" [--text]
python scripts/exa.py similar <url> [-n N]
Every search prints a Markdown list and a trailing sources_reviewed: N line so an orchestrator can tally coverage.
Describe the page you want to find, not the fact you want to know. Exa returns nearest neighbours in embedding space; it does not do keyword matching, boolean logic, or quoted exact-match.
| Looking for | Weak query | Strong query |
|---|---|---|
| Blog posts about X | X | detailed blog post about X written by a practitioner |
| A company doing Y | Y company | category:company startup building Y for enterprise |
| A person | person at company | category:people senior infra engineer at Acme |
-c: company, research paper, news, pdf, github, personal site, linkedin profile, financial report. You can also write category:company … inline in the query. (The old tweet category was retired — exa-x-search handles X via domain filters.)numResults sizing: named entity → ~5; precise filter → ~10; broad discovery → ~15. Never go above 25 — run more queries at different angles instead of one huge query.--start-published / --end-published. Never reuse dates from examples.test cases passed, vs 11 / 18 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.