agentleFS
Dianel555Dianel555/DSkills/skills/exa/SKILL.md

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

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
  1. Distinctive:

    Place before the subcommand:

    line 67
  2. Very specific:

    Read exa-agent.md before creating a run.

    line 126
  3. Very specific:

    All commands print JSON (ensure_ascii=False, indent 2) to stdout.

    line 159

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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 --help

Available 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

ToolRequiredOptionalOutput
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, --outFiltered search results JSON
get_config_info–--no-testConfig + (default) connection_test
agent_runexactly one of --query / --run-idschema/input files, data sources, prior-run continuation, effort, wait controls, --outNormalized retained-run lifecycle JSON

Global Options

Place before the subcommand:

OptionPurpose
--api-urlOverride EXA_API_URL (does not write to os.environ)
--api-keyOverride EXA_API_KEY
--debugEnable 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 CaseRecommended Tool
Real-time news, current eventsgrok-search
Semantic/conceptual researchexa (web_search_exa)
Domain or date-bounded researchexa (web_search_advanced_exa)
Read full content of one or more URLsexa (web_fetch_exa)
Academic papers, technical docsexa (web_search_advanced_exa --include-domains arxiv.org ...)
Open-ended discovery, multi-hop research, structured list building, prior-run follow-upexa-agent (agent_run)
Homogeneous enrichment over known rowsDeterministic 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 5

Pattern 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 --summary

Pattern 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.json

Pattern 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:

FileWhen to read
searching.mdCrafting web_search_exa queries (semantic phrasing, category usage)
extraction.mdChoosing between highlights / text / summary on advanced search
filtering.mdBuilding include/exclude domain & date filters
synthesis.mdAggregating multiple result sets into a coherent answer
source-quality.mdVetting source credibility
patterns-code.mdCode/library research recipes
patterns-companies.mdCompany research recipes
patterns-news.mdCurrent-events research recipes
patterns-papers.mdAcademic paper recipes
patterns-people.mdPeople search recipes
patterns-relationships.mdMulti-entity relationship research

Error Handling

ErrorRecovery
EXA_API_KEY not configuredSet environment variable or pass --api-key
Search/fetch HTTP 408/429/5xxAutomatic retry with exponential backoff (max 4 attempts, capped by --max-retry-wait)
Agent create network/408/429/5xxSingle attempt; report uncertain upstream state and do not create a duplicate
Agent running deadlineResume the same ID with agent_run --run-id ...
HTTP 401Verify API key
TimeoutReduce --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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.