# Set up Scavio for this agent

You are a coding agent. The user asked you to set them up for Scavio (https://scavio.dev), a web data API: Google and AI-assistant answers, Amazon, Walmart, Costco and dozens of other retailers, TikTok, Instagram, YouTube, Reddit, X, real estate, travel, jobs, reviews and any URL as Markdown, as structured JSON. Run the steps below yourself. Do not just print them.

## What this installs

Scavio agent skills from github.com/scavio-ai/skills, nothing else:

1. The `scavio` skill. It routes each request to the right platform and quotes the credit cost before a call.
2. If the user named a platform, that platform's skill (slug from the platform table at the end of this file, for example `nordstrom-product-data`).

No MCP server is installed: skills load only when a request needs them, which keeps your context light.

## Rules

- Never edit user-level instruction files (CLAUDE.md, AGENTS.md, .cursorrules, copilot-instructions.md or similar). Install only the skills.
- Never ask the user to paste their API key into this chat. Never print, echo, log or write the key value: refer to it only as `$SCAVIO_API_KEY`. Do not run env, printenv or set, and do not read the user's shell profile or ~/.config/scavio/credentials.json. If the user pastes a key into the chat anyway, do not repeat it or save it anywhere; ask them to add it in their own terminal (Step 3) and to rotate it at https://dashboard.scavio.dev/api-keys, since it is now in the chat history.
- Before installing, check for an existing Scavio skill install. If there is one, show it to the user and ask before overwriting it.
- Some steps only the user can do (approving the sign-in in their browser, restarting the agent). Say exactly what to do, then wait for them.

## Step 1: Pick the skills

If the user named a Scavio platform API (for example "set me up for Scavio's Nordstrom API"), find it in the platform table.

- `<SKILLS>` is `scavio <skill slug>`, for example `scavio nordstrom-product-data`.
- With no platform named, `<SKILLS>` is `scavio`.

## Step 2: Install the skills

Use the section for the agent you are running in. If none matches, use "Any other agent". Do not restart yet: one restart at the end loads both the skills and the API key.

### Claude Code

Skills CLI agent: `claude-code`. Skills folder: ~/.claude/skills.

1. Check for an existing install. If the list already has `scavio` or the platform skill, show the user that line and ask before reinstalling it (reinstalling overwrites it).

   ```bash
   npx -y skills ls -g -a claude-code
   ```
2. Install the skills.

   ```bash
   npx -y skills add scavio-ai/skills --skill <SKILLS> -a claude-code -g -y
   ```

Restart (tell the user in Step 6, not now): Start a new Claude Code session (exit, then run claude again). Skills in ~/.claude/skills load at session start.

### Codex

Skills CLI agent: `codex`. Skills folder: ~/.agents/skills.

1. Check for an existing install. If the list already has `scavio` or the platform skill, show the user that line and ask before reinstalling it (reinstalling overwrites it).

   ```bash
   npx -y skills ls -g -a codex
   ```
2. Install the skills.

   ```bash
   npx -y skills add scavio-ai/skills --skill <SKILLS> -a codex -g -y
   ```

Restart (tell the user in Step 6, not now): Restart Codex so it loads the new skills.

### Pi

Skills CLI agent: `pi`. Skills folder: ~/.agents/skills.

1. Check for an existing install. If the list already has `scavio` or the platform skill, show the user that line and ask before reinstalling it (reinstalling overwrites it).

   ```bash
   npx -y skills ls -g -a pi
   ```
2. Install the skills.

   ```bash
   npx -y skills add scavio-ai/skills --skill <SKILLS> -a pi -g -y
   ```

Restart (tell the user in Step 6, not now): Restart Pi (exit, then run pi again) so it loads the new skills.

### Cursor

Skills CLI agent: `cursor`. Skills folder: ~/.cursor/skills.

1. Check for an existing install. If the list already has `scavio` or the platform skill, show the user that line and ask before reinstalling it (reinstalling overwrites it).

   ```bash
   npx -y skills ls -g -a cursor
   ```
2. Install the skills.

   ```bash
   npx -y skills add scavio-ai/skills --skill <SKILLS> -a cursor -g -y
   ```

Restart (tell the user in Step 6, not now): Restart Cursor so it loads the new skills.

### GitHub Copilot (VS Code)

Skills CLI agent: `github-copilot`. Skills folder: ~/.copilot/skills.

1. Check for an existing install. If the list already has `scavio` or the platform skill, show the user that line and ask before reinstalling it (reinstalling overwrites it).

   ```bash
   npx -y skills ls -g -a github-copilot
   ```
2. Install the skills.

   ```bash
   npx -y skills add scavio-ai/skills --skill <SKILLS> -a github-copilot -g -y
   ```

Restart (tell the user in Step 6, not now): Restart VS Code so Copilot loads the new skills, then use Copilot Chat in Agent mode.

### Windsurf

Skills CLI agent: `windsurf`. Skills folder: ~/.codeium/windsurf/skills.

1. Check for an existing install. If the list already has `scavio` or the platform skill, show the user that line and ask before reinstalling it (reinstalling overwrites it).

   ```bash
   npx -y skills ls -g -a windsurf
   ```
2. Install the skills.

   ```bash
   npx -y skills add scavio-ai/skills --skill <SKILLS> -a windsurf -g -y
   ```

Restart (tell the user in Step 6, not now): Restart Windsurf so Cascade loads the new skills.

### Any other agent

Skills CLI agent: none (auto-detect). Skills folder: the agent's skills folder, chosen by the skills CLI.

1. Check for an existing install. If the list already has `scavio` or the platform skill, show the user that line and ask before reinstalling it (reinstalling overwrites it).

   ```bash
   npx -y skills ls -g
   ```
2. Install the skills. Without -a the CLI installs to the agents it detects on this machine; add -a <agent> to target one (`npx -y skills add --help` lists the agent names).

   ```bash
   npx -y skills add scavio-ai/skills --skill <SKILLS> -g -y
   ```

Restart (tell the user in Step 6, not now): Restart the agent so it loads the new skills.

## Step 3: API key

Every Scavio skill reads the key from the SCAVIO_API_KEY environment variable. Check whether it is set without printing it:

```bash
[ -n "$SCAVIO_API_KEY" ] && echo "SCAVIO_API_KEY is set" || echo "SCAVIO_API_KEY is not set"
```

On Windows PowerShell:

```powershell
if ($env:SCAVIO_API_KEY) { "SCAVIO_API_KEY is set" } else { "SCAVIO_API_KEY is not set" }
```

If it prints "SCAVIO_API_KEY is set", go to Step 4.

If it is not set, sign the user in with the Scavio CLI (needs Node.js 18+). It saves the key to their shell profile itself and never shows it to you:

```bash
npx -y scavio@latest login
```

It prints a link and a code, and opens the browser when it can. Show the user the link and the code, and tell them: "Open this link, sign in or create a free account (50 free credits, no card), check that the page shows the same code, and click Approve. Tell me when you have." Then run:

```bash
npx -y scavio@latest login --wait
```

- Exit 0, "Logged in": the key is saved. Go to Step 4.
- Exit 2, "pending": not approved yet. Remind the user of the link, then run the same command again. Each run waits up to 60 seconds.
- Exit 3: the user denied it on the page. Ask whether they want to try again.
- Exit 1 (expired or an error): run `npx -y scavio@latest login` again for a new link.

If your sandbox blocks the command (network access, or writing outside the project, as in Codex's default sandbox), ask the user to approve it: it writes only ~/.config/scavio/ and their shell startup file.

Fallback, if Node.js is not installed or the user prefers to copy the key. Tell the user, then wait for them to say it is done:

1. Open https://dashboard.scavio.dev/api-keys and copy your API key. New to Scavio? Create a free account there first: 50 free credits, no card.
2. In your own terminal, not this chat, add it to your shell profile:

   zsh (macOS default):

   ```bash
   echo 'export SCAVIO_API_KEY="<paste key>"' >> ~/.zshrc
   ```

   bash:

   ```bash
   echo 'export SCAVIO_API_KEY="<paste key>"' >> ~/.bashrc
   ```

   Windows PowerShell:

   ```powershell
   setx SCAVIO_API_KEY "<paste key>"
   ```

3. Tell me here when it is done (do not paste the key).

Either way, restart the agent at the end of this setup rather than now: one restart loads both the skills and the key.

## Step 4: Verify (free)

If the user signed in with `scavio login`, run:

```bash
npx -y scavio@latest status
```

"Logged in via ..." means the key works (it may add that SCAVIO_API_KEY is not set in this shell yet; the restart fixes that). "does not work" means run `npx -y scavio@latest login --force`.

Otherwise, `GET https://api.scavio.dev/api/v1/usage` costs no credits. Run:

```bash
curl -s -o /dev/null -w "%{http_code}" -H "Authorization: Bearer $SCAVIO_API_KEY" https://api.scavio.dev/api/v1/usage
```

If the user added the key during this session, your shell does not have it yet. Run the same check in a fresh shell that reads their profile (the status code is the last thing it prints; ignore any other profile output):

```bash
$SHELL -ic 'curl -s -o /dev/null -w "%{http_code}" -H "Authorization: Bearer $SCAVIO_API_KEY" https://api.scavio.dev/api/v1/usage'
```

On Windows PowerShell, a key set with setx is visible only after the agent restarts. Run this after the restart, or record Verified as "pending restart":

```powershell
curl.exe -s -o NUL -w "%{http_code}" -H "Authorization: Bearer $env:SCAVIO_API_KEY" https://api.scavio.dev/api/v1/usage
```

- `200`: the key works.
- `401`: the key is missing or wrong. Run `npx -y scavio@latest login --force`, or ask the user to copy it again from https://dashboard.scavio.dev/api-keys and fix the line in their shell profile themselves.

Show the user only the status code. If you want to tell them their balance, the same URL without `-o /dev/null -w ...` returns JSON whose `plan` and `credit_balance` fields you may report; show nothing else from it.

## Step 5: Try one call (optional)

If the user named a platform and Step 4 returned 200: tell them the per-call credits for that platform from the table, and offer one real call. Run it only if they say yes. The skill is not loaded in this session yet, so read its SKILL.md from the path `npx -y skills ls -g` shows and make one call the way it documents, with `$SCAVIO_API_KEY` as a variable reference (inside `$SHELL -ic '...'` if the key was added during this session).

## Step 6: Finish

End with this plain-text block, filled in with what actually happened. Write "not done" and the reason for anything that was skipped or failed.

```text
Scavio setup complete
Agent:            <agent name>
Skills installed: <installed skill slugs>
API key:          <saved by scavio login / set manually / not set>
Verified:         <status ok / usage 200 / failed (code) / pending restart>
Try next:         <one example request for the platform, or "search Google for ...">
Docs:             https://scavio.dev/docs
```

Then tell the user the restart step from their agent's section in Step 2. The skills are available after it.

## Platform table

Generated from github.com/scavio-ai/skills. A human-readable version of this setup is at https://scavio.dev/agent-setup. Prefer an MCP server? See https://scavio.dev/mcp.

| Platform | Skill slug | Credits per call |
|---|---|---|
| Airbnb | airbnb-scraper-api | 1 |
| ALDI | aldi-grocery-data | 1 |
| AliExpress | aliexpress-product-data | 1 |
| Amazon | amazon-product-data | 1 |
| Apple App Store | apple-app-store-api | 1 |
| Booking.com | booking-com-hotel-data | 1 |
| Canadian Tire | canadian-tire-api | 1 |
| Capterra | capterra-reviews-api | 2 |
| ChatGPT | chatgpt-scraper-api | 2 |
| Chewy | chewy-product-data | 10 |
| Companies House | companies-house-api | 1 |
| Costco | costco-product-data | 1; US search, category, deals and clearance 2; multi-warehouse prices, stock and gas scale with warehouse count |
| CVS | cvs-product-data | 1 |
| Decathlon | decathlon-product-data | 2 |
| Dollar General | dollar-general-api | 1 |
| Douyin | douyin-scraper-api | 1; search 10 |
| eBay | ebay-product-data | 1 |
| Etsy | etsy-product-data | 2 |
| Facebook | facebook-scraper-api | 1 |
| G2 | g2-software-reviews-api | 5 |
| Gemini | gemini-scraper-api | 5 |
| GitHub | github-api | 1; dossier and top-issues 5, profile-velocity 10, user/email 2 |
| Glassdoor | glassdoor-salary-data | 2 |
| Google Ads Transparency | google-ads-transparency-api | 1 |
| Google AI Mode | google-ai-mode-api | 1 |
| Google Flights | google-flights-api | 1 |
| Google Hotels | google-hotels-api | 1 |
| Google Maps | google-maps-api | 1; geo-grid bills per point |
| Google News | google-news-api | 1 |
| Google Play | google-play-store-api | 2 |
| Google Search | google-search-api | 1 |
| Google Shopping | google-shopping-api | 1 |
| Google Trends | google-trends-api | 1 |
| Harbor Freight | harbor-freight-api | 1 |
| HEB | heb-grocery-data | 2 |
| Home Depot | home-depot-product-data | 2 |
| iHerb | iherb-product-data | 2 |
| Indeed | indeed-jobs-api | 2 |
| Instagram | instagram-scraper-api | 1-2 |
| Kroger | kroger-grocery-data | 2 |
| Kuaishou | kuaishou-scraper-api | 1, 2, 10 or 40 |
| LinkedIn | linkedin-scraper-api | 1-30 |
| LinkedIn Ad Library | linkedin-ad-library-api | 6 |
| Lowe's | lowes-product-data | 2; reviews 1 |
| Menards | menards-product-data | search 2; product 1, 2 with store_id; stores 1 |
| Mercado Libre | mercadolibre-product-data | 2; reviews 1 |
| Meta Ad Library | meta-ad-library-api | 1 per page |
| Micro Center | micro-center-api | 2; stores 1 |
| Nordstrom | nordstrom-product-data | 5; availability and reviews 10 |
| Nordstrom Rack | nordstrom-rack-product-data | 5; availability and reviews 10 |
| Petco | petco-product-data | 1 |
| PetSmart | petsmart-product-data | 1 |
| Pinterest | pinterest-api | 1; url-stats 1-2 |
| Realtor.com | realtor-com-property-data | 1 |
| Reddit | reddit-search-api | 1 |
| Redfin | redfin-property-data | 1 |
| Rightmove | rightmove-property-data | 1 |
| Sam's Club | sams-club-product-data | 1 |
| SEC EDGAR | sec-edgar-api | 1 |
| Sephora | sephora-product-data | 1 |
| Spec's | specs-liquor-prices | 5 |
| Target | target-product-data | 1 |
| Threads | threads-net-api | 2 by user_id, 4 by username |
| TikTok | tiktok-scraper-api | 1 |
| TikTok Ad Library | tiktok-ad-library-api | 1 |
| TikTok Shop | tiktok-shop-api | 1 |
| Tripadvisor | tripadvisor-reviews-api | 2 |
| Trustpilot | trustpilot-reviews-api | 2 |
| Twitch | twitch-api | 1 |
| Twitter/X | twitter-scraper-api | 1 |
| Ulta Beauty | ulta-beauty-api | 1 |
| URL to Markdown | url-to-markdown-api | 1; ultra 2 |
| Walgreens | walgreens-product-data | 2; stock 4 |
| Walmart | walmart-product-data | 1; 2 for walmart.com.mx search/category or store-targeted search/product |
| Website Crawler | website-crawler-api | map 1; 1 per page, ultra 2 |
| Website Screenshot | website-screenshot-api | 1; ultra 5 |
| Weibo | weibo-scraper-api | 1 |
| Whole Foods Market | whole-foods-grocery-data | 1 |
| Yelp | yelp-business-data | 2 |
| YouTube | youtube-data-api | 1-5 |
| Zillow | zillow-property-data | 1 |
