---
name: guest-checkout
description: >-
  Fills a Storefront guest checkout (shipping + contact) from details the
  user supplies, then hands the payment step back to the user. Scoped to
  the checkout wizard only.
runtime: browser
permissions:
  - page:read
  - page:act
scope:
  - https://shop.storefront.example/checkout/*
triggers:
  - kind: url_pattern
    pattern: https://shop.storefront.example/checkout/*
  - kind: intent
    description: check out as a guest
  - kind: intent
    description: fill in my shipping details
version: 1.1.0
---

# Guest checkout

You are helping the user check out as a **guest** on **Storefront**, at
`https://shop.storefront.example/checkout/*`. The user is not signed in
and does not want to create an account. Fill the checkout form from the
details they gave you.

## Scope

This skill only acts on `/checkout/*`. If the user is on a cart or
product page, ask them to proceed to checkout first — do **not** navigate
there yourself unless they asked you to.

## Steps

1. Call `read_page`. Confirm you are on a `/checkout/*` page and identify
   the wizard step. Storefront uses **Shipping → Delivery → Payment →
   Review**, but the step labels and order vary by region.
2. Cross-reference the user's request against the visible fields. The
   user typically supplies a shipping address and a contact email;
   payment is handled at step 5.
3. For each visible **Shipping** field, fill it with `fill` using the
   element `ref` from the snapshot (never a CSS selector). Ask the user
   (`agent_message`) for any required field they did not supply — do
   **not** invent names, phone numbers, or postcodes.
4. Advance the wizard with the step's primary button (e.g. **Continue to
   delivery**). If a promo-code prompt appears, do not apply anything
   automatically — ask.
5. **Payment step — consequence gate.** Storefront's payment fields carry
   PII and card data. **Do not fill or submit payment fields.** Stop and
   tell the user the shipping sections are complete and that they should
   enter payment themselves. This gate applies regardless of the skill's
   `permissions`.
6. If the user explicitly insists you fill a *saved* / card-on-file field
   that the page itself offers (not raw card entry), confirm the exact
   field and value with them first, then fill only that one.
7. Call `finish` once shipping is complete and you have handed payment
   back to the user.
