@dvcrn/exa-full
BExa AI search + Research API. Supports web/code search, content extraction, and async multi-step research tasks with outputSchema.
Install
agr install @dvcrn/exa-full --target claudeWrites 2 files into .claude/skills/, pinned to git-1c0649b7.
- .claude/skills/exa-full/EXAMPLES.md
- .claude/skills/exa-full/SKILL.md
Document
name: exa-full description: "Exa AI search + Research API. Supports web/code search, content extraction, and async multi-step research tasks with outputSchema." homepage: https://exa.ai
Exa - Search + Research
Use this skill for web search, code-context search, URL content extraction, and async research workflows.
What This Skill Does
- Run Exa web search with optional category and domain filters.
- Retrieve full page content (and optional subpage crawling).
- Find code and docs context for programming queries.
- Run async research tasks (one-shot or create/poll workflows).
- Support optional structured outputs via
outputSchema.
Setup
Set EXA_API_KEY using one of these methods.
export EXA_API_KEY="your-exa-api-key"
# .env next to SKILL.md
EXA_API_KEY=your-exa-api-key
Behavior:
- If
EXA_API_KEYis missing in the environment, scripts load onlyEXA_API_KEYfrom.env. - Other
.envvariables are ignored by the loader.
Safety and Data Handling
SCHEMA_FILEcontent is sent tohttps://api.exa.ai/research/v1asoutputSchema.- Never use sensitive local files for
SCHEMA_FILE(for example:.env, key/cert files, secrets, internal confidential docs). research_create.shblocks obvious sensitive paths/suffixes (for example:.env,.pem,.key,.p12,.pfx,id_rsa).
Command Quick Reference
Search
bash scripts/search.sh "query"
Main env vars:
NUM=10(max 100)TYPE=auto(auto,neural,fast,deep,instant)CATEGORY=(company,research paper,news,tweet,personal site,financial report,people)DOMAINS=domain1.com,domain2.comEXCLUDE=domain1.com,domain2.comSINCE=YYYY-MM-DDUNTIL=YYYY-MM-DDLOCATION=NL
Constraints:
EXCLUDEis not supported whenCATEGORY=companyorCATEGORY=people.SINCEandUNTILare not supported whenCATEGORY=companyorCATEGORY=people.- When
CATEGORY=people,DOMAINSaccepts LinkedIn domains only (linkedin.com,www.linkedin.com,*.linkedin.com).
Content Extraction
bash scripts/content.sh "url1" "url2"
Main env vars:
MAX_CHARACTERS=2000HIGHLIGHT_SENTENCES=3HIGHLIGHTS_PER_URL=2SUBPAGES=10SUBPAGE_TARGET="docs,reference,api"LIVECRAWL=preferred(preferred,always,fallback)LIVECRAWL_TIMEOUT=12000
Code Context Search
bash scripts/code.sh "query" [num_results]
Research (One-shot)
bash scripts/research.sh "instructions"
Main env vars:
MODEL=exa-researchorMODEL=exa-research-proSCHEMA_FILE=path/to/schema.jsonPOLL_INTERVAL=2MAX_WAIT_SECONDS=240EVENTS=true
Research (Create/Poll)
bash scripts/research_create.sh "instructions" | jq
bash scripts/research_poll.sh "researchId" | jq
Agent Decision Rules
Choose TYPE for Search
Use this decision order:
- User explicitly asks for realtime or autocomplete ->
TYPE=instant. - Task needs broad coverage or deeper synthesis ->
TYPE=deep. - User asks for speed/quality balance ->
TYPE=fast. - Otherwise ->
TYPE=auto(default).
Fallback/escalation:
- If too slow or time-sensitive:
deep -> auto -> fast -> instant. - If too shallow:
instant -> fast -> auto -> deep. - Explicit user requirement always wins.
Recommended pattern:
TYPE=auto bash scripts/search.sh "query"
Common Pitfalls
- Do not pass sensitive files to
SCHEMA_FILE. - Do not combine
CATEGORY=people|companywithEXCLUDE,SINCE, orUNTIL. - Prefer
https://docs.exa.ai/for subpage crawling seeds (more reliable thanhttps://exa.ai/docs/reference/).
More Examples
See EXAMPLES.md for grouped command examples and edge-case workflows.
Repository README
Describes dvcrn/openclaw-skills-marketplace as a whole, which may contain artifacts other than this one. Where this artifact had no useful description of its own, its summary was taken from here.
OpenClaw Skills Marketplace For Claude
This repository is an automatic conversion of openclaw/skills into the Claude Skills marketplace format so the skills can be installed and used directly in Claude.
It takes the OpenClaw skill corpus and rewrites it into a Claude-compatible marketplace with:
- a root marketplace manifest at
.claude-plugin/marketplace.json - one Claude plugin per OpenClaw skill under
plugins/ - a generation report at
reports/generate-marketplace.json
Use In Claude
Add this marketplace in Claude with:
/plugin marketplace add dvcrn/openclaw-skills-marketplace
Then install any generated plugin from the marketplace:
/plugin install <plugin-name>@openclaw-skills
Example:
/plugin install 0x-professor--agentic-mcp-server-builder@openclaw-skills
What This Repo Does
The generator reads canonical OpenClaw source skills from:
openclaw-skills/skills/<owner>/<slug>/
Each source skill is expected to contain:
_meta.jsonSKILL.mdor lowercaseskill.md
The conversion process:
- maps each OpenClaw skill to one Claude plugin
- normalizes lowercase
skill.mdtoSKILL.md - extracts Claude plugin root assets like
agents/,hooks/,.mcp.json,.lsp.json, andsettings.json - preserves nested
skills/trees when a source package already behaves like a multi-skill plugin - skips malformed inputs and records them in
reports/generate-marketplace.json
Regenerate The Entire Marketplace
To rebuild the full marketplace from the openclaw-skills submodule:
mise run generate
That regenerates:
.claude-plugin/marketplace.jsonplugins/<plugin-id>/...reports/generate-marketplace.json
The generator replaces previous generated output under .claude-plugin/, plugins/, and reports/ on each run.
If you want the explicit underlying task name, this still works too:
mise run generate_marketplace
For small development runs:
python3 scripts/generate_marketplace.py --source openclaw-skills/skills --output . --limit 10
Validate And Test
Run the generator tests:
mise run test
Validate the generated marketplace:
claude plugin validate .
Notes
- Plugin ids are generated as
<owner>--<slug>after sanitization. - Nested source
skills/directories are preserved as plugin content rather than treated as separate top-level source skills. - The upstream OpenClaw source is included as the
openclaw-skillssubmodule.
Trustgrade B
- passBody integrity
Whether the stored document is plausibly the kind of file the artifact declares, rather than something fetched by mistake.
- passType matchnot applicable to this artifact type
Whether the artifact is really the kind of thing its metadata claims it is.
- passFreshness
How long since the source repository was last pushed to.
- passPrompt injection
Scans the artifact's own text for instructions aimed at your agent rather than at you.
- warnLicenseno SPDX license detected
Whether the source repository declares an SPDX license permissive enough to redistribute.
How the grade is calculated
Each check contributes 0 points when it passes, 1 when it warns, and 2 when it fails. The total maps to a letter:
- Aevery check passed
- Bone warning
- Ctwo warnings
- Dprompt injection or body integrity failed, or three warnings
- Fone of those failed, and something else is wrong
These are automated hygiene checks, not a security audit, and not a dependency or vulnerability scan. A grade of A means nothing was flagged — not that the artifact is safe.
Versions
git-1c0649b7fc2d2026-07-31