Find a product on kmart.com.au by natural-language query, navigate to the product detail page, capture title/price/SKU/availability, and drive the read-only pre-checkout flow up to the bag (/checkout/bag). Never submits an order — stops at the bag review screen. Documents the Akamai bot wall that gates the actual addToCart GraphQL mutation for automated sessions.
Automate repetitive workflows and reduce manual effort
Example: Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Learn new skills, understand complex topics, get expert guidance
Example: Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Enhance output quality through reviews, suggestions, and refinements
Example: Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
Time estimate: 15-45 minutes depending on use case complexity
Prerequisites
Submit your Claude Code skill and start earning
browse install kmart.com.au/kmart-irwsr8Compatible with
Supported agents
| name | add-to-cart |
| title | Kmart Australia Find Product and Add to Cart |
| description | >- Find a product on kmart.com.au by natural-language query, navigate to the product detail page, capture title/price/SKU/availability, and drive the read-only pre-checkout flow up to the bag (/checkout/bag). Never submits an order — stops at the bag review screen. Documents the Akamai bot wall that gates the actual addToCart GraphQL mutation for automated sessions. |
| website | kmart.com.au |
| category | shopping |
| tags | - shopping - ecommerce - kmart - akamai - read-only - australia |
| source | 'browserbase: agent-runtime 2026-05-19' |
| updated | '2026-05-19' |
| recommended_method | browser |
| alternative_methods | - method: api rationale: >- kmart.com.au has an internal GraphQL gateway at https://api.kmart.com.au/gateway/graphql with read operations (getProductAvailability, getMarketplaceOffers, getMyActiveCart) — but it's Akamai-locked and CORS-restricted. Reachable only from a warmed-up browser session, not from curl. Cart mutations (addToCart) are not dispatched at all from automated browser clicks across 2 iterations of CDP network tracing. - method: url-param rationale: >- Search has a clean URL shortcut: /search/?searchTerm={query}. Product detail pages follow /product/{slug}-{sku}/ where {sku} is the 8-digit Kmart keycode. No ?addToCart=X param exists — cart state lives only in the authenticated GraphQL session. |
| verified | true |
| proxies | true |
Given a natural-language product query (e.g. "drink bottle", "water bottle", "kids backpack") on kmart.com.au, find a matching product, navigate to its detail page, capture price/title/SKU/availability, and attempt to drive the read-only pre-checkout flow up to the bag (/checkout/bag) page. Return structured JSON describing the resolved product and the realized cart state.
Read-only — never click "Continue to Checkout", never enter payment details, never submit an order. This skill stops at the bag/cart review screen by design. Booking an order is a separate skill that would require authenticated Kmart credentials and explicit user consent.
If the user actually wants to buy something, hand off to a human — Kmart's cart-add mutation is Akamai-gated for guest automated sessions (see Gotchas).
The recommended path is the public site driven through a verified Browserbase session with residential proxies. There is no public Kmart API for product search; the private GraphQL endpoint at https://api.kmart.com.au/gateway/graphql is reachable for read operations (getProductAvailability, getMarketplaceOffers, getMyActiveCart) from a warmed-up browser session, but cart mutations are blocked by Akamai for guest automated traffic (see Gotchas).
SID=$(browse cloud sessions create --keep-alive --verified --proxies \
| node -e "let s='';process.stdin.on('data',c=>s+=c).on('end',()=>process.stdout.write(JSON.parse(s).id));")
CONNECT_URL=$(browse cloud sessions get "$SID" \
| node -e "let s='';process.stdin.on('data',c=>s+=c).on('end',()=>process.stdout.write(JSON.parse(s).connectUrl));")
export BROWSE_SESSION="kmart"
browse open "https://www.kmart.com.au/" --cdp "$CONNECT_URL" --session "$BROWSE_SESSION"
Both --verified and --proxies are mandatory. A bare session is Akamai-blocked on the first product detail page load. Even verified + proxies sessions get flagged within ~5-8 page transitions (see Gotchas).
browse open "https://www.kmart.com.au/" --session kmart
Do not deep-link directly to a product detail URL on a cold session — that triggers Akamai's "no session warmup" heuristic and returns Access Denied (Akamai edgesuite.net error page) on the first request. The homepage seeds the Akamai cookie (_abck) and JS challenge state.
browse open "https://www.kmart.com.au/search/?searchTerm=drink%20bottle" --session kmart
browse wait timeout 4000 --session kmart # search results render after a delay
browse get markdown body --session kmart
Product detail URLs follow the pattern /product/{kebab-slug-with-words}-{8-digit-sku}/. Extract them from the markdown via regex \(/product/[a-z0-9-]+/[?][^)]+\).
browse open "https://www.kmart.com.au/product/940ml-bow-dual-function-drink-bottle-43693399/" --session kmart
browse wait timeout 4000 --session kmart
Capture title via browse get title, scrape the rendered price/SKU via browse get markdown body or browse snapshot. The SKU appears in the page as SKU : P_43693399 and is also embedded in the URL (last 8-digit number).
browse eval "const b=[...document.querySelectorAll('button')].find(x=>/^Add to bag$/i.test(x.textContent.trim())); JSON.stringify({ found: !!b, disabled: b?.disabled, hasGreyClass: b?.className.includes('disabled') })" --session kmart
The button is disabled for products that are out-of-stock for delivery to the default postcode (Sydney 2000). The button visually renders as light-grey background instead of the active dark-blue. Skip these products and try another from the search results.
# Snapshot first to refresh refs after JS settle
browse snapshot --session kmart > /tmp/snap.txt
REF=$(grep -oE '\[[0-9]+-[0-9]+\] button: Add to bag' /tmp/snap.txt | head -1 | grep -oE '\[[0-9]+-[0-9]+\]')
browse click "$REF" --session kmart
browse wait timeout 4000 --session kmart
Then read the bag:
browse open "https://www.kmart.com.au/checkout/bag" --session kmart
browse wait timeout 5000 --session kmart
browse screenshot --session kmart --path /tmp/bag.png
Expect this to fail. The cart mutation does not fire for automated sessions (see Gotchas). Capture the realized state — either an empty bag ("No items currently in your bag") or an Akamai Access Denied — and report it honestly in the JSON output.
The "Continue to Checkout" button on /checkout/bag takes the user to address, payment, and order confirmation. This skill is read-only. Do not click checkout buttons, do not enter payment info, do not submit an order. The terminal screen for this skill is /checkout/bag with the bag's current contents visible.
_abck cookie challenge and dynamic beacons (POSTs to obfuscated /ZchU2Z/w/t/... paths). Symptoms observed across 2 iterations:
Access Denied reference #18.xxxxx.edgesuite.net. Always warm up on / first./checkout/bag immediately returns Access Denied on a fraction of sessions.getMyActiveCart, getProductAvailability, getMarketplaceOffers, getRecommendedAvailableProducts, getRealTimeRecommendations, getPostcodeSuggestions, GetTrendingProductRecommendation). No addToCart/addItemToCart/createCart mutation is dispatched. The button's React onClick handler either runs an Akamai-gated guard or expects a session token the automated browser does not carry. Both CDP Input.dispatchMouseEvent clicks (via browse click [ref]) and JS .click() (via browse eval) produce the same result: button state changes visually but no mutation fires and the bag remains empty.1L Grey Drink Bottle with Handle (P_43677986)) ship the button in a permanently disabled state for delivery to the default postcode. The button still claims to be a <button> element, but clicking it is a no-op even for a human. Confirm b.disabled === false via browse eval before clicking — if true, pick a different product.POST https://api.kmart.com.au/gateway/graphql. All page state is hydrated from this endpoint. The schema includes (at least): getMyActiveCart, getProductAvailability(input: {country, postcode, products: [{keycode, quantity, isNationalInventory, isClickAndCollectOnly}]}), getMarketplaceOffers(productSkus, postcode, countryCode, price), getPostcodeSuggestions(query, country), getRecommendedAvailableProducts, getRealTimeRecommendations, GetTrendingProductRecommendation. Direct CORS-OPTIONS preflight + POST works from the warmed browser context for read queries; do NOT attempt to call this endpoint with raw curl — it requires a valid Akamai-issued bearer + cookie pair that only a real browser session has.getProductAvailability call by the page hydration. The header has a "Deliver to Sydney 2000" button that opens a postcode picker, but for a read-only flow you usually don't need to change it. If the user wants availability for a specific postcode, change it via the picker before the product detail load./product/{kebab-slug}-{8-digit-sku}/. SKU also appears on the page as SKU : P_43693399 (the P_ prefix is purely a label). The 8-digit number alone is what GraphQL operations use as keycode or productSkus[]./search/?searchTerm={url-encoded-query}. Returns an HTML page that hydrates products client-side via Constructor.io (see ac.cnstrc.com requests). The HTML response itself contains the product cards once hydrated; wait at least 4s after navigation before scraping markdown. The page is not SSR'd with products — a synchronous fetch will see only the search-suggestion sidebar (other related searches), not the actual results.ac.cnstrc.com/recommendations/v1/...) with key key_GZTqlLr41FS2p7AY (public, visible in DevTools) — calling it directly will return some result shape but reproducing exact storefront behavior (price, availability, fulfillment) requires the GraphQL gateway which is Akamai-locked./checkout/bag without explicit human approval — Kmart's terms forbid automated purchasing and the read-only-rule of this skill matches that constraint.api.kmart.com.au/gateway/graphql with curl (Akamai + CORS).?addToCart=SKU URL param trick — none exists; the cart state lives entirely in the authenticated GraphQL session.The skill returns one of the following JSON shapes. Always include the realized_cart_state so the caller knows whether the read-only attempt completed.
{
"success": true,
"query": "drink bottle",
"product": {
"title": "940ml Bow Dual Function Drink Bottle",
"sku": "43693399",
"price_aud": 14,
"url": "https://www.kmart.com.au/product/940ml-bow-dual-function-drink-bottle-43693399/",
"in_stock_for_delivery": true,
"postcode": "2000",
"fulfillment_options": ["Delivery", "Click & Collect", "In-Store"]
},
"add_to_bag_attempted": true,
"realized_cart_state": "empty",
"notes": "Add to bag click registered but no addToCart GraphQL mutation observed; bag remained empty (Akamai bot gate). Read-only flow terminated at /checkout/bag."
}
{
"success": true,
"query": "drink bottle",
"product": {
"title": "1L Grey Drink Bottle with Handle",
"sku": "43677986",
"price_aud": 3,
"url": "https://www.kmart.com.au/product/1l-grey-drink-bottle-with-handle-43677986/",
"in_stock_for_delivery": false,
"postcode": "2000",
"fulfillment_options": ["Delivery", "Click & Collect", "In-Store"]
},
"add_to_bag_attempted": false,
"realized_cart_state": "n/a — button disabled",
"notes": "Product page loaded but Add to bag button is in disabled state for postcode 2000. Try a different product or change postcode."
}
{
"success": false,
"query": "drink bottle",
"reason": "akamai_access_denied",
"blocked_at_url": "https://www.kmart.com.au/checkout/bag",
"akamai_reference": "#18.4d18d017.1779202972.11a8f55e",
"notes": "Session was flagged by Akamai bot detection. Retry with a fresh --verified --proxies session and warm up on / before any product navigation."
}
{
"success": false,
"query": "obscure-nonexistent-thing-12345",
"reason": "no_search_results",
"search_url": "https://www.kmart.com.au/search/?searchTerm=obscure-nonexistent-thing-12345",
"notes": "Search returned only related-query suggestions, no product cards. Try a broader query."
}
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionadd-to-cartExecute the skills CLI command in your project's root directory to begin installation:
browse install kmart.com.au/kmart-irwsr8Fetches add-to-cart from kmart.com.au/kmart-irwsr8 and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
.cursor/skills/add-to-cart
Restart Cursor to activate add-to-cart. Access via /add-to-cartin your agent's command palette.
Learn more:View source on GitHubSkills CLI docsAbout CursorWhat are agent skills?
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid when
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
search-product
aliexpress.com/search-product-p0h8a7 · ecommerce · 2 shared tags
find-california-business
bizfileonline.sos.ca.gov/find-california-business-izbvm2 · government · tag: read-only
search-hotels
booking.com/search-hotels-asq6cc · travel · tag: read-only
get-player-stats
pro-football-reference.com/get-player-stats-5pitm4 · sports · tag: read-only
get-smb-funding
nav.com/get-smb-funding-2s1rpm · smb-finance · tag: read-only
search-flights
google.com/search-flights-ts4g1f · travel · tag: read-only
I recommend add-to-cart for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
Keeps context tight: add-to-cart is the kind of skill you can hand to a new teammate without a long onboarding doc.
Useful defaults in add-to-cart — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
Registry listing for add-to-cart matched our evaluation — installs cleanly and behaves as described in the markdown.
Useful defaults in add-to-cart — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
Registry listing for add-to-cart matched our evaluation — installs cleanly and behaves as described in the markdown.
Useful defaults in add-to-cart — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
Solid pick for teams standardizing on skills: add-to-cart is focused, and the summary matches what you get after install.
add-to-cart reduced setup friction for our internal harness; good balance of opinion and flexibility.
Registry listing for add-to-cart matched our evaluation — installs cleanly and behaves as described in the markdown.
showing 1-10 of 34