phase.md frontmatter¶
各 Phase は Skill ディレクトリの phases/<phase_name>.md に存在します。YAML frontmatter は Phase が消費するもののみを宣言します。生成するもの、次の Phase、何も宣言しません(P1)。
スキーマ¶
---
type: phase # 常に "phase"
name: <phase_name> # ファイル名と一致する必要があります(.md 拡張子を除く)
input: <artifact_type> # 必須; この Phase が消費するもの
role: <short_label> # 省略可能; Events 用の一単語のロール
can_finish: true # 省略可能; ここから終了を許可(デフォルト: false)
allowed_ops: [file, ask_user] # 省略可能; この Phase が使用できる Control IR op の種類
# (デフォルト: ["file", "ask_user"]; [] はop なし)
preprocessor: # 省略可能; 決定論的な LLM 前処理ステップ
- run_skill:
skill: recall_memory
input: { type: ..., data: { ... } }
into: relevant_memories
- python:
module: stats
function: compute
mode: safe # safe | unsafe
output_schema: { ... }
---
必須フィールド¶
type—phaseでなければなりません。name— 文字列、Skill のgraphでこの Phase を識別します。ファイル名と一致する必要があります。input— Phase が読み取る artifact 型。単一の artifact 名またはユニオン(user_message | topic_input)。
省略可能なフィールド¶
role— イベントペイロード用の短いラベル(例:planner、reviewer)。can_finish—trueの場合、LLM はこの Phase からdecision="finish"を出力できます。OS は最終 artifact を Skill のfinal_output_schemaに対して検証します。preprocessor— LLM 呼び出しの前に実行される決定論的ステップのチェーン。reference/dsl/preprocessor.mdを参照してください。allowed_ops— この Phase が出力できる Control IR op の種類のリスト(例:[file, lint])。OS は LLM に提示するavailable_control_opsをこのセットに絞り込み、さらに LLM がセット外の op を出力した場合もcontrol_ir_skipped: not_allowed_in_phaseで拒否します。デフォルト:["file", "ask_user"](ファイル I/O とユーザー確認、一般的なケース)。明示的な空リスト([])は「op なし」を意味します(純粋なルーティング/採点 Phase に使用します)。リストが狭いほど、op の説明に費やされるコンテキストが少なく、Phase の意図から LLM が逸脱する余地が減ります。メタ Skill(skill_builder、skill_improver、skill_importer)は ContextFrame のop_catalogフィールド(OS がサポートするすべての op の参照リスト)を参照して、生成する Phase のallowed_ops値を選択します。
注意: Phase レベルの
permissions:は skill-only permissions migration で廃止されました。パーミッションは skill-md frontmatter で宣言してください — skill-md.md および permission-model.md を参照してください。
現れてはいけないもの¶
- いかなる種類の出力スキーマ。出力は次の Phase の入力または Skill の
final_outputによって決まります(P1)。 - 次の Phase の名前。Skill グラフがトランジションを所有します(P1)。
- Control IR フォーマットの説明。OS が利用可能な op をコンテキストフレームに注入します(P8)。
ボディ¶
Markdown ボディは LLM への Phase の指示です。以下をカバーします:
- 何を分析、生成、または決定するか
- どの next-phase 候補をいつ選ぶか
- ドメイン固有のルール、例、エッジケース
スキーマの再述、フィールド名の列挙、Control IR の説明は避けてください。これらはランタイムで注入されます。
例¶
---
type: phase
name: outline
input: topic_input
role: planner
---
トピックの最も重要な角度を捉えた 3 つの箇条書きを作成してください。
各箇条書きは完全な文である必要があります。次の Phase が各箇条書きを
段落に展開するので、曖昧な箇条書きは曖昧な段落を生みます。
避けること: メタコメンタリー、スコープの前置き、3 つ以上の箇条書き。
関連情報¶
- skill-md.md — Skill frontmatter
reference/dsl/preprocessor.md— preprocessor ステップ- コンセプト: principles P1、P8