Doordash Group Orders
Group food ordering through the DoorDash CLI (dd-cli) from a persistent team roster. One request ("lunch for the team") fans out into a single merged cart with every line attributed to its eater via a person-to-cart-item-id ledger, per-person cost split with fee proration, payer rotation history, and a checkout gate that re-derives allergen conflicts against the roster live. Use when ordering for multiple people — team lunch, incident-response food, "collect orders from the thread" — or for /whose-turn payer rotation questions. Handles paste-a-thread intake: paste a Slack/chat thread and it builds the order ledger from it.
$ npx claude-code-templates@latest --skill="doordash/doordash-group-orders" --yesRequires Claude Code. The command adds this skill to your project's .claudedirectory — nothing runs on ToolZip's servers.
What's inside this skill
Component source
DoorDash Group Orders
Coordinating N people's food is exactly the cross-session state Claude
drops: who's vegetarian, who hates cilantro, which cart line is Bob's, whose
turn it is to pay. This skill keeps a roster, attributes every cart line to
its eater, splits costs with fees prorated, and remembers payer history.
Unofficial community skill built on DoorDash's doordash-oss/doordash-cli.
Note: dd-cli orders under ONE account — the account owner pays DoorDash;
the split is for reimbursement (Venmo/transfer), not split payment.
State
team-food.json(project dir or~/.claude/dd-cli/— committable if the
{
"members": {
"dani": { "hard": ["vegetarian"], "allergens": [{ "name": "peanut", "severity": "anaphylaxis" }], "favorites": ["Veggie burrito bowl"], "dislikes": ["cilantro"] },
"bob": { "hard": [], "allergens": [], "favorites": ["Spicy chicken sandwich"], "dislikes": [] }
}
}
.dd/round-<date>.json— the active round's ledger:
{
"date": "2026-07-19",
"cart_uuid": "...",
"restaurant": "...",
"orders": {
"dani": [{ "item": "Veggie bowl", "cart_item_id": "41", "price": 12.5 }],
"bob": [{ "item": "Spicy chicken sandwich", "cart_item_id": "42", "price": 11.0 }]
}
}
.dd/rounds.jsonl— history, one line per completed round:
{"date": "...", "order_uuid": "...", "payer": "dani", "split": {"dani": 14.1, "bob": 12.4}}
Flow 1 — Build a round
"Order lunch for the team":
- Roster check: load
team-food.json; missing members → quick
- Restaurant: intersect hard constraints (a vegetarian on the roster =
dd-cli search --query "..."
→ shortlist of 2-3 → let the human pick.
- Per-member choice: use their
favoriteswhen the restaurant matches;
thread — Flow 2). Never guess for someone with allergens.
- Build the cart:
dd-cli cart add-items ...per member's items (via
run dd-cli cart show --cart-uuid <X> and record which cart-item-id
belongs to whom in .dd/round-<date>.json. This ledger is what makes
"quita lo de Bob" resolvable later.
- Review: show the cart grouped by person with per-person subtotals.
- Checkout: emit the checkout URL (through dd-guard if installed). The
- Close the round: after the human confirms they ordered, pull the
dd-cli order history, compute the split, append to
.dd/rounds.jsonl, and print a share-ready split table.
Flow 2 — Paste-a-thread intake
The user pastes a Slack/chat thread ("who wants what"). Parse it into the
round file: person → requested items. Unknown people → ask if they should
join the roster. Ambiguous requests ("something spicy") → one clarifying
question, or their favorite if the restaurant matches. Then continue Flow 1
from step 4.
Flow 3 — Edits by person
"Bob canceló" / "cambia lo de Sam": look up the person's cart_item_ids in
the round ledger, dd-cli cart remove-item --cart-uuid X --cart-item-id N
for each, update the ledger, re-show the grouped cart.
Cost split
- Item subtotals per person from the round ledger.
- Fees/tip/tax are only final on the payment page: split the known subtotal
I'll prorate the difference by each person's share."
split= per-person items + prorated share of (final_total − subtotal)
/whose-turn
Read .dd/rounds.jsonl: sum what each member has paid vs. consumed across
rounds; the next payer is the member with the largest (consumed − paid)
balance. Show the balances so the answer explains itself.
Rules
- Anyone with an
anaphylaxisallergen gets the same vetting the
synonyms, and never guess their order.
- cart-item-ids come only from real
cart showoutput. - The round ledger is the source of truth for attribution — keep it updated
- Add
.dd/to.gitignoreunless the team explicitly wants round history
Related Claude Code Skills
Doordash Allergy Shield
Persistent dietary safety layer for DoorDash CLI (dd-cli) ordering. Stores a personal/household dietary profile (allergens with severity tiers, diets, dislikes) that every cart is vetted against before checkout, with a deterministic tripwire — the vetting step saves the full cart contents to a vetted-cart dump, and a PreToolUse hook re-greps that dump against the anaphylaxis-severity allergen list before any checkout URL is allowed. Use when the user mentions allergies or dietary restrictions, when ordering food for someone with restrictions, or on every dd-cli cart flow while this skill is installed. A tripwire, not medical-grade — the human checkout page is the final check.
Doordash Order Ledger
Accountability layer for agent-driven DoorDash ordering. Works with the doordash-audit-log hook (which appends every dd-cli invocation to an append-only audit log) and the /doordash-report command to answer "what has my AI been ordering and what did it cost" from data instead of memory. Use when the user asks about their DoorDash spending, ordering patterns, what the agent did in past sessions, or wants jq recipes for querying the audit log. Covers log schema, query patterns, rotation, and privacy guidance.
Doordash Order Playbooks
Named, context-bound saved DoorDash orders ("post-gym", "late-night deploy") recalled through the DoorDash CLI (dd-cli) with a mandatory cart-diff before any checkout link is handed over. Use when the user names a saved order ("order my post-gym bowl", "the usual", "my Friday ramen"), wants to save the order they just placed as a playbook, or asks to list/remove saved orders. Persists name→order-uuid playbooks across sessions, catches silent menu/price drift on every recall, and self-heals stale playbooks when a restaurant's menu changes. Requires dd-cli (macOS Apple Silicon, waitlist-gated).
Doordash Spend Guard
Hard spending policy for agent-driven DoorDash ordering through the DoorDash CLI (dd-cli). Per-order ceiling, daily/weekly/monthly caps, cooldown between orders, and blocked hours — enforced deterministically by routing every cart-mutation and checkout through the dd-guard wrapper script, which prices the cart, checks the policy against a persistent spend ledger, and refuses out-of-policy checkouts with exit code 2. Use when the user wants budget limits on agent food ordering, asks "how much have I spent on DoorDash", wants to set spending caps, or whenever building carts / checking out with dd-cli while this skill is installed. Pairs with a PreToolUse hook that denies raw dd-cli checkout calls that bypass the wrapper.
Frontend Design
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.
Code Reviewer
Comprehensive code review skill for TypeScript, JavaScript, Python, Swift, Kotlin, Go. Includes automated code analysis, best practice checking, security scanning, and review checklist generation. Use when reviewing pull requests, providing code feedback, identifying issues, or ensuring code quality standards.
Catalog data and component content are sourced from the open-source davila7/claude-code-templates project (MIT license). ToolZip curates the listing and writes original descriptions; every component links back to its original source. Claude Code is a product of Anthropic. ToolZip is an independent catalog and is not affiliated with or endorsed by Anthropic.