Back to Registry
View Author Profile
Official Verified
Qfc Order
Skill by jasonahorn
skill-install — Terminal
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/jasonahorn/qfc-orderOr
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
- User logs into qfc.com (Kroger account).
- Navigate to Pickup, select store/location.
- Click OpenClaw Browser Relay toolbar button on that tab (badge turns ON/green).
- Ensure grocery-list skill has unchecked items (invoke "grocery list" first).
- Invoke this skill: "Place QFC order"
Persistent State
| File | Purpose |
|---|---|
skills/qfc-order/qfc-state.json | Order 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
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.