expiry-tracker
Track food expiry dates from grocery receipts. Get daily alerts before food goes bad, 'use this today' suggestions, and reduce food waste. Scan receipts or add items manually. Skill: expiry-tracker Owner: voronindenis5 Summary: Track food expiry dates from grocery receipts. Get daily alerts before food goes bad, 'use this today' suggestions, and reduce food waste. Scan receipts or add items manually. Tags: latest:0.1.1 Version history: v0.1.1 | 2026-08-14T06:19:00.138Z | auto - Removed the skill card file (skill-card.md). - No functional or user-facing changes were made. v0.1.0 | 2026-08-1
Rank
62
Safety
84
Downloads
1.9k
Updated
Oct 9, 2026
Version
0.1.1
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.9K downloads reported by the source. Last updated 10/9/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 9, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 9, 2026
- Adoption signal
- 1.9K downloadsadoption · observed Oct 9, 2026
- Latest release
- 0.1.1release · observed Aug 14, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17b6amkd3wzqgg640v03a9r1n83gxs1:expiry-tracker- Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-expiry-tracker/snapshot"
Documentation
CLAWHUB
30,031 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: expiry-tracker
description: "Track food expiry dates from grocery receipts. Get daily alerts before food goes bad, 'use this today' suggestions, and reduce food waste. Scan receipts or add items manually."
version: 1.0.0
author: Denis Voronin
license: MIT
metadata:
hermes:
tags: [food, expiry, grocery, waste-reduction, household, tracker]
related_skills: [leftover-chef, receipt-raccoon]
---
# Expiry Tracker
## Overview
Food waste is a massive problem — the average household throws away 30% of the food they buy. Most of it spoils simply because people forget what's in the fridge and when it expires.
Expiry Tracker solves this by maintaining a simple inventory of perishable items with their expiry dates, then proactively suggesting what to cook before things go bad.
## When to Use
- After grocery shopping — add items to track
- Daily check — "what expires soon?"
- Before cooking — "what should I use today?"
- When planning meals for the week
- Before traveling — check what needs to be consumed first
**Don't use for:** Non-perishables (pasta, rice, canned goods with 1+ year shelf life), frozen items (unless thawing).
## Commands
```bash
# Add an item
python scripts/expiry_tracker.py add "milk" --days 7
python scripts/expiry_tracker.py add "chicken breast" --expiry 2026-08-15
# List items expiring soon
python scripts/expiry_tracker.py list --days 3
# Get today's "use this first" suggestions
python scripts/expiry_tracker.py today
# Remove consumed/expired item
python scripts/expiry_tracker.py remove "milk"
# Show full inventory sorted by expiry
python scripts/expiry_tracker.py inventory
# Weekly summary / waste report
python scripts/expiry_tracker.py report
# Bulk add from receipt text
python scripts/expiry_tracker.py batch "milk, eggs, bread, chicken, yogurt"
```
## How It Works
1. Items are stored in `~/.expiry_tracker.json` — a simple JSON database
2. Each item has: name, category, purchase date, expiry date, quantity, optional note
3. Default shelf life is inferred from category (dairy=7d, meat=3d, bread=5d, etc.)
4. `today` command shows items expiring within 48h, sorted by urgency
5. `report` shows waste statistics: how much expired vs consumed
## Default Shelf Life by Category
| Category | Days | Examples |
|----------|------|----------|
| Dairy | 7 | Milk, yogurt, cheese |
| Meat | 3 | Chicken, beef, pork, fish |
| Produce-Leafy | 4 | Spinach, lettuce, herbs |
| Produce-Root | 14 | Carrots, potatoes, onions |
| Produce-Fruit | 7 | Berries, bananas, apples |
| Bakery | 5 | Bread, pastries, tortillas |
| Deli | 5 | Cold cuts, prepared salads |
| Eggs | 21 | Eggs |
| Condiments | 180 | Opened sauces, dressings |
| Tofu | 7 | Tofu, tempeh |
## Common Pitfalls
1. **Forgetting to remove consumed items.** Always run `remove` when you eat something, otherwise the waste report is inaccurate.
2. **Overly optimistic expiry dates.** "Best before" ≠ "goes bad on." Use smell/visual check before tossing. The tracker README.md
# Expiry Tracker 🥛⏰ > Track food expiry dates, get daily alerts, reduce food waste. ## The Problem The average household throws away **30% of the food they buy**. Most of it spoils because people forget what's in the fridge and when it expires. ## The Solution A simple command-line tool that: - 📦 Tracks perishable items with expiry dates - ⏰ Alerts you before food goes bad - 💡 Suggests what to cook with soon-to-expire items - 📊 Generates waste reports so you can spot patterns ## Quick Start ```bash # Add items after grocery shopping python scripts/expiry_tracker.py add "milk" --days 7 python scripts/expiry_tracker.py add "chicken breast" --days 3 python scripts/expiry_tracker.py add "spinach" # auto: 4 days (leafy greens) # Or batch add from a receipt python scripts/expiry_tracker.py batch "milk, eggs, bread, chicken, yogurt, spinach, berries" # Check what needs attention today python scripts/expiry_tracker.py today # Full inventory python scripts/expiry_tracker.py inventory # Mark items as consumed or wasted python scripts/expiry_tracker.py remove "milk" # consumed python scripts/expiry_tracker.py remove "spinach" --wasted # tossed # Weekly waste report python scripts/expiry_tracker.py report ``` ## Features - **Auto-categorization**: 10 food categories with keyword matching - **Smart defaults**: Knows that chicken lasts 3 days, carrots 14 days - **Recipe hints**: Suggests how to use soon-to-expire items - **Waste tracking**: Records what was consumed vs wasted for pattern analysis - **No dependencies**: Pure Python stdlib, runs anywhere ## Installation ```bash git clone https://github.com/voronindenis5/expiry-tracker.git cd expiry-tracker python scripts/expiry_tracker.py today ``` Data is stored in `~/.expiry_tracker.json`. ## License MIT © Denis Voronin
_meta.json
{
"ownerId": "kn75wwn4x6djaf28jbykeamazd81gtdp",
"slug": "expiry-tracker",
"version": "0.1.1",
"publishedAt": 1786688340138
}references/recipe-hints.md
# Recipe Hints by Category When food is about to expire, the tracker suggests ways to use it. This document explains the logic. ## Urgency Levels | Emoji | Days Left | Action | |-------|-----------|--------| | 🔴 | Expired | Toss or compost — do NOT consume if spoiled | | 🟠 | 0 days | Cook TODAY or freeze | | 🟡 | 1-2 days | Plan a meal around it tomorrow | | 🟢 | 3-5 days | No rush, but keep in mind | | ⚪ | 6+ days | Plenty of time | ## Category → Recipe Suggestions ### Dairy (milk, yogurt, cheese) - **Smoothie**: Blend milk/yogurt with frozen fruit - **Creamy pasta**: Make a béchamel or carbonara - **Baking**: Yogurt in muffins/cakes, cheese in casseroles - **Freeze**: Cheese freezes well shredded, milk can be frozen (use for cooking) ### Meat (chicken, beef, fish) - **Cook immediately**: This is the #1 item to not let expire - **Freeze**: If you can't cook today, freeze it right now - **Meal prep**: Cook a large batch, portion, refrigerate/freeze - **Soup/stew**: Perfect for meat that's 1-2 days from expiry ### Produce-Leafy (spinach, lettuce, herbs) - **Big salad**: Use all the greens in one meal - **Stir-fry**: Wilted greens are perfect for stir-fry - **Smoothie**: Spinach/kale blend invisibly into fruit smoothies - **Pesto**: Basil, cilantro → blitz with oil, nuts, garlic - **Freeze**: Wash, dry, freeze in bags → use directly in cooked dishes ### Produce-Fruit (berries, bananas) - **Smoothie**: The universal solution for overripe fruit - **Baking**: Bananas → banana bread, berries → muffins/crumble - **Freeze**: All fruit freezes well — perfect for future smoothies - **Jam**: Quick stovetop jam with berries ### Bakery (bread, pastries) - **Croutons**: Cube, toss with oil, bake — lasts weeks - **Bread pudding**: Use stale bread + eggs + milk - **French toast**: Breakfast solution for old bread - **Freeze**: Slice bread first, then freeze — toast from frozen ### Eggs - **Hard-boil**: Extends life by 7 more days - **Frittata**: Use up eggs + any expiring veg/meat/cheese - **Baking**: Cakes, muffins, quiches - **Freeze**: Crack, whisk, freeze in ice cube trays (1 cube ≈ 1 egg) ### Tofu - **Stir-fry**: Quick and forgiving - **Scramble**: Tofu scramble as egg substitute - **Freeze**: Freezing changes texture (more chewy) — great for stir-fry ## Waste Reduction Strategy 1. **Shop with a list** — don't overbuy 2. **First In, First Out (FIFO)** — rotate fridge so oldest is in front 3. **Weekly "clean-out" meal** — make soup/stir-fry with everything expiring 4. **Track your waste patterns** — if you always waste spinach, buy less or buy frozen 5. **Compost** what truly can't be saved
references/shelf-life.md
# Default Shelf Life & Category Detection ## How Categories Work The tracker automatically categorizes items based on keyword matching against the item name. Each category has a default shelf life in days. ## Category → Shelf Life Table | Category | Default Days | Keywords | |----------|-------------|----------| | Dairy | 7 | milk, yogurt, cheese, cream, butter, kefir, sour cream, cottage cheese | | Meat | 3 | chicken, beef, pork, fish, turkey, bacon, sausage, ham, steak, ground, lamb, duck, shrimp, salmon | | Produce-Leafy | 4 | spinach, lettuce, salad, kale, arugula, herbs, cilantro, parsley, basil, spring onion | | Produce-Root | 14 | carrot, potato, onion, garlic, ginger, beet, turnip, radish, sweet potato, leek | | Produce-Fruit | 7 | berry, banana, apple, orange, lemon, lime, grape, mango, pineapple, peach, plum, pear, avocado, tomato, strawberry, blueberry | | Bakery | 5 | bread, bagel, tortilla, bun, roll, pastry, cake, muffin, croissant, pancake, naan, pita | | Deli | 5 | cold cut, salami, prosciutto, ham slice, prepared salad, coleslaw, hummus, tzatziki | | Eggs | 21 | egg | | Condiments | 180 | sauce, dressing, ketchup, mustard, mayo, relish, chutney, jam, jelly | | Tofu | 7 | tofu, tempeh, seitan | | Other | 7 | (fallback for unrecognized items) | ## Real-World Shelf Life Notes These are **conservative estimates** for fridge storage at 4°C: ### Dairy - Milk: 7 days opened, 10+ days unopened - Yogurt: 7-14 days (smell test is reliable) - Hard cheese: 3-4 weeks (mold on surface is OK for hard cheeses, cut 1cm around) - Soft cheese: 7-10 days - Butter: 2-3 weeks in fridge, months in freezer ### Meat (refrigerated, not frozen) - Chicken: 1-2 days raw, 3-4 days cooked - Beef/Pork: 3-5 days raw - Fish: 1-2 days raw - Bacon: 7 days opened ### Produce - Berries: 3-5 days (mold spreads fast — check daily) - Bananas: 3-5 days on counter, freeze when ripe - Leafy greens: 3-5 days (spinach goes fast, kale lasts longer) - Root veg: 2-4 weeks (potatoes need dark+cool, not fridge) - Tomatoes: 3-5 days on counter (fridge kills flavor but extends life) ### Tips for Extending Life - **Freeze** meat on day of purchase if not cooking within 2 days - **Store herbs** like flowers in water (basil, cilantro) - **Wrap greens** in paper towel to absorb moisture - **Keep bananas** away from other fruit (ethylene gas) - **Don't wash berries** until ready to eat ## Adding Custom Categories To add a custom category, simply use `--days` when adding: ```bash python expiry_tracker.py add "kimchi" --days 30 python expiry_tracker.py add "sourdough starter" --days 365 ``` The tracker will still try to categorize for reporting, but the expiry date is what matters for alerts.
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/voronindenis5/skills/expiry-tracker",
"sourceUrl": "https://clawhub.ai/voronindenis5/skills/expiry-tracker",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T23:01:04.260Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-expiry-tracker/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-expiry-tracker/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T23:01:04.260Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.9K downloads",
"href": "https://clawhub.ai/voronindenis5/expiry-tracker",
"sourceUrl": "https://clawhub.ai/voronindenis5/expiry-tracker",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T23:01:04.260Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "0.1.1",
"href": "https://clawhub.ai/voronindenis5/expiry-tracker",
"sourceUrl": "https://clawhub.ai/voronindenis5/expiry-tracker",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-08-14T06:19:00.138Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-expiry-tracker/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-voronindenis5-expiry-tracker/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 0.1.1",
"description": "- Removed the skill card file (skill-card.md). - No functional or user-facing changes were made.",
"href": "https://clawhub.ai/voronindenis5/expiry-tracker",
"sourceUrl": "https://clawhub.ai/voronindenis5/expiry-tracker",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-08-14T06:19:00.138Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
