openclaw/skills/amazon-shopping/SKILL.md
Search, browse, and purchase products on Amazon. Use when asked to buy something, find a product on Amazon, check prices, compare products, track orders, or manage the Amazon cart. Requires browser control and payment details from 1Password.
npx skillsauth add Dbochman/dotfiles amazon-shoppingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Search, browse, and purchase products on Amazon using browser automation. Payment details are read from 1Password at runtime.
NEVER place an order without explicit approval from Dylan.
Before clicking "Place your order":
# Read the spending cap before any purchase
# OP_SERVICE_ACCOUNT_TOKEN is pre-loaded by the gateway from ~/.openclaw/.secrets-cache
op read "op://OpenClaw/Visa/credit limit"
browser open "https://www.amazon.com"
browser snapshot
browser type <search_box_ref> "search query"
browser press Enter
browser snapshot
browser snapshot
# Click on a product to view details
browser click <product_ref>
browser snapshot
When presenting results to Dylan, include:
browser click <add_to_cart_ref>
browser snapshot
browser open "https://www.amazon.com/gp/cart/view.cgi"
browser snapshot
browser click <proceed_to_checkout_ref>
browser snapshot
Amazon should have saved payment methods. If it asks for card details:
# OP_SERVICE_ACCOUNT_TOKEN is pre-loaded by the gateway from ~/.openclaw/.secrets-cache
CARD_NUMBER=$(op read "op://OpenClaw/Visa/number")
CARD_EXPIRY=$(op read "op://OpenClaw/Visa/expiry date")
CARD_CVV=$(op read "op://OpenClaw/Visa/verification number")
CARD_NAME=$(op read "op://OpenClaw/Visa/cardholder name")
Then fill the form fields:
browser type <card_number_ref> <number>
browser type <expiry_ref> <expiry>
browser type <cvv_ref> <cvv>
browser type <name_ref> <name>
Read the local-only address file for field values:
cat ~/.openclaw/skills/amazon-shopping/address.local.md
If the file doesn't exist, fall back to 1Password:
# OP_SERVICE_ACCOUNT_TOKEN is pre-loaded by the gateway
op read "op://OpenClaw/Visa/address"
Before placing the order, always:
browser snapshot
Report to Dylan:
Then ask: "Should I place this order for $X.XX?"
browser click <place_order_ref>
browser snapshot
Confirm the order was placed and report:
browser open "https://www.amazon.com/gp/your-account/order-history"
browser snapshot
browser open "https://www.amazon.com/gp/cart/view.cgi"
browser snapshot
browser open "https://www.amazon.com/gp/cart/view.cgi"
browser snapshot
browser click <delete_ref>
browser open "https://www.amazon.com/deals"
browser snapshot
browser open "https://www.amazon.com/gp/your-account/order-history"
browser snapshot
browser click <track_package_ref>
browser snapshot
****0298OpenClaw uses system Google Chrome (not Playwright Chromium) with a separate profile at ~/.openclaw/browser/openclaw/user-data/. You MUST re-auth using system Chrome — Playwright Chromium cookies are incompatible.
Stop the OpenClaw gateway (it holds the browser profile lock):
launchctl bootout gui/$(id -u)/ai.openclaw.gateway
sleep 2
pkill -f "Google Chrome"
rm -f ~/.openclaw/browser/openclaw/user-data/SingletonLock
rm -f ~/.openclaw/browser/openclaw/user-data/SingletonCookie
rm -f ~/.openclaw/browser/openclaw/user-data/SingletonSocket
Launch system Chrome with the OpenClaw profile (must run in GUI session via .command file):
# /tmp/amazon_chrome_login.command
#!/bin/bash
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--user-data-dir=/Users/dbochman/.openclaw/browser/openclaw/user-data \
--no-first-run --no-default-browser-check \
--password-store=basic \
"https://www.amazon.com"
Launch via: open /tmp/amazon_chrome_login.command
Dylan signs in on the Mac Mini screen (email, password, 2FA). Do NOT sign into Google — only sign into Amazon.
Close browser and restart gateway:
pkill -f "Google Chrome"
rm -f ~/.openclaw/browser/openclaw/user-data/SingletonLock
rm -f ~/.openclaw/browser/openclaw/user-data/SingletonCookie
rm -f ~/.openclaw/browser/openclaw/user-data/SingletonSocket
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/ai.openclaw.gateway.plist
If the browser fails with "Failed to start Chrome CDP on port 18800":
After a gateway crash or unclean Chrome shutdown, lock files prevent new Chrome from starting.
rm -f ~/.openclaw/browser/openclaw/user-data/SingletonLock
rm -f ~/.openclaw/browser/openclaw/user-data/SingletonCookie
rm -f ~/.openclaw/browser/openclaw/user-data/SingletonSocket
pkill -f "Google Chrome.*--remote-debugging-port=18800"
launchctl kickstart -k gui/$(id -u)/ai.openclaw.gateway
OpenClaw uses system Google Chrome (not Playwright Chromium) with --headless=new. When a visible browser session signs into a Google account, Chrome stores encrypted tokens that require macOS Keychain access. The gateway runs headless and can't access the Keychain, causing Chrome to crash with Trace/BPT trap (SIGTRAP) immediately after starting.
Diagnosis: Chrome starts CDP (DevTools listening on ws://...) but dies within 1-2 seconds. Stderr shows errKCInteractionNotAllowed and Failed to decrypt token for service AccountId-*.
Fix: Replace the corrupted profile with a fresh one:
launchctl bootout gui/$(id -u)/ai.openclaw.gateway
pkill -f "Google Chrome"
mv ~/.openclaw/browser/openclaw/user-data ~/.openclaw/browser/openclaw/user-data.broken
mkdir -p ~/.openclaw/browser/openclaw/user-data
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/ai.openclaw.gateway.plist
Note: This loses all browser cookies (Amazon login, etc). You'll need to re-auth via the Re-Auth Procedure above. When re-authing, do NOT sign into Google in the visible Chromium — only sign into the target site (Amazon).
lsof -i :18800
# If a Chrome process is found, kill it
kill <PID>
/Applications/Google Chrome.app) in headless mode — NOT Playwright Chromium~/.openclaw/browser/openclaw/user-data/~/Library/Caches/ms-playwright/chromium-1208/ is only used for the visible re-auth procedurebrowser snapshot frequently to stay oriented on the pagebrowser screenshot for visual confirmationdevelopment
Search the web for current information, news, facts, and answers. Use when asked questions about current events, needing to look something up, finding websites, researching topics, or when you need up-to-date information beyond your training data.
development
Summarize any URL, YouTube video, podcast, PDF, or file into concise text. Use when asked to read an article, summarize a link, get the gist of a video or podcast, extract content from a URL, or when you need to understand what a web page or document contains.
development
Play music via Spotify and control Google Home speakers. Use when asked to play music, songs, artists, playlists, podcasts, or control speakers/volume/audio.
testing
Create new OpenClaw skills, modify and improve existing skills, and measure skill performance with evals. Use when users want to create a skill from scratch, update or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy. Also use when asked to "make a skill", "turn this into a skill", "improve this skill", or "test this skill".