Communitygithub.com

TongyiDai/was-essen-skill

Was essen? – Kombiniert Geschmack, Unverträglichkeiten, Tageszeit und letzte Mahlzeiten, um dir zu entscheiden, was du jetzt essen sollst – mit einem KI-Skill.

Was ist was-essen-skill?

Dieser Skill hilft Nutzern, schneller eine Entscheidung für ihre nächste Mahlzeit zu treffen, indem er persönliche Vorlieben, Ernährungsbeschränkungen (Allergien, Unverträglichkeiten, Abneigungen), die aktuelle Tageszeit und den Essensverlauf der letzten Tage berücksichtigt. Er ist für KI-Agenten wie Claude Code, Cursor oder Codex konzipiert und nutzt lokale Python-Skripte zur Speicherung eines Profils, eines Essensverlaufs und von Empfehlungen. Der Skill vermeidet Wiederholungen, indem er in den letzten 3 Tagen empfohlene Gerichte ausschließt und in den letzten 7 Tagen gegessene stark bestraft. Er gibt maximal drei konkrete Vorschläge aus (Top 3) und bietet ein einfaches Feedback-System (1–6), um Vorlieben zu verbessern und Einschränkungen zu lernen. Optional plant der Skill Mahlzeitenvorschläge zu benutzerdefinierten Zeiten. Sicherheitsaspekte sind als harte Einschränkungen definiert; medizinische Ratschläge werden explizit nicht gegeben.

Funktioniert mit~Claude Code✓Codex CLI~Cursor
npx skills add TongyiDai/what-to-eat-skill

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was essen / What to Eat

Gib schnell eine konkrete Entscheidung, lerne aus dem tatsächlichen Essverhalten und verhindere sich wiederholende Vorschläge. Behandle Allergien, Ernährungsbeschränkungen und explizite Ausschlüsse als harte Einschränkungen.

Start jeder Runde

  1. Führe python3 scripts/meal_memory.py snapshot aus diesem Skill-Verzeichnis aus.
  2. Lies den JSON-Schnappschuss, bevor du Empfehlungen ausgibst oder nummeriertes Feedback interpretierst.
  3. Verwende die ausdrückliche Mahlzeit oder Zeitangabe des Nutzers. Leite andernfalls Frühstück zwischen 07:00–09:30, Mittagessen zwischen 11:30–13:30 und Abendessen zwischen 17:30–20:00 in der lokalen Zeitzone des Nutzers ab. Falls nichts zutrifft, frage, ob es Frühstück, Mittag- oder Abendessen ist.
  4. Behaupte niemals, dass Profil, Verlauf oder Feedback gespeichert wurden, es sei denn, der entsprechende Skriptbefehl war erfolgreich.

Das Skript speichert lokale Zustände unter ~/.codex/state/was-essen/. Überschreibe dies in Tests mit --state-dir PFAD.

Erstnutzung handhaben

Wenn profile.completed falsch ist, stelle eine leichte Einführungsfrage. Stelle höchstens zwei Fragen pro Runde; sammle zuerst sicherheitskritische Einschränkungen:

  1. Allergien, Ernährungsbeschränkungen und Lebensmittel, die der Nutzer niemals isst.
  2. Bevorzugte Geschmacksrichtungen und Küchen.
  3. Aktuelles Ziel: gesund/leicht, Gewichtskontrolle, Energie tanken, sättigend, bequem, günstig, Wohlfühlessen oder keins.
  4. Akzeptierte Schärfestufe.
  5. Ausgabepräferenz: nur Namen, Gründe, Kombinationen oder eine einfache Methode.
  6. Übliche Frühstücks-, Mittag- und Abendzeiten, gemeinsam in einer kostengünstigen Frage abgefragt. Erkläre, dass geplante Vorschläge optional sind.

Blockiere keine sofortige Empfehlung, wenn genügend Sicherheitsinformationen bekannt sind. Verwende vernünftige Standardwerte, kennzeichne sie kurz und fahre mit der Einarbeitung durch späteres Feedback fort. Speichere gesammelte Felder mit:

python3 scripts/meal_memory.py update-profile --data '{"allergies":[],"dietary_restrictions":[],"taste_preference":["鲜香"]}'

Setze "completed": true, sobald Sicherheitseinschränkungen und mindestens zwei Präferenzfelder bekannt sind. Fasse das Profil in einem kurzen Satz zusammen.

Geplante Vorschläge einrichten

Wenn der Nutzer proaktive Vorschläge wünscht oder nachdem das Kernprofil komplett ist und keine geplanten Vorschläge konfiguriert wurden:

  1. Frage: „Zu welchen Uhrzeiten isst du normalerweise Frühstück, Mittag- und Abendessen?“ Akzeptiere Einzeiler wie „8:00, 12:30, 19:00“. Frage nur für fehlende Mahlzeiten separat.
  2. Bestätige die lokale Zeitzone des Nutzers und dass jeder Vorschlag etwa 10 Minuten vor der Mahlzeit eintrifft. Falls die Zeitzone zuverlässig aus der Umgebung bekannt ist, gib sie an, anstatt zu fragen.
  3. Speichere meal_times und notification_lead_minutes im Profil. Speichere Zeiten als 24-Stunden-HH:MM-Zeichenketten.
  4. Erstelle drei aktive, wiederkehrende Codex-Cron-Automatisierungen mit dem Automatisierungswerkzeug der App, eine pro Mahlzeit. Verwende einen täglichen Wanduhrplan bei Essenszeit - Vorlaufzeit in der lokalen Zeitzone des Nutzers. Benenne sie Was essen|Frühstücksvorschlag, Was essen|Mittagsvorschlag und Was essen|Abendessensvorschlag.
  5. Verwende den aktuellen lokalen Workspace und die lokale Ausführungsumgebung. Jeder Automatisierungsprompt muss in sich abgeschlossen sein und besagen:
    • verwende den installierten $was-essen-Skill für die angegebene Mahlzeit;
    • lies das lokale Profil, letzte Mahlzeiten, Empfehlungen und den aktiven Kurzzeitspeicher;
    • wende harte Einschränkungen und Wiederholungskontrollen an;
    • generiere und zeichne eine neue Top 3 auf;
    • sende die normale prägnante Empfehlung mit Feedback-Optionen 1–6;
    • stelle während eines geplanten Durchlaufs keine routinemäßigen Einführungsfragen, es sei denn, sicherheitskritische Informationen fehlen.
  6. Speichere die drei zurückgegebenen Automatisierungs-IDs in meal_automation_ids. Behaupte niemals, dass die Planung erfolgreich war, bevor alle drei Automatisierungsaufrufe erfolgreich waren.

Wenn der Nutzer eine Essenszeit oder Vorlaufzeit ändert, aktualisiere die bestehende Automatisierung anhand der gespeicherten ID, anstatt ein Duplikat zu erstellen. Wenn der Nutzer eine Essenserinnerung deaktiviert, pausiere oder lösche nur die Automatisierung dieser Mahlzeit und lösche ihre gespeicherte ID, falls gelöscht. Erstelle keine geplanten Vorschläge ohne ausdrückliche Zustimmung des Nutzers.

Top 3 empfehlen

Wende die detaillierten Regeln in references/recommendation-rules.md an. Verwende references/dish-catalog.zh.json als Startkatalog, nicht als abgeschlossene Liste.

Vor der Rangliste:

  1. Entferne jedes Gericht, das eine Allergie, Einschränkung, religiöse/kulturelle Vorgabe oder einen expliziten Ausschluss verletzen könnte. Bei unsicheren Zutaten schließe das Gericht aus oder nenne die erforderliche Überprüfung.
  2. Schließe dasselbe Gericht aus, wenn es in den letzten 3 Tagen empfohlen wurde. Bestrafe es stark, wenn es in den letzten 7 Tagen tatsächlich gegessen wurde.
  3. Bestrafe wiederholte Küchen-, Geschmacks-, Zutaten- und Formmuster aus den letzten Mahlzeiten.
  4. Respektiere Anweisungen für die aktuelle Mahlzeit gegenüber normalen Präferenzen, aber niemals über harte Einschränkungen hinweg.
  5. Gestalte die Top 3 als: Präferenztreffer, benachbarte Variante, sichere Erkundung. Stelle sicher, dass sich mindestens zwei Dimensionen in Küche, Geschmack, Form, Hauptzutat oder Kochstil unterscheiden.

Bewerte Kandidaten qualitativ anhand von: Geschmackspassung + Mahlzeitenpassung + Zielpassung + Bequemlichkeit + Sättigung + Wohlfühlen + Erkundung, minus Wiederholung und Risiko. Gib keine numerischen Werte preis, es sei denn, du wirst gefragt.

Ausgabe:

Es ist Mittagszeit. Heute empfehle ich dir diese 3:

Top 1|Gerichtname
Grund: Ein konkreter Grund.
Hinweis: Ein Hinweis, der sich auf die letzten Aufzeichnungen oder den aktuellen Zustand bezieht.

Top 2|Gerichtname
Grund: ...
Hinweis: ...

Top 3|Gerichtname
Grund: ...
Hinweis: ...

Antworte: 1 um Top 1 zu essen | 2 um Top 2 zu essen | 3 um Top 3 zu essen | 4 neue Runde | 5 keins davon | 6 ich habe etwas anderes gegessen

Wenn der Nutzer nur Namen wünscht, behalte die drei Rollen bei, aber lasse Gründe und Hinweise weg. Zeichne die exakte Auswahl nach der Antwort auf:

python3 scripts/meal_memory.py record-recommendation --meal lunch --dishes '[{"dish":"番茄牛腩饭","cuisine":"家常菜","taste_tags":["咸香","微酸"],"form_tags":["米饭","炖煮"]}]'

Feedback handhaben

Interpretiere 1–6 gegen die letzte unbeantwortete Empfehlungsrunde.

  • 1/2/3 oder eine benannte Wahl: Zeichne das gewählte Gericht als ausgewählte Mahlzeit mit --source selected_top3 auf. Bestätige, dass es vorläufig als gegessen behandelt wird, und erlaube spätere Korrektur.
  • 4 oder „neue Runde“: Frage nur einen Grund – zu fettig, zu leicht, zu scharf, kein Reis, keine Nudeln, kürzlich davon überdrüssig oder kein Grund. Führe mark-latest-action --action refresh --feedback-text 'Grund' aus, dann generiere eine neue Runde.
  • 5 oder „keins davon“: Frage nur einen Zustand – genussvoll, leicht/wohltuend, schnell/bequem, heiß oder kein Appetit. Führe mark-latest-action --action reject_all --feedback-text 'Zustand' aus, dann generiere eine neue Runde.
  • 6 oder „ich habe etwas anderes gegessen“: Frage, was tatsächlich gegessen wurde, falls nicht bereits angegeben.
  • Tatsächliche Mahlzeit in natürlicher Sprache: Markiere und zeichne sie sofort auf. Tatsächliches Verhalten wiegt mehr als eine vorherige Auswahl.
  • Kurzfristige Äußerungen wie „empfehle in letzter Zeit keine Nudeln“ oder „diese Woche weniger scharf“: Speichere mit add-memory --scope short_term und einer Ablaufzeit.
  • Langfristige Äußerungen wie „Ich mag keinen Koriander“ oder „Ich mag Gerichte mit Brühe“: Aktualisiere das Profil; Sicherheitseinschränkungen kommen in restrictions, normale Abneigungen in disliked_foods oder disliked_forms.

Beispiele:

python3 scripts/meal_memory.py record-meal --meal lunch --dish '黄焖鸡米饭' --source user_input --tags '{"cuisine":"家常菜","taste":["咸香","浓酱"],"form":["盖饭"],"ingredients":["鸡肉","米饭"]}'
python3 scripts/meal_memory.py add-memory --scope short_term --kind exclude --value '面食' --days 7
python3 scripts/meal_memory.py rate-latest-meal --satisfaction satisfied

Frage höchstens einmal nach der Zufriedenheit nach der Mahlzeit. Wenn der Nutzer zwei Check-ins ignoriert, höre auf, sie zu initiieren. Erzwinge keinen Check-in, nachdem der Nutzer freiwillig eine Mahlzeit aufgezeichnet hat.

Sicherheitsgrenze

  • Gib keine medizinischen Diagnosen oder medizinischen Diätpläne ab.
  • Bei Schwangerschaft, Genesung nach Operation, schweren chronischen Krankheiten, Essstörungen oder schweren Allergien halte die Vorschläge allgemein und empfehle die Konsultation eines qualifizierten Arztes oder Ernährungsberaters.
  • Ermutige nicht zu extremen Einschränkungen, Essattacken, Erbrechen oder kompensatorischem Verhalten.
  • Halte Gesundheitserinnerungen kurz und nicht wertend.
  • Erfinde keine nahegelegenen Restaurants, Händler, Preise, Verfügbarkeiten oder Bestelllinks.

Verwende references/state-schema.md beim Überprüfen oder Reparieren des gespeicherten Zustands.

Verwandte Skills