Get the FREE Ultimate OpenClaw Setup Guide →

sorting-groceries

Scanned
npx machina-cli add skill oaustegard/claude-skills/sorting-groceries --openclaw
Files (1)
SKILL.md
5.9 KB

Sorting Groceries by Aisle

Sort a user's grocery list by aisle order so they can walk the store in one efficient pass, no backtracking.

When Triggered

Activate when user:

  • Uploads photos of grocery store aisle signs or markers
  • Provides a grocery/shopping list alongside store layout info
  • Asks to sort, organize, or optimize a shopping list by aisle
  • Mentions aisle numbers, store maps, or shopping routes

Inputs

Two inputs are needed. Prompt for whichever is missing:

  1. Aisle sign images — Photos of aisle markers, hanging signs, or endcap labels. Each typically shows an aisle number and category keywords (e.g., "Aisle 5: Coffee, Tea, Cocoa").
  2. Grocery list — Text, pasted note, or photo of a handwritten list. Any format.

Core Workflow

Step 1: Build the Aisle Map

Read each uploaded aisle sign image. Extract:

  • Aisle number (or label like "A5", "Aisle 12")
  • Category descriptions exactly as printed (e.g., "Pasta, Sauces, Canned Vegetables")

Compile into a structured map:

Aisle 1: Bread, Bakery Items, Tortillas
Aisle 2: Cereal, Breakfast, Granola Bars
Aisle 3: Pasta, Sauces, Canned Goods
...

If an image is blurry or partially unreadable, note what was legible and flag uncertainty.

Step 2: Identify Perimeter Zones

Grocery stores have perimeter sections without numbered aisles. Infer these from context or common knowledge when not covered by the uploaded signs:

ZoneTypical items
ProduceFresh fruits, vegetables, herbs, salad mixes
DeliSliced meats, prepared foods, rotisserie chicken
BakeryFresh bread, cakes, pastries (distinct from packaged bread aisle)
DairyMilk, cheese, yogurt, butter, eggs
Meat & SeafoodFresh/frozen meat, poultry, fish
FrozenFrozen meals, ice cream, frozen vegetables

Position perimeter zones in typical store flow: Produce → Deli/Bakery → Meat/Seafood → Dairy → Frozen (usually along the store's outer walls, counterclockwise from entrance).

If the user's aisle photos already include these sections, use the actual signage instead of defaults.

Step 3: Parse the Grocery List

Extract every item from the user's list. Normalize:

  • "2 lbs chicken breast" → item: chicken breast, quantity: 2 lbs
  • "eggs" → item: eggs, quantity: (unspecified)
  • "parm" → item: parmesan cheese

Preserve the user's original wording alongside any normalized form.

Step 4: Match Items to Aisles

For each grocery item, find the best aisle match:

  1. Direct keyword match — Item name appears in or closely matches an aisle's category text (e.g., "pasta" → "Aisle 3: Pasta, Sauces")
  2. Category inference — Item belongs to a category listed on a sign (e.g., "marinara" → "Aisle 3: Sauces")
  3. Perimeter zone match — Item is a fresh/perishable product that lives on the store perimeter (e.g., "bananas" → Produce)
  4. Best guess with note — Item could plausibly be in multiple aisles. Assign the most likely one and add a note (e.g., "honey — Aisle 4: Baking, but may also be in Aisle 7: Condiments")

Step 5: Output the Sorted List

Present the final list grouped by aisle in store-walk order:

🛒 Sorted Shopping List — [Store Name if known]

PRODUCE
  □ bananas
  □ baby spinach
  □ 3 avocados

AISLE 1 — Bread, Bakery Items, Tortillas
  □ whole wheat bread
  □ flour tortillas

AISLE 2 — Cereal, Breakfast, Granola Bars
  □ oatmeal
  □ granola bars

AISLE 3 — Pasta, Sauces, Canned Goods
  □ spaghetti
  □ marinara sauce
  □ canned black beans

...

DAIRY
  □ 2% milk
  □ shredded mozzarella
  □ eggs (1 dozen)

⚠️ COULDN'T PLACE
  □ birthday candles — not enough aisle info to determine location

Output Formatting Rules

  • Use checkbox format () so the list is easy to use on a phone
  • Include the aisle's category description next to the aisle number for quick reference
  • Keep the user's quantities and notes attached to each item
  • Perimeter zones go in logical store-walk order (Produce first, Frozen/Dairy last)
  • Numbered aisles go in ascending order between the perimeter zones
  • Unmatched items go at the end under a clear "couldn't place" heading

Multi-Aisle Items

Some items legitimately live in multiple locations. When this occurs:

  • Place the item in the most common aisle for that store's layout
  • Add a parenthetical note: "(also check Aisle 7)"
  • Common examples: honey (baking vs condiments), tortilla chips (snacks vs Hispanic foods), butter (dairy vs baking)

Handling Ambiguity

  • Blurry/unreadable signs: Note which aisles had unclear text. Ask user to confirm if critical items might be affected.
  • Store-brand categories: Some stores use unusual groupings ("International Foods" might contain pasta in one store). Trust the sign text over assumptions.
  • Missing aisles: If user uploaded signs for aisles 1-5 and 8-12 but not 6-7, note the gap. Items that don't match any uploaded aisle go to "couldn't place" rather than being guessed into missing aisles.

Store Layout Reuse

If the user mentions they shop at this store regularly:

  • Present the aisle map as a clean reference they can save
  • Suggest they can reuse it in future conversations by pasting just the map text instead of re-uploading photos
  • Format the reusable map clearly:
📍 [Store Name] Aisle Map
Aisle 1: Bread, Bakery Items, Tortillas
Aisle 2: Cereal, Breakfast, Granola Bars
...
Produce | Deli/Bakery | Meat & Seafood | Dairy | Frozen

Source

git clone https://github.com/oaustegard/claude-skills/blob/main/sorting-groceries/SKILL.mdView on GitHub

Overview

This skill builds an aisle map from uploaded aisle sign photos and sorts a grocery list by aisle order to enable a single-pass shopping route. It also infers perimeter zones (Produce, Deli, Bakery, Dairy, Meat & Seafood, Frozen) when signs are missing, helping you minimize backtracking.

How This Skill Works

Step 1 builds the Aisle Map by reading each uploaded sign to extract aisle numbers and printed categories. Step 2 identifies perimeter zones and positions them in typical store flow if not covered by signs. Step 3 parses and normalizes the grocery list, then Step 4 matches each item to the most relevant aisle using direct keyword matches, category inference, perimeter placement, or a best-guess with notes. Step 5 outputs the final, sorted list grouped by aisle with header sections (e.g., PRODUCE, AISLE 1) and checkboxes for easy shopping.

When to Use It

  • User uploads photos of grocery store aisle signs or markers.
  • User provides a grocery list alongside store layout information.
  • User asks to sort, organize, or optimize a shopping list by aisle.
  • User mentions aisle numbers, store maps, or shopping routes.
  • User wants a store-walk optimized shopping trip with minimal backtracking.

Quick Start

  1. Step 1: Upload aisle sign photos and paste or attach your grocery list.
  2. Step 2: The system builds the aisle map, identifies perimeter zones, and parses the list.
  3. Step 3: It matches items to aisles and outputs a sorted, walk-friendly list with headers like AISLE N and PRODUCE, plus checkboxes.

Best Practices

  • Upload clear, legible aisle sign images with visible numbers and category text.
  • Provide a complete grocery list; include quantities if possible for better mapping.
  • When signs are incomplete, rely on perimeter zone logic (Produce, Dairy, etc.).
  • Review notes for items placed with uncertainty or multiple possible aisles.
  • Include store name when possible to tailor the final route and headers.

Example Use Cases

  • A user uploads aisle sign photos for a local supermarket and a shopping list; the tool outputs AISLE 1 and AISLE 2 sections with items grouped under relevant headers.
  • User provides a list with a store layout; the system sorts items into PRODUCE, AISLE 3 (Pasta, Sauces), AISLE 5 (Canned Goods), etc., and returns a walk-friendly route.
  • shopper requests optimization for a 45-minute trip; the tool returns a single-pass route with grouped aisles and checked-off items.
  • An item could plausibly be in multiple aisles; the output includes a note like 'honey — Aisle 4: Baking, but may also be in Aisle 7: Condiments'.
  • Perimeter items such as bananas are placed under PRODUCE with notes about potential alternate locations if the store layout differs.

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers