tiny-glitch/レシピタイムライン

従来のレシピを、一人の料理人のための実行順調理タイムラインに変換するスキル。

レシピタイムライン とは?

これは、一般的なレシピを時系列の実行計画(調理依存関係グラフ)に変換するAIエージェントスキルです。レシピは通常、記述された順番にアクションをリストしますが、このスキルは時計に沿って実行順に再配置することで、「今どこにいるのか」「次のアクションまでどのくらいの時間があるのか」「今は自由なのか」を一目で把握できるようにします。Claude Code、Cursor、CodexなどのAIエージェントで動作し、料理の複雑さに応じて3つのモード(タイムライン、シーケンス、スケジュール)を自動選択します。また、栄養情報の推定、材料の下ごしらえ展開、調理器具の競合解決、ユーザーによるレシピ変更時の再実行など、高度な機能を備えています。

対応~Claude Code~Codex CLI~Cursor
npx skills add tiny-glitch/recipe-timeline

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

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

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

ドキュメント

レシピタイムライン は何をしますか?

従来のレシピを、一人の料理人のための実行計画に変換します。

レシピはアクションを記述された順序でリストします。このスキルはそれらを実行順序、つまり時計に沿って配置された調理依存関係グラフにレンダリングし直します。

各計画行は、3つの質問に同時に答えます:

  • 今どこにいるのか? — 累積位置
  • 次に行動するまでどのくらいの時間があるのか? — 間隔マーカー
  • 今は自由なのか? — 垂直ルールの重み

下ごしらえの基本ルール:

実用的な範囲でできるだけ遅く、必要な範囲でできるだけ早く


0. 最初にルート:モードと適合性

何よりも先に、レシピを分類します。間違ったモードを選択することが最も一般的な失敗です。

レシピに5つ未満のアクションしかなく、意味のあるタイミングや並行処理がない場合 — スクランブルエッグ、サラダ、スムージー — 完全な計画ではなく単純な番号付きシーケンスを推奨し、それがオーバーヘッドになる理由を一行で説明します。ユーザーが明示的にタイムライン形式を要求した場合は、それを提供します。 この閾値はデフォルトであり、拒否ではありません。

それ以外の場合は、モードを選択します:

モードA — タイムライン(デフォルト)

少なくとも1つの間隔が3分以上あり、6つ以上のアクションがある場合。ほとんどのコンロメイン料理、煮込み、シチュー、カレー、パスタ、シートパン料理が該当します。

モードB — シーケンス(注意集中型)

ほとんどの間隔が90秒未満の場合:炒め物、オムレツ、テンパリングの多い料理、高速ソテー — 料理人が鍋から離れられないものすべて。

モードBには自由時間がないため、そのようなふりをしてはいけません。出力:

  1. ミザンプラス、手の届く順に — 加熱前にすべて準備して配置し、つかむ順にリストアップします。
  2. 加熱前ブロック — 予熱ゲートとそのリードタイムを含み、シーケンスクロックの外側に置きます。クロックは、フライパンではなく、食材が加熱されたときに開始します。
  3. 高速シーケンス — 累積秒数とゲートを含み、[+n]マーカーや内部の下ごしらえタスクはありません。
  4. 明示的な行:"加熱開始から盛り付けまで約N分、休憩なし。上記のすべてが手の届く範囲にある必要があります。"

モードBは、「すべてのミザンプラスをクロック前にダンプする」というルールの例外です。ここでは、そこにダンプすることが正しいです。

モードC — スケジュール(待機中心型)

アクティブな作業が経過時間のごく一部である場合:製パン、パン、冷やして固めるデザート、発酵、低温調理、一晩の煮込み、数時間かかるものすべて。出力は、ゼロからの連続クロックではなく、提供時間から逆算したセッションです。

混合型

多くのレシピは、モードAにモードCの末尾が付いたものです — バナナブレッドは20分のタイムラインに加えて70分の冷却時間があります。タイムラインをレンダリングし、その後にアクティブ調理後セクションを追加します。末尾が完了するまで、料理を完了とマークしてはいけません。

既存の計画の修正

ユーザーが既に計画があるレシピを変更した場合 — サイドを追加する、コンポーネントを削除する、提供時間を設定する、量を2倍にする — 元のソースからスキル全体を再実行します。以前の出力にパッチを当ててはいけません。

計画はグラフであり、リストではありません。1つの新しいコンポーネントがマージされたアクションリストを変更するため、下流のマーカーがシフトします。また、衝突を引き起こしたり、最後の空き下ごしらえウィンドウを消費したり、2つ目の鍋をバーナーに乗せたり、鍋の容量を超えたり、料理を2レーンを超えて提供時間アンカーリングに押し出したりする可能性があります。ローカル編集は、まさに計画が内部的に矛盾し、移動したアクションを指す古いマーカーが残る原因です。

再実行は安価です。安価でないのは、以前のパスで確立されたものを失うことです。そのため、それを明示的に引き継ぎ見出しの下に引き継ぎます:

  • ソースに含まれていなかった、ユーザーが提供した方法
  • ユーザーが指定した提供時間、提供人数、または容器の数
  • ユーザーが最後の出力に対して行った修正
  • ユーザーが自分は異なる方法で行うと言ったことすべて

それらを明示することで、暗黙のうちに仮定されるのではなく、修正可能になります。

次に、新しい計画の下に、短い変更点リストを追加します — 変更された位置や注意点のみで、再集計ではありません:

変更点
- ニンニク 9分 → 11分(パスタ鍋が4分でスタートするようになったため)
- 22分で衝突:水切りがほうれん草のしんなりに移動
- 現在2つの熱いコンポーネントがあるため、計画は提供にアンカーリング

ユーザーは既に頭の中に古い計画があるかもしれません。何が変わったかを伝えることが、パッチではなく再実行を行う理由です。


1. ソースゲート

材料はあるが方法がない場合は、停止します。信頼できる計画を構築できないことを報告します。もっともらしいレシピを発明してはいけません。

方法はあるが時間がない場合(レシピブログや伝統的なレシピで非常に一般的)は、続行します — ただし、推定期間は§7に従ってマークし、キュー駆動型の各ステップの前に、番号ではなくキューを置きます。


2. 抽出

ソースから、タイトル、提供人数、材料、手順、記載されている時間、温度、器具、出来上がりの合図、添え物、および記載されている栄養情報を取得します。

材料の数量は変更してはいけません。

ユーザーがレシピのスケーリングを要求した場合、調理時間は線形にスケーリングしないことに注意してください — 2倍の量は焦げ付きが遅くなり、より大きな鍋が必要になるか、バッチ処理を強制する可能性があります(§7、繰り返しサイクル)。


3. 栄養表示

すべての出力において、提供人数、エネルギーおよびマクロを上部近く、器具と材料の上に表示します。料理人はこのブロックから料理を作るかどうかを決定します。

## 栄養表示 *(計算値)*

- **エネルギー** 約300 kcal / 人分 · 約1,200 kcal 合計
- **タンパク質** 13 g · **炭水化物** 42 g · **脂質** 9 g

タンパク質、炭水化物、脂質がデフォルトの3つです。食物繊維、砂糖、ナトリウムは、ソースがそれらを提供している場合のみ表示します。常に1人分と合計の両方を表示します。

出典、常に明記

(出典あり) — レシピが数値を明記しています。そのまま引用します。再計算してはいけません。たとえ自身の推定値が異なっていても、それらを「修正」してはいけません。

(計算値) — 材料リストからあなたが計算したものです。これらをレシピ自身の数値として決して提示してはいけません。

省略 — 材料が推定をサポートできない場合。見出しにタグを付けず、リスト内でブロッカーを明記します:

## 栄養表示

- **エネルギー** 推定不能 — 「揚げ油」に数量がなく、
  吸収油が数値を支配します。

タグはセクション見出しに入れ、リストの下に独立した行として入れてはいけません。タグを独立した行に置くと、孤立します。それは上のブロックにも下のブロックにも属さず、レンダラーはそれにアンカーを与えず、後続のセクションのキャプションとして読まれます。見出しに収まらない注意事項は、リストの下に通常の行として入れます:"ラジマのみ。ご飯は1人分あたり約205kcal追加。"

出典は括弧ではなく単語で記述します。括弧は[+n]マーカーに適しており、それらは独自の列に配置されます。見出しには列がなく、括弧は機械の出力として読まれます。

この区別は、時間の[+n] / [≈n]を反映し、同じルールを持ちます:出典のあるものとして提示された発明された数値は、忠実性の失敗です。

提供人数

1人分の数値には、提供人数のカウントが必要です。

  • ソースに明記されている → それを使用します。「6つの容器に分ける」のような保存指示があれば、それが明記されています。
  • 明記されていない → 総量から推測し、リストの下にその旨を記載します:"提供人数は量から計算しました。"
  • 推測できない → 合計のみを表示し、1人分の数値には提供人数が必要であると記載します。

ソースが1人分の数値のみを提供している場合、合計を掛け算することは、その数値に対する算術であり、新しい推定ではありません。(出典あり)のままです。

ソースが矛盾している場合

返信で一度だけ指摘し、続行します。回答を待たず、また、調整内容を計画にレンダリングしてはいけません — 計画は公開されるものであり、一連の数値しか見ない読者は、その選択の背後にある計算を必要としません。

書かれた通りのレシピに一致する数値を採用して解決します:材料リストが優先され、他の数量で計算されたテーブルではありません。他の明記された数値と同様に、(出典あり)とタグ付けします。

計画の横に、一度だけ:

材料リストにはパルメザン20〜30gとありますが、2番目の
栄養表は66gで計算されています。20〜30gの数値を使用しました —
別のセットをご希望の場合はお知らせください。

ユーザーが回答した場合、その選択で再実行します。回答がない場合、計画は既に成立しており、再実行は不要です。

正直な推定

これらは、材料リストの推定を誤らせるものです。それぞれにルールがあります:

  • 揚げ油 — 吸収された部分のみをカウントし、フライパン一杯分はカウントしません。浅揚げと深揚げは、食品の重量に対して約10%の油を吸収します。レシピが数量なしで「揚げ油」と述べている場合、それは推定を不可能にします — 推測するよりも省略します。
  • 廃棄されるマリネ液 — 食品に付着する約4分の1をカウントします。
  • 塩水と塩茹で水 — ほとんどが廃棄されます。ソースがナトリウムを追跡している場合を除き、無視します。
  • 「塩適量」、「油適量」 — ゼロとしてカウントし、その旨を記載します。
  • 切り落とし、骨、殻、皮 — 購入重量ではなく、可食部の収量で推定します。
  • 煮詰め — 蒸発は水分を取り除くだけで、エネルギーは取り除きません。煮詰めたソースは、煮詰める前と同じカロリーを持ちます。煮込みのために数値を小さくしてはいけません。
  • アルコール — 煮込んだ料理では約半分が保持され、非加熱の料理ではほぼすべてが保持されると仮定します。
  • レシピに含まれていない付け合わせ — 除外し、数値は料理単体のものであると記載します。

精度の規律

材料リストからの推定は、せいぜい±15%の精度です。それを超えて正確にレンダリングしてはいけません:518 kcalではなく約520 kcal。エネルギーは最も近い10 kcalに、マクロは最も近いグラムに丸めます。マクロに範囲を設定してはいけません — 厳密に丸め、(計算値)に不確実性を任せます。ソースが提供する範囲は、そのまま保存します。

範囲

計算を報告して停止します。数値が高いか低いかについてコメントしたり、それらを変更する代替案を提案したり、食事に関するアドバイスを添付したりしてはいけません — このスキルが要求されたのはそのどれでもありません。ソース自体が持つ評価的な言葉(「非常に満足感がある」、「適度な飽和脂肪」)はすべて削除し、数値を保持します。

ソースゲートで既に不合格となったレシピの推定を作成してはいけません。方法が信頼できない場合、数値も信頼できません。


4. 暗黙の下ごしらえを展開する

レシピは明らかな実行ステップを省略します。すべてのアクションについて、次のように問いかけます:

このアクションが発生するとき、この材料はどのような物理的状態でなければならないか?

タマネギを加える → タマネギはみじん切りにする必要がある → 下ごしらえタスクを作成します。 トマトピューレを加える だがソースには丸ごとのトマトがリストされている → 作成:トマトをピューレにする。 スパイスを加える で5つのスパイスがリストされている → 作成:スパイスを計量する。

一般的な正当な追加:香味野菜を刻むまたはスライスする;生姜とニンニクをみじん切りまたはすりおろす;缶詰を水切りして洗う;米を洗う;スパイスを計量する;柑橘類を切る;ハーブを刻む;パッケージを開ける;冷凍品を取り出す;注ぐまたは水切りの前に容器を準備する;方法がそれに依存する場合、乳製品や卵を室温に戻す。

実行の推論と料理の発明

許可 — 方法が前提とする準備要件を推論すること。

許可されない — ソースにない材料を追加すること;ソースが「みじん切り」と言っているのを「ピューレ」に変更すること;記載されている時間を短縮すること;温度や技術を変更すること;代用すること。

準備を推論します。料理を書き換えてはいけません。


5. グラフを構築する

スパイン(主軸)

1つの主要なプロセス:最も多くの順次依存関係を持ち、最も多くの介入を必要とし、他のすべての開始タイミングを決定するもの。

プロセスは、同時に実行されたり異なる容器で行われたりするという理由だけで、別々のコンポーネントではありません。豆を調理し、マサラを作り、それらを組み合わせることは、1つの料理、1つのレーンです。

ブランチと、その方法の入手先

ブランチは、真に別個の食事コンポーネントです:米、パスタ、じゃがいも、野菜のサイド、ライタ、別に作るソース。クロック0ではなく、実際に開始すべき時点で開始します。

ブランチには方法が必要です。 サービングの提案はブランチではありません:

ソースが「ご飯と一緒に提供」とだけ述べている — 方法なし:

  ## 一緒に提供
  ご飯 — 方法が指定されていません。

ユーザーが提供する場合 — ブランチが許可され、クレジットが与えられます:

  ご飯の方法はあなた(ユーザー)が提供、ソースではありません:
  洗う · 沸騰させる · 弱火+蓋 12分

10分   ├·······→ 🔪 ご飯を洗う · 鍋を火にかける

方法は、ソース、別のレシピ、またはユーザーから提供される場合があります。ユーザーから提供された場合は、出力でその旨を記載し、読者がそれらのステップの出典を確認できるようにします。決して方法をでっち上げてはいけません。

ゲートと停止条件

時間ではなく、条件です。決してクロックだけで進行してはいけません。

◆ trueになったら進行 — ◆ 油がキラキラするまで、◆ オーブンが200°C、◆ 水が激しく沸騰、◆ 生地が2倍に膨らむ、◆ 串に何もついてこない

◇ trueになったらすぐに停止 — ◇ ちょうど混ざった、◇ 最初の焼き色、◇ 少し半生。◆とは逆の極性であり、これらを混同すると、バッター、カスタード、エマルジョンが台無しになります。

🌡 内部温度 — ソースが提供するときは必ず使用します。感覚的な合図ではなく、ゲートです。絶対的にクロックを無効にします。

ゲートは、見逃すとステップを元に戻せなくなるセットアップ前提条件もカバーします。アクションの内側ではなく、上の行に配置します:

         │         ◆ シンクのそばにカップ
23 分    │         ● 1カップを取っておく · 水切り

持ち越し調理

ロースト、厚切り肉、大きな焼き物料理は、火から下ろした後も調理が続きます — 塊や鳥の場合、通常3〜5°C、非常に大きなものではそれ以上。ソースが最終温度を提供している場合は、その温度から持ち越し分を差し引いた温度で引き上げ、その旨を記載します:

🌡 71°Cで引き上げる — 休ませている間に約75°Cまで上昇

器具

共有のフライパン、バーナー、オーブンスペース、ブレンダーを尊重します。2つのケースがあり、それらは異なります:

共有 — 両方が同時に同じ温度で収まる場合。負荷を記録して続行します。

競合 — 一度に一つしか使えない場合、または温度が競合する場合。次の順序で解決します:

  1. 約15°C以内 — より高い温度を使用し、よりデリケートなアイテムのゲートを早めにチェックして、早めに取り出します。
  2. それ以上離れている — 順序付けます。保持耐性が高い方のアイテムを先に調理し、待機させます:ロースト肉は20分間問題なく休ませることができ、その間にじゃがいもをより高い熱でカリッとさせます。
  3. どちらも機能しない — 競合を明示し、選択肢を提示します。黙って一方を選んではいけません。

また、容量にフラグを立てます:完成後の総量を合計し、レシピが必要とする場合にそれを示します。


6. 計画をレンダリングする

構文

構文マークアップは、独自の自己文書化可能なプロットフォーマットに従います。人間が読めるグリフとタイポグラフィに依存します。

一致した最小の時間ユニットは1分、または高速シーケンスの場合は5秒です。分は特に明記しない限り分です。秒はsでマークします。

出力には以下の3つの要素のいずれかが含まれます:

  1. タイムライン — ページの左端に累積時間を表示。標準フォーマット。
  2. シーケンス — 累積時間を秒単位で表示し、モードBのための独立したブロック。
  3. スケジュール — 提供時間から逆算し、連続した作業バーストに対して時間を表示し、ブロック名は提供からの相対時間としてスタンプされます。

マーカー

[+n] アクティブな調理時間 — 未来のアクションのためにブロックされるアクティブな時間を示します。[+10]は10分のアクティブな作業です。

[≈n] 経過時間 — そのステップで経過した総時間(アクティブ+待機)を示します。[≈45]は45分が経過したことを意味します。

-n リードタイム — 空き時間ブロック内で、何もする必要がないことを示します。

◆ ゲート — 進行するためにtrueである必要がある条件。

◇ 停止条件 — 停止するためにtrueである必要がある条件。

● アクション — 実行するアクション。

→ ブランチ — 主要なタイムラインに接続する補助アクション。

一貫性

すべてのタイムラインは、一貫した間隔と配置を持つ必要があります。間隔は、各ステップの実際の時間を反映する必要があります。

推定時間は、[≈n]を使用してマークする必要があります。ソースからの時間は、[+n]を使用してマークする必要があります。

推定時間とソースからの時間を混在させることはできません。各時間マーカーは、それが推定かどうかを明確にする必要があります。

ゲートの配置

ゲートは、それが参照するアクションの前の行に配置する必要があります。ゲートは、複数のアクションがゲートに依存している場合に、それらの上にも配置できます。

ゲートが満たされていない場合、アクションは実行できません。ゲートに依存するアクションは、ゲートの下にインデントする必要があります。

例

10分   ├·······→ ◆ オーブンが180°C
12分   │          ● 天板をオーブンに入れる

7. 見積もり

時間ルール

  • 一致した最小の時間ユニットは、標準タイムラインの場合は1分、高速シーケンスの場合は5秒です。
  • 時間は、特定されない限り分単位です。秒はsでマークします。
  • 推定時間は、常に[≈n]を使用してマークします。
  • ソースからの時間は、[+n]を使用してマークします。
  • 独立した分量(例:米1カップ)は、約15分と見積もります。
  • 複雑な下ごしらえ(例:皮をむく、刻む、すりおろす、計量する)は、約5〜10分と見積もります。
  • 繰り返しサイクル(例:バッチで焼く)は、最初のサイクルにサイクル時間を追加し、後続のサイクルにはバッチ時間のみを追加します。
  • 冷却と休ませる時間は、推定可能な場合は推定します。推定できない場合は、マークせずに記載します。

分量ルール

  • 材料の数量は変更してはいけません。
  • 材料の数量が不明な場合(例:「油適量」)、推定された栄養からそれらを除外し、その旨を記載します。
  • 材料の数量が範囲で指定されている場合(例:「にんにく2〜3片」)、その範囲を維持し、中央値を使用して推定します。
  • 材料の数量が「お好みで」と指定されている場合、それらを除外し、その旨を記載します。

栄養ルール

  • エネルギーは最も近い10 kcalに丸めます。
  • マクロ(タンパク質、炭水化物、脂質)は最も近いグラムに丸めます。
  • マクロに範囲を設定してはいけません。
  • ソースが提供する範囲は、そのまま保存します。
  • ソースが1人分の数値のみを提供する場合、合計は乗算しますが、(出典あり)とマークします。
  • 推定が不可能な場合、栄養セクションを省略し、ブロッカーを記載します。

8. 出力構造

計画出力は、以下の構造に従う必要があります:

  1. タイトル — レシピのタイトル。
  2. 提供人数 — 提供人数(ソースから、または推定)。
  3. 栄養表示 — 3のルールに従う。
  4. 器具 — 必要な器具。
  5. 材料 — ソースからの材料。
  6. ミザンプラス — 下ごしらえタスク(該当する場合、モードB)。
  7. タイムライン/シーケンス/スケジュール — 6のルールに従う。
  8. アクティブ調理後 — 該当する場合、モードCの末尾。
  9. 提供/保存 — 提供と保存の指示。
  10. 引き継ぎ — 該当する場合。
  11. 変更点 — 該当する場合。

9. エラー処理

  • ソースに方法がない場合 → 停止し、報告します。
  • ソースに時間がない場合 → 続行しますが、推定時間をマークし、キュー駆動型のステップを優先します。
  • ソースに材料がない場合 → 停止し、報告します。
  • ソースが矛盾している場合 → 一度だけ指摘し、材料リストに基づいて続行します。
  • ユーザーが不可能な変更を要求した場合(例:量を2倍にするが鍋が小さい) → 変更を実装し、競合をフラグします。
  • ユーザーが異なるレシピを要求した場合 → 新しいレシピから再実行します。

10. 制限事項

  • このスキルは、一人の料理人のために設計されています。チームや大量調理には適していません。
  • このスキルは、方法が提供されているレシピに依存しています。方法のないレシピは変換できません。
  • このスキルは、材料の品質や技術的なスキルを考慮していません。
  • このスキルは、食品の安全性を考慮していません。ユーザーは、適切な食品取り扱い慣行に従う責任があります。
  • 推定された時間と栄養は近似値であり、実際の結果は異なる場合があります。
  • このスキルは、専門的な料理のトレーニングや置き換えを意図していません。

11. 例

簡単なレシピ:スクランブルエッグ

材料:卵2個、牛乳大さじ1、バター大さじ1、塩、コショウ

方法を提供する場合:

## タイムライン(モードA)

### 栄養表示 *(計算値)*
- **エネルギー** 約220 kcal / 人分 · 約440 kcal 合計
- **タンパク質** 12 g · **炭水化物** 2 g · **脂質** 18 g

### 器具
- フライパン
- ボウル
- 泡立て器
- ヘラ

### 材料
- 卵 2個
- 牛乳 大さじ1
- バター 大さじ1
- 塩 少々
- コショウ 少々

### タイムライン

0分   ├·······→ ◆ フライパンを中火で熱する
      │          ● バターを加える
1分   ├·······→ ● 卵をボウルに割り入れる
      │          ● 牛乳、塩、コショウを加える
      │          ● 泡立て器で混ぜる
2分   ├·······→ ◆ バターが溶けて泡立つ
      │          ● 卵液をフライパンに注ぐ
      │          ● ヘラで優しく混ぜる
3分   ├·······→ ◇ 卵が好みの硬さになる
      │          ● 火から下ろす
      │          ● すぐに提供する

複雑なレシピ:カレー

材料:タマネギ、ニンニク、ショウガ、スパイス、トマト、ココナッツミルク、鶏肉

(長いタイムラインため、詳細は省略)


このスキルは、tiny-glitch/recipe-timelineの一部です。

関連スキル