Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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
.claude/skills/davila7-doordash-order-playbooks/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 281% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 593% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 155% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 111% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 41% | 0% |
Saved orders with names and contexts, recalled safely. A playbook maps a human name ("post-gym", "late-night deploy", "Friday ramen") to a concrete DoorDash order that can be rebuilt with dd-cli order reorder — plus enough stored detail to detect drift (menu changes, price hikes, substitutions) before the user is ever handed a checkout link.
> Unofficial community skill built on DoorDash's doordash-oss/doordash-cli. > dd-cli must be installed, on PATH, and logged in (dd-cli login).
dd-cli order history already lists past orders — but Claude has no cross-session memory of which order is "the post-gym one", and plain reordering silently accepts whatever the restaurant's menu says today: substituted items, missing items, higher prices. This skill stores the mapping AND makes a cart-diff against the stored baseline mandatory before emitting any checkout URL. Silent drift becomes a caught event.
Single JSON file: ~/.claude/dd-cli/playbooks.json
json{ "playbooks": { "post-gym": { "order_uuid": "<uuid from dd-cli order history>", "restaurant": "Sweetgreen", "items_summary": [ { "name": "Harvest Bowl", "qty": 1, "price": 13.95 }, { "name": "Lemonade", "qty": 1, "price": 3.5 } ], "baseline_total": 17.45, "tolerance_pct": 10, "contexts": ["post-gym", "gym", "workout"], "last_used": "2026-07-19", "times_used": 4 } }, "preflight": { "verified": false, "notes": "" } }
Create the directory and file on first use (mkdir -p ~/.claude/dd-cli). Prices are pre-fee subtotals — say so when presenting totals.
This skill assumes dd-cli order reorder --order-uuid Y returns a cart-uuid that cart show and order checkout-url accept. That handoff is load-bearing and must be verified empirically once per install:
dd-cli order reorder --help and dd-cli order checkout-url --helpto confirm flags.
reorder, confirm the outputcontains a cart-uuid and that dd-cli cart show --cart-uuid <it> works.
preflight.verified (+ any format notes inpreflight.notes) so future sessions skip this step.
If the handoff does NOT work as assumed, fall back to rebuilding the cart manually (dd-cli search → cart add-items) and record that in preflight.notes.
User says something like "order my post-gym bowl" / "the usual after the gym":
contexts.Ambiguous → ask. No match → offer Flow 2 (capture) instead.
dd-cli order reorder --order-uuid <stored uuid>. Capturethe cart-uuid from the output.
dd-cli cart show --cart-uuid <cart-uuid> andcompare against the stored items_summary + baseline_total:
| | Stored | Current | |---|---|---| | Harvest Bowl | $13.95 | $14.95 ⬆ | | Lemonade | $3.50 | ❌ missing | | Subtotal | $17.45 | $14.95 |
Present the diff table to the user. Never skip this step, even when everything matches — say "matches your baseline" explicitly.
baseline_total by more than tolerance_pct, STOP and ask the user how to proceed (accept, edit cart via cart remove-item/cart add-items, or abort). Do NOT hand over a checkout link silently.
tripped): dd-cli order checkout-url --cart-uuid <cart-uuid>. Hand the URL to the user — payment always happens on the DoorDash page, by the human.
last_used / times_used; if the user accepted newprices, offer to refresh items_summary and baseline_total.
After ANY completed order (via playbook or bespoke), offer once — don't nag: "Want to save this as a playbook?" If yes:
dd-cli order history — take the most recent order's uuid.items_summary and baseline_total from the cartthat was just built (or from the history entry if it shows detail).
tolerance_pct: 10.When order reorder fails or the diff shows the restaurant no longer offers the stored items:
dd-cli search --query "<restaurant name>" — confirm the restaurant stillexists on DoorDash. Gone → offer to retire the playbook or find a replacement.
cart add-items, navigating with --help asneeded), confirm with the user, and after a successful checkout-url handoff refresh the playbook's order_uuid from dd-cli order history.
contract of the skill.
appear only on the DoorDash payment page. Say so.
dd-cli reports auth/waitlist errors, stop and tell the user to rundd-cli login — don't retry in a loop.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-07 | fail→fail | 4,778 | 8,304 | +74% | 1 | 1 | 0% | 736 | 2,229 | +203% | 0 | 0 | — |
case-01 | fail→fail | 3,498 | 4,575 | +31% | 1 | 1 | 0% | 643 | 1,821 | +183% | 0 | 0 | — |
case-13 | fail→fail | 4,170 | 5,090 | +22% | 1 | 1 | 0% | 695 | 1,760 | +153% | 0 | 0 | — |
case-02 | fail→fail | 5,084 | 3,910 | -23% | 1 | 1 | 0% | 946 | 1,899 | +101% | 0 | 0 | — |
case-03 | fail→fail | 4,784 | 5,341 | +12% | 1 | 1 | 0% | 848 | 1,860 | +119% | 0 | 0 | — |
case-04 | pass→pass | 7,631 | 6,119 | -20% | 1 | 1 | 0% | 1,456 | 2,642 | +81% | 0 | 0 | — |
case-05 | pass→pass | 2,909 | 4,493 | +54% | 1 | 1 | 0% | 515 | 2,306 | +348% | 0 | 0 | — |
case-06 | pass→pass | 8,576 | 7,876 | -8% | 1 | 1 | 0% | 1,501 | 3,028 | +102% | 0 | 0 | — |
case-08 | fail→fail | 3,358 | 8,970 | +167% | 1 | 1 | 0% | 502 | 3,210 | +539% | 0 | 0 | — |
case-09 | fail→pass | 4,688 | 7,267 | +55% | 1 | 1 | 0% | 773 | 2,945 | +281% | 0 | 0 | — |
case-10 | fail→pass | 3,342 | 11,001 | +229% | 1 | 1 | 0% | 515 | 3,571 | +593% | 0 | 0 | — |
case-11 | fail→pass | 4,711 | 4,075 | -14% | 1 | 1 | 0% | 884 | 2,250 | +155% | 0 | 0 | — |
case-12 | pass→pass | 3,732 | 2,026 | -46% | 1 | 1 | 0% | 594 | 1,905 | +221% | 0 | 0 | — |
case-14 | pass→pass | 1,650 | 5,029 | +205% | 1 | 1 | 0% | 226 | 1,917 | +748% | 0 | 0 | — |
case-15 | fail→fail | 3,500 | 4,791 | +37% | 1 | 1 | 0% | 573 | 1,731 | +202% | 0 | 0 | — |
case-16 | fail→pass | 16,011 | 8,300 | -48% | 1 | 1 | 0% | 1,611 | 3,404 | +111% | 0 | 0 | — |
case-17 | fail→fail | 3,317 | 6,641 | +100% | 1 | 1 | 0% | 500 | 2,600 | +420% | 0 | 0 | — |
case-18 | fail→pass | 8,824 | 2,859 | -68% | 1 | 1 | 0% | 1,507 | 2,123 | +41% | 0 | 0 | — |
case-19 | fail→pass | 7,955 | 4,803 | -40% | 1 | 1 | 0% | 1,308 | 2,402 | +84% | 0 | 0 | — |
case-20 | fail→fail | 3,712 | 6,113 | +65% | 1 | 1 | 0% | 498 | 1,896 | +281% | 0 | 0 | — |
case-21 | fail→pass | 3,180 | 3,340 | +5% | 1 | 1 | 0% | 525 | 2,054 | +291% | 0 | 0 | — |
case-22 | fail→pass | 13,105 | 5,209 | -60% | 1 | 1 | 0% | 2,044 | 2,558 | +25% | 0 | 0 | — |
case-23 | pass→pass | 6,182 | 2,744 | -56% | 1 | 1 | 0% | 1,079 | 1,964 | +82% | 0 | 0 | — |
case-24 | fail→pass | 2,112 | 3,640 | +72% | 1 | 1 | 0% | 402 | 2,225 | +453% | 0 | 0 | — |
case-25 | fail→pass | 8,421 | 2,129 | -75% | 1 | 1 | 0% | 1,483 | 1,917 | +29% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted, and 19 counted toward the lift figure. The other 6 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +40 percentage points is the difference between those two pass rates over the 19 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.