Communityコーディング&開発github.com

LucaFilippetti99/PersonalCoach

Lucaの週間食事プランを、買い物リスト、冷蔵庫・パントリーの在庫、プロフィールに基づいて作成します。

PersonalCoach とは?

このスキルは、ユーザーの週間食事プランを自動生成し、管理するためのパーソナルコーチエージェントです。冷蔵庫とパントリーの在庫 (`frigo.json`) と現在の買い物リスト (`spesa.json`) を優先的に活用し、食品ロスを最小限に抑えながら、ユーザーのプロフィール (`profilo.md`) に基づいた健康的な献立を作成します。ユーザーが「今週の献立は?」や「冷蔵庫にあるもので何か作って」と尋ねたとき、または既存のプランの修正を依頼したときに、このスキルが自動的に呼び出されます。対応プラットフォームはClaude CodeやClineなどのファイル編集・読み取りが可能なAIエージェントで、ローカルのWebアプリと連携してデータを同期します。仕組みとしては、まずユーザーの設定ファイル(カロリー目標、トレーニング日など)を読み込み、直近の体重トレンドから必要に応じてポーションを調整します。次に、冷蔵庫内の賞味期限が近い食材から優先的に使用し、不足分を買い物リストに追加します。各食事には3〜5ステップの簡易レシピが付属し、ユーザーが食べた食事は記録されて在庫から自動的に削除されます。このスキルは、ユーザーが手動で細かい調整をすることなく、一貫性のあるバランスの取れた食事計画を維持できるように設計されています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/LucaFilippetti99/PersonalCoach/tree/HEAD/skills/piano-pasti-settimanale

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

週間食事プラン

プランはLucaのローカルWebアプリ(Ciboセクション)から読み取られます。そのため、JSONファイルは以下のスキーマに厳密に従う必要があります。

読み取る入力

  1. profilo.md — 目標、除外する食品、好み、食事数、サプリメント。
  2. frigo.json — すでに家にあるもの(賞味期限を含む):優先的に使用します。冷蔵庫とパントリーの両方が含まれます。フィールドdoveは"frigo"または"dispensa"の値を持ちます(欠落している場合:炭水化物、油脂、缶詰はパントリー、残りは冷蔵庫)。
  3. spesa.json — 現在の買い物リスト:冷蔵庫とともにプランのベースになります。
  4. impostazioni.json — target.kcalとtarget.proteine_g。calendarioはトレーニング日を知るため。sempre_in_casa(例:塩、油:常にあり、買い物リストには含めない)。
  5. piani-pasti/内の最後のファイル — 同じ料理を繰り返さないため。
  6. log/misure.json — 体重の傾向からポーションの調整が必要かどうかを判断するため。

frigo.jsonまたはimpostazioni.jsonがまだ存在しない場合は、それらなしで進めます。

LucaはWebアプリからもプランを編集します(食事の追加、変更、削除、食べたものとしてマーク)。その週のファイルが既に存在する場合は、それをベースにします:"fatto": trueが設定された食事には触れず、Lucaが書いた食事は、特に依頼がない限り上書きしません。不足している日または食事のみを補完します。

ルール

  • 冷蔵庫を優先、次に買い物: frigo.jsonにあるアイテムを優先して使用し、特に賞味期限が近いものから使います。その後、買い物リストを使用します。材料の少なくとも80-90%は冷蔵庫+買い物リストから調達します。不足分はda_comprare_extraに、簡単な理由とともに追加します。
  • 一貫性のある名前: 材料にはfrigo.json / spesa.jsonで使用されているのと同じ名前を使用します(例:「Petto di pollo」であり「pollo」ではない)。これにより、Webアプリが何がすでに家にあるかを認識できます。
  • 廃棄ゼロ: 傷みやすい食材(野菜、肉、生魚)は最初の数日で使用します。賢い残り物を計画します:一度調理して二度使います。
  • 定義、適度なカロリー不足: 主要な食事ごとにタンパク質を、たくさんの野菜を、炭水化物を(calendarioのトレーニング日にはより多く)含めます。食事を抜いたり、過激なプランは避けます。1日をtarget.kcalとtarget.proteine_gに近づけます。
  • 目安のポーション: 実用的な単位(握り拳、手のひら、大さじ、「中サイズの鶏胸肉1枚」)を使用し、主要な炭水化物にのみグラム数を括弧内に示します。
  • 多様性: Lucaは毎日喜んで料理をするので、シンプルだが異なるレシピを、同じ料理は週に最大2回までとします。以前のプランで気に入った料理を、同じ料理名で再提案できます(Webアプリはそれらをレシピブックに収集します)。
  • 週末: Lucaは週末に外食します(少なくとも週に1回ピザ):それらの食事は計画に入れないか、ノートに「外食」と示します。
  • profilo.mdで示されている除外食品は常に尊重します。

買い物、冷蔵庫、パントリー(Webアプリと同じルール)

Webアプリは、シンプルなルールでプラン、買い物、在庫を同期させています。あなたもそれに従うことで、ファイルの一貫性が保たれます。

  • プランを書き終えた後、spesa.jsonを更新します:今日以降のまだ食べていない食事の材料のうち、frigo.json(冷蔵庫またはパントリー)になく、sempre_in_casaになく、まだリストにないものについて、{ "nome", "categoria", "quantita": "", "auto": true }のアイテムを追加します。auto: trueは「プランのために追加された」ことを意味します:Webアプリは食事が変更された場合に自動的にそれを削除します。autoのないアイテムには触れません(Lucaが書いたものです)。
  • da_comprare_extraはオプションの提案用(例:魚の調味料用レモン)であり、食事に必要な材料用ではありません。
  • 名前: Webアプリは大文字小文字とアクセントを区別せず、単数形=複数形(「uovo」=「uova」)として比較しますが、「pollo」と「petto di pollo」は異なるものとして扱われます。frigo.json / spesa.jsonと同じ名前を使用します。
  • Lucaが食事を食べたと伝えたとき: "fatto": trueを設定し、冷蔵庫(FRIGO)にある材料をfrigo.jsonから削除し(パントリーはそのまま)、それらを食事の"consumati"に保存します(削除されたアイテムをそのままの状態で)。これにより、LucaがWebアプリでチェックを外した場合に、アイテムが戻ります。
  • Lucaが買い物をしたと伝えたとき: 購入したアイテムをspesa.jsonから削除し、dove(炭水化物、油脂、缶詰は"dispensa"、残りは"frigo")と、わかればscadenzaを付けてfrigo.jsonに追加します。

ミニレシピ

各食事にはricettaフィールドがあります:3〜5ステップの短い手順(各行1つ)の配列で、目安の調理時間を含めます。明白な手順(「盛り付ける」)は含めません。料理が前日の残り物を使用する場合は、最初のステップでそれを示します。

ファイルスキーマ

{
  "settimana": "AAAA-Www",
  "kcal_giorno_indicative": 2150,
  "giorni": [
    {
      "giorno": "lunedì",
      "pasti": [
        {
          "tipo": "pranzo",
          "piatto": "Riso con pollo e zucchine",
          "ingredienti": [{ "nome": "Riso basmati", "porzione": "1 pugno abbondante (~80 g)" }],
          "ricetta": ["Cuoci il riso in acqua salata (circa 12 min)", "…"],
          "note": "",
          "fatto": true
        }
      ]
    }
  ],
  "da_comprare_extra": [{ "nome": "Limoni", "categoria": "frutta", "quantita": "2", "motivo": "per condire il pesce" }]
}
  • giorno: 小文字の曜日名(lunedì … domenica)。tipo: pranzo、cena、colazione、spuntinoのいずれか。
  • da_comprare_extraのcategoria:proteine、carboidrati、verdure、frutta、latticini、grassi、dispensa、altroのいずれか。
  • fattoはオプションです:既に食べた食事に対してのみtrue(LucaがWebアプリで設定するか、あなたが食べたものを伝えられたときに設定)。未来の食事では省略します。
  • consumatiはオプションです:食べた食事にのみ存在し、冷蔵庫から取り出されたアイテムを含みます(上記参照)。変更しないでください。
  • 他のフィールドは追加しないでください。

出力

  1. プランをpiani-pasti/AAAA-Www.json(ISO週)に保存します。上記のスキーマに厳密に従います。
  2. 不足している材料でspesa.jsonを更新します(「買い物、冷蔵庫、パントリー」を参照)。
  3. チャットには短い概要を表示します:日ごとに1行で主要な料理を示し、次に買い物リストに追加したもの、da_comprare_extraリスト、2〜3の準備のアドバイス(事前に調理すべきもの)を表示します。プランはWebアプリのCiboセクションですでに表示されていることをLucaに思い出させます。

関連スキル