openclaw/skills/grocery-reorder/SKILL.md
Reorder groceries from Star Market by replaying the most recent order. Adds items to cart but does NOT checkout. Use when asked to reorder groceries, restock the kitchen, or place a Star Market order.
npx skillsauth add Dbochman/dotfiles grocery-reorderInstall 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.
Automates weekly grocery reordering from Star Market (Albertsons family) using Pinchtab browser automation + CSMS API. Logs in as Julia, finds the most recent order, clicks Reorder to add all items to the cart, then verifies. Does NOT checkout.
# Reorder most recent order (default)
python3 ~/.openclaw/workspace/scripts/grocery-reorder.py
# Reorder a specific order
python3 ~/.openclaw/workspace/scripts/grocery-reorder.py --order-id 160816581
# Dry run (login + list orders, no reorder)
python3 ~/.openclaw/workspace/scripts/grocery-reorder.py --dry-run
Requires all Star Market env vars loaded from ~/.openclaw/.secrets-cache:
| Variable | Source | Description |
|----------|--------|-------------|
| STARMARKET_PASSWORD | 1Password | Account password |
| STARMARKET_USERNAME | 1Password | Login email |
| STARMARKET_GMAIL | secrets-cache | Gmail for MFA code retrieval |
| STARMARKET_USER_HASH | secrets-cache | Account-specific API hash |
| STARMARKET_DEVICE_TOKEN | secrets-cache | Remembered device token (skips MFA) |
set -a && source ~/.openclaw/.secrets-cache && set +a
PATH=/opt/homebrew/bin:/opt/homebrew/opt/node@22/bin:/usr/bin:/bin:$PATH
python3 ~/.openclaw/workspace/scripts/grocery-reorder.py
{"status": "success", "order_id": "160816581", "cart": {"items": 9, "total": "34.00"}}
{"status": "dry-run", "order_id": "160816581", "orders": [...]}
/abs/pub/cnc/csmsservice/api/csms/authn) with device tokengws, verifies via APISWY.OKTA.autoSignInWithSessionToken(sessionToken)/order-account/orders, extracts order IDs from a[href*="/order-account/orders/"] links/erums/cart, confirms items were added and reads cart total.click() doesn't work on Angular buttons. Must dispatch full event sequence: pointerdown, mousedown, pointerup, mouseup, click (both Pointer and Mouse) with real clientX/clientY from getBoundingClientRect()Content-Type: application/vnd.safeway.v2+json, ocp-apim-subscription-key, x-swy-banner: starmarket, x-aci-user-hash/erums/cart (not /shop/cart)Weekly reorder runs on Sunday mornings. The cron job:
STARMARKET_* env vars (see Environment section above)gws (requires auth for the account in STARMARKET_GMAIL)development
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".