Track household food inventory via conversation. Auto-calculates expiry from built-in knowledge base, logs all changes, supports cron-based expiry alerts.
Store inventory in family/fridge.json (workspace-relative). Create on first use:
json
{ "items": [], "log": [] }
json
{
"id": "a1b2c3d4",
"name": "牛奶",
"category": "dairy",
"qty": "1 carton",
"added": "2026-04-27",
"expiry": "2026-05-04",
"storage": "fridge",
"notes": ""
}
id — 8-char hex, generated via randomcategory — meat|seafood|dairy|vegetable|fruit|grain|condiment|leftover|drink|snack|otherstorage — fridge|freezer|pantry|counterexpiry — auto-calculated from knowledge base when omittedAppend to log[] on every mutation:
json
{ "action": "add|consume|discard", "id": "a1b2c3d4", "name": "牛奶", "qty": "1 carton", "reason": "", "ts": "2026-04-27T18:30:00" }
User says they bought/stored food → parse name, quantity, storage location.
references/food-knowledge-zh.md or references/food-knowledge-en.md matching user language)expiry = today + shelf life for the matching storage type (fridge → refrigerated life, freezer → frozen life)notesitems[], append log[]Batch: "买了牛奶、鸡蛋和西兰花" → add all in one operation, single confirmation message.
Three types — detect intent from phrasing:
IntentTrigger examplesActionConsume"用完了", "喝了", "used 3 eggs"Reduce qty or remove if zeroDiscard"扔了", "threw away", "过期了扔掉"Remove from itemsBatch cook"做了番茄炒蛋"Reduce/remove all ingredients mentioned
log[] for each item affected.User saysResponse"冰箱里有什么" / "what's in my fridge"All items grouped by storage, with expiry status"什么快过期" / "what's expiring"Items within 3 days of expiry, sorted by urgency"有鸡蛋吗" / "do I have eggs"Search by name → qty + expiry"冷冻室里有什么" / "what's in the freezer"Filter by storage location
Status indicators: 🔴 expired · 🟡 ≤3 days · 🟢 safe
For scheduled invocation. Silent when nothing is urgent.
Read family/fridge.json
Find items where expiry ≤ today + 3 days
If found → send alert: text
🧊 Fridge Alert
🔴 Expired:
🟡 Expiring soon:
💡 Tip: consider freezing the chicken if not cooking today
4. If nothing expiring → reply `NO_REPLY` (stay silent)
#### Cron Setup
Users create a cron via OpenClaw with this task prompt:
text
Read the fridge-manager skill, then check family/fridge.json for items expiring within 3 days. Send a reminder if any found. Otherwise reply NO_REPLY.
Recommended schedule: daily at 9:00 AM user's local time.
### Storage Tips
When asked "how to store X" or during add workflow, consult the knowledge base:
- Optimal storage method
- Special handling tips
- Common mistakes to avoid
## Knowledge Base
Built-in shelf life + storage tips for 60+ common foods, organized by category:
- **English**: Read `references/food-knowledge-en.md`
- **中文**: Read `references/food-knowledge-zh.md`
Use fuzzy matching: "chicken breast" → poultry row, "西红柿" → 番茄 row.
## Rules
1. Match user's language — Chinese input → Chinese response
2. Conservative expiry estimates when uncertain
3. Confirm every add/remove with a brief summary
4. Keep JSON clean — remove items at zero quantity
5. Log every mutation