DoorDash Allergy Shield
SkillAI & modelsPersistent 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.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the DoorDash Allergy Shield skill
What this skill tells your AI
The instructions your AI receives, as published by davila7/claude-code-templates in cli-tool/components/skills/doordash/doordash-allergy-shield/SKILL.md and read by ahel’s review.
Claude has no cross-session memory: tell it "I'm allergic to peanuts" today and tomorrow it happily adds pad thai. This skill persists a dietary profile and makes cart vetting mandatory — with a deterministic hook double-checking the highest-severity allergens before any checkout URL is emitted.
Unofficial community skill built on DoorDash's
doordash-oss/doordash-cli.
Honest limits (state these to the user on first use)
- Matching is heuristic, against item names/descriptions from
cart showoutput plus a synonyms table. It cannot see full ingredient lists and knows nothing about cross-contamination in the kitchen. - It is a tripwire against agent mistakes, not a medical device. The DoorDash payment page — where the human reviews the real order — is the documented final check.
- False positives are accepted by design: blocking a safe ponzu bowl is cheap; the reverse is not. Hook matching is substring-based (short allergen names like "oat" can match inside "goat cheese") — annoying, never dangerous.
- The
references/allergen-synonyms.mdtable is intentionally broader than the compact synonym subset hardcoded in the checkout-gate hooks; adding a synonym to the reference doc alone does not change what the hooks enforce.
Components in this bundle
| Piece | Role |
|---|---|
| this skill | vetting protocol + profile management |
references/allergen-synonyms.md | hidden-allergen lookup table |
hook doordash/doordash-allergy-checkout-gate | deterministic re-check at checkout |
command /doordash-profile | manage the dietary profile interactively |
State
~/.claude/doordash-profile/dietary.json— the profile. Structure:
{
"people": {
"me": {
"allergens": [
{ "name": "peanut", "severity": "anaphylaxis" },
{ "name": "shellfish", "severity": "avoid" }
],
"diets": ["vegetarian"],
"dislikes": ["cilantro"]
},
"sam": { "allergens": [{ "name": "egg", "severity": "avoid" }], "diets": [], "dislikes": [] }
}
}
Severity tiers: anaphylaxis (hook-enforced, never overridable in-session),
avoid (requires explicit human acknowledgment to keep the item),
preference (mention it, don't gate on it).
~/.claude/doordash-profile/vetted/<cart-uuid>.json— one dump per vetted cart: the full rawcart showoutput plus your verdict and a timestamp. The checkout hook greps this artifact — it trusts the dump, not your claim.
Protocol
Session start
Read dietary.json. Missing → offer to create it interactively (or via
/doordash-profile). If the user is ordering for others ("lunch for me and Sam"),
make sure each eater exists in the profile or ask for their restrictions.
After EVERY cart mutation (add-items / remove-item / reorder)
- Run
dd-cli cart show --cart-uuid <X>and capture the full output. - Check every line against each relevant eater's profile — direct matches
AND hidden sources from
references/allergen-synonyms.md(satay→peanut, aioli→egg, ponzu→soy+fish, …). - On a conflict:
anaphylaxis→ remove the item (dd-cli cart remove-item) and tell the user why. Do not offer to keep it.avoid→ present the conflict; keep only with explicit acknowledgment.preference→ mention it in passing.
- Items whose name is too opaque to judge ("Chef's Special #3") → mark
UNVERIFIED and require the user's explicit sign-off for eaters with
anaphylaxisentries. - Write the vetted dump: full
cart showoutput + verdict + ISO timestamp to~/.claude/doordash-profile/vetted/<cart-uuid>.json. Without this file the checkout hook blocks — vetting is not optional.
At checkout
Just run dd-cli order checkout-url --cart-uuid <X> (or the dd-guard
wrapper when doordash-spend-guard is installed — the two gates compose). The hook
independently verifies: dump exists, is newer than the last cart mutation it
saw, and contains no anaphylaxis-tier keyword. If it blocks, do NOT try to
work around it — fix the cart, re-vet, and explain to the user what tripped.
Rules
- Never edit
dietary.jsonfrom the shell; profile changes go through/doordash-profile(interactive, confirmed). - Never write a vetted dump without actually running
cart showfresh — the dump IS the audit artifact. - When in doubt about an ingredient, doubt is a conflict.
Signals
- GitHub stars
- 32k
- Forks
- 4k
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
doordash-allergy-shield- Source
- github.com/davila7/claude-code-templates