Shopping List Generator
Generate organized shopping lists from recipes and meal plans. Automatically categorizes items by store section, checks against pantry inventory, and merges duplicates for efficient shopping.
Installation
cd skills/shopping-list-generator
npm install
npm run build
Usage
CLI
# Generate list from recipes
npm run cli -- generate ita-001 mex-002 --name "Weekly Shop"
# Create empty list
npm run cli -- create "Dinner Party"
# List all lists
npm run cli -- list
# View list details
npm run cli -- get 1
# Add item to list
npm run cli -- add 1 "Milk" --amount "1 gallon" --section dairy
# Toggle item checked status
npm run cli -- toggle 5
# Show by sections
npm run cli -- sections 1
# Export to text
npm run cli -- export 1
# Pantry management
npm run cli -- pantry-add "Olive Oil" --section pantry --expires 2025-12-31
npm run cli -- pantry-list
npm run cli -- pantry-search "oil"
Library
import { ShoppingListGeneratorSkill } from '@openclaw/shopping-list-generator';
const skill = new ShoppingListGeneratorSkill();
// Generate from recipes
const list = await skill.generateFromRecipeIds(
['ita-001', 'mex-002'],
'Weekly Shop',
{ pantryCheck: true, mergeDuplicates: true }
);
// Create empty list
const list = await skill.createList('My List', [
{ name: 'Milk', amount: '1 gallon', section: 'dairy', checked: false }
]);
// Add to pantry
await skill.addToPantry({
name: 'Olive Oil',
amount: '16 oz',
section: 'pantry',
expiresAt: '2025-12-31'
});
// Check if ingredient is in pantry
const hasIt = await skill.hasInPantry('olive oil');
await skill.close();
Features
- Recipe Integration: Generate lists directly from recipe IDs
- Smart Categorization: Automatically sorts items into store sections (produce, meat, dairy, etc.)
- Pantry Check: Skip items you already have in stock
- Duplicate Merging: Combines duplicate ingredients from multiple recipes
- Scaling: Adjust quantities for different serving sizes
- Pantry Management: Track inventory with expiration dates
- Store Section Organization: Items grouped by typical store layout
Store Sections
- Produce: Fruits, vegetables, herbs
- Meat: Beef, chicken, pork, etc.
- Seafood: Fish, shellfish
- Dairy: Milk, cheese, eggs, yogurt
- Bakery: Bread, buns, pastries
- Frozen: Frozen foods, ice cream
- Pantry: Dry goods, canned items, spices
- Beverages: Drinks, alcohol
- Household: Cleaning supplies, paper goods
- Other: Uncategorized items
Configuration
No external API keys required. Data is stored locally in SQLite at ~/.openclaw/skills/shopping-list-generator/shopping.db.
1---2name: shopping-list-generator3description: Generate organized shopping lists from meal plans with pantry checking4---56# Shopping List Generator78Generate organized shopping lists from recipes and meal plans. Automatically categorizes items by store section, checks against pantry inventory, and merges duplicates for efficient shopping.910## Installation1112```bash13cd skills/shopping-list-generator14npm install15npm run build16```1718## Usage1920### CLI2122```bash23# Generate list from recipes24npm run cli -- generate ita-001 mex-002 --name "Weekly Shop"2526# Create empty list27npm run cli -- create "Dinner Party"2829# List all lists30npm run cli -- list3132# View list details33npm run cli -- get 13435# Add item to list36npm run cli -- add 1 "Milk" --amount "1 gallon" --section dairy3738# Toggle item checked status39npm run cli -- toggle 54041# Show by sections42npm run cli -- sections 14344# Export to text45npm run cli -- export 14647# Pantry management48npm run cli -- pantry-add "Olive Oil" --section pantry --expires 2025-12-3149npm run cli -- pantry-list50npm run cli -- pantry-search "oil"51```5253### Library5455```typescript56import { ShoppingListGeneratorSkill } from '@openclaw/shopping-list-generator';5758const skill = new ShoppingListGeneratorSkill();5960// Generate from recipes61const list = await skill.generateFromRecipeIds(62 ['ita-001', 'mex-002'],63 'Weekly Shop',64 { pantryCheck: true, mergeDuplicates: true }65);6667// Create empty list68const list = await skill.createList('My List', [69 { name: 'Milk', amount: '1 gallon', section: 'dairy', checked: false }70]);7172// Add to pantry73await skill.addToPantry({74 name: 'Olive Oil',75 amount: '16 oz',76 section: 'pantry',77 expiresAt: '2025-12-31'78});7980// Check if ingredient is in pantry81const hasIt = await skill.hasInPantry('olive oil');8283await skill.close();84```8586## Features8788- **Recipe Integration**: Generate lists directly from recipe IDs89- **Smart Categorization**: Automatically sorts items into store sections (produce, meat, dairy, etc.)90- **Pantry Check**: Skip items you already have in stock91- **Duplicate Merging**: Combines duplicate ingredients from multiple recipes92- **Scaling**: Adjust quantities for different serving sizes93- **Pantry Management**: Track inventory with expiration dates94- **Store Section Organization**: Items grouped by typical store layout9596## Store Sections9798- **Produce**: Fruits, vegetables, herbs99- **Meat**: Beef, chicken, pork, etc.100- **Seafood**: Fish, shellfish101- **Dairy**: Milk, cheese, eggs, yogurt102- **Bakery**: Bread, buns, pastries103- **Frozen**: Frozen foods, ice cream104- **Pantry**: Dry goods, canned items, spices105- **Beverages**: Drinks, alcohol106- **Household**: Cleaning supplies, paper goods107- **Other**: Uncategorized items108109## Configuration110111No external API keys required. Data is stored locally in SQLite at `~/.openclaw/skills/shopping-list-generator/shopping.db`.