doordash-lunch — Claude Code command: team DoorDash orders
A Claude slash command that turns a team lunch into a DoorDash group cart, prints a per-person split table and tracks whose turn it is to pay.
npx claude-code-templates@latest --command doordash/doordash-lunchWhat doordash-lunch does
Four subcommands cover the loop: order, checkout, whose-turn and roster. The first one reads the team roster in team-food.json, pulls restaurant options through dd-cli search while respecting each member's constraints and allergens, then builds a cart that remembers who asked for what. Paste a thread of requests and the command parses it instead of quizzing people one by one.
checkout repeats the cart with subtotals per person and produces the payment link. When the doordash-spend-guard skill is installed the link comes from its dd-guard.sh script; otherwise the command calls dd-cli order checkout-url. A markdown split table lands next, ready to drop into Slack. Once someone confirms the payment, a {date, order_uuid, payer, split} line is appended to .dd/rounds.jsonl.
The command is a quick entrypoint, not the whole engine: the flows live in the doordash-group-orders skill, so install that alongside. Without dd-cli nothing runs. Split figures stay pre-fee until you report the final total, and then the difference is prorated.
What it helps with
- build one DoorDash cart for a whole team
- keep everyone's allergens and food limits in
team-food.json - produce a Slack-ready table of who owes what
- work out which colleague paid last time
- turn a pasted chat thread into cart items
Example prompts for the agent
- Put together lunch from
team-food.json, check the allergens first - Emit the checkout link and the split table
- Whose turn is it to pay according to the order history?
How to install doordash-lunch
1claude-code-templates
npx claude-code-templates@latest --command doordash/doordash-lunch2Manually: put the files in place
.claude/commands/doordash-lunch.mdCall it with /doordash-lunch. For all projects use ~/.claude/commands/
Manually: put the files in place
~/.codex/prompts/doordash-lunch.mdCall it with /prompts:doordash-lunch. Codex marks this format deprecated in favour of skills
Manually: put the files in place
.github/prompts/doordash-lunch.prompt.mdManually: put the files in place
.gemini/commands/doordash-lunch.tomlGemini stores commands as TOML: the prompt text goes into the prompt field
Questions about doordash-lunch
How do I install doordash-lunch in Claude Code?
Run npx claude-code-templates@latest --command doordash/doordash-lunch and confirm the file sits at .claude/commands/doordash-lunch.md.
What does doordash-lunch do?
It organizes a group food order with dd-cli, prepares a checkout with a split per participant, and keeps a payment history so the next payer is obvious.
What do I need before using it?
The dd-cli tool and a roster file named team-food.json. The detailed flows belong to the doordash-group-orders skill, which you install together with this command.
Source text
doordash-lunch.md · MIT
---
allowed-tools: Bash(dd-cli:*), Bash(cat:*), Bash(jq:*), Bash(mkdir:*), Read, Write, Edit
argument-hint: [order | checkout | whose-turn | roster]
description: Team lunch orchestration via DoorDash CLI - build a group round, emit checkout with split table, track payer rotation
---
# Team Lunch
Group order operation: **$ARGUMENTS**
Works with the `doordash-group-orders` skill (install it alongside — it defines
the full flows; this command is the quick entrypoint). State:
`team-food.json` (roster), `.dd/round-<date>.json` (active round),
`.dd/rounds.jsonl` (history).
## Current State
- Roster: !`cat team-food.json 2>/dev/null || cat ~/.claude/dd-cli/team-food.json 2>/dev/null || echo "(no roster yet)"`
- Active round: !`ls .dd/round-*.json 2>/dev/null | tail -1 || echo "(none)"`
- Rounds history: !`wc -l < .dd/rounds.jsonl 2>/dev/null || echo "0"` rounds recorded
## Task
Parse `$ARGUMENTS`:
### `order` (default)
Run Flow 1 of the doordash-group-orders skill: roster check → constraint-aware
restaurant shortlist via `dd-cli search` → per-member choices (favorites
first, one question max per member) → build cart recording person →
cart-item-id in the round ledger → show the cart grouped by person.
If the user pastes a thread of requests, parse it (Flow 2) instead of
interviewing members.
### `checkout`
1. Show the grouped cart one final time (per-person subtotals).
2. Emit the checkout URL — via `bash .claude/skills/doordash-spend-guard/scripts/dd-guard.sh checkout
<cart-uuid>` when doordash-spend-guard is installed, otherwise
`dd-cli order checkout-url --cart-uuid <cart-uuid>`.
3. Print a share-ready split table (markdown, ready to paste into Slack):
person, items, subtotal share.
4. After the human confirms payment: pull order_uuid from `dd-cli order
history`, ask who paid, append `{date, order_uuid, payer, split}` to
`.dd/rounds.jsonl`, and offer the fee-proration fallback ("tell me the
final total and I'll prorate the difference").
### `whose-turn`
Read `.dd/rounds.jsonl`, compute per-member (consumed − paid) balances,
name the next payer, show the balance table so the answer explains itself.
### `roster`
Show/edit `team-food.json` interactively: add/remove members, update hard
constraints, allergens (ask severity explicitly), favorites, dislikes.
Confirm the final JSON before writing.
## Rules
- Never guess an order for a member with allergens.
- cart-item-ids only from real `cart show` output — attribution depends on it.
- Splits are pre-fee until the user reports the final total; say so in the
split table footer.
© davila7 · MIT · davila7/claude-code-templates