← Chop itCONTENT HISTORY

Update to Chop it

Snapshot Oct 24, 2026 · 13:07 UTC · version 2.0.2

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save Chop it and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Plan dinners, build shopping lists, keep a pantry, and grow a personal recipe library with Chop It. Use when the user wants dinner ideas, a weekly meal plan, a shopping list sent to an online grocery shop, wants to track what's in their kitchen, OR wants to save a recipe - from a photo of a cookbook page, a TikTok/Instagram/website link, or an idea of their own developed into a proper recipe. Also covers generating Chop It-styled food photos in chat.",
  "included_files": [],
  "name": "chop-it-meal-planner",
  "skill_md_contents": "---\nname: chop-it-meal-planner\ndescription: Plan dinners, build shopping lists, keep a pantry, and grow a personal recipe library with Chop It. Use when the user wants dinner ideas, a weekly meal plan, a shopping list sent to an online grocery shop, wants to track what's in their kitchen, OR wants to save a recipe - from a photo of a cookbook page, a TikTok/Instagram/website link, or an idea of their own developed into a proper recipe. Also covers generating Chop It-styled food photos in chat.\n---\n\n# Chop It meal planner & recipe library\n\nChop It plans real, cookable weeks of dinners from a quality-gated UK recipe\ncatalogue, turns them into one shopping list grouped by aisle, keeps the\nhousehold's pantry, and saves the user's own recipes (photographed, linked or\ninvented) into their Chop It library. Web, iPhone and ChatGPT are entrances to\nthe same account: the same recipes, food rules, plan and shopping state.\n\n## How the tools fit together\n\nThe signature request is \"plan my dinners and turn them into a shopping list\".\nThe data flows like this:\n\n1. **Choosing a mix.** `prepare_weekly_menu` answers a broad request (\"plan my\n   week\", \"5 dinners\") with the mix chooser in the widget: the user picks a\n   protein mix and people per dinner, and the widget builds the week itself.\n   A request that already states a counted mix (\"2 chicken, 1 fish\"),\n   `slotRequirements`, a `mixPreset` or \"surprise me\" is built directly, the\n   same as `create_weekly_menu`. For a signed-in account, its diet shapes the\n   mixes on offer. The chooser's result text says that the chooser is on\n   screen and that nothing is built until the user picks.\n2. **Building the week.** `create_weekly_menu` returns a `menuDraftId` and a\n   `dinners` array; each dinner has up to five equal `candidates` (title,\n   time, `reason`) and nothing selected. `needs_selections` with 0 chosen is\n   the normal starting state. `slotIssues` lists any slot with fewer than\n   five matches and why: fewer cards means fewer recipes met that slot's\n   rules, not a shortage in the catalogue.\n3. **Choosing dinners.** The widget is the chooser; its cards call\n   `revise_weekly_menu` (`slotId` + `replacementRecipeId`). A choice made in\n   chat goes through the same tool; a choice described only in chat leaves\n   the draft as it was. `reroll: true` with a `slotId` gives five new choices\n   for that slot; `refillShortSlots: true` tops up every slot in `slotIssues`\n   in one call. Each revision returns a new `menuDraftId`, which is the one\n   to save or shop. `get_menu_draft` reads the current state whenever the\n   latest id is uncertain. Choosing works before sign-in on a draft no\n   account owns.\n4. **Saving.** `save_week` stores a completed draft as a reusable Saved Week\n   and returns `savedWeekId` with the `menuDraftId`; it leaves This Week\n   unchanged and is safe to retry. `set_this_week` makes a Saved Week the\n   week being cooked; `save_menu` does both at once. `get_my_week` reads\n   This Week. `list_saved_weeks`, `open_saved_week`, `share_week`,\n   `preview_shared_week` and `import_shared_week` move weeks around.\n5. **Shopping.** `create_shopping_list` takes the exact `menuDraftId` (or\n   `recipeIds`) and returns `shoppingListId`, aisle `sections` and counts\n   (buy, covered, check stock). The widget calls it from the completed week\n   and shows the list card. `get_shopping_list` and `update_shopping_list`\n   hold ticks (\"I already have rice\") and partly covered quantities;\n   `open_shop_handoff` makes a time-limited Chop it review page where the\n   user ticks the list and follows per-item supermarket search links. No\n   purchase happens in chat.\n\nWidget-made calls (building from the chooser, Choose, Save week, Shop) show\ntheir result in the widget and can appear in the conversation without a text\nresult. A missing text result says nothing about the outcome either way: the\nreturned status, the widget state or a `get_menu_draft` read-back establishes\nwhether a selection, save or shopping action completed.\n\n## Recipes\n\n- `search_recipes` returns cards from the catalogue (title, photo, time,\n  tags, protein, and per-serving nutrition when the catalogue can vouch for\n  it). Structured filters are hard constraints: \"quick chicken dinners\" is\n  `filters.protein ['chicken']` with `filters.maxTimeMins 30`. Dinner-intent\n  searches leave out sides, dips and starters.\n- `get_recipe` returns one complete recipe: ingredients with quantities, the\n  method, and `nutrition` (per serving) when it can be vouched for, else\n  `nutritionNote` with the reason. The weekly widget opens recipes inside\n  the card with the same data; the recipe card also offers step-by-step\n  cooking.\n- `save_discovered_recipe` copies a catalogue recipe into the user's library.\n- `list_saved_recipes`, `update_recipe` and `delete_recipe` act only on the\n  user's own recipes. `update_recipe` replaces `ingredientSections` and\n  `steps` whole, so a change is sent as the complete corrected list, keeping\n  `optional: true` on garnishes so they stay off the shopping list.\n\n## Food rules\n\n`get_food_preferences` and `update_food_preferences` hold the account's diet\n(none, vegetarian, vegan, pescatarian), its foods to avoid (fourteen common\nfoods such as milk, eggs, peanuts or gluten) and its dislikes, in plain\nwords; the same record the app's Food preferences settings show. Every\nplanning, search and recipe call applies them: recipes that use those foods,\nor whose ingredients are unclear, are left out. A whole-week rule stated in\nchat goes in `dietary`; a single vegetarian dinner is a slot, not a\nwhole-week rule. Chop It leaves out the foods a person chooses but is not\nbuilt for managing allergies, so no recipe, plan or list is described as\nallergen-free or safe for an allergy; checking labels and ingredients is the\nadvice when health needs come up.\n\n## The pantry\n\n`get_pantry` and `update_pantry` track what is in the user's kitchen (name,\nstorage location, quantity, how full, expiry): the same pantry the app shows\nfor a connected account. Planning uses the pantry only when the user asks\n(`pantryMode: use`, or `focus` with named ingredients to use up), for that\nrequest only; general dinner ideas don't read it. \"I bought…\" adds (topping\nup what is already there); \"we finished the…\" removes. Staples such as salt,\npepper and oil are skipped.\n\n## Building the user's recipe library\n\nRecipes enter the library through `import_recipe_from_url` (TikTok,\nInstagram, any recipe website, or pasted caption text), `import_recipe_from_image`\n(a fetchable image URL of a cookbook page, screenshot or handwritten card) or\n`start_recipe` then `save_recipe` (a recipe written in chat). A connected\naccount is required for all three, and every save lands in the user's\npermanent library with an `appUrl`.\n\n- An import that returns `needs_review` carries a preview and the issues\n  found; the corrected recipe is saved with `save_recipe` (keeping the\n  original `sourceUrl`). Imports that need paid processing require\n  `confirmPaidImport` after the user agrees; they are limited per\n  conversation, while `save_recipe` is not.\n- A recipe written in chat meets Chop It's standard when it uses UK\n  vocabulary and metric quantities (coriander, courgette, aubergine, mince;\n  grams, ml, tbsp, tsp), groups ingredients into sections, gives a complete\n  method with sensory cues (\"until golden and bubbling\") and timings, and\n  has a plain title with no marketing words. `start_recipe` returns that\n  brief with a `recipeDraftToken`; `save_recipe` checks the recipe against\n  it and answers `needs_revision` with `fixes` when something is missing.\n- When the user wants to invent a dish, a short conversation gets there:\n  the hook and title; a balanced plate (protein, plants, carb, one upgrade\n  such as acid, crunch or a herb finish); timings that finish together; a\n  method with cues; and one vivid sentence for `finishingTouch`. One or two\n  rounds of questions is plenty.\n\n## Food photos in chat\n\nA picture of a dish comes from the user's own ChatGPT image tool, not from\nChop It. The house style: square, a three-quarters elevated angle with the\ndish dominating the frame, warm directional daylight with soft shadows and\ntrue colour, handmade ceramics or enamelware on linen or wood with believable\nimperfections, editorial home-cooking realism, and only the ingredients that\nwould be visible in the finished dish. Such an image is not attached to a\nsaved recipe; the app can generate a hero image for it.\n\n## Facts worth keeping straight\n\n- `menuDraftId` and `shoppingListId` name drafts that expire after about 24\n  hours whether or not the week is saved; an unrecognised id means the draft\n  expired. The durable reference is the `savedWeekId` from `save_week`, and\n  `open_saved_week` makes a fresh draft from it.\n- A week is saved when `save_week` has returned `saved` or `already_saved`.\n  Saving leaves This Week unchanged.\n- `open_shop_handoff` returns a Chop it review page; a `null` `handoffUrl`\n  comes with a `message` saying why.\n- Every dinner offered comes from a tool result; a recipe the user writes\n  with the funnel is authored and then saved.\n- Some recipes have no `oneLiner` or image; title and time are enough.\n"
}

SHA-256 of public snapshot: 5a9eac337c87e5453c163e2597e1ba26b2de360d6d4de9696e6cace69ce74a59