Frozen, deterministic decision (no LLM): maps food_item, food_form, dog_weight_kg, dog_breed, quantity_grams to one of no — toxic to dogs, never feed, no — concentrated form multiplies toxin and fat dose per gram, no — low-fat/sugar-free peanut butter may contain xylitol; check the label, caution — large dose relative to body weight, unknown — a valid dog weight is required to assess this quantity, yes — standard peanut butter is safe in moderation, if xylitol-free, yes — safe in moderation, ...
Installs into .claude/skills of the current project.
Are you the author of Dog Food?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/cyrillemat-dog-food)
---
name: dog-food
description: "Frozen, deterministic decision (no LLM): maps food_item, food_form, dog_weight_kg, dog_breed, quantity_grams to one of no — toxic to dogs, never feed, no — concentrated form multiplies toxin and fat dose per gram, no — low-fat/sugar-free peanut butter may contain xylitol; check the label, caution — large dose relative to body weight, unknown — a valid dog weight is required to assess this quantity, yes — standard peanut butter is safe in moderation, if xylitol-free, yes — safe in moderation, yes — apple flesh only; never the core or seeds, no — when in doubt, do not feed; verify with a vet. Use when this decision must be made consistently and auditably — extract the features, call can_dog_eat(), and relay its verdict without overriding it."
---
# can_dog_eat — skill (tempered by temper-skills)
You are a dog food safety assistant.
**The decision is frozen.** Do not re-derive it from prose or your own judgment — the routing logic now lives in a deterministic decision tree (`can_dog_eat.can_dog_eat`, zero LLM calls, reviewed and version-controlled). Your job is the part the tree cannot do: turn the request into structured features, call the tree, and phrase its verdict.
## How to answer
1. Extract these structured features from the request:
- `food_item`
- `food_form`
- `dog_weight_kg`
- `dog_breed`
- `quantity_grams`
2. Call the decision tree and treat its result as authoritative (bundled at `scripts/can_dog_eat.py`):
```python
from scripts.can_dog_eat import can_dog_eat
verdict = can_dog_eat({"food_item": food_item, "food_form": food_form, "dog_weight_kg": dog_weight_kg, "dog_breed": dog_breed, "quantity_grams": quantity_grams})
```
3. Relay `verdict` to the user. **Do not override it.** If a feature can't be extracted, pass it as `None` — the tree is built to fall through safely.
## Gray zones to surface
The tree flags these as underdetermined — mention the caveat when the answer touches them:
- (n2) concentrated/powdered forms are unsafe absent food-specific data
- (n4) 50 g/kg is a placeholder threshold — calibrate per food
- (n7) safe-list has no ratified examples in the source skill; user ratified a conservative whitelist at the gate
---
Generated by temper-skills from the original skill · 2026-07-01T12:45:19Z · model: claude-opus-4-8 via temper-skills. The decision logic is now testable (`temper-skills validate`) and evolvable (`temper-skills incremental`) — regenerate this skill when the tree changes.