ClawKit Logo
ClawKitReliability Toolkit
Back to Registry
Official Verified

Qfc Order

Skill by jasonahorn

skill-install — Terminal

Install via CLI (Recommended)

clawhub install openclaw/skills/skills/jasonahorn/qfc-order
Or

qfc-order AgentSkill (Robust v3: Reliable adds w/ scroll, qty select, OOS alts/search vars, cart confirm)

Description

Automate QFC (qfc.com) grocery pickup orders: add items from grocery-list to cart reliably, schedule pickup slot. Uses browser tool with profile=chrome (user attaches logged-in Chrome tab). No credentials stored—user handles login.

Triggers (invoke phrases)

  • qfc order
  • place qfc pickup
  • grocery order qfc
  • shop qfc

Prerequisites

  1. User logs into qfc.com (Kroger account).
  2. Navigate to Pickup, select store/location.
  3. Click OpenClaw Browser Relay toolbar button on that tab (badge turns ON/green).
  4. Ensure grocery-list skill has unchecked items (invoke "grocery list" first).
  5. Invoke this skill: "Place QFC order"

Persistent State

FilePurpose
skills/qfc-order/qfc-state.jsonOrder state: {store, cart_items: [], scheduled_slot, order_id?, total?}

Optimized Workflow (Min snapshots, aria refs, reliable adds)

When invoked:

1. Verify & Key Refs

browser action=status profile=chrome
  • If not cdpReady: true: Instruct user attach.
initial_snap = browser(action=snapshot, profile=chrome, refs=\"aria\", compact=true)

Extract:

search_ref = initial_snap.ref_for(role=\"searchbox\")  # or aria-label=\"Search\"
cart_ref = initial_snap.ref_for(role=\"button\", name~=\"Cart\" || aria-label~=\"cart\")

2. Load & Confirm Grocery List

glist = read(path=\"skills/grocery-list/grocery-list.json\")
items = glist.items.filter(item => !item.checked)

Reply: "Adding ${items.length} items: ${items.map(i=>i.name).join(', ')}. Proceed?" Wait 'yes'.

3. Ensure Shop Page

  • If initial_snap shows store select/no search: Select store (from state/user), browser action=navigate targetUrl=\"https://www.qfc.com/shop.html\" profile=chrome
  • Re-snapshot if needed.

4. Add Items Loop (Robust: multi-search, scroll, qty adjust, OOS alt)

added = [], skipped = [], notes = []
for item in items:
  success = false
  search_terms = [
    `${item.qty || '1'} ${item.unit || ''} ${item.name}`.trim(),
    item.name,
    (item.unit ? `${item.unit} ${item.name.split(' ')[0]}` : null),
    item.name.toLowerCase().replace(/kroger|private selection/gi, '').trim()
  ].filter(Boolean).slice(0,3)

Metadata

Stars1947
Views1
Updated2026-03-04
View Author Profile
AI Skill Finder

Not sure this is the right skill?

Describe what you want to build — we'll match you to the best skill from 16,000+ options.

Find the right skill
Add to Configuration

Paste this into your clawhub.json to enable this plugin.

{
  "plugins": {
    "official-jasonahorn-qfc-order": {
      "enabled": true,
      "auto_update": true
    }
  }
}
Safety NoteClawKit audits metadata but not runtime behavior. Use with caution.