cosmicstack-labs/zomato-order
>- Phase 1 (setup) captures login cookies after manual login. Phase 2 (auto-order) reuses cookies to create orders and share payment links. No OTP needed after initial setup.
npx skills add https://github.com/cosmicstack-labs/mercury-agent-skills --skill zomato-order
Ordering food through Zomato programmatically has a key constraint: Zomato has no public consumer ordering API. The only way to automate order creation is through browser automation (Playwright/Puppeteer).
The smartest approach is cookie-based session reuse:
This avoids OTP prompts on every order while keeping payment in the user's hands (they pay via the shared link).
node scripts/zomato-order.js --setup
/tmp/zomato-cookies.jsonnode scripts/zomato-order.js
| User says | Action |
|-----------|--------|
| "Order food from Zomato" | Run Phase 2 (auto-order). If no cookies, run Phase 1 first |
| "Let's order lunch/dinner" | Same as above |
| "Setup Zomato ordering" | Run Phase 1 (setup) |
| "I need to set up Zomato first" | Run Phase 1 (setup) |
| "Order something for the office" | Run auto-order flow |
| "Can we do Zomato automation?" | Explain the two-phase approach, offer to set up |
| Scenario | Reason |
|----------|--------|
| User wants to place order without any interaction | Payment requires user action (UPI/Card OTP) |
| Cookies expired (> 2 months old) | Run Phase 1 setup again |
| User on a different device | Works on the machine where the script runs |
Check if /tmp/zomato-cookies.json exists. If not, the user needs Phase 1 setup first.
node scripts/zomato-order.js --setup
Tell the user:
> "I'll open a browser window. Please log in to Zomato with your phone number. Once you're logged in and your default address (e.g., Gulab Bagh) is set, come back here and press Enter. I'll save your session for future orders."
node scripts/zomato-order.js
The browser will:
Tell the user:
> "The browser is open and you're logged in. Search for restaurants, add items to your cart. Once you reach the payment page, stop — don't enter payment details. Come back here and press Enter. I'll grab the payment link so you can pay securely."
Once the user confirms they're on the payment page, the script captures the URL. Share it clearly:
> 💰 Payment Link:
> https://www.zomato.com/...
>
> Open this link to complete payment. The order will be placed once you pay.
If Zomato logs out during auto-order (cookies expired), let the user know:
> "Your session has expired. We need to run setup again. Run node scripts/zomato-order.js --setup to re-login and capture fresh cookies."
/tmp/zomato-cookies.json — readable only by the current usernpm install playwright)npx playwright install chromium)/tmp/zomato-cookies.json
/tmp/zomato-payment-link.txt
/tmp/zomato-state.png
Take cosmicstack-labs/zomato-order from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npm, npx.
Without those the skill loads but fails at the first command.