Buy Asymmetric Upside Hoodie (Size L)
Purpose
Order the Asymmetric Upside Hoodie in size Large from the V1 @ Michigan merch store (v1michigan.com/store). This skill drives the store UI: select the size on the correct product card, add it to the client-side cart, and click Checkout, which creates a checkout session and redirects to a live Stripe Checkout page. This is where the flow stops — completing the order requires entering real payment details on Stripe's hosted page, which this skill does not do (it is intentionally read-only up to the payment step). The recommended path is the browser; an /api/checkout shortcut exists and is documented under Site-Specific Gotchas.
When to Use
- A user wants to buy / order the V1 @ Michigan "Asymmetric Upside Hoodie" in size Large.
- A user wants to add the hoodie (Large) to the cart and reach the checkout / payment page.
- A user wants to confirm the hoodie's price, available sizes/colors, and delivery terms before purchasing.
- Adaptable to other V1 merch items (Tees, Crewnecks) or other sizes by changing the product card and size button.
Workflow
Recommended method: browser (the store is a trivial, un-protected Next.js/Netlify app; no stealth or proxies needed).
- Navigate directly to
https://v1michigan.com/store. (The "Store" link in the top nav also points here.) - (Optional) Click the Hoodies filter tab to narrow the grid to hoodies only.
- Locate the Asymmetric Upside Hoodie product card — heading "Asymmetric Upside Hoodie", price $60, tagline "A recipe to reap the upside." Do not confuse it with the "Asymmetric Upside Tee" ($35), which shares the same tagline. The reliable discriminator is the name containing "Hoodie" and the $60 price.
- On that card, click the size button
L(sizes offered: S, M, L, XL, XXL). The button becomes selected/highlighted. The only color is Natural and is applied automatically. - Click Add to Cart on the same card. The header cart counter increments to Cart (1).
- Click the Cart button (top-right of the Merch header, or the cart icon in the nav) to open the cart sheet. Verify the line item reads "Asymmetric Upside Hoodie" · L · Natural, quantity 1, $60, with Subtotal $60 and Hand Delivery FREE.
- Click Checkout. The button shows "Processing…" while the site POSTs to
/api/checkout, then the browser redirects tohttps://checkout.stripe.com/c/pay/cs_live_…. - Stop here. Report success at the Stripe Checkout page. Do not enter card details or place the order — completing payment is out of scope for a read-only skill. If the user genuinely wants to complete the purchase, hand control back to the human at the Stripe page.
API alternative (headless/batch)
Skip the UI by POSTing the cart directly:
POST https://v1michigan.com/api/checkout
Content-Type: application/json
{"items":[{"product":{"id":"v1-asymmetric-upside-hoodie","name":"Asymmetric Upside Hoodie","description":"A recipe to reap the upside.","price":6000,"image":"/merch/v1-asymmetric-upside-hoodie-front.png","images":["/merch/v1-asymmetric-upside-hoodie-front.png","/merch/v1-asymmetric-upside-hoodie-back.png"],"sizes":["S","M","L","XL","XXL"],"colors":[{"name":"Natural","hex":"#d4cfc4"}],"category":"hoodie"},"size":"L","color":"Natural","quantity":1}]}
Returns HTTP 200 with a JSON body containing the Stripe Checkout session URL. price is in cents (6000 = $60). This still ends at Stripe's hosted payment page.
Site-Specific Gotchas
- Tee vs. Hoodie name collision. "Asymmetric Upside Tee" ($35) and "Asymmetric Upside Hoodie" ($60) share the exact tagline "A recipe to reap the upside." Match on the word Hoodie and the $60 price, not the tagline, or you will add the wrong item.
- Cart is client-side (React
CartProvider/CartSheet), persisted inlocalStorage. It survives page reloads and navigation within the same session. If a prior run left items in the cart, the counter may already be > 0 — clear/verify before assuming a clean state. - Size and color are required before Add to Cart. Size must be picked on the card; the hoodie's only color is Natural (
#d4cfc4), applied automatically. Other products (e.g., V1 Crewneck) also expose color buttons (Black/Navy). - Checkout is a hard stop at live Stripe. Clicking Checkout POSTs to
/api/checkout(200) and redirects tocheckout.stripe.com/c/pay/cs_live_…. These are live (not test) Stripe sessions — never enter payment or submit the order. The redirect can take a few seconds; the button reads "Processing…" meanwhile. - Delivery model. Cart shows "Hand Delivery — FREE" and "Delivered by hand within ~1 month. Automated shipping coming soon!" There is a promo-code field on the Stripe page ("Have a promo code? Enter it at checkout.").
- No anti-bot. Homepage/probe returned 200 with no bot protection; the store is a static-ish Next.js app on Netlify. The successful run used no
--verifiedand no--proxies. PostHog analytics fire but do not gate anything. - No dedicated product-detail page. All buying happens from the card on
/store— there is no/store/asymmetric-upside-hoodieroute to deep-link to.
Expected Output
Success (reached checkout, no payment made):
{
"status": "checkout_initiated",
"product": "Asymmetric Upside Hoodie",
"size": "L",
"color": "Natural",
"quantity": 1,
"unit_price_usd": 60,
"subtotal_usd": 60,
"delivery": "Hand Delivery (FREE, ~1 month)",
"checkout_provider": "stripe",
"checkout_url": "https://checkout.stripe.com/c/pay/cs_live_...",
"payment_completed": false,
"note": "Stopped at Stripe Checkout; payment not entered (read-only)."
}
Cart-only checkpoint (before clicking Checkout):
{
"status": "in_cart",
"cart_count": 1,
"items": [
{ "name": "Asymmetric Upside Hoodie", "size": "L", "color": "Natural", "quantity": 1, "price_usd": 60 }
],
"subtotal_usd": 60
}
Failure — product/size not found or out of stock:
{
"status": "error",
"reason": "product_not_found | size_unavailable",
"detail": "Could not locate the Asymmetric Upside Hoodie card in size L on /store."
}