Skip to content
Development
Skill

/shop-scout

Comparison-shops any product across many online stores, finds the genuinely cheapest option after discounts, surfaces working coupons, and checks whether each seller is safe to buy from — for one product or a whole shopping list, any store, any region. Use this whenever the user

From plugin
omar-skills
34 skills

Claude Code

$ npx -y skills add OmarSaleh506/skills --skill shop-scout --agent claude-code

SKILL.md

shop-scout.SKILL.md
name: shop-scout
description: >-
  Comparison-shops any product across many online stores, finds the genuinely
  cheapest option after discounts, surfaces working coupons, and checks whether
  each seller is safe to buy from — for one product or a whole shopping list,
  any store, any region. Use this whenever the user wants to buy something
  online, asks where to buy a product or for the best/cheapest price, compares
  prices across stores (Noon, Amazon, Amazon.sa, Jarir, extra, Namshi,
  AliExpress, eBay, …), hunts for discount or promo codes (including first-order
  and social-media codes), asks whether a store/seller is legit or a scam, or
  hands over a shopping list to price out. It runs a 4-step pipeline per item —
  find sellers, rank by effective price (price − coupon + shipping), judge seller
  safety (Trusted / Mixed / Risky), and find working coupons — then prints a
  comparison table, a best-buy recommendation, and (for lists) a consolidated
  cart with a single-store bundle tip. Trigger even when the user does not say
  "shop-scout": e.g. "is aliexpress seller X legit", "cheapest place to buy a
  PS5 in Saudi", "find me a Noon coupon", "price-check these 5 things", or
  "compare prices for AirPods Pro". Not for building e-commerce or checkout
  features, stock or share prices, order tracking, or code review.

shop-scout

Stop hopping between store tabs. Give shop-scout a **product** or a **shopping list** and it will, for each item: find who sells it, rank sellers by the price you'll *actually* pay after discounts and shipping, judge whether each seller is safe, and dig up working coupons — then recommend the best buy and, across a list, the smartest single-store bundle.

This skill is **agent-agnostic**. It assumes only three generic capabilities, named however your runtime provides them:

  • **web search** — issue a query, get back result URLs/titles/snippets.
  • **fetch a URL** — retrieve a page's content as text/markdown.
  • **run N tasks concurrently** — sub-agents where your runtime has them,

otherwise just sequential or concurrent calls.

Quality depends heavily on *how* you fetch pages. Major retailers (Amazon.sa, Noon, …) render prices with JavaScript and block naive fetchers. So shop-scout prefers a real scraping backend (Firecrawl) and falls back to plain fetch only when nothing better is configured. Read **Backend tiers** next — they are *not* equivalent.

---

Backend tiers (auto-detected — "use what you have")

Detect the backend in this exact order and announce which one you're using:

1. **`FIRECRAWL_API_URL` is set → self-hosted Firecrawl. ⭐ Recommended.** Your own Firecrawl (Docker) at that base URL. **No account, no API key, no quota** — and reliable extraction on JS-heavy stores. This is the setup that answers the usual objection to Firecrawl ("I don't want an account/quota"). One-time setup is in `references/self-host-firecrawl/` (a `docker-compose.yml` you bring up with `docker compose up -d`, then `export FIRECRAWL_API_URL=http://localhost:3002`). 2. **Else if `FIRECRAWL_API_KEY` is set → Firecrawl cloud.** Base URL `https://api.firecrawl.dev/v2`, header `Authorization: Bearer fc-…`. Same endpoints as self-host, plus server-side structured (`json`) extraction. Subject to your plan's quota. 3. **Else → built-in web search + fetch. Best-effort fallback only.** Zero setup, but it hits bot walls and JS-rendered prices on major retailers and can't reliably read live prices. On this backend you **do not print a comparison table** — you output the **honest research summary** (see **Output: decide the format first**) and point the user at Firecrawl.

`SHOP_BACKEND` overrides detection: `auto` (default) | `firecrawl` (force Firecrawl; requires URL or key) | `builtin` (force native fetch).

> Don't present the three tiers as equal in your output. If you ended up on > built-in, say so and point the user at self-host. If on Firecrawl, just use it.

How to actually call Firecrawl (endpoints, params, the search-first-then-scrape workflow, cloud vs self-host differences) lives in **`references/firecrawl-usage.md`** — read it before your first Firecrawl call. A ready-made wrapper, `$SKILL_DIR/scripts/firecrawl.sh`, auto-detects self-host vs cloud from the same env vars and works from any agent that can run a shell command.

> **Other agents (Codex, Cursor, Gemini CLI, …):** nothing here is Claude-specific. > Map "web search" and "fetch a URL" to whatever your runtime offers, run > `$SKILL_DIR/scripts/firecrawl.sh` through your shell tool (needs only `curl`), > and if you can't run sub-agents just process items sequentially.

> **`$SKILL_DIR`** — this skill's own directory (the folder containing this > `SKILL.md`, `references/`, and `scripts/`). Resolve it per install: on a Claude > Code plugin install it's `${CLAUDE_PLUGIN_ROOT}/skills/shop-scout`; for an > `npx skills` / manual / other-agent install it's wherever this `SKILL.md` > lives. Always reference bundled files through it, never a hardcoded path.

---

Configuration (env vars — all optional, sane defaults)

| Var | Default | Meaning | |---|---|---| | `SHOP_BACKEND` | `auto` | `auto` \| `firecrawl` \| `builtin` | | `FIRECRAWL_API_URL` | — | Self-host base URL, e.g. `http://localhost:3002`. Highest-priority backend. | | `FIRECRAWL_API_KEY` | — | Firecrawl cloud key (`fc-…`). **Never write it to a file or commit it.** | | `SHOP_SCOPE` | `both` | `saudi` \| `global` \| `both` — which store list to search. | | `SHOP_STORES` | — | Comma list of pinned/preferred stores; *extends* the bundled lists. | | `SHOP_PARALLEL` | `3` | Max products researched concurrently. Higher = faster **but more tokens and hits rate limits sooner**. | | `SHOP_MAX_LISTINGS` | `5` | Max listings scraped per product (token control). |

Read env vars from the environment at runtime. A documented template lives in `.env.example` — copy it to `.env`, fill values, and load it however your ru

Read more
@omarsaleh506
Ships withomar-skills

Portable, install-once skills for AI coding agents. Each skill is a single SKILL.md of plain-markdown instructions your agent loads automatically the moment your request matches — no prompt to paste, no copy-paste drift, the same discipline every time, in

Stars on GitHub

Momentum

stars in total
3
Star history of OmarSaleh506/skills on GitHub, a chart by star-history.com

Other skills on omar-skills.

ai-os-init

ai-os-init

Scaffolds an "AI Operating System" project structure into any project, non-destructively — adds only missing pieces, never…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc11d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about shop-scout.

Which coding agents can use shop-scout?
shop-scout installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.