コンテンツにスキップ

artifacts/<name>.yaml

artifact は Phase 間で受け渡される型付きの構造化された値です。各 artifact は Skill の artifacts/ ディレクトリに YAML スキーマを持ちます。

最小限の例

# artifacts/topic_input.yaml
type: object
required: [topic]
properties:
  topic:
    type: string
    description: Subject the skill should write about.

スキーマ

Reyn の artifact ファイルは YAML で表現された JSON Schema(Draft-7)フラグメントです。

フィールド 必須 備考
type yes ほぼ常に object
required 省略可能 必須プロパティ名のリスト。
properties yes(オブジェクトの場合) 名前 → JSON Schema のマップ。
description 省略可能 自由形式の説明;LLM コンテキストに表示されます。
additionalProperties 省略可能 デフォルト: true。厳格な形状には false に設定します。

厳格vs寛容なバリデーション

デフォルトでは、Reyn はトップレベルのみを検証します。ネストされた必須フィールドは強制されません。すべてのネスト深さで必須フィールドを強制するには --strict を渡します。

クロス Skill artifact(stdlib)

src/reyn/stdlib/artifacts/*.yaml 配下の artifact はすべての Skill で利用できます。最も一般的なのは user_message です:

# src/reyn/stdlib/artifacts/user_message.yaml
type: object
required: [text]
properties:
  text:
    type: string
    description: Free-text user input.

自然言語入力を受け入れる Skill は、エントリー Phase で input: user_message | <other_artifact> と宣言します。

命名規約

  • ファイル: lowercase_snake_case.yaml
  • 型: .yaml を除いたファイル名が artifact の型名。
  • プロパティ: lowercase_snake_case
  • 何でも入れる artifact を避ける。あるプロパティが 1 つの Phase にのみ必要な場合は、その Phase の入力 artifact に入れます。

ランタイムでのバリデーション

  • トランジション時: LLM の artifact.data が次の Phase の入力スキーマに対して検証されます。
  • 完了時: Skill の final_output_schema に対して検証されます。
  • 失敗すると validation_error イベントが発行され、再プロンプトされます(リトライ制限に従います)。

関連情報

  • skill-md.mdfinal_output は artifact 名を参照する
  • phase-md.md — Phase の input は 1 つ以上の artifact 名を参照する
  • graph.md — グラフ + artifact の解決