Skip to content
Skillv1.0.0

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

by davila7(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from davila7/claude-code-templates (cli-tool/components/skills/doordash/doordash-group-orders/SKILL.md). Install upstream with npx skills add davila7/claude-code-templates --skill doordash-group-orders. Copyright stays with the author.

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 team shares a repo): the roster.
{
  "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":

  1. Roster check: load team-food.json; missing members → quick interview (hard constraints, allergens + severity, a favorite, dislikes).
  2. Restaurant: intersect hard constraints (a vegetarian on the roster = only places with real vegetarian options). dd-cli search --query "..." → shortlist of 2-3 → let the human pick.
  3. Per-member choice: use their favorites when the restaurant matches; otherwise ask ONE question per member (or take answers from a pasted thread — Flow 2). Never guess for someone with allergens.
  4. Build the cart: dd-cli cart add-items ... per member's items (via the dd-guard wrapper when doordash-spend-guard is installed). After each add, 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.
  5. Review: show the cart grouped by person with per-person subtotals.
  6. Checkout: emit the checkout URL (through dd-guard if installed). The group gate hook independently re-checks allergens (see below).
  7. Close the round: after the human confirms they ordered, pull the order_uuid from 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 now, and offer the post-payment fallback — "tell me the final total and I'll prorate the difference by each person's share."
  • split = per-person items + prorated share of (final_total − subtotal) when provided.

/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 anaphylaxis allergen gets the same vetting the doordash-allergy-shield skill applies — check their items against hidden-source synonyms, and never guess their order.
  • cart-item-ids come only from real cart show output.
  • The round ledger is the source of truth for attribution — keep it updated on every cart mutation, or person-level edits break.
  • Add .dd/ to .gitignore unless the team explicitly wants round history committed (it reveals eating habits).

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/davila7-claude-code-templates-doordash-group-orders/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

davila7-claude-code-templates-doordash-group-orders.ocm.jsonjson
{
  "ocm": "1",
  "id": "davila7-claude-code-templates-doordash-group-orders",
  "kind": "skill",
  "name": "doordash-group-orders",
  "description": "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.",
  "publisher": "davila7",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "general"
    ],
    "tags": [
      "skill-md",
      "doordash",
      "team-lunch",
      "group-orders",
      "cost-split",
      "cli",
      "coordination",
      "skills-sh"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "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."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "skills.sh",
      "repository": "https://github.com/davila7/claude-code-templates",
      "path": "cli-tool/components/skills/doordash/doordash-group-orders/SKILL.md",
      "ref": "HEAD",
      "url": "https://github.com/davila7/claude-code-templates/blob/HEAD/cli-tool/components/skills/doordash/doordash-group-orders/SKILL.md",
      "key": "davila7/claude-code-templates/cli-tool/components/skills/doordash/doordash-group-orders/SKILL.md"
    },
    "allowed_tools": [
      "Bash(dd-cli:*),",
      "Bash(command",
      "-v:*),",
      "Bash(mkdir:*),",
      "Bash(cat:*),",
      "Bash(jq:*),",
      "Read,",
      "Write,",
      "Edit"
    ]
  },
  "instructions": "# DoorDash Group Orders\n\nCoordinating N people's food is exactly the cross-session state Claude\ndrops: who's vegetarian, who hates cilantro, which cart line is Bob's, whose\nturn it is to pay. This skill keeps a roster, attributes every cart line to\nits eater, splits costs with fees prorated, and remembers payer history.\n\n> Unofficial community skill built on DoorDash's `doordash-oss/doordash-cli`.\n> Note: dd-cli orders under ONE account — the account owner pays DoorDash;\n> the split is for reimbursement (Venmo/transfer), not split payment.\n\n## State\n\n- `team-food.json` (project dir or `~/.clau",
  "cost": {
    "context_tokens": 1124
  }
}

Fetch it by URL: GET /api/v1/registry/davila7-claude-code-templates-doordash-group-orders/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.