← All skills
costco
90 / 100 · Low risk
Fine to try.
By openweb-org/openweb (GitHub) · other · 77 stars · scanned at commit a387b50
Works with any agent that supports SKILL.md skills.
What this skill can do
Connects to the internet
The author does not mention this.
Found in 19 places.
Show 16 more
- src/sites/costco/DOC.md, line 131
- **PerimeterX**: present on `www.costco.com`, intercepts `window.fetch` and `XMLHttpRequest` in `page.evaluate` for some non-cart paths. Read adapters work aro - src/sites/costco/DOC.md, line 132
- **BazaarVoice auth**: BV BFD API returns 401 from `page.request.fetch()`. Reviews extracted from BV widget's cached state instead. - src/sites/costco/DOC.md, line 144
- **APIRequestContext vs DOM fetch on Akamai endpoints (2026-04-19):** Probed `/AjaxManageShoppingCartCmd` from both `page.request.fetch()` and `page.evaluate(f - src/sites/costco/PROGRESS.md, line 8
- Overcame PerimeterX blocking `page.evaluate(fetch(...))` — switched to `page.request.fetch()` - src/sites/costco/PROGRESS.md, line 36
- BazaarVoice BFD API (`apps.bazaarvoice.com/bfd/...`) returns 401 from `page.request.fetch()` — requires internal auth added by BV's `bvFetch` wrapper. Workaro - src/sites/costco/PROGRESS.md, line 61
- Removed `cartRequest` (was `page.request.fetch()` — Akamai 403) - src/sites/costco/PROGRESS.md, line 62
- Three new functions using `page.evaluate(fetch())` from DOM context - src/sites/costco/PROGRESS.md, line 75
**Key discovery:** Costco's Akamai Bot Manager fingerprints Playwright's `APIRequestContext` (`page.request.fetch()`) and returns 403 even with valid session co - src/sites/costco/adapters/costco-api.ts, line 79
const resp = await page.request.fetch(url, { - src/sites/costco/adapters/costco-api.ts, line 103
const resp = await page.request.fetch(url, { - src/sites/costco/adapters/costco-api.ts, line 894
const r = await fetch(args.url, { - src/sites/costco/adapters/costco-api.ts, line 946
const r = await fetch(u, { method: 'POST', headers: { Accept: '*/*', 'Content-Type': 'text/plain;charset=UTF-8' }, credentials: 'include' }) - src/lib/adapter-helpers.ts, line 67
const resp = await fetch(args.url, { - src/lib/adapter-helpers.ts, line 127
{ fetchImpl: (u, init) => fetch(u, { ...init, signal: controller.signal }), ssrfValidator: validateSSRF }, - src/runtime/primitives/page-expression.ts, line 10
'fetch(', - src/runtime/primitives/page-expression.ts, line 14
'XMLHttpRequest',
Runs commands on your computer
The author does not mention this.
Found in 5 places.
Show 2 more
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'costco' ] || [ -L ~/.agents/skills/'costco' ]; then echo 'A skill folder named costco already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/openweb-org/openweb' "$d" && git -C "$d" checkout --quiet 'a387b50c829d871839a613732e1b97bfa1946124' -- 'src/sites/costco' && mkdir -p ~/.agents/skills && cp -R "$d"/'src/sites/costco' ~/.agents/skills/'costco' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'costco' ~/.claude/skills/'costco' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for openweb-org/openweb shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/openweb-org/openweb/)
Score history
| Date | Version | Score |
|---|
| 2026-11-07 | a387b50 | 100 |