ecommerce-listing — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ecommerce-listing (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Category/search URL or keyword + filters → paginated product list (URL, name, price, image, rating per item)
All process output to user (progress updates, process notifications) follows the user's language.
Extract a structured list of products from any e-commerce category, search results, or keyword search page, with support for price/brand/rating filters and multi-page pagination.
If browser-act has been confirmed available in the current session → skip this step.
Invoke browser-act via Skill tool to load usage. If installation or configuration issues arise, follow its guidance to resolve then retry.
This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page. JS code is encapsulated in Python files under thescripts/directory, invoked viaeval "$(python scripts/xxx.py {params})". Use the bash tool for execution.
Navigate to the listing/search page first, then extract:
eval "$(python scripts/extract-listing.py --max-results 20)"Parameters:
--max-results: max items to return per page, default 20Output example:
{
"count": 20,
"items": [
{
"url": "https://www.amazon.com/dp/B09WNK39JN",
"name": "Amazon Echo Pop",
"price": 39.99,
"currency": "USD",
"image": "https://m.media-amazon.com/images/I/...jpg",
"rating": 4.7,
"review_count": 103789,
"asin": "B09WNK39JN"
}
]
}After extracting a page, get the URL to navigate to for the next page:
eval "$(python scripts/extract-listing-next-page.py)"Output example:
{"next_url": "https://www.amazon.com/s?k=headphones&page=2", "has_next": true, "method": "amazon"}When has_next is false, pagination is complete.
Step 1 — Build search URL with filters:
Construct the URL based on target site and desired filters using the patterns below, then navigate:
Amazon (amazon.com):
https://www.amazon.com/s?k={keyword_urlencoded}&s={sort}&rh={filter_params}s): price-asc-rank | price-desc-rank | review-rank | date-desc-rank (omit for relevance)p_36:{min_cents}-{max_cents} to rh (dollars × 100, e.g. $50–$200 → p_36:5000-20000)avg_customer_review:four-and-above | three-and-above | two-and-above to rhp_n_availability:1248801011 to rhrh values: comma-separate (e.g. rh=p_36:5000-20000,avg_customer_review:four-and-above)eBay (ebay.com):
https://www.ebay.com/sch/i.html?_nkw={keyword_urlencoded}&_udlo={min_price}&_udhi={max_price}&_sop={sort_num}12=BestMatch | 15=PriceLow | 16=PriceHigh | 24=NewlyListedWalmart (walmart.com):
https://www.walmart.com/search?q={keyword_urlencoded}&min_price={min}&max_price={max}&sort={sort}best_match | price_low | price_high | rating_highGoogle Shopping (cross-site, no --site):
https://www.google.com/search?tbm=shop&q={keyword_urlencoded}&tbs=p_ord:{sort}rv=relevance | pd=price ascending | prd=price descendingAny site with `--site` (generic):
https://{site}/search?q={keyword_urlencoded}Step 2 — Navigate and extract:
navigate {constructed_url} → wait stableeval "$(python scripts/extract-listing.py --max-results {n})"Step 3 — Paginate (repeat until done):
eval "$(python scripts/extract-listing-next-page.py)"has_next is true: navigate {next_url} → wait stable → re-run extract-listing.pyhas_next is false: stopURL Pagination: extract-listing-next-page.py detects rel=next link, platform-specific pagination controls, and URL page parameters. Returns next_url for navigation.
DOM Pagination: For sites with load-more buttons (some Shopify themes):
state to find "Load more" or "Show more" buttonclick <index> → wait stable → re-run extract-listing.pyresult.count >= 1 AND items[0].url != null
https://www.amazon.com firsthttps://www.ebay.com first--site is specifiedPath: {working-directory}/browser-act-skill-forge-memories/ecommerce-scraper-ecommerce-listing.memory.md
Before execution: If the file exists, read it first — it records unexpected situations encountered during past executions; adjust strategy order accordingly.
After execution: If an unexpected situation is encountered (strategy became ineffective, page redesigned, anti-scraping upgraded, better path discovered), append a line: {YYYY-MM-DD}: {what happened} → {conclusion}
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.