exa-hello-world

Create a minimal working Exa search example with real results. Use when starting a new Exa integration, testing your setup, or learning basic search, searchAndContents, and findSimilar patterns. Trigger with phrases like "exa hello world", "exa example", "exa quick start", "simple exa search", "first exa query".

25 stars

Best use case

exa-hello-world is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Create a minimal working Exa search example with real results. Use when starting a new Exa integration, testing your setup, or learning basic search, searchAndContents, and findSimilar patterns. Trigger with phrases like "exa hello world", "exa example", "exa quick start", "simple exa search", "first exa query".

Teams using exa-hello-world should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/exa-hello-world/SKILL.md --create-dirs "https://raw.githubusercontent.com/ComeOnOliver/skillshub/main/skills/jeremylongshore/claude-code-plugins-plus-skills/exa-hello-world/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/exa-hello-world/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How exa-hello-world Compares

Feature / Agentexa-hello-worldStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Create a minimal working Exa search example with real results. Use when starting a new Exa integration, testing your setup, or learning basic search, searchAndContents, and findSimilar patterns. Trigger with phrases like "exa hello world", "exa example", "exa quick start", "simple exa search", "first exa query".

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Exa Hello World

## Overview
Minimal working examples demonstrating all core Exa search operations: basic search, search with contents, find similar, and get contents. Each example is runnable standalone.

## Prerequisites
- `exa-js` SDK installed (`npm install exa-js`)
- `EXA_API_KEY` environment variable set
- Node.js 18+ with ES module support

## Instructions

### Step 1: Basic Search (Metadata Only)
```typescript
import Exa from "exa-js";

const exa = new Exa(process.env.EXA_API_KEY);

// Basic search returns URLs, titles, and scores — no page content
const results = await exa.search("best practices for building RAG pipelines", {
  type: "auto",       // auto | neural | keyword | fast | instant
  numResults: 5,
});

for (const r of results.results) {
  console.log(`[${r.score.toFixed(2)}] ${r.title}`);
  console.log(`  ${r.url}`);
}
```

### Step 2: Search with Contents
```typescript
// searchAndContents returns text, highlights, and/or summary with each result
const results = await exa.searchAndContents(
  "how transformers work in large language models",
  {
    type: "neural",
    numResults: 3,
    text: { maxCharacters: 1000 },
    highlights: { maxCharacters: 500, query: "attention mechanism" },
    summary: { query: "explain transformers simply" },
  }
);

for (const r of results.results) {
  console.log(`## ${r.title}`);
  console.log(`URL: ${r.url}`);
  console.log(`Summary: ${r.summary}`);
  console.log(`Text preview: ${r.text?.substring(0, 200)}...`);
  console.log(`Highlights: ${r.highlights?.join(" | ")}`);
  console.log();
}
```

### Step 3: Find Similar Pages
```typescript
// findSimilar takes a URL and returns semantically similar pages
const similar = await exa.findSimilarAndContents(
  "https://arxiv.org/abs/2301.00234",
  {
    numResults: 5,
    text: { maxCharacters: 500 },
    excludeSourceDomain: true,
  }
);

console.log("Pages similar to the seed URL:");
for (const r of similar.results) {
  console.log(`  ${r.title} — ${r.url}`);
}
```

### Step 4: Get Contents for Known URLs
```typescript
// getContents retrieves page content for specific URLs
const contents = await exa.getContents(
  ["https://example.com/article-1", "https://example.com/article-2"],
  {
    text: { maxCharacters: 2000 },
    highlights: { maxCharacters: 500 },
    livecrawl: "preferred",
    livecrawlTimeout: 10000,
  }
);

for (const r of contents.results) {
  console.log(`${r.title}: ${r.text?.length} chars retrieved`);
}
```

## Output
- Working TypeScript file with Exa client initialization
- Search results printed to console with titles, URLs, and scores
- Content extraction (text, highlights, summary) demonstrated
- Similarity search results from a seed URL

## Error Handling
| Error | HTTP Code | Cause | Solution |
|-------|-----------|-------|----------|
| `INVALID_API_KEY` | 401 | API key missing or invalid | Check `EXA_API_KEY` env var |
| `INVALID_REQUEST_BODY` | 400 | Malformed parameters | Verify parameter types match SDK docs |
| `NO_MORE_CREDITS` | 402 | Account credits depleted | Top up at dashboard.exa.ai |
| `429 Too Many Requests` | 429 | Rate limit exceeded | Wait and retry; default is 10 QPS |
| Empty `results` array | 200 | Query too narrow or filters too strict | Broaden query or relax date/domain filters |

## Examples

### Complete Runnable Script
```typescript
import Exa from "exa-js";

const exa = new Exa(process.env.EXA_API_KEY);

async function main() {
  // 1. Search
  const search = await exa.search("AI safety research", { numResults: 3 });
  console.log(`Found ${search.results.length} results\n`);

  // 2. Search with contents
  const detailed = await exa.searchAndContents("AI safety research", {
    numResults: 2,
    text: true,
    highlights: { maxCharacters: 300 },
  });
  console.log("First result text length:", detailed.results[0]?.text?.length);

  // 3. Find similar
  if (search.results[0]) {
    const similar = await exa.findSimilar(search.results[0].url, {
      numResults: 3,
    });
    console.log("\nSimilar pages:", similar.results.map(r => r.title));
  }
}

main().catch(console.error);
```

## Resources
- [Exa Quickstart](https://docs.exa.ai/reference/quickstart)
- [Exa Search Reference](https://docs.exa.ai/reference/search)
- [Exa Cheat Sheet](https://docs.exa.ai/sdks/cheat-sheet)

## Next Steps
Proceed to `exa-core-workflow-a` for neural search patterns or `exa-sdk-patterns` for production-ready code.

Related Skills

evernote-hello-world

25
from ComeOnOliver/skillshub

Create a minimal working Evernote example. Use when starting a new Evernote integration, testing your setup, or learning basic Evernote API patterns. Trigger with phrases like "evernote hello world", "evernote example", "evernote quick start", "simple evernote code", "create first note".

elevenlabs-hello-world

25
from ComeOnOliver/skillshub

Generate your first ElevenLabs text-to-speech audio file. Use when starting a new ElevenLabs integration, testing your setup, or learning basic TTS API patterns. Trigger: "elevenlabs hello world", "elevenlabs example", "elevenlabs quick start", "first elevenlabs TTS", "text to speech demo".

documenso-hello-world

25
from ComeOnOliver/skillshub

Create a minimal working Documenso example. Use when starting a new Documenso integration, testing your setup, or learning basic document signing patterns. Trigger with phrases like "documenso hello world", "documenso example", "documenso quick start", "simple documenso code", "first document".

deepgram-hello-world

25
from ComeOnOliver/skillshub

Create a minimal working Deepgram transcription example. Use when starting a new Deepgram integration, testing your setup, or learning basic Deepgram API patterns. Trigger: "deepgram hello world", "deepgram example", "deepgram quick start", "simple transcription", "transcribe audio".

databricks-hello-world

25
from ComeOnOliver/skillshub

Create a minimal working Databricks example with cluster and notebook. Use when starting a new Databricks project, testing your setup, or learning basic Databricks patterns. Trigger with phrases like "databricks hello world", "databricks example", "databricks quick start", "first databricks notebook", "create cluster".

customerio-hello-world

25
from ComeOnOliver/skillshub

Create a minimal working Customer.io example. Use when learning Customer.io basics, testing SDK setup, or creating your first identify + track integration. Trigger: "customer.io hello world", "first customer.io message", "test customer.io", "customer.io example", "customer.io quickstart".

cursor-hello-world

25
from ComeOnOliver/skillshub

Create your first project using Cursor AI features: Tab, Chat, Composer, and Inline Edit. Triggers on "cursor hello world", "first cursor project", "cursor getting started", "try cursor ai", "cursor basics", "cursor tutorial".

coreweave-hello-world

25
from ComeOnOliver/skillshub

Deploy a GPU workload on CoreWeave with kubectl. Use when running your first GPU job, testing inference, or verifying CoreWeave cluster access. Trigger with phrases like "coreweave hello world", "coreweave first deploy", "coreweave gpu test", "run on coreweave".

cohere-hello-world

25
from ComeOnOliver/skillshub

Create a minimal working Cohere example with Chat, Embed, and Rerank. Use when starting a new Cohere integration, testing your setup, or learning basic Cohere API v2 patterns. Trigger with phrases like "cohere hello world", "cohere example", "cohere quick start", "simple cohere code".

coderabbit-hello-world

25
from ComeOnOliver/skillshub

Create a minimal working CodeRabbit configuration and trigger your first AI review. Use when starting with CodeRabbit, testing your setup, or learning basic .coderabbit.yaml patterns. Trigger with phrases like "coderabbit hello world", "coderabbit example", "coderabbit quick start", "first coderabbit review".

clickup-hello-world

25
from ComeOnOliver/skillshub

Make your first ClickUp API v2 calls: list workspaces, spaces, and create a task. Use when starting a new ClickUp integration, testing your setup, or learning the ClickUp hierarchy (Workspace > Space > Folder > List > Task). Trigger: "clickup hello world", "clickup first call", "clickup quick start", "test clickup API", "create clickup task".

clickhouse-hello-world

25
from ComeOnOliver/skillshub

Create your first ClickHouse table, insert data, and run analytical queries. Use when starting a new ClickHouse project, learning MergeTree basics, or testing your ClickHouse connection with real operations. Trigger: "clickhouse hello world", "first clickhouse table", "clickhouse quick start", "create clickhouse table", "clickhouse example".