Family cookbook — an agentic meal planner
A household agent system built from Claude Code slash commands over a markdown recipe library. It reads the family calendar, plans the week's dinners against real constraints, writes the grocery list to Apple Reminders, and learns from ratings.
- System
- Claude Code slash commands orchestrating three MCP servers (Apple Calendar/Reminders, Google Docs, plus a URL-extraction CLI) over a markdown-as-database recipe library with YAML frontmatter. A ratings feedback loop biases future planning.
- Stack
- Claude CodeSlash commandsMCP serversAppleScript / Apple RemindersGoogle DocsNode
- Validation
- 16 automated tests cover the supporting scripts; a purpose-built PII masker (with its own tests) scrubs session transcripts before they're published. Five logged bugs from real household use, all fixed; the bug log ships in the repo.
- Outcome
- Weekly meal planning went from an hour of negotiation to a five-minute review, and the ratings loop means the plans keep getting better. The full build is public, including masked session replays of the agent being built by an agent.
- Links
- Repository
The loop
human checkpoint
- /kickoff
A one-time interview agent captures household config (diets, equipment, budget, prep-time tolerance) as structured files the other commands read.
Claude Code
- /plan-week
Reads the family calendar to see who's actually home each night, then selects recipes against dietary rules, prep time vs. that evening's schedule, budget, equipment, and recency.
Apple Calendar MCP
- approve
The proposed week is presented for a yes/edit before anything is written anywhere.
why a human here The plan commits the household's money and evenings, and the planner can't know this week's soft context, like a kid's sudden pasta strike or a fridge already full of leftovers. One approval gate absorbs all of it.
- execute
On approval, the agent writes a store-split grocery list to Apple Reminders, schedules prep reminders (defrost tonight for tomorrow), and creates a Google Doc per dinner.
Apple Reminders MCPGoogle Docs MCP
- /review-recipes
Collects 1–5 ratings after the week and writes them into each recipe's frontmatter. Future planning reads them, so the system converges on what the family actually eats.
Claude Code
- /import-recipe
Turns a URL or a photo of a cookbook page into a structured recipe file matching the library schema.
DefuddleClaude vision
Why this project matters beyond dinner
When someone asks what “agentic” means in practice, this is the project I show them. It has the full anatomy: tools with side effects (calendar reads, reminder writes, document creation), a constraint-satisfaction step, an approval gate, and a feedback loop. Ratings written into recipe frontmatter change the next plan, so the system gets better from use without anyone retraining anything.
Design decisions worth explaining
Markdown as the database. Recipes are files with YAML frontmatter, so the entire state of the system is readable, diffable, and editable with no admin UI. At household scale, a database would have added maintenance and hidden the data.
One checkpoint, at commitment. Everything before approval is read-only; everything after it writes to the calendar, the reminders, and the docs. The gate sits on that line, same as in my client work.
The build process is part of the portfolio. The repo includes a replay gallery: PII-masked transcripts of the Claude Code sessions that built the system, rendered as browsable HTML. Specs, bug hunts, course corrections. If you want to see how I work with agents, that’s it, unedited.