Install any skill in seconds. Free to start, no credit card required.
Get Started Free →doordash
Order food, groceries, and convenience items from DoorDash using the built-in CLI integration
2 of 23 test cases passed with the skill.
Tokens, turns and time describe resource use, not a dollar price.
Lift withheld: 3 comparable cases; this report requires 8.
The instructions your model reads when the skill loads.
You can order food from DoorDash for the user using the DoorDash CLI script.
IMPORTANT: Always use host_bash (not bash) for all DoorDash commands. The DoorDash CLI needs host access for Chrome CDP and session cookies - none of which are available inside the sandbox.
The DoorDash CLI is invoked via bun {baseDir}/scripts/doordash-entry.ts. Do NOT search for the script, inspect it, or try to discover how the CLI works. Just run the commands as documented below.
A task progress card is shown automatically when you run your first DoorDash command. Its surface ID is doordash-progress. As each step completes, call ui_update with surface ID doordash-progress to update step statuses. Update data.templateData.steps - set completed steps to "status": "completed" with a "detail" string, the current step to "status": "in_progress", and future steps to "status": "pending". Adapt the steps to the actual flow (e.g. skip "Search restaurants" if the user named a specific store).
When the user asks you to order food (e.g. "Order pizza from Andiamo's"):
Check session - run bun {baseDir}/scripts/doordash-entry.ts status --json. If loggedIn is false or the session is expired, inform the user that their DoorDash session has expired and they need to log in again.
Search - run bun {baseDir}/scripts/doordash-entry.ts search "<query>" --json to find matching restaurants. Present the top results to the user with name, rating, and delivery info. If the user named a specific restaurant, pick the best match. If ambiguous, ask.
Browse menu - run bun {baseDir}/scripts/doordash-entry.ts menu <storeId> --json to get the menu. Show the user the categories and items with prices. If the user already said what they want (e.g. "pepperoni pizza"), find the matching item(s). For convenience/pharmacy stores (CVS, Duane Reade, Walgreens etc.), the response will have isRetail: true and empty items - use store-search instead (see step 3b).
3b. Search within a retail store - for convenience/pharmacy stores, run bun {baseDir}/scripts/doordash-entry.ts store-search <storeId> "<query>" --json to find specific products. This returns items with IDs, prices, and menuIds that can be added to cart directly.
Get item details (if needed) - run bun {baseDir}/scripts/doordash-entry.ts item <storeId> <itemId> --json to see options/customizations. The response includes:
options: each option group has minSelections/maxSelections indicating how many choices are requiredunitAmount (price impact in cents), defaultQuantity, and possibly nestedOptions (sub-choices like milk type within a size selection)specialInstructionsConfig: whether special instructions are accepted, max length, and placeholder textIf the item has required options (like size or toppings), construct the nestedOptions JSON from the option/choice IDs and pass it via --options. Ask the user for preferences or pick sensible defaults.
Add to cart - run bun {baseDir}/scripts/doordash-entry.ts cart add --store-id <id> --menu-id <id> --item-id <id> --item-name "<name>" --unit-price <cents> [--options '<json>'] [--special-instructions "<text>"] --json. For subsequent items at the same store, pass --cart-id <id> from the first add response. Use --special-instructions for requests like "extra hot", "no ice", etc. Use --options to pass customization choices (see Customization Options below).
Review cart - run bun {baseDir}/scripts/doordash-entry.ts cart view <cartId> --json and show the user what's in their cart with prices. Ask if they want to add anything else or proceed.
Checkout - run bun {baseDir}/scripts/doordash-entry.ts checkout <cartId> --json to get delivery options. Present them to the user.
Payment methods - run bun {baseDir}/scripts/doordash-entry.ts payment-methods --json to see saved cards. Show the user which card will be used (the default one).
Place order - after the user explicitly confirms, run bun {baseDir}/scripts/doordash-entry.ts order place --cart-id <id> --store-id <id> --total <cents> [--tip <cents>] [--dropoff-option <id>] --json. The command auto-selects the default payment method if --payment-uuid is not provided. The response contains orderUuid on success.
test cases passed with the skill
More skills from the same source and nearby in the registry, with their headline benchmark lift.