secure-shopper

Asynchronous shopping research + checkout using secure-autofill (1Password-backed browser filling) with results recorded to workspace artifacts.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "secure-shopper" with this command: npx skills add moodykong/secure-shopper

secure-shopper 🛒

Find items across one or more shopping sites, summarize candidates, and (optionally) place the order using secure-autofill.

This skill is asynchronous: spawn a sub-agent for browsing so the main chat stays responsive.

Prerequisites

Required skills / plugin

  • The secure-autofill skill exists at: ~/.openclaw/skills/secure-autofill/
  • The secure-autofill plugin tools are available:
    • vault_suggest
    • vault_fill

Inherit secure-autofill prerequisites

  • A working non-headless Chrome (many shops block headless)
  • Gateway environment has required env vars (per secure-autofill)

Concrete check:

command -v google-chrome || command -v google-chrome-stable

Configuration (portable)

Skill-local config files:

  • Example (shareable, do not edit): ~/.openclaw/skills/secure-shopper/config.json.example
  • Real (machine-specific, written by onboarding): ~/.openclaw/skills/secure-shopper/config.json

Config keys:

  • goToSites[]: list of default shopping sites (e.g. Amazon, Walmart)
  • location.zip or location.address: used for shipping/availability context
  • preferences.priority: one of:
    • relevancy
    • cheaper
    • faster
    • reviews
  • preferences.maxCandidatesPerSite: cap per site (default 5)
  • preferences.safeBrowsing: guardrails to avoid oversized pages / context overflow (applies to all sites)
    • startFromSearch: true|false (default true) — prefer a site’s search results page over the homepage/product pages
    • maxCandidatesPerPass: number (default 3) — extract a few items at a time (then paginate/scroll)
    • snapshot: limits for browser.snapshot
      • compact: boolean (default true)
      • depth: number (default 6)
      • maxChars: number (default 12000)
    • fallback: what to do on context_length_exceeded
      • retryWithTighterSnapshot: boolean (default true)
      • switchToSearchUrl: boolean (default true)

Initialization / installation / onboarding

Preferred (chat-first)

Ask Boss and then write config.json:

  1. Go-to shopping website(s)

    • Examples: Amazon, Walmart, Target
    • Store into goToSites[]
  2. Zip code OR proximity address

    • Store into location.zip and/or location.address
  3. Preferences

    • Ask for priority: relevancy vs cheaper vs faster delivery vs higher review scores
    • Store into preferences.priority (+ optional notes)

After collecting answers, update the real config file.

Optional helper (terminal):

node ~/.openclaw/skills/secure-shopper/scripts/onboard.mjs \
  --sites 'Amazon=https://www.amazon.com|Walmart=https://www.walmart.com' \
  --zip 46202 \
  --priority cheaper

How it works (agent behavior contract)

0) Require a shopping description

The user must provide a description of their shopping task.

  • If they didn’t: stop and ask for it.

1) Honor runtime user prompts

Runtime user instructions (the user’s message for this run) override stored config.

Examples of runtime overrides:

  • “Use Target instead of Amazon.”
  • “Only show Prime-eligible.”
  • “Budget under $50.”

2) Login via secure-autofill (skip if already logged in)

  • Use the configured go-to sites, unless the runtime prompt specifies a site.
  • If the site session appears already authenticated: skip login.
  • Otherwise, use secure-autofill login flow:
    • browser.snapshot to get refs
    • vault_suggest/vault_fill to fill credentials

3) Make the browsing asynchronous

Immediately after accepting the task, respond with something like:

I’m en route to the stores. I’ll notify you when I find the best matches.

Then spawn a sub-agent so the main session is not interrupted.

Implementation note:

  • Use sessions_spawn with a task that includes the shopping description and any runtime overrides.

4) Browse + identify candidates

The sub-agent browses each chosen site, searches, filters, and identifies candidates that fit the user description.

Context-safe browsing (ALL shopping sites)

Many shopping sites can produce extremely large pages/snapshots. To avoid context_length_exceeded failures:

  • Prefer starting from a search results URL (or the site’s search box) rather than the homepage.
  • Use small snapshots:
    • browser.snapshot(..., compact=true)
    • keep depth modest (e.g., 4–8)
    • set maxChars and/or target a specific container when possible
  • Extract incrementally:
    • grab top ~3 candidates, record them, then paginate/scroll and repeat until maxCandidatesPerSite is met
  • If a snapshot still overflows:
    • retry with a tighter snapshot (smaller depth / smaller region)
    • switch to a search URL (/search?q=...) and re-extract
  • Do not “reason through” massive dumps. If the page is huge, reduce the page slice first.

Record results to:

/home/miles/.openclaw/workspace/artifacts/secure_shopping/{timestamp}_shopping_task.json

JSON requirements:

  • Record:
    • userPrompt (shopping description)
    • startTime
    • endTime
    • phase (required):
      • candidates_found | awaiting_accept_deny | awaiting_checkout_confirm | ordered
    • candidates[]
  • Candidates for the same request must live under the same parent task.
  • Each candidate must include:
    • price (string)
    • reviewScore (string/number)
    • url
    • verdict (short)
    • status: pending | accepted | denied | shopped

Suggested candidate shape:

{
  "site": "Amazon",
  "title": "...",
  "price": "$39.99",
  "reviewScore": "4.6 (12,345)",
  "url": "https://...",
  "verdict": "Best value under $50; good reviews; ships tomorrow",
  "status": "pending"
}

Helper module (optional): scripts/task_io.mjs.

5) Notify user + REQUIRE accept/deny (hard gate)

When browsing is done, you must:

  1. Set JSON phase = "awaiting_accept_deny".
  2. Translate the JSON into a human-friendly summary.
  3. In the same message, require an ACCEPT/DENY decision. Do not end the turn without the prompt.

Mandatory message template (copy this structure):

  • Recommended pick: <title><price><reviewScore> — <1-line why>
  • Other options: (optional, 1–5 bullets)
  • Choose: Reply with A=accept/deny, B=accept/deny, ... (or “Accept A” / “Deny B”).
  • Next step: “If you accept one: do you want me to checkout, or stop at ready-to-buy?”

Hard rule:

  • If you listed candidates/links but did not include an explicit Choose (ACCEPT/DENY) line, the output is invalid and must be rewritten before sending.

6) Apply accept/deny updates

Once the user replies:

  • Update each candidate status to accepted or denied.
  • Confirm the accepted candidate(s).
  • Set JSON phase:
    • awaiting_checkout_confirm if at least one is accepted and checkout is not yet confirmed
    • keep awaiting_accept_deny if the user’s response is ambiguous / incomplete

7) Checkout (only after explicit confirmation)

Before you click any “Place order” / “Submit” equivalent:

  • Ask for a clear confirmation like: “Confirm checkout for A? (yes/no)”
  • Set JSON phase = "awaiting_checkout_confirm" until confirmed.

If the user confirms checkout:

  • Navigate to the accepted candidate’s URL
  • Add to cart / proceed to checkout
  • Use secure-autofill to input payment/shipping info and submit

If secure-autofill reports an error:

  • Do not guess.
  • Pass the error back to the user.

8) Mark as shopped

If the order is successfully placed:

  • update that candidate’s status to shopped
  • set JSON phase = "ordered"

Notes / guardrails

  • Never paste secrets.
  • Checkout flows often require MFA / SMS verification; ask the user when needed.
  • Prefer fewer high-quality candidates over a long list.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Research

Paraphraser

文本改写/降重、学术改写、简化表达、正式化、扩写、前后对比。Paraphrase, rewrite for academic tone, simplify, formalize, expand, and compare text versions. Use when you need paraphraser ca...

Registry SourceRecently Updated
Research

Loan Calculator

贷款计算器。等额本息/等额本金计算、方案对比、提前还款分析、贷款能力评估、还款计划表、再融资分析。Loan calculator with equal installment/principal, comparison, prepayment analysis, affordability, schedule,...

Registry SourceRecently Updated
1630ckchzh
Research

Resignation Letter

辞职信生成器。辞职信模板、离职原因、交接清单、感谢信、告别信、辞职时机分析。Resignation letter generator with templates, handover checklist, farewell notes, timing analysis. 辞职信、离职信、辞职模板。Use when...

Registry SourceRecently Updated
1470Profile unavailable
Research

Business Plan Cn

商业计划书生成器。完整BP、精益画布、SWOT分析、财务预测、电梯演讲、市场分析。Business plan generator with lean canvas, SWOT, financial projections, elevator pitch, market analysis. 商业计划、创业、BP。

Registry SourceRecently Updated